我有一个这样的熊猫数据框:
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
可能是什么引起了该问题?
答案 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()
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
对我有用