绕过Pandas的内存限制
Pandas是一个用于分析和处理数据集的Python库,但Pandas的一个主要缺点是在处理大型数据集时的内存限制问题,因为Pandas DataFrames(二维数据结构)是保存在内存中的,所以一次可以处理多少数据是有限制的。
在Pandas中处理大量的数据需要采用以下方法之一。
方法1:分块加载数据
pandas.read_csv()有一个叫chunksize的参数,用于分块加载数据。参数chunksize是Pandas在一个文件中一次读取的行数。它返回一个迭代器TextFileReader,需要通过迭代来获取数据。
语法:
示例:
输出:
方法2:过滤出有用的数据
大型数据集有许多列/特征,但只有其中一些是实际使用的。因此,为了节省更多的数据操作和计算的时间,只加载有用的列。
语法:
dataframe = dataframe[[‘column_1’, ‘column_2’, ‘column_3’, ‘column_4’, ‘column_5’]]
示例 :
输出 :
方法3:为列指定dtypes
默认情况下,pandas为所有的数字值指定了int64范围(这是最大的可用dtype)。但是如果数字列中的数值小于int64范围,那么可以使用容量较小的dtype来防止额外的内存分配,因为较大的dtype会使用更多的内存。
语法:
dataframe =pd.read_csv(‘file_name’,dtype={‘col_1’:‘dtype_value’,‘col_2’:‘dtype_value’})
示例 :
输出 :
方法4:稀疏的数据结构
Pandas Dataframe可以被转换为稀疏Dataframe,这意味着任何与特定值相匹配的数据在表示中被省略。稀疏的DataFrame允许更有效的存储。
语法:
dataframe = dataFrame.to_sparse(fill_value=None, kind=’block’)
由于上述数据集中没有空值,让我们创建带有一些空值的数据框架,并将其转换为稀疏数据框架。
示例 :
输出:
方法5:删除未使用的对象
在清理/预处理数据时,会创建许多临时的数据框架和对象,这些对象在使用后应该被删除,以便减少内存的使用。python中的del关键字主要用于删除Python中的对象。
语法:
del object_name
示例 :