Pandas_cum累积计算和rolling滚动计算的用法详解

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技术站

(0)
上一篇 2023年5月14日
下一篇 2023年5月14日

相关文章

  • 详解pandas中iloc, loc和ix的区别和联系

    详解pandas中iloc、loc和ix的区别和联系 在pandas中,iloc、loc和ix都是数据筛选或访问数据的常用方法,但它们有着不同的用法和功能。在本篇攻略中,我们将详细讲解这三个方法的区别和联系。 iloc iloc是根据行索引和列索引来选取数据的方法,它可以接受整数和切片对象作为行或列的索引。 使用整数索引 选取单行或单列时,iloc需要把行或…

    python 2023年5月14日
    00
  • 使用Regex从Dataframe的指定列中提取标点符号

    使用Regex从Dataframe的指定列中提取标点符号的步骤如下: 导入必要的库 首先需要导入pandas库和re库,其中pandas库用于读取和处理数据,re库用于进行正则表达式匹配。 import pandas as pd import re 读取数据 使用pandas库读取数据,例如读取名为”example.csv”的表格数据。假设表格中有一列名为”…

    python-answer 2023年3月27日
    00
  • 将数据追加到一个空的Pandas数据框中

    当我们需要将一些数据以行的形式添加到一个空的Pandas数据框中时,可以遵循以下的步骤: 步骤一:创建空的数据框 首先需要创建一个空的数据框,通过指定数据框的列名和数据类型来构建一个数据框的框架。以下示例展示了如何创建一个空数据框,包含两列,分别是”id”和”value”。 import pandas as pd df = pd.DataFrame(colu…

    python-answer 2023年3月27日
    00
  • 在Python Pandas中突出显示最后两列的最大值

    要在Python Pandas中突出显示最后两列的最大值,可以按照以下步骤进行: 导入pandas库。首先,我们需要导入pandas库,并将数据读入Pandas的DataFrame中。 使用max()函数定位最大值。在Pandas DataFrame中,我们可以使用max()函数来找到每一列的最大值。 突出显示最大值。在找到最大值后,我们可以使用样式和控制对…

    python-answer 2023年3月27日
    00
  • Python pandas之多级索引取值详解

    Python pandas之多级索引取值详解 什么是多级索引 多级索引(MultiIndex)是pandas中用于处理具有分层级别的索引的方法。分层索引可以为数据带来很多好处,比如增强数据的可读性、支持高效的选取和分组运算、支持多维度聚合等等。 在pandas中,多级索引的对象是MultiIndex,它类似于DataFrame和Series的索引,但是可以由…

    python 2023年5月14日
    00
  • Pandas删除数据的几种情况(小结)

    Pandas删除数据的几种情况(小结) 在Pandas中,删除数据是数据清理中一个非常关键的步骤。这里我们将讨论Pandas中删除数据的几种情况。 1. 删除行或列 1.1 删除行 删除行的方法是通过drop()函数来实现的。该函数使用axis=0参数来指示删除行。具体语法如下: df.drop(index_names, axis=0, inplace=Tr…

    python 2023年5月14日
    00
  • Pandas缺失值2种处理方式代码实例

    下面是“Pandas缺失值2种处理方式代码实例”的完整攻略。 简介 在数据分析和处理中,缺失值是很常见的情况。Pandas提供了多种方法来处理缺失值,本文将重点讲解两种常用的处理方式:删除缺失值和填充缺失值,并提供对应的代码实例。 删除缺失值 删除缺失值是处理缺失值最简单快捷的方法,但前提是缺失值占比不能过大。对于占比过大的缺失值,删除会导致数据量减少,可能…

    python 2023年5月14日
    00
  • Pandas Cut–从连续到分类

    下面我就来详细讲解一下Pandas Cut的使用。 什么是Pandas Cut Pandas Cut是一种将连续数据转换为分类数据的函数。它可将连续的数值数据分段,每一段转化为一个离散的分类,同时可以对这些离散的分类进行标记和排序。 Cut函数的语法 Pandas Cut函数的语法如下: pandas.cut(x, bins, right=True, lab…

    python-answer 2023年3月27日
    00
合作推广
合作推广
分享本页
返回顶部