You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Pandas中按州计算各行业公司的占比平均值

按州计算Pandas中各行业公司的占比平均值

嘿,这个需求其实很好实现,咱们一步步来搞定它!你的DataFrame里每个公司对应一行,用1/0标记是否属于某行业,核心思路就是先统计每个州各行业的公司总数,再除以该州的总公司数量,最后转成百分比格式即可。

步骤1:构造示例数据(模拟你的数据集)

首先咱们把你给的示例扩展一下,方便演示效果:

import pandas as pd

data = {
    'company_name': ['google', 'jimmy', 'microsoft', 'apple', 'bankofamerica', 'walmart'],
    'country_code': ['USA', 'GBR', 'USA', 'USA', 'USA', 'USA'],
    'state_code': ['CA', 'unknown', 'NY', 'CA', 'NY', 'CA'],
    'software': [1, 0, 1, 1, 0, 0],
    'finance': [0, 0, 0, 0, 1, 0],
    'commerce': [0, 1, 0, 0, 0, 1]
}

df = pd.DataFrame(data)

步骤2:计算每个州的各行业公司数量

按state_code分组,对各行业列求和,得到每个州里各行业的公司总数:

# 只选取行业相关的列进行分组求和
industry_counts = df.groupby('state_code')[['software', 'finance', 'commerce']].sum()

步骤3:计算每个州的总公司数量

同样按state_code分组,用size()获取每个州的公司总数:

total_companies = df.groupby('state_code').size()

步骤4:计算占比并转成百分比

把各行业的数量除以对应州的总公司数,再乘以100转成百分比,最后保留两位小数让结果更美观:

industry_percentages = (industry_counts.div(total_companies, axis=0) * 100).round(2)

最终结果

运行完上面的代码后,你会得到这样的结果:

software  finance  commerce
state_code                             
CA              66.67     0.00     33.33
NY              50.00    50.00      0.00
unknown          0.00     0.00    100.00

额外小技巧

  • 如果想排除unknown这类无效的州,可以在计算前先过滤数据:
    df = df[df['state_code'] != 'unknown']
    
  • 也可以把所有步骤合并成一行更简洁的代码:
    industry_percentages = df.groupby('state_code')[['software', 'finance', 'commerce']].sum() \
                            .div(df.groupby('state_code').size(), axis=0) \
                            .mul(100) \
                            .round(2)
    

内容的提问来源于stack exchange,提问作者user7057659

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 09:49:19