在平常是用pandas
的时候,虽然用的很愉快,但遇到数据量很大的时候总是很慢,这篇文章主要介绍了一些简单优化dataframe
使用内存的方法,大大提高pandas
使用的效率。
简单的概念
# coding: utf-8
import pandas as pd
# 读取数据
df = pd.read_csv("test.csv")
# 得到精确的内存信息
df.info(memory_usage='deep')
# 说明:之后都用df来表示读取到的dataframe
pandas中每一个数据类型都有一个专门的类来处理。
ObjectBlock
: 字符串列的块FloatBlock
: 浮点数列的块Numpy ndarray
:整型和浮点数值的块(非常快,用C数组构建的)
for dtype in ['float', 'int', 'object']:
# 选中对应的dtype列
selected_dtype = df.select_dtypes(include=[dtype])
# 查看内存使用量的平均值
mean_usage_b = selected_dtype.memory_usage(deep=True).mean()
# 获取到的数据单位为K, 这里转换一下
mean_usage_mb = mean_usage_b / 1024 ** 2
print("Average memory usage for {} columns:{:03.2