Два CSV-файла с одинаковыми именами столбцов. Мне нужно выполнить линейную регрессию, сравнивая столбцы с одинаковым именем заголовка из обоих файлов - PullRequest
0 голосов
/ 05 июля 2018

У меня есть два CSV-файла с одинаковыми именами столбцов в разных порядках. Мне нужно сопоставить столбцы между обоими CSV-файлами между их общими заголовками и построить график корреляции данных. Например, из файла file1 и file2 я хочу сравнить столбец «ASA» и сформировать график зависимости от этого. У меня есть отдельный файл со всеми именами столбцов, которые мне нужно сравнить, так что, если можно перебрать миллионы файлов, которые у меня есть, но pandas постоянно говорит мне, что у меня возникает ошибка атрибута, когда я добавляю свой «список» в y = data2.lines .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()

файл данных1

файл данных2

file data3 (все заголовки, которые я хочу соотнести между файлами)

Спасибо за любую помощь, которую вы можете оказать мне.

1 Ответ

0 голосов
/ 05 июля 2018

Я нашел ответ на свой вопрос. Все дело в синтаксисе в части 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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...