我有一个这样的数据框:
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轴上有分类列,例如action
,action_type
和action_detail
以及y轴上具有值Missing
,{{1}的行数的百分比计数(对于每列) (你不能在这里看到这个,但有些列确实有这个值)和Unknown
(任何不是Other
或Missing
的东西。)
我正在努力解决的一件事是如何查看Unknown
列中的每个值,action
和action_type
分别是丢失或未知的百分比是多少? 。例如行动action_detail
发生100次,在这些时间内,有20%的时间存在lookup
Missing
等。
我通过这种类型的代码得到了这个:
action_type
但我希望将我的分析提升到新的水平。
答案 0 :(得分:1)
('Missing', 'Unknown', 'Other')
。value_counts
。nan
而不是0
,因此您可能希望在结尾使用fillna(0)
。-
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)