我有一个排序的多指标Pandas数据框,我需要在一个条形图。My data frame。
我可能还没有找到解决方案,或者简单的解决方案不存在,但我需要在此数据上绘制一个条形图,其中Content
和Category
位于x轴上,Installs
为高度。
简而言之,我需要显示每个条形图的组成,例如20%由Everyone
组成,40%由Teen
组成等......我不确定这是否可能,因为平均值的平均值是不可能的,因为样本量不同,因此我制作了一个Uploads
列来计算它,但还没有达到按平均值绘图的程度。
我认为累积作图会得出错误的结果。
我需要绘制一个条形图,其中X标记为Category
(最好是前10个),然后每个X标记都有一个Content
的条形图 * 不总是3,可以只是"每个人"和"青少年"*,每个条形图的高度为Installs
。
理想情况下,它应该如下所示:Bar Chart
但是每个条具有用于该特定Category
的Content
的条。
我试过用DataFrame.unstack()
展平,但它破坏了 Dataframe 的排序,所以使用了Cat2 = Cat1.reset_index(level = [0,1])
,但仍需要绘图帮助。
到目前为止我有:
Cat = Popular.groupby(["Category","Content"]).agg({"Installs": "sum", "Rating Count": "sum"})
Uploads = Popular[["Category","Content"]].value_counts().rename_axis(["Category","Content"]).reset_index(name = "Uploads")
Cat = pd.merge(Cat, Uploads, on = ["Category","Content"])
Cat = Cat.groupby(["Category","Content"]).agg({"Installs": "sum", "Rating Count": "sum", "Uploads": "sum"})
这就给出了
result
然后我这样排序
Cat1 = Cat.unstack()
Cat1 = Cat1.sort_index(key = (Cat1["Installs"].sum(axis = 1)/Cat1["Uploads"].sum(axis = 1)).get, ascending = False).stack()
Thanks to one of those solutions
我只有这些了。
Data Set来自Kaggle,超过600MB,不要指望任何人下载它,但至少是一个简单的解决方案指南。
P.S.这应该可以帮助我以同样的方式分割散点图中的每个点,但如果没有,也没关系。
另外,我没有足够的声誉来发布图片,所以抱歉的链接
2条答案
按热度按时间ig9co6j11#
数据集很大,但您应该提供模拟数据以轻松地重现示例,如下所示:
如果要计算每个"类别"的"安装"百分比,请使用
groupby().apply()
:然后,您只需
.unstack()
一次:然后绘制所需特征的条形图:
w6lpcovy2#
ChatGPT已经回答了我的问题
这是一个样本数据集
我所做的就是在数据集中添加一个求和列,并按此求和对它进行排序。
其中QW1是多索引 Dataframe 。
接下来要做的就是把它画出来: