当前位置: 首页 > news >正文

【Pandas】pandas DataFrame expanding

Pandas2.2 DataFrame

Function application, GroupBy & window

方法描述
DataFrame.apply(func[, axis, raw, …])用于沿 DataFrame 的轴(行或列)应用一个函数
DataFrame.map(func[, na_action])用于对 DataFrame 的每个元素应用一个函数
DataFrame.applymap(func[, na_action])用于对 DataFrame 中的每一个元素应用一个函数
DataFrame.pipe(func, *args, **kwargs)用于实现链式编程风格的方法
DataFrame.agg([func, axis])用于对 DataFrame 的数据进行聚合操作
DataFrame.aggregate([func, axis])用于对 DataFrame 进行聚合操作的方法
DataFrame.transform(func[, axis])用于对 DataFrame 的列或行应用函数
DataFrame.groupby([by, axis, level, …])用于进行分组操作的核心方法
DataFrame.rolling(window[, min_periods, …])用于在 DataFrame 上创建滑动窗口对象
DataFrame.expanding([min_periods, axis, method])用于实现扩展窗口计算

pandas.DataFrame.expanding()

pandas.DataFrame.expanding() 用于实现扩展窗口计算,其窗口范围从数据起始点逐步扩展到当前行/列,适用于累积统计量的动态计算。以下是具体解析及示例:


一、函数语法
DataFrame.expanding(min_periods=1, axis=0, method='single')
  • 参数说明
    • min_periods:窗口内要求的最小非空观测数,低于此数返回NaN(默认值 1)。
    • axis:计算方向,0'index' 表示纵向(默认),1'columns' 表示横向。
    • method:仅在使用 engine='numba' 时有效,'single'(逐列计算)或 'table'(全表计算)。

二、使用示例
示例 1:纵向累积求和(默认参数)
import pandas as pd
import numpy as npdf = pd.DataFrame({"B": [0, 1, 2, np.nan, 4]})
result = df.expanding(min_periods=1).sum()
print(result)

输出

     B
0  0.0
1  1.0
2  3.0
3  3.0  # 跳过 NaN,累积前三项 0+1+2=3
4  7.0  # 0+1+2+4=7(NaN 被忽略)

说明:默认按行方向扩展窗口,min_periods=1 表示至少包含 1 个有效值开始计算。NaN 值自动跳过,不影响已累积的有效值。


示例 2:调整最小观测数(min_periods=2)
result = df.expanding(min_periods=2).sum()
print(result)

输出

     B
0  NaN  # 仅 1 个数据,不满足 min_periods=2
1  1.0  # 0+1=1
2  3.0
3  3.0
4  7.0

说明:首行因有效数据不足 min_periods=2 返回 NaN,后续窗口满足条件后正常计算。


示例 3:横向扩展窗口(axis=1)
df = pd.DataFrame({"A": [1, 2], "B": [3, 4], "C": [5, 6]})
result = df.expanding(axis=1).sum()
print(result)

输出

   A    B     C
1  1  4.0   9.0  # 行1横向累积:1 → 1+3=4 → 1+3+5=9
2  2  6.0  12.0  # 行2横向累积:2 → 2+4=6 → 2+4+6=12

说明axis=1 时按列横向扩展窗口,逐行从左到右累积计算。


三、关键特性总结
  1. 动态窗口:窗口大小随数据位置递增,适用于累积计算场景。
  2. NaN 处理:自动跳过空值,但需满足 min_periods 要求。
  3. 灵活方向:通过 axis 参数支持纵向(默认)或横向计算。
http://www.xdnf.cn/news/314389.html

相关文章:

  • 常用设计模式在 Spring Boot 项目中的实战案例
  • 【LLM+Code】Devin PromptTools详细解读
  • 【spring】Spring、Spring MVC、Spring Boot、Spring Cloud?
  • 【Bootstrap V4系列】学习入门教程之 组件-折叠(Collapse)
  • Python爬虫(20)Python爬虫数据存储技巧:二进制格式(Pickle/Parquet)性能优化实战
  • 802.11s Mesh 组网框架流程
  • 【Hive入门】Hive数据导入与导出:批量操作与HDFS数据迁移完全指南
  • Windows环境下maven的安装与配置
  • 前端取经路——工程化渡劫:八戒的构建之道
  • 在Python和C/C++之间共享std::vector<std::vector<int>>数据
  • Linux复习笔记(一)基础命令和操作
  • 信创生态核心技术栈:国产芯片架构适配详解
  • Kafka生产者send方法详解
  • spark基本介绍
  • 当当狸智能天文望远镜 TW2 | 用科技触摸星辰,让探索触手可及
  • 如何使用极狐GitLab 软件包仓库功能托管 maven?
  • Spark 处理过程转换:算子与行动算子详解
  • 团队协作的润滑剂——GitHub与协作流程
  • P1782 旅行商的背包 Solution
  • Dagger中编译import报找不到ProvideClientFactory,initialize中ProvideClientFactory爆红
  • 笔记本外接显示器检测不到hdmi信号
  • 动态规划背包问题
  • AI健康小屋:开启智能健康管理新时代
  • 以生成性学习消除AI焦虑
  • Spire.Presentation组件的使用(2)--制作标题
  • TruPlasma DC 电路管理软件通快霍廷格TruPlasma DC 4005 DC4010
  • C++ 构造函数
  • GCC:Linux x86_64 编译 Linux aarch64 上运行的程序
  • Pandas 的透视与逆透视
  • Marin说PCB之POC电路layout设计仿真案例---08