如何计算Pandas分组中的百分比值

nfeuvbwi  于 2023-03-11  发布在  其他
关注(0)|答案(1)|浏览(225)

我需要计算每个数字的计数和百分比,因为它每年都出现在以下数据框中:

df = pd.DataFrame(
    {"date": ["01/01/2022", "01/01/2022", "01/02/2023"], "number": [1, 2, 9]}
)
df["date"] = pd.to_datetime(df["date"])

我可以很容易地得到计数,但我如何计算每个数字的百分比?
x一个一个一个一个x一个一个二个x

sd2nnvve

sd2nnvve1#

您可以通过将每个数字的计数除以每年的总计数并乘以100来计算百分比。以下是一种方法:

df_counts = (
    df.groupby([df.date.dt.year, "number"])
    .agg({"date": "count"})
    .rename(columns={"date": "count"})
    .reset_index()
)

# Calculate total count for each year
total_counts = df_counts.groupby("date")["count"].transform("sum")

# Calculate percentage
df_counts["percentage"] = (df_counts["count"] / total_counts) * 100

# Print the results
print(df_counts)

这将为您提供所需的结果:

date  number  count  percentage
0  2022       1      1        50.0
1  2022       2      1        50.0
2  2023       9      1       100.0

注意,transform()方法用于计算每年的总计数并将其广播到该年的所有行,然后通过将每个数字的计数除以总计数并乘以100来计算百分比。

相关问题