gpt4 book ai didi

python - pandas groupby 一次用于多个数据帧/文件

转载 作者:太空宇宙 更新时间:2023-11-03 12:58:58 26 4
gpt4 key购买 nike

我尝试使用 pandas 处理多个巨大的 tsv 文件。我想按“col3”和“col5”分组。我试过这个:

import pandas as pd
df = pd.read_csv('filename.txt', sep = "\t")
g2 = df.drop_duplicates(['col3', 'col5'])
g3 = g2.groupby(['col3', 'col5']).size().sum(level=0)
print g3

到目前为止它工作正常并打印如下输出:

yes 2
no 2

我希望能够聚合来自多个文件的输出,即能够一次对所有文件中的这两列进行分组,并打印一个包含"is"或"is"的总出现次数的公共(public)输出“否”或该属性可能是什么。换句话说,我现在想一次对多个文件使用 groupby。如果文件没有这些列之一,则应跳过它并转到下一个文件。

最佳答案

这是 blaze 的一个很好的用例.

这是一个使用来自 nyctaxi dataset 的几个精简文件的示例.我特意将一个大文件分成两个文件,每个文件 1,000,000 行:

In [16]: from blaze import Data, compute, by

In [17]: ls
trip10.csv trip11.csv

In [18]: d = Data('*.csv')

In [19]: expr = by(d[['passenger_count', 'medallion']], avg_time=d.trip_time_in_secs.mean())

In [20]: %time result = compute(expr)
CPU times: user 3.22 s, sys: 393 ms, total: 3.61 s
Wall time: 3.6 s

In [21]: !du -h *
194M trip10.csv
192M trip11.csv

In [22]: len(d)
Out[22]: 2000000

In [23]: result.head()
Out[23]:
passenger_count medallion avg_time
0 0 08538606A68B9A44756733917323CE4B 0
1 0 0BB9A21E40969D85C11E68A12FAD8DDA 15
2 0 9280082BB6EC79247F47EB181181D1A4 0
3 0 9F4C63E44A6C97DE0EF88E537954FC33 0
4 0 B9182BF4BE3E50250D3EAB3FD790D1C9 14

注意:这将使用 pandas 自己的分块 CSV 阅读器执行 pandas 的计算。如果您的文件在 GB 范围内,您最好转换为 bcolz 等格式。或 PyTables ,因为这些是二进制格式,专为对大文件进行数据分析而设计。 CSV 只是具有约定的文本 block 。

关于python - pandas groupby 一次用于多个数据帧/文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29287943/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com