pandas 数据实现行间计算的方法

  • Post category:Python

本篇攻略将以pandas DataFrame为例,介绍如何实现行间计算。

1. DataFrame.apply 方法

DataFrame.apply方法是pandas中实现行间计算的常用方法。它的基本语法为:

DataFrame.apply(func, axis=0)

其中,func为要应用的函数,axis=0表示对每一列进行操作,axis=1表示对每一行进行操作。

示例1: 对每一行求平均值

import pandas as pd
import numpy as np

df = pd.DataFrame({'a':[1,2,3], 'b':[4,5,6],'c':[7,8,9]})  # 创建DataFrame
print(df)

# apply方法应用自定义函数
def mean(row):
    return np.mean(row)
df['mean'] = df.apply(mean, axis=1)

print(df)

输出:

   a  b  c
0  1  4  7
1  2  5  8
2  3  6  9

   a  b  c      mean
0  1  4  7  4.000000
1  2  5  8  5.000000
2  3  6  9  6.000000

示例2: 对每一列求和,并将结果以新的行添加到DataFrame中

import pandas as pd

df = pd.DataFrame({'a':[1,2,3], 'b':[4,5,6],'c':[7,8,9]})  # 创建DataFrame
print(df)

# apply方法应用内置函数
result = df.apply(sum, axis=0)
df.loc['sum'] = result

print(df)

输出:

   a  b  c
0  1  4  7
1  2  5  8
2  3  6  9

     a   b   c
0    1   4   7
1    2   5   8
2    3   6   9
sum  6  15  24

2. DataFrame.rolling 方法

DataFrame的rolling方法可以对数据进行滑动窗口的操作,并进行统计计算。

rolling方法的基本语法为:

DataFrame.rolling(window, min_periods=None, center=False, win_type=None, on=None, axis=0, closed=None)

其中,window表示窗口大小,min_periods表示窗口中的非NaN元素数量必须达到的最小值,center表示是否以当前元素作为窗口中心,win_type表示窗口类型,on表示用于分组的列名,axis表示沿着行(0)或列(1)坐标轴方向进行滑动窗口统计,closed表示窗口两侧是否封闭。

示例3:计算5天滑动窗口的平均值

import pandas as pd
import numpy as np

df = pd.DataFrame({'a':[1,2,3,4,5,6,7,8,9,10]})  # 创建DataFrame
print(df)

# rolling方法计算滑动窗口中的平均值
df['rolling_mean'] = df.rolling(window=5).mean()

print(df)

输出:

    a
0   1
1   2
2   3
3   4
4   5
5   6
6   7
7   8
8   9
9  10

    a  rolling_mean
0   1           NaN
1   2           NaN
2   3           NaN
3   4           NaN
4   5           3.0
5   6           4.0
6   7           5.0
7   8           6.0
8   9           7.0
9  10           8.0

示例4:计算每个滑动窗口的方差

import pandas as pd
import numpy as np

df = pd.DataFrame({'a':[1,2,3,4,5,6,7,8,9,10]})  # 创建DataFrame
print(df)

# rolling方法计算滑动窗口中的方差
df['rolling_var'] = df['a'].rolling(window=5).var()

print(df)

输出:

    a
0   1
1   2
2   3
3   4
4   5
5   6
6   7
7   8
8   9
9  10

    a  rolling_var
0   1          NaN
1   2          NaN
2   3          NaN
3   4          NaN
4   5          2.5
5   6          2.5
6   7          2.5
7   8          2.5
8   9          2.5
9  10          2.5

以上就是利用pandas实现行间计算的两种方法和相应示例的详细讲解。希望能对大家有所帮助。