2016-10-03 202 views
1

對於監測質量隨時間變化的設備,我們希望計算線性部分數據的斜率。查找曲線中的線性部分和斜率

以下示例是通過讀取設備生成的數據幀生成的。

import pandas as pd 
import matplotlib.pyplot as plt 

#Find DataFrame 
df = pd.read_table("raw_data.csv", sep =";", skiprows = 11, decimal = ",") 

# Plot figures 
plt.figure() 
plt.plot(df["Time(s)"], df["Mass(g)"], label = "Raw Data") 
plt.axvspan(2, 17, color="b", alpha=0.2) 
plt.xlabel("Time (s)") 
plt.ylabel("Mass (g)") 
plt.legend(loc=0) 
plt.axis([0, None, 0, None]) 
plt.show() 

Example curve

是否有可能適合在這個曲線(大約突出顯示部分)的直線部分,並計算它的斜率?

回答

1

使用numpy.polyfit()

df_sampled = df[:max_value] #select the points you want to keep 
m, p = numpy.polyfit(df_sampled.index, df_sampled, deg=1) 

該函數返回斜率和您的線性迴歸的截距

+0

謝謝,這已經有所幫助!但是,手動選擇線性部分中的點一次只能用於一個文件,因爲我有超過300個,我正在尋找一種更通用的方法來找到這個線性部分? –

+0

如果你所有的曲線都是這樣的,你可以做的就是將閾值設置爲最大值質量的95%或90%,並將其橫座標作爲線性部分的終點。我不知道你在模擬什麼,但通常這是我們想要在物理學中分離暫時和永久狀態時所做的。 – MMF