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:来自多个统计文件的统计摘要的主要内容,如果未能解决你的问题,请参考以下文章