2016-10-03 5 views
1

Für ein Gerät, das die Massenänderung in Abhängigkeit von der Zeit überwacht, möchten wir die Steigung des linearen Teils der Daten berechnen.Finden Sie linearen Teil und Steigung in Kurve

Das unten gezeigte Beispiel wird durch Lesen eines vom Gerät erzeugten Datenrahmens erstellt.

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

Ist es möglich, den linearen Teil dieser Kurve (etwa die markierten Teil) und berechnen die Neigung es zu passen?

Antwort

1

Verwenden 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) 

Die Funktion gibt die Steigung und die intercept der linearen Regression.

+0

Danke, das hilft schon! Aber die Punkte im linearen Teil manuell auswählen kann nur für 1 Datei gleichzeitig verwendet werden, da ich mehr als 300 habe ich suchte nach einem allgemeineren Weg, um diesen linearen Teil zu finden? –

+0

Wenn alle Ihre Kurven so aussehen, können Sie einen Schwellenwert auf 95% oder 90% Ihrer maximalen Masse setzen und die Abszisse als das Ende Ihres linearen Teils verwenden. Ich weiß nicht, was Sie versuchen zu modellieren, aber im Allgemeinen tun wir das, wenn wir die transitorischen und permanenten Zustände in der Physik trennen wollen. – MMF

Verwandte Themen