如果我只能绘制1条线,请从下面学习 Plot Normal distribution with Matplotlib
例如,我的熊猫如下:
name,distance
Peter,13
Sam,14
Peter,15
Sam,12
Sam,13
Peter,14
使用df.groupby('name').describe()
,我可以显示每个用户的最小/最大/平均值。
但是,我想基于现有数据绘制正态分布。
我尝试过df.sort_values(by='name').groupby('name').plot()
,但不会为其绘制pdf或正态分布。 我该如何使用numpy实现这一目标
谢谢
答案 0 :(得分:0)
IIUC,您想要的是在同一图中绘制两个distance
值的name
直方图。
import matplotlib.pyplot as plt
df = pd.DataFrame({'name':['Peter', 'Sam', 'Peter', 'Sam', 'Sam', 'Peter'],
'distance':[13, 14, 15, 12, 13, 14]})
for name in df['name'].unique():
plt.hist(df.loc[df['name']==name, 'distance'], label=name)
plt.legend();
更新:
如OP在注释中所建议的那样,可以在不使用for循环的情况下绘制它们。
df.groupby('name').distance.plot.hist()
df.groupby('name').distance.plot.kde()