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

Python & Pandas按天分组并统计每日数据量

处理Pandas时间序列分组统计的正确姿势

嘿,作为Pandas新手碰到时间序列问题太正常了,你的思路完全可行!而且其实不用手动去构建字典——Pandas本身就有非常简洁的工具帮你完成这个需求,效率还高,特别适合你13万行的数据集。

先给你梳理下实操步骤,全程都是Pandas原生的高效操作:

第一步:确保时间列是datetime类型

如果你的date & time of connection列还不是datetime格式(比如是字符串),先做转换,这是后续所有时间操作的基础:

import pandas as pd

# 把字符串格式的时间转成datetime类型
df['date & time of connection'] = pd.to_datetime(df['date & time of connection'])

第二步:按日期分组统计数量并转成字典

这里有两种简洁的实现方式,选你顺手的就行:

方法一:用value_counts一步到位

这是最省心的写法,直接提取日期部分统计频次,再转成字典:

# 提取日期并统计数量,直接转成字典
date_count_dict = df['date & time of connection'].dt.date.value_counts().to_dict()

方法二:用groupby + size

如果你更习惯分组的逻辑,也可以这么写:

# 按日期分组,统计每组的行数,再转成字典
date_count_dict = df.groupby(df['date & time of connection'].dt.date).size().to_dict()

可选:把日期键转成dd/mm/yyyy字符串格式

上面得到的字典键是datetime.date对象(比如datetime.date(2024,5,20)),如果想要键是你要的dd/mm/yyyy字符串格式,做个简单的字典推导就行:

date_count_str_dict = {date.strftime('%d/%m/%Y'): count for date, count in date_count_dict.items()}

为啥你之前的代码效果不好?

你之前写的df.groupby('date & time of connection')['date & time of connection'].apply(list),本质是把每个精确时间点的所有记录都存成了列表——这不仅完全不是你要的「按日期统计数量」,还会因为存储大量重复的时间数据,额外占用内存,处理13万行数据自然会很拖沓。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 09:58:05