【问题标题】:How to plot stacked bar chart to summarise each categorical column for proportion of values如何绘制堆积条形图以总结每个分类列的值比例
【发布时间】:2016-02-07 14:48:44
【问题描述】:

我有一个这样的数据框:

    user_id     action          action_type     action_detail   device_type secs_elapsed
0   d1mm9tcy42  lookup          Missing         Missing         Windows Desktop 319
1   d1mm9tcy42  search_results  click           view_search_results Windows Desktop 67753
2   d1mm9tcy42  lookup          Missing         Missing Windows Desktop 301
3   d1mm9tcy42  search_results  click           view_search_results Windows Desktop 22141
4   d1mm9tcy42  lookup          Missing         Missing Windows Desktop 435
5   d1mm9tcy42  search_results  click           view_search_results Windows Desktop 7703
6   d1mm9tcy42  lookup          Missing         Missing Windows Desktop 115
7   d1mm9tcy42  personalize     data            wishlist_content_update Windows Desktop 831
8   d1mm9tcy42  index           view            view_search_results Windows Desktop 20842
9   d1mm9tcy42  lookup          Missing         Missing Windows Desktop 683

我想设置一个条形图,它在 x 轴上有分类列,例如actionaction_typeaction_detail,在 y 轴上是具有值 MissingUnknown 的行数的百分比计数(对于每列)(您在这里看不到,但有些列确实有那个值)和Other(任何不是MissingUnknown的东西)。

我正在努力解决的一件事是,对于action 列中的每个值,如何查看action_typeaction_detail 中缺失或未知的百分比分别是多少。例如动作 lookup 发生了 100 次,在这些时间中,有 20% 的时间出现了 Missing action_type 等。

我通过这种类型的代码得到了一些东西:

print("The percentage of missing action types is {0}".format
     (((clean_sessions['action_type'] == 'Missing').value_counts())/(clean_sessions['action_type'].count())
    ))

但我想让我的分析更上一层楼。

【问题讨论】:

    标签: numpy pandas missing-data data-analysis


    【解决方案1】:
    1. 删除不相关的列。
    2. 使所有值都在('Missing', 'Unknown', 'Other')中。
    3. 在每一列上致电value_counts
    4. 当值不在列中时,计数将为 nan 而不是 0,因此您可能希望在末尾使用 fillna(0)
    5. 您已经有了所需的数据,只需将其绘制出来。

    -

    result = (df[['action', 'action_type', 'action_detail']]
     .where(df.isin(('Missing', 'Unknown')), 'Other')
     .apply(lambda x: x.value_counts(normalize=True))
     .fillna(0))
    print(result)
    
             action  action_type  action_detail
    Missing       0          0.5            0.5
    Other         1          0.5            0.5
    
    result.T.plot(kind='bar', stacked=True)
    

    【讨论】:

      猜你喜欢
      • 2019-09-27
      • 1970-01-01
      • 1970-01-01
      • 2018-03-15
      • 2019-04-24
      • 1970-01-01
      • 1970-01-01
      • 2018-06-05
      • 2019-06-08
      相关资源
      最近更新 更多