没有要汇总的数字类型

时间:2019-06-07 16:19:30

标签: python seaborn facet-grid

我有一个数据框,其中包含以下列:

日期-卖方-金额

代码示例:

import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
%matplotlib inline
testframe = pd.DataFrame({'date': ['01/02/2019', '01/02/2019', '01/02/2019', 
'02/02/2019','02/02/2019','03/02/2019'], 
'Seller': ['John', 'Ada', 'John', 'Ada', 'Ada', 'Ada'], 'Ammount': 
[150,200,158,200,60,90]})

我将数据汇总为:

agg=pd.DataFrame(base.groupby(['date','Seller'])['Ammount'].sum())
agg.reset_index(inplace=True)

然后,我尝试使用FacetGrid来显示沿每个卖方天数的Ammount(来自FacetGrid的每一行都是一行)。像这样:

g=sns.FacetGrid(data=agg,row='Seller')
g.map(sns.lineplot,'Ammount','date')

但是出现以下错误:     没有要聚合的数字类型

Stackoverflow上还有另外一个帖子,但是我并没有为解决该问题提供任何线索。

我检查了软件包中的变量,并返回numpy.int64。我尝试使用.astype()将'em'转换为float和int,但是也没有用。

环境:Jupyter笔记本

有人可以阐明这一点吗?

预先感谢

1 个答案:

答案 0 :(得分:0)

可能您的意思是这样的:

import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt


base = pd.DataFrame({'date': ['01/02/2019', '01/02/2019', '01/02/2019', 
                                   '02/02/2019','02/02/2019','03/02/2019'], 
    'Seller': ['John', 'Ada', 'John', 'Ada', 'Ada', 'Ada'], 'Ammount': 
            [150,200,158,200,60,90]})


base["date"] = pd.to_datetime(base["date"])

agg=pd.DataFrame(base.groupby(['date','Seller'])['Ammount'].sum())
agg.reset_index(inplace=True)


g=sns.FacetGrid(data=agg, row='Seller')
g.map(sns.lineplot, 'date', 'Ammount')

plt.show()

enter image description here

请注意,约翰的地块是空的,因为他只在一天之内就卖出了东西,而一个人却无法从点到自己画一条线。