2015-11-02 64 views
1

我有一個包含小數的數據框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
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')

+0

我明白了感謝..爲什麼是小數在大熊貓/ Python的對象? –

+0

它不是,沒有指定數據類型,'pandas'給它'object'類型,因爲默認的dtype被設置爲none。字符串也是一樣。 – Leb