python 聚合_Python数据聚合

Python有几种方法可用于对数据执行聚合。 它使用Pandas和numpy库完成。 数据必须可用或转换为数据框才能应用聚合功能。

在DataFrame上应用聚合

创建一个DataFrame并在其上应用聚合。

import pandas as pd

import numpy as np

df = pd.DataFrame(np.random.randn(10, 4),

index = pd.date_range('1/1/2000', periods=10),

columns = ['A', 'B', 'C', 'D'])

print df

r = df.rolling(window=3,min_periods=1)

print (r)

执行上面示例代码,得到以下结果 -

A B C D

2000-01-01 1.088512 -0.650942 -2.547450 -0.566858

2000-01-02 0.790670 -0.387854 -0.668132 0.267283

2000-01-03 -0.575523 -0.965025 0.060427 -2.179780

2000-01-04 1.669653 1.211759 -0.254695 1.429166

2000-01-05 0.100568 -0.236184 0.491646 -0.466081

2000-01-06 0.155172 0.992975 -1.205134 0.320958

2000-01-07 0.309468 -0.724053 -1.412446 0.627919

2000-01-08 0.099489 -1.028040 0.163206 -1.274331

2000-01-09 1.639500 -0.068443 0.714008 -0.565969

2000-01-10 0.326761 1.479841 0.664282 -1.361169

Rolling [window=3,min_periods=1,center=False,axis=0]

可以通过将函数传递给整个DataFrame进行聚合,或者通过标准的get item方法选择一个列。

在整个数据框上应用聚合-

import pandas as pd

import numpy as np

df = pd.DataFrame(np.random.randn(10, 4),

index = pd.date_range('1/1/2000', periods=10),

columns = ['A', 'B', 'C', 'D'])

print df

r = df.rolling(window=3,min_periods=1)

print (r.aggregate(np.sum))

执行上面示例代码,得到以下结果 -

A B C D

2000-01-01 1.088512 -0.650942 -2.547450 -0.566858

2000-01-02 0.790670 -0.387854 -0.668132 0.267283

2000-01-03 -0.575523 -0.965025 0.060427 -2.179780

2000-01-04 1.669653 1.211759 -0.254695 1.429166

2000-01-05 0.100568 -0.236184 0.491646 -0.466081

2000-01-06 0.155172 0.992975 -1.205134 0.320958

2000-01-07 0.309468 -0.724053 -1.412446 0.627919

2000-01-08 0.099489 -1.028040 0.163206 -1.274331

2000-01-09 1.639500 -0.068443 0.714008 -0.565969

2000-01-10 0.326761 1.479841 0.664282 -1.361169

Rolling [window=3,min_periods=1,center=False,axis=0]

可以通过将函数传递给整个DataFrame进行聚合,或者通过标准的get item方法选择一个列。

在整个数据帧上应用聚合

import pandas as pd

import numpy as np

df = pd.DataFrame(np.random.randn(10, 4),

index = pd.date_range('1/1/2000', periods=10),

columns = ['A', 'B', 'C', 'D'])

print (df)

r = df.rolling(window=3,min_periods=1)

print (r.aggregate(np.sum))

执行上面示例代码,得到以下结果 -

A B C D

2000-01-01 1.088512 -0.650942 -2.547450 -0.566858

2000-01-02 1.879182 -1.038796 -3.215581 -0.299575

2000-01-03 1.303660 -2.003821 -3.155154 -2.479355

2000-01-04 1.884801 -0.141119 -0.862400 -0.483331

2000-01-05 1.194699 0.010551 0.297378 -1.216695

2000-01-06 1.925393 1.968551 -0.968183 1.284044

2000-01-07 0.565208 0.032738 -2.125934 0.482797

2000-01-08 0.564129 -0.759118 -2.454374 -0.325454

2000-01-09 2.048458 -1.820537 -0.535232 -1.212381

2000-01-10 2.065750 0.383357 1.541496 -3.201469

A B C D

2000-01-01 1.088512 -0.650942 -2.547450 -0.566858

