python - 使用 GroupBy 将分类数据计算为 Pandas 数据框中每个类别的百分比
问题描述
我有一个 Pandas 数据框,其中COLOR
包含分类数据的列 -
ZIP YEAR COLOR
11111 1990 0
11111 1990 1
11111 2000 1
11111 2000 1
22222 1990 0
22222 1990 0
22222 2000 0
22222 2000 1
如何按ZIP
和YEAR
列 ( df.groupby(['ZIP', 'YEAR'])
) 聚合数据并将分类数据计算为每个类别的百分比,以使结果类似于下面的数据框?
ZIP YEAR COLOR
0 1
11111 1990 50 50
2000 0 100
22222 1990 100 0
2000 50 50
import pandas as pd
df = pd.DataFrame([{11111, 1990, 0},
{11111, 1990, 1},
{11111, 2000, 1},
{11111, 2000, 1},
{22222, 1990, 0},
{22222, 1990, 0},
{22222, 2000, 0},
{22222, 2000, 1}]
, columns=["ZIP", "YEAR", "COLOR"]
)
解决方案
尝试:
df.groupby(["ZIP", "YEAR"])["COLOR"].value_counts(normalize=True).mul(100).unstack("COLOR").fillna(0)
输出:
COLOR 0 1
ZIP YEAR
11111 1990 50.0 50.0
2000 0.0 100.0
22222 1990 100.0 0.0
2000 50.0 50.0
推荐阅读
- r - 引用传递给函数的参数
- powerbi - Self-Service BI and Compliance
- android - 首次构建空白 Android 应用程序时连接到谷歌失败
- javascript - 为什么我们在 JavaScript 的 EventListener 中调用函数时不使用 ()
- c# - 在 C# 8 中,如何检测不可能的空值检查?
- angular - Firebase 托管和路由 Angular 项目不起作用
- java - 使用 Java 8 Lambas 通过键或值在 JsonArray (javax.json.JsonArray) 中查找 JsonObject
- regex - 用于从 Instagram 标题中解析提到的用户名的正则表达式
- python - seaborn中的多个计数图
- python - 反向 pip 安装“-e”选项