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

如何用Python/Pandas统计特定用户Bob的月度工作、州维度数据量?

解决Bob每月工作代码与州的精准统计问题

嘿,我来帮你搞定这个统计需求!处理数万条记录的话,用Pandas的组合操作完全可以一次性搞定精准统计,我之前处理过类似规模的数据,这个方法效率和准确性都没问题。

第一步:先确保日期列是datetime类型

如果你的日期列还不是datetime格式,先转换一下,不然没法按月精准分组:

import pandas as pd

# 假设你的数据框叫df,日期列是'date'
df['date'] = pd.to_datetime(df['date'])

第二步:筛选Bob的数据+提取年月维度

先把Bob的记录单独筛出来,然后从日期里提取完整年月(比如2024-05),避免不同年份的同月被错误合并:

# 筛选Bob的数据,用copy()避免后续操作触发SettingWithCopyWarning
bob_data = df.loc[df['user'] == 'Bob'].copy()

# 新增月份列,to_period('M')会生成格式统一的年月标识
bob_data['month'] = bob_data['date'].dt.to_period('M')

第三步:多维度分组统计核心操作

这一步就是关键了,用groupby同时按月份、工作代码、州三个维度分组,然后用size()统计每组的记录数,最后用reset_index()把结果转成易读的表格格式:

# 一次性得到每个月、每个工作代码、每个州的精准统计数
stats_result = bob_data.groupby(['month', 'job_code', 'state']).size().reset_index(name='count')

输出的stats_result里,每一行都对应Bob在某个月份、某个工作代码、某个州的记录数量,完全不会有遗漏或重复统计的问题。

可选:用透视表更直观展示分布

如果想一眼对比同一月份同一工作代码下不同州的数量差异,可以用透视表整理结果:

pivot_result = pd.pivot_table(
    bob_data,
    index=['month', 'job_code'],
    columns='state',
    values='user',
    aggfunc='count',
    fill_value=0  # 把无记录的州填充为0,避免空值
)

为什么之前的groupby不够精准?

大概率是你之前只按部分维度分组(比如只按月份+工作代码,没加州),或者没正确处理日期的年月绑定(比如只用dt.month得到1-12的数字,导致不同年份的同月被合并)。上面的方法用to_period('M')把年月作为整体维度,再加上三个维度的联合分组,就能彻底解决这个问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:06:59