为什么pandas不能处理用于绘图的小数?

时间:2015-11-02 22:56:26

标签: python pandas matplotlib

我有一个包含小数的数据帧df。 当尝试使用df.plot()绘制此数据帧时,它会返回错误。我首先需要.applymap()这个浮动。

这是为什么?十进制是浮点数以外的特殊类型吗?

from decimal import Decimal
import pandas as pd
%matplotlib inline

l=[]
for i in range(0,10):
    l.append(Decimal(i).quantize(Decimal('0.01')))

df = pd.DataFrame(l)
print df
df.plot() #does not work

df.applymap(lambda x:float(x)).plot() #does work

1 个答案:

答案 0 :(得分:1)

from decimal import Decimal
import pandas as pd
import matplotlib.pyplot as plt

l=[]
for i in range(0,10):
    l.append(Decimal(i).quantize(Decimal('0.01')))

df = pd.DataFrame(l)
df = df.astype('float') #  you can simply do this

df.plot()    
plt.show()

您尝试绘制的原始数据是object类型而不是数字。您可以通过执行df.dtypes

来验证这一点

甚至更好:df = pd.DataFrame(l, dtype='float')