首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在通过pandas分块处理数据时聚合分析?

如何在通过pandas分块处理数据时聚合分析?
EN

Stack Overflow用户
提问于 2018-10-24 11:17:40
回答 1查看 150关注 0票数 0

我正在通过pandas加载一个文件,以便分块处理:

代码语言:javascript
复制
import pandas as pd
import numpy as np

f= open("analysis.txt","a+")

chunksize = 10 ** 6
for chunk in pd.read_csv('filename.txt', sep='\t', lineterminator='\r', chunksize=chunksize):
    my_tab = pd.crosstab(index=chunk["Year"], columns=chunk["Indicator"])

my_tab提供了当前块的年份和指示符列的数据帧。有没有一种方法可以聚合所有这些数据帧,以便在处理完所有数据后,我可以看到整个数据文件的最终分析?

EN

回答 1

Stack Overflow用户

发布于 2018-10-24 15:52:53

简单的例子:

代码语言:javascript
复制
import pandas as pd
df = pd.DataFrame({'type':['fruit','vegi','fruit','meat','vegi','meat','fruit'],
                'ori':['us','cn','cn','nz','nz','us','cn'],
               'num':[5,5,9,3,2,10,8],
               'price':[5,5,10,3,3,13,20]})
df1 = df.iloc[0:2]
df2 = df.iloc[2:4]
df3 = df.iloc[4:7] # chunk
a = pd.crosstab(df1['type'], df1['ori'])
b = pd.crosstab(df2['type'], df2['ori'])
c = pd.crosstab(df3['type'], df3['ori']) # crosstab of chunks

使用reduce让生活变得更轻松:

代码语言:javascript
复制
from functools import reduce
reduce(lambda df1, df2:df1.add(df2, fill_value=0) ,[a, b, c])

结果:

代码语言:javascript
复制
ori     cn  nz  us   
type             
fruit   2.0 0.0 1.0  
meat    0.0 1.0 1.0  
vegi    1.0 1.0 0.0  

这应该与以下内容几乎相同:

代码语言:javascript
复制
pd.crosstab(df['type'], df['ori'])
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52960602

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档