我有一些CSV格式的数据(160亿行,170列)。
我可以使用cut
提取每个列,并使用pd.load_csv()
将文件中的“仅”一列加载到Pandas中,但它非常慢,并且在加载时使用了大约228 GB的RAM,然后其中一列返回到46 GB,而对于其他一些测试的256 GB RAM的系统,我开始交换并停止。
有没有一种方法可以合理地快速计算,并且需要更少的RAM来计算每个列上的标准统计数据,如平均值,中位数,标准差和标准误差?
系统都运行Ubuntu 20.04.3 LTS,我可以通过标准存储库安装任何可用的软件包。
注意:有些列有u
用于未知/缺失数据,而有些列则没有任何相同的数据,否则所有列都是整数或浮点数。
1条答案
按热度按时间vmpqdwk31#
如果有人正在寻找答案,评论中有一些不使用CSV文件的好建议。
在几乎所有情况下,使用CSV以外的东西是最好的,但有时(就像我的情况),这是你必须使用的。有几个解决方案,工作相当不错,这取决于因素。
我找不到解决办法,所以我自己写了。
计算Standard Deviation和Standard Error(以及Confidence Intervals)不需要在RAM中保存所有变量;但是,如果您选择不在RAM中保存它们,则必须读取它们两次。一次计算Mean,第二次计算平均值与平方值之差的总和(有时称为Mean Squares)。有了这两个数字和变量的数量,你可以计算大多数最常见的统计数据。
示例代码: