2017-08-28 45 views
1

我正在处理一个大的csv文件(超过4GB)。如何在大熊猫中调用大块描述函数?

所以我要对大熊猫的块(内存泄漏)

工作,但我不知道如何把描述(计数,最小值,最大值,百分位,...)全部数据。

请给我这个问题的一些建议

非常感谢。

回答

2

比方说,你有一个CSV文件,你可以做这样的事情:

import pandas as pd 

nr_chunk_size = 10 
summary = [] 
df = pd.read_csv('your_file.csv', iterator=True, chunksize=nr_chunk_size) 
for chunck in df: 
    summary.append(chunck.describe().values) 

之后,你需要聚集summary列表。计数应该很容易,你只需要总结一下,例如,

count = sum([summary[i][0][0] for i in range(len(summary))]) 

,最低和最高,你需要创建所有的号码列表,并采取最小数量,

minimum = min([summary[i][3][0] for i in range(len(summary))]) 
maximum = max([summary[i][7][0] for i in range(len(summary))]) 

对于百分位,有点难度,因为您不会将整个数据集放入其中。你可以取一个近似值的平均值。

+0

百分位的平均值不是真实百分位数的近似值。你能有更好的解决方案吗?我知道你的解决方案的数量,最大值,最小值,但它确实不方便 –

+0

这不是一个真正的近似值;)我只需要一个措辞。如果你已经知道count,max和min的解决方案,为什么不在你的问题中写这个...... –

+0

因为,我认为这不是很好。我想找到解决方案来继承内置的至少描述代码。我认为我的代码不太好。对每个块使用sum/max/min并不难,总结全部。你能意识到吗? –