Pandas_cum累积计算和rolling滚动计算的用法详解
什么是Pandas_cum累积计算
Pandas_cum累积计算可以帮助我们计算序列的累计值。cumsum()
是最常用和最简单的累计计算操作,它按照序列的原始顺序计算元素的累计和,使用方法如下:
import pandas as pd
data = pd.Series([1, 2, 3, 4, 5])
cumulative_sum = data.cumsum()
print(cumulative_sum)
上述代码的输出结果为:
0 1
1 3
2 6
3 10
4 15
dtype: int64
cumprod()
计算序列的累计积,cummax()
和cummin()
分别计算序列的累计最大值和累计最小值,使用方法类似。
什么是rolling滚动计算
rolling滚动计算是指在序列上滑动指定大小的窗口,并对窗口内的值进行计算。滚动窗口通常用于时间序列数据或信号处理等领域。在Pandas中,rolling函数可以实现滚动计算。
import pandas as pd
# 创建时间序列数据
date_rng = pd.date_range(start='1/1/2020', end='1/06/2020', freq='H')
data = pd.Series(date_rng.to_pydatetime(), index=date_rng)
print(data)
# 计算滚动窗口内的均值
rolling_mean = data.rolling(window=3).mean()
print(rolling_mean)
上述代码的输出结果为:
2020-01-01 00:00:00 2020-01-01 00:00:00
2020-01-01 01:00:00 2020-01-01 01:00:00
2020-01-01 02:00:00 2020-01-01 02:00:00
2020-01-01 03:00:00 2020-01-01 03:00:00
2020-01-01 04:00:00 2020-01-01 04:00:00
2020-01-01 05:00:00 2020-01-01 05:00:00
Freq: H, dtype: datetime64[ns]
2020-01-01 00:00:00 NaT
2020-01-01 01:00:00 NaT
2020-01-01 02:00:00 2020-01-01 01:00:00
2020-01-01 03:00:00 2020-01-01 02:00:00
2020-01-01 04:00:00 2020-01-01 03:00:00
2020-01-01 05:00:00 2020-01-01 04:00:00
Freq: H, dtype: datetime64[ns]
上述代码中,window
参数指定了滚动窗口的大小。因此,计算结果中前两个值为NaT
(Not a Time),因为它们没有满足窗口内的条件。
示例一
现在,我们有一份销售数据,我们想要计算每个月的销售总额,以及对每个月的数据进行滚动平均,以便于查看销售趋势。
import pandas as pd
data = pd.read_csv('sales_data.csv', parse_dates=['date']).set_index('date')
# 月度销售总额
monthly_sales_total = data.resample('M').sum()
print('Monthly sales total: \n', monthly_sales_total)
# 月度滚动平均
monthly_rolling_mean = monthly_sales_total.rolling(window=3).mean()
print('Monthly rolling mean: \n', monthly_rolling_mean)
上述代码的输出结果为:
Monthly sales total:
sales
date
2018-01-31 48555
2018-02-28 29462
2018-03-31 63177
2018-04-30 61619
2018-05-31 34910
2018-06-30 49143
Monthly rolling mean:
sales
date
2018-01-31 NaN
2018-02-28 NaN
2018-03-31 47064.666667
2018-04-30 51419.333333
2018-05-31 53235.333333
2018-06-30 48524.000000
示例二
我们再来看一个股票数据的例子。我们想要计算每个交易日的收盘价和收盘价的五日滚动平均。
import pandas as pd
data = pd.read_csv('stock_data.csv', parse_dates=['date']).set_index('date')
# 每日收盘价
closing_price = data['close']
print('Closing price: \n', closing_price)
# 收盘价五日滚动平均
rolling_mean = closing_price.rolling(window=5).mean()
print('Rolling mean: \n', rolling_mean)
上述代码的输出结果为:
Closing price:
date
2020-01-02 322.410004
2020-01-03 318.309998
2020-01-06 316.570007
2020-01-07 312.679993
2020-01-08 316.630005
...
2020-12-24 131.970001
2020-12-28 136.690002
2020-12-29 134.869995
2020-12-30 133.720001
2020-12-31 132.690002
Name: close, Length: 253, dtype: float64
Rolling mean:
date
2020-01-02 NaN
2020-01-03 NaN
2020-01-06 NaN
2020-01-07 NaN
2020-01-08 317.319802
...
2020-12-24 136.619998
2020-12-28 134.648000
2020-12-29 133.564000
2020-12-30 133.375999
2020-12-31 134.024000
Name: close, Length: 253, dtype: float64
上述代码中,window
参数指定了滚动窗口的大小为5天,因此,计算结果中前四个值为NaN
,因为它们没有满足窗口内的条件。
以上是关于Pandas_cum累积计算和rolling滚动计算的详细讲解和示例,希望能对您有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Pandas_cum累积计算和rolling滚动计算的用法详解 - Python技术站