创建数据框,显示切片帧与较大帧的比例

问题描述 投票:0回答:1

我有一个包含 5 年数据的数据集。我想创建一个数据框,用于确定每个县满足条件(即第 1 列值 > 10)的行的比例,以及每个县在数据集中的重要性(即行数)。我想每年单独确定这一点,这样结果就可以按年份平均。我已经在下面的代码中完成了一年的数据:

df_2018_1 = df[(df.Year=='2018')]
df_2018_2 = df[(df.column_1 > 10) & (df.Year=='2018')]
df_2018_cur = pd.DataFrame()
df_2018_cur['Column 1 > 10'] = df_2018_2.County.value_counts()/df_2018_1.County.value_counts()*100
# Percent of submissions by county out of all submissions (county importance).
df_2018_cur['PCT of State'] = df_2018_1.County.value_counts()/len(df_2018_1)*100

# Repeat for remaining years, then average across dataframes.

如果可能的话,我希望有一种代码更简洁的替代策略。我不相信

pivot_table()
支持
value_counts()
功能。我想知道
groupby
在这里是否有用,但如果是的话,我还没有想到它会是什么样。

谢谢你。

python pandas group-by pivot-table
1个回答
0
投票
df['Column1_gt_10'] = df['column_1'] > 10
grouped = df.groupby(['Year', 'County'])
aggregated = grouped.agg(
    Column1_gt_10_pct = ('Column1_gt_10', lambda x: x.mean() * 100), 
    County_count = ('Column1_gt_10', 'size')
total_counts_by_year = df.groupby('Year')['County'].count()
aggregated['PCT_of_State'] = aggregated['County_count'] / aggregated.index.get_level_values('Year').map(total_counts_by_year) * 100
final_result = aggregated.groupby(level='County').mean()

根据我对问题的理解

  1. Year
    County
  2. 分组
  3. 对各组应用
    column_1>10
    的条件
  4. 获取全年平均值,但在此之前计算县级比例。
© www.soinside.com 2019 - 2024. All rights reserved.