Нет числового типа для агрегирования - PullRequest
0 голосов
/ 07 июня 2019

У меня есть датафрейм, в котором есть следующие столбцы:

дата - Продавец - Количество

пример кода:

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. Я попытался преобразовать их в float и int, используя .astype(), но тоже не сработало.

Среда: ноутбук Jupyter

Может кто-нибудь пролить свет на это?

Заранее спасибо

1 Ответ

0 голосов
/ 07 июня 2019

Возможно, вы имеете в виду что-то вроде этого:

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

Обратите внимание, что заговор Джона пуст, потому что он продал что-то только в один день,и нельзя провести линию от точки к себе.

...