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)