为了账号安全,请及时绑定邮箱和手机立即绑定

matplotlib:从熊猫创建多个子图(多类)

matplotlib:从熊猫创建多个子图(多类)

牧羊人nacy 2022-06-22 17:11:24
我想从我的 pandas Dataframe 创建多个图,如下所示:dataset.head()   trip_id   duration     distance  avg_speed    avg_acc     travel_mode0   303633       1.0      42.74      0.00        70.46        foot1   303637      30.0      521.07     1.43        27.86         car2   303638      13.0      339.58     0.65        26.30         car3   303642      12.0      459.94     0.00        78.67         car4   303657       4.0      71.3       0.00        72.94        foot该列travel_mode包含 5 种不同的运输方式:dataset.travel_mode.unique()array(['foot', 'car', 'bus', 'bike', 'metro'], dtype=object)我想绘制每种旅行模式的duration,  distance, avg_speed分布avg_acc。col = ['duration', 'distance', 'avg_speed', 'avg_acc', 'travel_mode']dataset[col].groupby('travel_mode').hist(bins=50, figsize=(6, 4))在此处输入图像描述数字的显示方式您无法分辨哪个数字是什么类型的交通工具。然后我尝试按偏度分布。偏度分布:l = dataset.columns.valuesn_cols=4n_rows =5plt.figure(figsize=(3*n_cols,2*n_rows))for i in range(0,len(l)):    plt.subplot(n_rows + 1,n_cols,i+1)    sns.distplot(dataset[l[i]],kde=True)TypeError: unsupported operand type(s) for /: 'str' and 'int'如何显示每种出行模式的标记分布,使出行模式成行,列显示 和 的duration, distance, avg_speed,数字avg_acc?
查看完整描述

2 回答

?
人到中年有点甜

TA贡献1895条经验 获得超7个赞

这不是一个漂亮的代码,但您可以识别组...标题是组名和列的串联。


groups = dataset.groupby('travel_mode')

for group in groups:

    label = group[0]

    data = group[1]

    data.columns = label + " - " + data.columns

    data.hist(bins=50)


查看完整回答
反对 回复 2022-06-22
?
www说

TA贡献1775条经验 获得超8个赞

这应该可以由您的travel_mode. 注意subplots=True.


dataset[col].groupby('travel_mode').plot(kind='hist', bins=50, subplots=True)

如果您想要覆盖密度图,我认为它适用于 seaborn:


df = dataset[col].melt(['travel_mode'], var_name='cols',  value_name='vals')

g = sns.FacetGrid(df, col='cols', row="travel_mode")

g = (g.map(sns.distplot, "vals", kde=True, bins=50))


查看完整回答
反对 回复 2022-06-22
  • 2 回答
  • 0 关注
  • 169 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信