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

yizhihongxing

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日

相关文章

  • Mysql数据库group by原理详解

    Mysql数据库group by原理详解 前言 在使用Mysql数据库进行数据查询时,常常需要对查询结果进行聚合操作。而Mysql中,聚合操作常使用group by来完成。本文将围绕Mysql中group by的语法和原理,对其进行详细讲解。 group by语法 Mysql中,group by用于对查询结果进行分组,根据指定的列进行分组,并计算每个分组的聚…

    python 2023年5月14日
    00
  • 如何用cuDF加快Pandas的速度

    使用cuDF加速Pandas操作可以通过GPU并行计算来实现。下面是加速Pandas操作的步骤: 步骤1:安装cuDF 首先需要安装cuDF。cuDF是一个与Pandas API兼容的库,用于在GPU上进行数据操作。安装cuDF的方法包括conda、pip等方式,具体可参见cuDF官方文档。 步骤2:用cuDF读取数据 使用cuDF读取数据,可以使用read…

    python-answer 2023年3月27日
    00
  • 聊聊python dropna()和notnull()的用法区别

    聊聊Python dropna()和notnull()的用法区别 引言 在使用Pandas进行数据处理和分析时,我们常常需要过滤掉数据中带有缺失值的行或列。在Pandas中,我们通常会使用 dropna() 和 notnull() 这两个方法来实现这个目的。本篇文章将会讲解这两个方法的用法,并且对它们的区别做出详细的解析。 dropna()方法 什么是dro…

    python 2023年6月13日
    00
  • 如何在Pandas数据框架中实现数据标准化

    数据标准化也被称为归一化,是将不同规格的数据转换为同一规格的过程。这个过程主要是针对那些特征数据范围比较大,或者数据值相差较大的情况,通过一些数学方法将其转化为0到1之间的值,用于建模分析。在Pandas数据框架中,我们可以使用sklearn库中的StandardScaler来进行数据标准化。下面将详细介绍如何实现。 准备数据 首先我们需要准备一份数据,这里…

    python-answer 2023年3月27日
    00
  • Python数据挖掘Pandas详解

    Python数据挖掘Pandas详解攻略 什么是Pandas Pandas是基于NumPy的一个开源数据分析和数据挖掘库,使用Python编程语言进行开发。Pandas提供了快速、灵活、简单的数据结构,能够方便地处理结构化、时间序列以及未结构化的数据。 安装Pandas 在安装Pandas之前,需要确认Python版本已经安装。可以通过运行以下命令检查Pyt…

    python 2023年5月14日
    00
  • 在Pandas中通过索引重命名列

    在Pandas中,可以通过rename方法来重命名列,下面是具体的步骤: 1. 导入Pandas库和数据 首先需要导入Pandas库,然后读取数据,这里我们以读取一份汽车销售数据为例: import pandas as pd # 读取数据 df = pd.read_csv(‘car_sales.csv’) 2. 查看数据 为了方便观察数据,可以使用head(…

    python-answer 2023年3月27日
    00
  • python pandas分割DataFrame中的字符串及元组的方法实现

    当数据分析师处理一些包含字符串和元组的DataFrame时,需要对这些数据进行适当的分割和处理,以便更好地进行数据分析和挖掘。Python pandas提供了非常方便的方法,可以轻松地完成对DataFrame中字符串和元组的分割处理。 1. 分割DataFrame中的字符串 在DataFrame中,可以使用 str.split() 方法来对字符串进行分割。该…

    python 2023年5月14日
    00
  • Python实现实时增量数据加载工具的解决方案

    Python实现实时增量数据加载工具的解决方案 本文介绍如何使用Python实现实时增量数据加载工具的解决方案。我们将使用常用的Python库和工具来完成数据加载的基本流程,并介绍两个示例,以便更好地理解实现过程。 基本的数据加载流程 拉取增量数据文件 解析增量数据文件,得到要插入、更新、删除的数据行 对数据库进行操作,完成数据插入、更新、删除 使用Pyth…

    python 2023年6月13日
    00
合作推广
合作推广
分享本页
返回顶部