如何使用Pandas无需循环统计各开发者类型最常用的5种编程语言
实现方案
完全可以用Pandas原生方法实现,无需手动写循环遍历,处理效率远高于iterrows遍历,代码逻辑和你原有循环的统计结果完全一致:
import pandas as pd # 1. 先统计每类开发者的总人数,每个用户仅统计1次 dev_total = merged_df.assign( dev_type=merged_df['dev_type'].str.split(';') ).explode('dev_type').groupby('dev_type').size().reset_index(name='dev_total') # 2. 拆分开发者类型、编程语言字段,展开为独立行后统计各语言使用人数 df_exploded = merged_df.assign( dev_type=merged_df['dev_type'].str.split(';'), language=merged_df['languages'].str.split(';') ).explode('dev_type').explode('language') dev_lang_count = df_exploded.groupby(['dev_type', 'language']).size().reset_index(name='lang_cnt') # 3. 计算各语言占比,按占比排序后取每类开发者的Top5语言 result = dev_lang_count.merge(dev_total, on='dev_type') result['pct'] = (result['lang_cnt'] / result['dev_total'] * 100).round(2) top5_result = result.sort_values(['dev_type', 'pct'], ascending=[True, False]).groupby('dev_type').head(5) # 4. 按你需要的格式输出结果 for dev_type, group in top5_result.groupby('dev_type'): print(dev_type) for _, row in group.iterrows(): print(f"\t{row['language']}: {row['pct']}%") print()
这套方案是Pandas处理多值分隔字段的标准实现,向量化的操作比iterrows遍历的效率高几十倍,适合处理Stack Overflow调查这类十万级样本量的数据集。
内容的提问来源于stack exchange,提问作者AyseAsude
相关产品推荐
相关产品推荐

