【问题标题】:Two CSV files with same column names,. I need to perform linear regression comparing columns with same header name from both files具有相同列名的两个 CSV 文件。我需要执行线性回归比较两个文件中具有相同标题名称的列
【发布时间】:2018-12-13 07:49:25
【问题描述】:

我有两个列名相同但顺序不同的 csv 文件。我需要将两个 csv 文件之间的列关联到它们的公共标题之间,并绘制数据的相关图。例如,从 file1 和 file2 我想比较“ASA”列并从中形成相关图。我有一个单独的文件,其中包含我需要比较的所有列名,因此如果可以遍历我拥有的数百万个文件,但是当我将“列表”添加到 y = data2.lines 时,pandas 一直告诉我出现属性错误.values 或 x = data1.lines.values。我尝试循环并制作匹配条件,但没有任何效果。

import csv
import pandas as pd
import numpy as np
from pandas import DataFrame
import matplotlib.pyplot as plt
from scipy import linspace, polyval, polyfit, sqrt, stats, randn


#File1
data1 = pd.read_csv('sorted_42650files_from_the_1.7chembl_database.csv',low_memory=False) #read large csv filei

#File2
data2 = pd.read_csv('sorted_60kdat_without_duplicates.csv',low_memory=False)

#File3

data3 = pd.read_csv('headers.csv',low_memory=False)
lines = data3.readlines()
#create my x and y column for linear regression comparison based only on the descritor.csv header name


x = data1.lines.values
y = data2.lines.values
print(x)
print(y)



#plot it
slope, intercept, r_value, p_value, std_err = stats.linregress(x, y)
plt.plot(x,y, 'o', color='purple')
plt.plot(x,intercept + slope*x, color="black", label='fitted line' + ',' + '$R^2$={:.4f}'.format(r_value))
plt.suptitle('MOE ASA+ Descriptor Correlation Plot', fontsize=14)
plt.xlabel('Ab Initio', fontsize=16)
plt.ylabel('Molecular Mechanics', fontsize=16)
plt.legend(loc=4)
print('$R^2$={:.4f}'.format(r_value))
plt.show()
plt.savefig('ASA+')
plt.close()

file data1

file data2

file data3(我想在文件之间关联的所有标题)

感谢您能给我的任何帮助。

【问题讨论】:

    标签: python pandas numpy matplotlib scipy


    【解决方案1】:

    我找到了我的问题的答案。这完全与我脚本的 df.values 部分中的语法有关。这是一个新脚本,它循环遍历要从两个文件中比较的不同标题并对它们执行线性回归:

    import pandas
    import csv
    import pandas as pd
    import numpy as np
    from pandas import DataFrame
    import matplotlib.pyplot as plt
    import glob
    from scipy import linspace, polyval, polyfit, sqrt, stats, randn
    
    
    
    
    
    input_file = "headers.csv"
    headerfile = open(input_file,"r")
    
    fields = headerfile.read().splitlines()
    #print(fields)
    
    #File1
    data1 = pd.read_csv('sorted_42650files_from_the_1.7chembl_database.csv',low_memory=False) #read large csv filei
    
    #File2
    data2 = pd.read_csv('sorted_60kdat_without_duplicates.csv',low_memory=False)
    
    #create my x and y column for linear regression comparison based only on the ASA header
    
    for lines in fields:
        #print(lines)
        x = data1[lines]
        y = data2[lines]
    #    print(x)
    #    print(y)
    
    
    
    #plot it
        slope, intercept, r_value, p_value, std_err = stats.linregress(x, y)
        plt.plot(x,y, 'o', color='purple')
        plt.plot(x,intercept + slope*x, color="black", label='fitted line' + ',' + '$R^2$={:.4f}'.format(r_value))
        plt.suptitle('MOE ASA+ Descriptor Correlation Plot', fontsize=14)
        plt.xlabel('Ab Initio', fontsize=16)
        plt.ylabel('Molecular Mechanics', fontsize=16)
        plt.legend(loc=4)
        print(lines + '$R^2$={:.4f}'.format(r_value))
       # plt.show()
        plt.savefig(lines)
        plt.close()
    

    【讨论】:

      猜你喜欢
      • 2020-02-02
      • 2021-11-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多