【问题标题】:matplotlib: create multiple subplots from pandas (multiclass)matplotlib:从熊猫创建多个子图(多类)
【发布时间】:2020-02-11 06:01:23
【问题描述】:

我想从我的 pandas Dataframe 创建多个图,如下所示:

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 种不同的交通方式:

dataset.travel_mode.unique()
array(['foot', 'car', 'bus', 'bike', 'metro'], dtype=object)

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

col = ['duration', 'distance', 'avg_speed', 'avg_acc', 'travel_mode']
dataset[col].groupby('travel_mode').hist(bins=50, figsize=(6, 4))

数字的显示方式您无法分辨哪个数字是哪种交通工具。然后我尝试了偏度分布。

偏度分布:

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 的数字?

【问题讨论】:

  • 您想在一个窗口中绘制所有直方图,还是每个出行模式一个窗口有效?
  • 我想为每种出行模式绘制一个窗口。
  • 检查下面的答案,我正在循环组并更改每个组数据框的列名以添加组名。如果这是您的想法,请告诉我。

标签: python pandas matplotlib


【解决方案1】:

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

groups = dataset.groupby('travel_mode')
for group in groups:
    label = group[0]
    data = group[1]
    data.columns = label + " - " + data.columns
    data.hist(bins=50)

【讨论】:

    【解决方案2】:

    这应该可以通过您的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))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-01-05
      • 2019-08-03
      • 1970-01-01
      • 2012-05-19
      • 1970-01-01
      • 1970-01-01
      • 2016-11-15
      相关资源
      最近更新 更多