Seaborn的无数值类型汇总错误

Kat*_*ie 5 python pandas seaborn

我有这种形式的熊猫数据框:

    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
Run Code Online (Sandbox Code Playgroud)

中的值的dtype Value为float。

我正在用seaborn来浮动它:

sns.lineplot(x='Year', y='Value', hue='Country', data=topfiveot)
Run Code Online (Sandbox Code Playgroud)

并得到一个错误:

DataError: No numeric types to aggregate
Run Code Online (Sandbox Code Playgroud)

是什么引起了该问题?

小智 6

我认为这个错误更多地与 pandas.groupby() 而非 seaborn 本身有关。检查以确保我的所有数字列都是浮点数对我有用。在你的情况下

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


Imp*_*est -1

我想你想展示这样的情节

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()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

使用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()
Run Code Online (Sandbox Code Playgroud)