Python 熊猫数据帧“;“没有要打印的数字数据”;错误

Python 熊猫数据帧“;“没有要打印的数字数据”;错误,python,pandas,matplotlib,Python,Pandas,Matplotlib,我有一个小数据框,我想用熊猫来绘制 2 3 0 1300 1000 1 242751149 199446827 2 237712649 194704827 3 16.2 23.0 我仍在努力从熊猫内部学习密谋。我想在上面的例子中,当我说 df.plot() 我犯了一个最奇怪的错误 Library/Python/2.7/site-packages/pandas-0.16.2-py2.7-macosx-10.10-intel.egg/pandas/

我有一个小数据框,我想用熊猫来绘制

    2   3
0   1300    1000
1   242751149   199446827
2   237712649   194704827
3   16.2    23.0
我仍在努力从熊猫内部学习密谋。我想在上面的例子中,当我说

df.plot()
我犯了一个最奇怪的错误

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

虽然我知道数据帧的值非常不平衡,但它的绘图却非常不有趣。我想知道为什么错误消息抱怨没有要打印的数字数据。

请在打印前尝试以下操作:

df=df.astype(float)

要解决此问题,必须转换要转换的特定列 使用数字。首先,让我用
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

受alex314159启发,如果您在同一个表中有除float之外的其他数据

df["YourColumnNameHere"]=df["YourColumnNameHere"].astype(float)

如果运行
df.dtypes
,您会看到哪些数据类型?您的数据框可能包含数字字符串。这些列似乎没有正确解析——您可能只有一个名为
'23'
的列。为了帮助您解决此问题,我们可能需要了解
df
是如何定义的。此外,看起来您可能有面向行的数据,而pandas希望有面向列的数据,您可能需要转置。df.info()将为您提供每列的列和数据类型。我希望能为类似的解决方案提供解释。如果有人听到我的评论并完全理解这个答案,请提供解释。@GregHilston熊猫背后有很多魔力,例如当你使用pandas.read_csv读取文件时。特别是,它必须推断数据类型。有时它会弄错。我上面的回答迫使熊猫尝试将数据转换成浮点数。@EdekiOkoh嘿!是的,我现在觉得这很直截了当。当时,我对熊猫是全新的,根本不知道发生了什么。我现在和你在一起,但是那些新来的人可能和我曾经在同一条船上。快乐编码!df中的数据是字符串。我只要一张桌子。我也得到了这个错误。有什么想法吗?关于
pf.id=pd.to_numeric(pf.id)
,如果列标题中有多个单词,您该怎么做?例如,我有一个名为“工作百分比”的列。@KesPerron尝试以下操作:pf['Percent Working']我在df中的数据是字符串。我只要一张桌子。我也得到了这个错误。有什么想法吗?我在df中的数据是字符串。我只要一张桌子。我也得到了这个错误。有什么想法吗?