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

如何使用Python读取大型CSV文件并完成分组聚合统计计算

Pandas方案可行性结论

300MB的CSV文件属于中小规模数据集,用Pandas处理完全可行,普通办公电脑都可以流畅运行,不需要额外搭建PySpark、Hadoop等大数据环境,对Python新手非常友好。

具体实现步骤
  • 第一步:读取CSV文件
    建议只加载需要的核心字段,减少内存占用,还可以手动指定字段类型避免数据异常(比如邮编开头的0被自动转为数字后丢失):
import pandas as pd

# 读取文件,usecols指定只加载需要的字段,dtype手动指定字段类型优化内存和数据准确性
df = pd.read_csv(
    "你的事故数据文件路径.csv",
    usecols=["Month", "Date", "Year", "Pincode", "Count"],
    dtype={"Pincode": str, "Count": int}
)
  • 第二步:按要求分组汇总
    如果需要全量日期的各邮编事故总数:
# 按日期+邮编分组,对Count求和,as_index=False保证分组字段保留为普通列
total_df = df.groupby(["Month", "Date", "Year", "Pincode"], as_index=False)["Count"].sum()

如果只需要计算指定日期的结果,可以先过滤再分组,进一步提升运行效率:

# 示例:筛选2024年6月1日的所有数据
target_df = df[(df["Year"] == 2024) & (df["Month"] == 6) & (df["Date"] == 1)]
# 对指定日期数据按邮编分组求和
target_total_df = target_df.groupby("Pincode", as_index=False)["Count"].sum()
  • 第三步:结果存储
    如果要存为CSV文件:
# index=False表示不把Pandas的行索引存入文件
total_df.to_csv("各邮编每日事故总数汇总.csv", index=False)

如果要存入数据库,直接用Pandas自带的to_sql方法对接对应数据库的Python驱动即可。

超大文件扩展方案

如果后续你需要处理的文件增长到数GB、超过当前设备内存,可以不用直接切换到PySpark,用Pandas的分块读取功能就能处理:

chunk_result = []
# 按10万行每块拆分读取文件
for chunk in pd.read_csv(
    "超大事故数据文件.csv",
    usecols=["Month", "Date", "Year", "Pincode", "Count"],
    dtype={"Pincode": str, "Count": int},
    chunksize=100000
):
    # 对每个块先做预聚合
    chunk_agg = chunk.groupby(["Month", "Date", "Year", "Pincode"], as_index=False)["Count"].sum()
    chunk_result.append(chunk_agg)

# 合并所有块的预聚合结果,再做一次全局汇总得到最终结果
final_total = pd.concat(chunk_result).groupby(["Month", "Date", "Year", "Pincode"], as_index=False)["Count"].sum()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 19:27:05