Seaborn's Нет числовых типов для агрегирования ошибок - PullRequest
0 голосов
/ 26 января 2019

У меня есть фрейм данных панд в этой форме:

    Country     Year        Value
0   Thailand    1989       48587.03
1   Thailand    1990       55903.07
2   Vietnam     1989      100290.04
3   Vietnam     1990      118873.59
4   India       1989      147383.02
5   India       1990      178230.05

dtype значений в Value равно float.

Я использую морского рожка, чтобы передать это:

sns.lineplot(x='Year', y='Value', hue='Country', data=topfiveot)

И получил ошибку:

DataError: No numeric types to aggregate

Что, возможно, вызвало проблему?

Ответы [ 2 ]

0 голосов
/ 15 мая 2019

Я думаю, что эта ошибка больше связана с pandas.groupby (), чем с самим seaborn.Проверка того, чтобы все мои числовые столбцы были плавающими, работала на меня.В вашем случае

df.Year = df.Year.astype(float) и df.Values = df.Values.astype(float)

0 голосов
/ 26 января 2019

Полагаю, вы хотите показать график, подобный

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

df = pd.DataFrame({"Country" : ["Thailand"]*2 + ["Vietnam"]*2 + ["India"]*2,
                   "Year" : np.tile([1989,1990], 3),
                   "Value" : [8,3,10,4,3,0]})

ax = df.pivot("Year", "Country", "Value").plot()
ax.ticklabel_format(axis='x', useOffset=False)
plt.show()

enter image description here

Точно такой же график может быть получен с помощью seaborn через

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

df = pd.DataFrame({"Country" : ["Thailand"]*2 + ["Vietnam"]*2 + ["India"]*2,
                   "Year" : np.tile([1989,1990], 3),
                   "Value" : [8,3,10,4,3,0]})

ax = sns.lineplot(x='Year', y='Value', hue='Country', data=df)
ax.ticklabel_format(axis='x', useOffset=False)
plt.show()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...