【发布时间】: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 data3(我想在文件之间关联的所有标题)
感谢您能给我的任何帮助。
【问题讨论】:
标签: python pandas numpy matplotlib scipy