pandas DataFrame"无数字数据绘图"错误

har*_*jay 41 python matplotlib pandas

我有一个小的DataFrame,我想用熊猫绘图.

    2   3
0   1300    1000
1   242751149   199446827
2   237712649   194704827
3   16.2    23.0
Run Code Online (Sandbox Code Playgroud)

我还在尝试从熊猫中学习绘图.我想要一个情节在上面的例子中,当我说.

df.plot()
Run Code Online (Sandbox Code Playgroud)

我得到了最奇怪的错误.

Library/Python/2.7/site-packages/pandas-0.16.2-py2.7-macosx-10.10-intel.egg/pandas/tools/plotting.pyc in _compute_plot_data(self)
   1015         if is_empty:
   1016             raise TypeError('Empty {0!r}: no numeric data to '
-> 1017                             'plot'.format(numeric_data.__class__.__name__))
   1018 
   1019         self.data = numeric_data

TypeError: Empty 'DataFrame': no numeric data to plot
Run Code Online (Sandbox Code Playgroud)

虽然我理解DataFrame具有非常不平衡的值,但却是一个非常有趣的情节.我想知道为什么错误消息抱怨没有数字数据要绘制.

ale*_*159 78

在绘图之前尝试以下方法:

df=df.astype(float)
Run Code Online (Sandbox Code Playgroud)

  • @GregHilston当你使用pandas.read_csv来读取文件时,pandas背后有很多魔法.特别是它必须推断数据类型.有时它会弄错.我上面的回答迫使pandas尝试将数据转换为浮点数. (8认同)
  • 我希望为这些解决方案提供解释。如果有人谈到我的评论并完全理解这个答案,请提供解释。 (3认同)

chr*_*111 5

为了解决这个问题,您必须将要使用的特定列转换为数值。首先,让我使用pandas和创建一个简单的数据框,numpy以更好地理解它。

#creating the dataframe

import pandas as pd
import numpy as np
details=[['kofi',30,'male',1.5],['ama',43,'female',2.5]]
pf=pd.DataFrame(np.array(details),[0,1],['name','age','sex','id'])

pf  #here i am calling the dataframe

   name age     sex   id
0  kofi  30    male  1.5
1   ama  43  female  2.5

#to make your plot work you need to convert the columns that have numbers into numeric
as seen below 

pf.id=pd.to_numeric(pf.id)
pf.age=pd.to_numeric(pf.age)

pf.plot.scatter(x='id',y='age')

#This should work perfectly
Run Code Online (Sandbox Code Playgroud)

  • 关于“pf.id=pd.to_numeric(pf.id)”,如果列标题中有多个单词,您该如何执行此操作?例如,我有一个名为“工作百分比”的列。 (2认同)

Pun*_*rud 5

受 alex314159 的启发,如果您在同一个表中还有浮动以外的其他数据

df["YourColumnNameHere"]=df["YourColumnNameHere"].astype(float)
Run Code Online (Sandbox Code Playgroud)