pandas 提高效率,降低内存的方法
2018-03-09 11:14
190 查看
将数值型列降级到更高效的类型
我们可以用函数pd.to_numeric()来对数值型进行向下类型转换。我们DataFrame.select_dtypes来只选择整型列,然后我们优化这种类型,并比较内存使用量。先找到要转化的类型,可用以下语句:
DataFrame.select_dtypes(include=None, exclude=None) #include, exclude : scalar or list-like #返回DataFrame data_2 = data.select_dtypes(include=['int8'])#'int8'要放在列表中,返回的data_2是DataFrame格式的
然后让这些数据自动转化成占内存较小的数据类型。
pandas.to_numeric(arg, errors='raise', downcast=None) #arg : list, tuple, 1-d array, or Series #errors : {‘ignore’, ‘raise’, ‘coerce’}, default ‘raise’} #downcast : {‘integer’, ‘signed’, ‘unsigned’, ‘float’} , default None
将字符串列转换为类别类型
当我们把一列转换成category类型时,pandas会用一种最省空间的int子类型去表示这一列中所有的唯一值。data['a'] = data['a'] .astype('category')
示例
import pandas as pd data = pd.DataFrame({"a":[0,1, 2, 3, 4, 5, 6, 7, 8, 9], "b":["员工的编号","员工的编号","领导的编号","领导的编号","员工的编号","员工的编号","员工的编号","领导的编号","领导的编号","员工的编号"]}) print(data) print(data.info())#显示数据类型和占用的内存 data['a'] = pd.to_numeric(data['a'], downcast='integer') data['b'] = data['b'].astype('category') print(data.info())#再次显示数据类型和占用的内存
结果: a b 0 0 员工的编号 1 1 员工的编号 2 2 领导的编号 3 3 领导的编号 4 4 员工的编号 5 5 员工的编号 6 6 员工的编号 7 7 领导的编号 8 8 领导的编号 9 9 员工的编号 _______________________________________我不是分割线———————————————————————————— <class 'pandas.core.frame.DataFrame'> RangeIndex: 10 entries, 0 to 9 Data columns (total 2 columns): a 10 non-null int64 b 10 non-null object dtypes: int64(1), object(1) memory usage: 240.0+ bytes None _______________________________________我不是分割线———————————————————————————— <class 'pandas.core.frame.DataFrame'> RangeIndex: 10 entries, 0 to 9 Data columns (total 2 columns): a 10 non-null int8 b 10 non-null category dtypes: category(1), int8(1) memory usage: 196.0 bytes None
可见,它们的数据类型改变了,而且内存空间降低了,从240.0+ bytes => 196.0 bytes。看似内存降低的不多,只是这个示例比较简单,当处理的数据有几百兆时,有时可以使内存降低一半以上。
参考文章
用pandas处理大数据——节省90%内存消耗的小贴士相关文章推荐
- 提高系统内存使用效率的设置方法
- 54个提高PHP程序运行效率的方法
- Q122:PBRT-V3,提高Monte Carlo积分计算效率的方法——Russian Roulette和Splitting(13.7章节)
- Oracle 建立触发器把某个存储过程镶到内存中 提高运算效率
- 提高 Python 运行效率的几个方法
- 改善C#程序,提高程序运行效率的50种方法
- 提高开发人员工作效率的六大方法
- 提高PHP编程效率的方法
- 基于变更的测试 - 提高测试效率和软件质量的最佳方法
- 提高工作效率的几个软件及方法
- 单片机提高C语言代码效率的方法
- 50个提高PHP编程效率的方法
- 提高软件测试效率方法
- 提高自学效率的10种方法
- oracle提高查询效率的34条方法
- PHP提高编程效率的方法
- C语言提高代码效率的几种方法
- 有效利用番茄工作法提高效率--XorTime的使用方法
- 提高数据库查询效率的有效方法
- 有效利用番茄工作法提高效率--XorTime的使用方法