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

使用Python Pandas编写程序计算车辆加油/未加油占比求助

Pandas实现车辆加油/未加油占比统计

直接上可运行代码,结合groupby和value_counts就能搞定占比统计:

import pandas as pd

# 替换成你的真实数据集
data = {
    'CAR': ['红色', '红色', '蓝色', '蓝色', '蓝色', '黑色', '黑色', '黑色', '黑色'],
    'GAS': ['NOT', '92#', 'NOT', '95#', '95#', '98#', 'NOT', 'NOT', '92#']
}
df = pd.DataFrame(data)

# 按车辆分组,统计各加油状态的占比(normalize=True直接输出占比而非计数)
gas_ratio = df.groupby('CAR')['GAS'].value_counts(normalize=True).unstack(fill_value=0)

# 整理成「已加油」「未加油」两列:NOT对应未加油,其余状态合并为已加油
gas_ratio['未加油'] = gas_ratio.pop('NOT') if 'NOT' in gas_ratio.columns else 0
gas_ratio['已加油'] = 1 - gas_ratio['未加油']

# 格式化为百分比并输出结果
gas_ratio = gas_ratio[['已加油', '未加油']].applymap(lambda x: f'{x:.2%}')
print(gas_ratio)

关键逻辑说明

  1. groupby('CAR')['GAS'].value_counts(normalize=True):按车辆分组后,直接生成每个车辆下各加油状态的占比,省去手动计算占比的步骤
  2. unstack(fill_value=0):把分组后的行索引转成列,缺失的状态用0填充,避免后续计算报错
  3. 提取NOT列作为「未加油」占比,用1 - 未加油占比直接得到所有加油状态的总占比,不用单独统计各类加油标识
  4. applymap:把小数格式的占比转为带百分号的直观样式

输出示例

已加油   未加油
CAR             
黑色  50.00% 50.00%
红色  50.00% 50.00%
蓝色  66.67% 33.33%

如果数据集里有其他代表未加油的标识,只需要把pop('NOT')里的字符串替换成对应值即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 08:40:28