2000-01-02 1.879182 -1.038796 -3.215581 -0.299575

2000-01-03 1.303660 -2.003821 -3.155154 -2.479355

2000-01-04 1.884801 -0.141119 -0.862400 -0.483331

2000-01-05 1.194699 0.010551 0.297378 -1.216695

2000-01-06 1.925393 1.968551 -0.968183 1.284044

2000-01-07 0.565208 0.032738 -2.125934 0.482797

2000-01-08 0.564129 -0.759118 -2.454374 -0.325454

2000-01-09 2.048458 -1.820537 -0.535232 -1.212381

2000-01-10 2.065750 0.383357 1.541496 -3.201469

在数据帧的单个列上应用聚合

import pandas as pd

import numpy as np

df = pd.DataFrame(np.random.randn(10, 4),

index = pd.date_range('1/1/2000', periods=10),

columns = ['A', 'B', 'C', 'D'])

print (df)

r = df.rolling(window=3,min_periods=1)

print (r['A'].aggregate(np.sum))

执行上面示例代码,得到以下结果 -

A B C D

2000-01-01 1.088512 -0.650942 -2.547450 -0.566858

2000-01-02 1.879182 -1.038796 -3.215581 -0.299575

2000-01-03 1.303660 -2.003821 -3.155154 -2.479355

2000-01-04 1.884801 -0.141119 -0.862400 -0.483331

2000-01-05 1.194699 0.010551 0.297378 -1.216695

2000-01-06 1.925393 1.968551 -0.968183 1.284044

2000-01-07 0.565208 0.032738 -2.125934 0.482797

2000-01-08 0.564129 -0.759118 -2.454374 -0.325454

2000-01-09 2.048458 -1.820537 -0.535232 -1.212381

2000-01-10 2.065750 0.383357 1.541496 -3.201469

2000-01-01 1.088512

2000-01-02 1.879182

2000-01-03 1.303660

2000-01-04 1.884801

2000-01-05 1.194699

2000-01-06 1.925393

2000-01-07 0.565208

2000-01-08 0.564129

2000-01-09 2.048458

2000-01-10 2.065750

Freq: D, Name: A, dtype: float64

在DataFrame的多列上应用聚合

import pandas as pd

import numpy as np

df = pd.DataFrame(np.random.randn(10, 4),

index = pd.date_range('1/1/2000', periods=10),

columns = ['A', 'B', 'C', 'D'])

print (df)

r = df.rolling(window=3,min_periods=1)

print (r[['A','B']].aggregate(np.sum))

执行上面示例代码,得到以下结果-

A B C D

2000-01-01 1.088512 -0.650942 -2.547450 -0.566858

2000-01-02 1.879182 -1.038796 -3.215581 -0.299575

2000-01-03 1.303660 -2.003821 -3.155154 -2.479355

2000-01-04 1.884801 -0.141119 -0.862400 -0.483331

2000-01-05 1.194699 0.010551 0.297378 -1.216695

2000-01-06 1.925393 1.968551 -0.968183 1.284044

2000-01-07 0.565208 0.032738 -2.125934 0.482797

2000-01-08 0.564129 -0.759118 -2.454374 -0.325454

2000-01-09 2.048458 -1.820537 -0.535232 -1.212381

2000-01-10 2.065750 0.383357 1.541496 -3.201469

A B

2000-01-01 1.088512 -0.650942

2000-01-02 1.879182 -1.038796

2000-01-03 1.303660 -2.003821

2000-01-04 1.884801 -0.141119

2000-01-05 1.194699 0.010551

2000-01-06 1.925393 1.968551

2000-01-07 0.565208 0.032738

2000-01-08 0.564129 -0.759118

2000-01-09 2.048458 -1.820537

2000-01-10 2.065750 0.383357

¥ 我要打赏

纠错/补充

收藏

加QQ群啦,易百教程官方技术学习群

注意:建议每个人选自己的技术方向加群,同一个QQ最多限加 3 个群。


版权声明:本文为weixin_33998219原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。