Seaborn的无数值类型汇总错误

时间:2019-01-26 00:21:48

标签: 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

Value中的值的dtype为float。

我正在用seaborn漂浮它:

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

出现错误:

DataError: No numeric types to aggregate

可能是什么引起了该问题?

3 个答案:

答案 0 :(得分: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()

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()

答案 1 :(得分:0)

我认为此错误与pandas.groupby()有关,而不是与seaborn本身有关。检查以确保我所有的数字列都为浮点数,这对我来说很有用。就您而言

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

答案 2 :(得分:0)

我有一个类似的问题,结果发现我正在绘制的一列是object类型的,尽管它具有所有“数值”。将其强制类型转换为float对我有用