【发布时间】:2014-10-11 01:23:35
【问题描述】:
我在 A 列中有一个包含大约一百万个数字的列的 csv 文件(excel 电子表格)。我想用 y 轴上的数字频率和x 轴。我正在使用熊猫这样做。我的代码:
import pandas as pd
pd.read_csv('D1.csv', quoting=2)['A'].hist(bins=50)
Python 不会将“A”解释为列名。我尝试了各种名称来引用该列,但都导致关键字错误。我是否错过了一个步骤,我必须通过 python 为该列分配一个我不知道如何分配的名称?
【问题讨论】:
-
如果你把它保存到
DataFrame,比如df = pd.read_csv('D1.csv', quoting=2),那么查看print df.head()或print df.columns会告诉你pandas发现的列名。如果这些看起来不对,您可以尝试更改read_csv的header参数,看看它是否是由于跳过了标题行。 -
当我打印 df.head() 时,它显示为由(0、1、2、3 等)组成的列,指示行号和我实际前几个数字的列数据。当我打印 df.columns 时,它说: Index([u'2903.1'], dtype='object') 其中 2903.1 是我的第一个数据数。我不知道如何诚实地解释这一点,因为我对编程很陌生。
-
这表明电子表格中没有标题行,但它仍在尝试将第一行(数据)解释为标题;或者如果有标题行,它会被无意中跳过。如果您打开原始文件(或查看文件的前几行内容),您会看到标题行吗?如果是这样,您可以使用参数
header=0调用read_csv函数。如果这不起作用,则可能意味着您的数据文件实际上没有标题行。在这种情况下,您可以传递名称列表,例如names=['A', 'B', ...],它将使用这些名称。 -
所以我尝试给我的 excel 表一个标题行并验证 excel 是否识别了标题行。对于我的数据列,我在标题行中将其标记为数据。然后我将 header = 0 添加到我的参数中,并在我的代码中使用了名称“数据”。但它仍然显示为 keyerror。我很可能误解了你的建议,因为我没有这方面的经验
-
我尝试使用 u'2903.1' 作为列名,没有出现关键错误,但也没有出现图表
标签: python excel csv histogram naming