MST

星途 面试题库

面试题:Python中Pandas处理大规模数据之数据筛选

假设你有一个包含百万行数据的CSV文件,使用Pandas读取后,其中一列名为'age',你需要筛选出年龄在30到40岁(包含30和40)之间的数据行,用Python代码实现该操作,并说明可能会遇到的性能问题及优化思路。
43.1万 热度难度
编程语言Python

知识考点

AI 面试

面试题答案

一键面试

代码实现

import pandas as pd

# 读取CSV文件
data = pd.read_csv('your_file.csv')

# 筛选年龄在30到40岁之间的数据行
filtered_data = data[(data['age'] >= 30) & (data['age'] <= 40)]

可能遇到的性能问题

  1. 内存占用:百万行数据量较大,读取到内存中可能会占用大量内存,导致内存不足。
  2. 处理速度:对整个数据集进行条件筛选操作,数据量大会使处理时间变长。

优化思路

  1. 分块读取:使用chunksize参数分块读取CSV文件,例如pd.read_csv('your_file.csv', chunksize = 1000),在每个分块上进行筛选操作,然后合并结果。
  2. 数据类型优化:确保age列的数据类型为合适的类型(如int而不是object),避免不必要的类型转换开销。
  3. 使用向量化操作:如代码中使用(data['age'] >= 30) & (data['age'] <= 40)这种向量化条件筛选,而不是使用循环逐行判断,以提高运算效率。