我需要计算每个数字的计数和百分比,因为它每年都出现在以下数据框中:
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
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来计算百分比。
1条答案
按热度按时间sd2nnvve1#
您可以通过将每个数字的计数除以每年的总计数并乘以100来计算百分比。以下是一种方法:
这将为您提供所需的结果:
注意,transform()方法用于计算每年的总计数并将其广播到该年的所有行,然后通过将每个数字的计数除以总计数并乘以100来计算百分比。