web-dev-qa-db-ja.com

1つのグラフに複数のpandasデータフレームをプロットする

独自の元のデータフレームの外れ値を排除する6つの異なるデータフレームを作成しました。今、私は同じグラフで外れ値を排除するすべてのデータフレームをプロットしようとしています。

これは、各データフレームの外れ値を排除する私のコードです。

_import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
plt.style.use("ggplot")

#---Original DataFrame
x = (g[0].time[:27236])
y = (g[0].data.f[:27236])
df = pd.DataFrame({'Time': x, 'Data': y})

#----Removes the outliers in a given DataFrame and plots a graph
newdf = df.copy()
newdf = df[~df.groupby('Data').transform( lambda x: abs(x-x.mean()) > 1.96*x.std()).values]
#newdf.plot('Time', 'Data')

#---Original DataFrame
x = (q[0].time[:47374])
y = (q[0].data.f[:47374])
df = pd.DataFrame({'Time': x, 'Data': y})

#----Removes the outliers in a given DataFrame and plots a graph
newdf = df.copy()
newdf2 = df[~df.groupby('Data').transform( lambda x: abs(x-x.mean()) > 1.96*x.std()).values]
#newdf2.plot('Time', 'Data')

#---Original DataFrame
x = (w[0].time[:25504])
y = (w[0].data.f[:25504])
df = pd.DataFrame({'Time': x, 'Data': y})

#----Removes the outliers in a given DataFrame and plots a graph
newdf = df.copy()
newdf3 = df[~df.groupby('Data').transform( lambda x: abs(x-x.mean()) > 1.96*x.std()).values]
#newdf3.plot('Time', 'Data')

#---Original DataFrame
x = (e[0].time[:47172])
y = (e[0].data.f[:47172])
df = pd.DataFrame({'Time': x, 'Data': y})

#----Removes the outliers in a given DataFrame and plots a graph
newdf = df.copy()
newdf4 = df[~df.groupby('Data').transform( lambda x: abs(x-x.mean()) > 1.96*x.std()).values]
#newdf4.plot('Time', 'Data')

#---Original DataFrame
x = (r[0].time[:21317])
y = (r[0].data.f[:21317])
df = pd.DataFrame({'Time': x, 'Data': y})

#----Removes the outliers in a given DataFrame and plots a graph
newdf = df.copy()
newdf5 = df[~df.groupby('Data').transform( lambda x: abs(x-x.mean()) > 1.96*x.std()).values]
#newdf5.plot('Time', 'Data')

#---Original DataFrame
x = (t[0].time[:47211])
y = (t[0].data.f[:47211])
df = pd.DataFrame({'Time': x, 'Data': y})

#----Removes the outliers in a given DataFrame and plots a graph
newdf = df.copy()
newdf6 = df[~df.groupby('Data').transform( lambda x: abs(x-x.mean()) > 1.96*x.std()).values]
#newdf6.plot('Time', 'Data')
_

コメントnewdf.plot()を削除すると、すべてのグラフを個別にプロットできますが、すべてを1つのグラフに表示します。

そして、はい、すでに読みました http://matplotlib.org/examples/pylab_examples/subplots_demo.html ですが、このリンクには、1つのグラフに複数のプロットがある例はありません。

私もこれを読みました: http://pandas-docs.github.io/pandas-docs-travis/visualization.html いくつかの本当に素晴らしい情報がありますが、1つのグラフに複数のプロットがある例同じデータフレームを使用します。 6つの個別のデータフレームがあります。私の問題に対する1つの解決策は、すべてのデータフレームを同じExcelファイルに書き込んでからそれらをExcelからプロットすることだと考えていましたが、それは過度に思われ、このデータをExcelファイルに保存する必要はありません。

私の質問はこれです:同じグラフに複数のpandasデータフレームをプロットするにはどうすればよいですか?.

スコットのアドバイスに従った私のグラフ enter image description here

enter image description here

グラフが多かれ少なかれどのように見えるべきか

5
eliza.b

何か不足していますか?通常、私はこれを複数のデータフレームに対して行うだけです:

fig = plt.figure()

for frame in [newdf, newdf2, newdf3, newdf4, newdf5]:
    plt.plot(frame['Time'], frame['Data'])

plt.xlim(0,18000)
plt.ylim(0,30)
plt.show()
5
durbachit

Pandas.dataframe.plotでaxパラメータを使用する必要があります。

最初のdf.plotで使用して、その軸のハンドルを取得します。

ax = newdf.plot() 

その後のプロットでは、axパラメーターを使用します。

newdf2.plot(ax=ax)
...
newdf5.plot(ax=ax)
11
Scott Boston