我正在尝试从CSV文件中读取数据帧,并为数据框中的每个列生成散点图。例如,我在FULL_NAME
-----------------------
John D Smith
Mary Ann Loury
Chris Robson III
Greg Z. Olson Jr.
Helen Webb-Hunt
df=pandas.readcsv()
我想使用sample作为x值以及每列的区域生成散点图。
我使用以下代码与bokeh.plotting手动绘制每一列
Sample AMP ADP ATP
1A 239847 239084 987374
1B 245098 241210 988950
2A 238759 200554 921032
2B 230029 215408 899804
这会成功生成散点图,但我想创建一个循环来为每列生成散点图。在我的完整数据集中,我想要绘制超过500列。
我已经按照df.iteritems和df.itertuples的参考来迭代数据帧,但我不知道如何获得我想要的输出。
我尝试了以下内容:
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)
我马上发现错误:
引发KeyError('%s不在索引'%objarr [mask] KeyError:“['1A''1B' '2A''2B']不在索引
中
任何指导?提前谢谢。
答案 0 :(得分:2)
iteritems
遍历列,而不是行。但是,当您尝试df[row]
而不是df[index]
时,您的真正问题就在于此。我将措辞切换到列并执行此操作:
for colname, col in df.iteritems():
p = figure()
p.scatter(df['Sample'], df[colname])
show(p)