pythonデータフレームを使用してpandasに読み込むデータのセットがあります。私がやりたいのは、すべてではなく、独自のフレーム内のすべての要素のプロットを印刷するループを作成することです。私のデータは、次のような構造のExcelファイルにあります。
Index | DATE | AMB CO 1 | AMB CO 2 |...|AMB CO_n | TOTAL
1 | 1/1/12| 14 | 33 |...| 236 | 1600
. | ... | ... | ... |...| ... | ...
. | ... | ... | ... |...| ... | ...
. | ... | ... | ... |...| ... | ...
n
これは私がこれまでにコードのために持っているものです:
import pandas as pd
import matplotlib.pyplot as plt
ambdf = pd.read_Excel('Ambulance.xlsx',
sheetname='Sheet2', index_col=0, na_values=['NA'])
print type(ambdf)
print ambdf
print ambdf['EAS']
amb_plot = plt.plot(ambdf['EAS'], linewidth=2)
plt.title('EAS Ambulance Numbers')
plt.xlabel('Month')
plt.ylabel('Count of Deliveries')
print amb_plot
for i in ambdf:
print plt.plot(ambdf[i], linewidth = 2)
私はこのようなことをすることを考えています:
for i in ambdf:
ambdf_plot = plt.plot(ambdf, linewidth = 2)
上記はリモートで私が望んでいたものではなく、それはパンダ、MatplotLibなどに不慣れであり、いくつかのドキュメントを見ることに起因しますが、私にはmatplotlibは必要ないようです(質問2)
A)dfのすべての列のデータのプロットを作成するにはどうすればよいですか。B)matplotlibを使用する必要がありますか、それともすべて実行するにはpandasを使用する必要がありますか。
ありがとうございました、
それでは、いくつかのプロットを作成する最も簡単な方法は次のとおりです。
import matplotlib.pyplot as plt
x=[[1,2,3,4],[1,2,3,4],[1,2,3,4],[1,2,3,4]]
y=[[1,2,3,4],[1,2,3,4],[1,2,3,4],[1,2,3,4]]
for i in range(len(x)):
plt.figure()
plt.plot(x[i],y[i])
毎回figure
を作成する必要があることに注意してください。そうしないと、pyplot
が最初に作成されたものにプロットされます。
複数のデータシリーズを作成する場合、必要なことは次のとおりです。
import matplotlib.pyplot as plt
x=[[1,2,3,4],[1,2,3,4],[1,2,3,4],[1,2,3,4]]
y=[[1,2,3,4],[2,3,4,5],[3,4,5,6],[7,8,9,10]]
plt.plot(x[0],y[0],'r',x[1],y[1],'g',x[2],y[2],'b',x[3],y[3],'k')
['r','g','b','k']
のような色のリストを作成し、このリストのエントリと、必要に応じてループにプロットされる対応するデータの両方を呼び出すだけで、自動化できます。プログラムでデータシリーズを1つのプロットに追加する場合は、次のようにします(毎回新しい図は作成されないため、すべてが同じ図にプロットされます)。
import matplotlib.pyplot as plt
x=[[1,2,3,4],[1,2,3,4],[1,2,3,4],[1,2,3,4]]
y=[[1,2,3,4],[2,3,4,5],[3,4,5,6],[7,8,9,10]]
colours=['r','g','b','k']
for i in range(len(x)):
plt.plot(x[i],y[i],colours[i])
また、プロットをより詳細に制御できる辞書を使用することもできます。
import matplotlib.pyplot as plt
# plot 0 plot 1 plot 2 plot 3
x=[[1,2,3,4],[1,4,3,4],[1,2,3,4],[9,8,7,4]]
y=[[3,2,3,4],[3,6,3,4],[6,7,8,9],[3,2,2,4]]
plots = Zip(x,y)
def loop_plot(plots):
figs={}
axs={}
for idx,plot in enumerate(plots):
figs[idx]=plt.figure()
axs[idx]=figs[idx].add_subplot(111)
axs[idx].plot(plot[0],plot[1])
return figs, axs
figs, axs = loop_plot(plots)
これで、簡単に変更したいプロットを選択できます。
axs[0].set_title("Now I can control it!")