首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >matplotlib:从pandas创建多个子图(multiclass)

matplotlib:从pandas创建多个子图(multiclass)
EN

Stack Overflow用户
提问于 2019-10-14 23:19:51
回答 2查看 96关注 0票数 0

我想从我的熊猫数据框中创建多个图,如下所示:

代码语言:javascript
运行
复制
dataset.head()
   trip_id   duration     distance  avg_speed    avg_acc     travel_mode
0   303633       1.0      42.74      0.00        70.46        foot
1   303637      30.0      521.07     1.43        27.86         car
2   303638      13.0      339.58     0.65        26.30         car
3   303642      12.0      459.94     0.00        78.67         car
4   303657       4.0      71.3       0.00        72.94        foot

travel_mode包含5种不同的传输模式:

代码语言:javascript
运行
复制
dataset.travel_mode.unique()
array(['foot', 'car', 'bus', 'bike', 'metro'], dtype=object)

我想绘制每种出行模式的duration, distance, avg_speedavg_acc per的分布。

代码语言:javascript
运行
复制
col = ['duration', 'distance', 'avg_speed', 'avg_acc', 'travel_mode']
dataset[col].groupby('travel_mode').hist(bins=50, figsize=(6, 4))

数字以一种你不能区分哪个数字是哪种交通工具的方式显示。然后我尝试了按偏度分布。

偏斜度的分布:

代码语言:javascript
运行
复制
l = dataset.columns.values
n_cols=4
n_rows =5
plt.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的数字

EN

回答 2

Stack Overflow用户

发布于 2019-10-15 02:06:29

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

代码语言:javascript
运行
复制
groups = dataset.groupby('travel_mode')
for group in groups:
    label = group[0]
    data = group[1]
    data.columns = label + " - " + data.columns
    data.hist(bins=50)
票数 1
EN

Stack Overflow用户

发布于 2019-10-15 00:09:55

这应该可以通过你的travel_mode来区分。请注意subplots=True

代码语言:javascript
运行
复制
dataset[col].groupby('travel_mode').plot(kind='hist', bins=50, subplots=True)

如果你想要一个密度图叠加,我认为它将与海运工作:

代码语言:javascript
运行
复制
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))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58379701

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档