我有一个数据框,其中包含以下列:
日期-卖方-金额
代码示例:
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笔记本
有人可以阐明这一点吗?
预先感谢
答案 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()
请注意,约翰的地块是空的,因为他只在一天之内就卖出了东西,而一个人却无法从点到自己画一条线。