自动化来自多个csv文件和线性回归的数据

时间:2018-02-27 11:35:33

标签: python loops plot regression equation

(注意:我对python很新,这是我在Stack Overflow上的第一篇文章!)

我有一个目录,其中包含多个.csv文件,每个文件都有一列Force和一列Displacement数据。我想对每个函数执行相同的线性回归绘图函数,而不必更改.py文件中的文件名。 (理想情况下,我希望每个等式都是输出,但是现在我对多个情节感到高兴!)

到目前为止,我有:

import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
from scipy import stats

values = pd.read_csv('RawData_1.csv')

slope, intercept, r_value, p_value, std_err = 
stats.linregress(values['Displacement'],values['Force'])

ax = sns.regplot(x="Displacement", y="Force", data=values, color='b', 
line_kws={'label':"y={0:.1f}x+{1:.1f}".format(slope,intercept)})

ax.legend()
plt.show()

我尝试过从其他帖子实施线路但没有运气。任何帮助深表感谢。谢谢:)

1 个答案:

答案 0 :(得分:1)

您可以使用glob.glob()以列表的形式获取目录内容,然后使用for循环为每个文件创建一个数字:

import glob
# assuming you want to go ove the current working directory
files = glob.glob('RawData*.csv')
for f in files:
    values = pd.read_csv(f)

    slope, intercept, r_value, p_value, std_err = 
    stats.linregress(values['Displacement'],values['Force'])

    ax = sns.regplot(x="Displacement", y="Force", data=values, color='b', 

    line_kws={'label':"y={0:.1f}x+{1:.1f}".format(slope,intercept)})

    ax.legend()
    plt.show()