Python:来自多个统计文件的统计摘要

Posted

技术标签:

【中文标题】Python:来自多个统计文件的统计摘要【英文标题】:Python : Summary of statistics from multiple statistics files 【发布时间】:2017-04-27 10:23:26 【问题描述】:

我有大约 140,000,000 条记录的数据集,已存储在数据库中。我需要使用 python 计算这些数据的基本统计数据,例如平均值、最大值、最小值、标准差。

但是当我使用诸如“Select * from Mytable order by ID limit %d offset %d”% (chunksize,offset) 之类的块时,执行需要一个多小时并且仍在执行。参考自How to create a large pandas dataframe from an sql query without running out of memory?

由于需要更多时间,现在我决定只读取少量记录并将使用 pandas.describe() 获得的统计信息保存到 csv 中。同样,对于整个数据,我将有多个仅包含统计信息的 csv。

有没有办法合并这些 csv 以获得 140,000,000 的整个数据的整体统计信息?

【问题讨论】:

你不能直接使用数据库来完成这些任务吗?例如。见:blogs.msdn.microsoft.com/zainnab/2009/03/17/… 为什么不把csvs打开成pandas,用pandas.concat函数合并数据呢?见:pandas.pydata.org/pandas-docs/stable/merging.html @fgoettel 感谢您将我指向链接。这很有帮助。 你的行和列尺寸是多少? @Nickil Maveli Row = 96000000 and columns = 13 【参考方案1】:

在这种情况下(计算平均值、最大值、最小值、标准差),对于拆分为不同文件的大量数据集,您可以计算所需的内容(平均值、最大值等...)只保留结果,然后打开第二个文件, 并计算(平均值、最大值等...)考虑到您的第一个文件等的结果...

【讨论】:

【参考方案2】:

你试过用泡菜吗?以pickle格式保存和加载,使用pandas数据框计算汇总统计。

https://pandas.pydata.org/pandas-docs/stable/generated/pandas.read_pickle.html

如果这不起作用,那么也许重新审视目标,了解为什么需要捕获如此大的数据集并按类别、时间段或更有意义的方式进行细分。

【讨论】:

以上是关于Python:来自多个统计文件的统计摘要的主要内容,如果未能解决你的问题,请参考以下文章

搜索多个数组值并统计搜索结果

python基础一 ------如何获取多个字典相同的键

如何统计Linux中文件和文件夹/目录的数量

python 摘要统计

如何在不复制列标签的情况下将多个数据框写入同一张表

如何使用 Ecto 加入多个存储库?