我有一个具有以下结构的数据集
有 9 个不同的 candidato
(候选人)和27个不同的Page Name
可以找到完整数据集here
我需要找到一种方法来计算每个Page Name
、Total Interactions
的总数和百分比 , Likes
, Shares
, Comments
, Love
,和Angry
这将产生具有以下结构的 DataFrame
我需要计算这个的原因是为了生成一个百分比堆叠条形图,如下图所示:
使用 Pandas 实现这一目标的最佳方法是什么?提前感谢您的帮助。
披露此问题旨在帮助一个非营利项目分析媒体对 2022 年大选葡萄牙候选人的行为和偏见。 prior report是使用 Google Sheets 制作的,但使用 Python 分析数据集是最好的方法,因为我计划每 3 个月执行一次。
可以找到 GitHub 存储库 here ,您可以在其中访问所有使用的数据集和代码。
最佳答案
您可以groupby
“页面名称”和“候选人”,然后找到“总互动数”、“喜欢”、“评论”、“分享”、“爱”、“的总和”对每个页面名称和每个候选人感到愤怒:总计
。
然后按第一个索引级别(即“页面名称”)对 totals
使用 groupby
并转换 sum 函数,以便获得每个转换后的页面名称的总和求 totals
并将 totals
除以它即可得出百分比。
最后加入
两个DataFrame以获得最终结果。
totals = df.groupby(['Page Name','candidato'])[['Total Interactions','Likes','Comments','Shares','Love','Angry']].sum()
percentages = totals.groupby(level=0).transform('sum').rdiv(totals).mul(100).round(2)
out = totals.join(percentages, lsuffix='', rsuffix='_Percentages').reset_index()
这会生成一个可以生成问题中的图的 DataFrame。
关于python - 计算多列的百分比,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71001130/