2016-07-01 6 views
1

CSVファイルからデータフレームを読み込み、データフレーム内の各列に散布図を生成しようとしています。例えば、私はdf=pandas.readcsv()pandasデータフレームのforループで列を反復する

Sample AMP ADP ATP 
1A  239847 239084 987374 
1B  245098 241210 988950 
2A  238759 200554 921032 
2B  230029 215408 899804 

Iをx値としてサンプルを使用して、散布図、および各列のための領域を生成するために、希望して以下に読みました。

私は

手動で各列をプロットするbokeh.plottingで次のコードを使用してい
import pandas 
from bokeh.plotting import figure, show 

df = pandas.read_csv("data.csv") 
p = figure(x_axis_label='Sample', y_axis_label='Peak Area', x_range=sorted(set(df['Sample']))) 
p.scatter(df['Sample'], df['AMP']) 
show(p) 

これが成功した散布図を生成しますが、私は、各列の散布図を生成するためのループを作成したいと思います。私の完全なデータセットには、私がプロットしたい500以上の列があります。

私はdf.iteritemsとdf.itertuplesをデータフレームの反復処理に使用するためのリファレンスに従ってきましたが、私が望む出力を得る方法がわかりません。

私は次のことを試してみました:

for index, row in df.iteritems(): 
    p = figure() 
    p.scatter(df['Sample'], df[row]) 
    show(p) 

私はすぐにエラーを打つ:

raise KeyError('%s not in index' % objarr[mask] KeyError: "['1A' '1B' '2A' '2B'] not in index

どれ指導?前もって感謝します。

答えて

0

iteritemsは、行ではなく行に対して反復処理を行います。しかし、あなたの本当の問題は、df[index]の代わりにdf[row]にしようとしているときです。私は文言を列に切り替えて、これをやります:

for colname, col in df.iteritems(): 
p = figure() 
p.scatter(df['Sample'], df[colname]) 
show(p) 
関連する問題