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

如何高效计算DataFrame中人口列的年度百分比变化(解决内存溢出)

高效计算年度人口百分比变化的方法

问题根源

你之前用merge的方法会生成庞大的中间临时表,这是大文件内存溢出的核心原因——合并操作会重复存储大量数据,内存占用呈指数级增长。

最优实现方案

直接使用Pandas内置的pct_change()函数,它专门用于计算序列的百分比变化,无需创建中间合并表,内存占用极低:

  1. 转换年份数据类型:把Year列从字符串转为整数,确保能正确排序和偏移
  2. 按年份排序:保证数据按时间顺序排列(如果原始数据未排序)
  3. 计算百分比变化:用pct_change()直接计算,再转为百分比格式,最后处理空值

完整代码示例

import pandas as pd

# 读取大CSV文件(指定dtypes减少内存占用)
df = pd.read_csv('your_large_file.csv', dtype={'Year': int, 'Total_Population': int})

# 按年份排序(若数据未按年份顺序存储)
df = df.sort_values('Year').reset_index(drop=True)

# 计算年度百分比变化:(当前值-上年值)/上年值 *100
df['change_in_population'] = df['Total_Population'].pct_change() * 100

# 处理第一行空值(无上年数据,此处填充为0,也可保留NaN)
df['change_in_population'] = df['change_in_population'].fillna(0)

# 查看结果
print(df.head())

额外内存优化技巧

  • 读取CSV时指定dtype参数,避免Pandas自动推断数据类型导致的内存浪费(比如将Year设为int,Total_Population设为int或float)
  • 若数据量极大,可使用chunksize分块处理,但上述方法已足够高效,200MB级别的文件无需分块

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 12:17:07