【问题标题】:How to refer/assign an excel column in python?如何在python中引用/分配一个excel列?
【发布时间】: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_csvheader 参数,看看它是否是由于跳过了标题行。
  • 当我打印 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


【解决方案1】:

我需要更多代表发表评论,所以我把这个作为答案。 您需要有一个标题行,其中包含要在 pandas 上使用的名称。此外,如果您想在使用 python shell 或 ipython 时查看直方图,则需要导入 pyplot

import matplotlib.pyplot as plt
import pandas as pd

pd.read_csv('D1.csv', quoting=2)['A'].hist(bins=50)
plt.show()

【讨论】:

    【解决方案2】:

    好的,我终于可以处理标题、标题等了。

    import matplotlib.pyplot as plt
    import pandas as pd
    data = pd.read_csv('D1.csv', quoting=2)
    data.hist(bins=50)
    plt.xlim([0,115000])
    plt.title("Data")
    plt.xlabel("Value")
    plt.ylabel("Frequency")
    plt.show()
    

    我的第一个问题是 matplotlib 是实际显示@Sauluxum 所述的图形所必需的。另外,我需要设置动作

    pd.read_csv('D1.csv', quoting=2)
    

    数据,以便我可以绘制该操作的直方图

    data.hist
    

    基本上,问题在于找不到标题行的名称。动作本身必须是 .hist 。谢谢大家的帮助。

    【讨论】:

      猜你喜欢
      • 2022-12-23
      • 2010-11-03
      • 1970-01-01
      • 2020-03-09
      • 2014-05-19
      • 2013-01-09
      • 2012-12-18
      • 2020-06-28
      相关资源
      最近更新 更多