【问题标题】:Python: Using pandas to import csv. Trying to plot a column but gives me an error saying "no numerical data to plot"Python:使用 pandas 导入 csv。试图绘制一列但给我一个错误说“没有数字数据要绘制”
【发布时间】:2015-09-02 21:20:26
【问题描述】:

我正在尝试使用 pandas 读取以下 csv 文件并绘制一列:

data type,approved mining area,mined area,coal content,earth rate,coal rate,waste ratio
unit,ha,ha,Mt,Mm3/a,Mt/a,
Garzweiler,11400,3096,1246,140,37.5,4.4
Hambach,8500,4224,1500,275,40,5.2
Inden,4500,1655,358,87.5,22.5,3.6

这给了我以下信息(只有一部分,所以它适合这里):

data type approved mining area mined area coal content earth rate  \
 0        unit                   ha         ha           Mt      Mm3/a   
 1  Garzweiler                11400       3096         1246        140   
 2     Hambach                 8500       4224         1500        275   
 3       Inden                 4500       1655          358       87.5   

我的代码如下:

df = pd.read_csv(filepath, sep=",")

df["coal content"][1:4].plot()

如果我 print df.["coal content"][1:4] 它只给我数值(1246、1500、358),但尝试绘制它会给我以下错误:

TypeError: Empty 'Series': no numeric data to plot

我已经搜索了网络,但无法找到解决方案。我发现了一个类似的问题,在数据中使用“,”而不是“。” - 但在这个数据集中不是这样,尤其是在这一行中。

有什么帮助吗?

【问题讨论】:

  • 您的 csv 似乎没有使用逗号作为分隔符,真的不清楚您的标题列名称是什么
  • 你确定它们没有被解析为字符串
  • 对不起,我只显示了导入 csv 的解析输出 - 现在我添加了初始 csv 文件。我怎么能确保不将其解析为字符串?对不起,我对编程和 python 很陌生。

标签: python csv pandas plot


【解决方案1】:

问题是,由于您的每一列在第一个非标题行中都有一个非数字值,pandas 会自动将整列解析为文本。

一种解决方法是像这样跳过文本行:

df=pd.read_csv(filepath, sep=",",skiprows=[1])

然后,当您尝试绘制它时,只需使用:

df['coal content'].plot()

当然,这意味着您不会读取第一行的元数据,但希望这不会给您带来太多麻烦。

【讨论】:

    猜你喜欢
    • 2015-10-08
    • 2023-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-06
    • 1970-01-01
    • 2020-11-10
    相关资源
    最近更新 更多