跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客我的书AI学习GitHub 精选镜像AI工具UI配色美学关于
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
PythonAI算法

Python Pandas DataFrame 常用方法精讲

Pandas DataFrame 提供 cumsum、describe、diff、eval、kurt 等核心方法,分别用于计算累积和、生成描述性统计、计算数值差异、评估字符串表达式及计算分布峭度。内容涵盖各方法的语法结构、参数说明、功能特性及完整代码示例,适用于时间序列分析、数据清洗及统计特征提取场景,助力提升数据处理效率。

SecGuard发布于 2026/2/23更新于 2026/10/21105 浏览
Python Pandas DataFrame 常用方法精讲

用法精讲

pandas.DataFrame.cumsum 方法

语法
pandas.DataFrame.cumsum(axis=None, skipna=True, *args, **kwargs)
参数
  • axis (可选,默认值为 None):{0 or 'index', 1 or 'columns'},指定沿哪个轴计算累积和,0 表示按列计算,1 表示按行计算。
  • skipna (可选,默认值为 True):布尔值,是否忽略缺失值 (NaN),如果为 True,缺失值将被忽略;如果为 False,结果中可能会出现 NaN。
  • ** args* (可选):其他的额外位置参数。
  • ** kwargs (可选):其他的额外关键字参数。
功能

用于计算 DataFrame 中每列或每行的累积和,它返回一个与原 DataFrame 形状相同的新 DataFrame,其中每个值是其前面所有值的和。

返回值

返回一个与原 DataFrame 形状相同的新 DataFrame,其中每个元素表示其前面所有元素的和。

说明
  1. 缺失值处理:如果 skipna 为 True,所有 NaN 值将被忽略;如果为 False,结果中的任何 NaN 都会导致后续的结果也为 NaN。
  2. 适用于时间序列:cumsum 方法也常用于处理时间序列数据,以帮助识别随时间变化的总和趋势。
  3. 效率:计算累积和的效率很高,适用于处理大规模数据集。
用法
代码示例
import pandas as pd

# 创建一个示例 DataFrame
data = {
    'A': [1, 2, 3],
    'B': [4, 5, 6],
    'C': [7, 8, 9]
}
df = pd.DataFrame(data)

# 计算累积和
cumsum_df = df.cumsum()
print(cumsum_df)
结果输出
   A   B   C
0  1   4   7
       
      
1
3
9
15
2
6
15
24

pandas.DataFrame.describe 方法

语法
pandas.DataFrame.describe(percentiles=None, include=None, exclude=None)
参数
  • percentiles (可选,默认值为 None):列表,指定要计算的百分位数的列表,所有值应该在 [0, 1] 范围内。
  • include (可选,默认值为 None):指定要包含的数据类型,可以是数据类型的字符串 (如 'number', 'object', 'bool'),或者是数据类型的列表。
  • exclude (可选,默认值为 None):指定要排除的数据类型,使用方法与 include 相同。
功能

用于生成 DataFrame 各列的描述性统计信息,它提供了数据的汇总,包括计数、均值、标准差、最小值、四分位数和最大值等,该方法对于快速了解数据分布非常有用。

返回值

返回一个 DataFrame,其中包含描述性统计信息。对于数值型列,输出包括 count、mean、std、min、25%、50%、75%、max;对于分类 (object) 类型的列,输出包括 count、unique、top、freq。

说明
  1. 缺失值:该方法会自动忽略缺失值 (NaN) 进行统计。
  2. 数据类型:默认情况下,describe 会根据数据类型自动选择要计算的列。
  3. 自定义百分位数:可以根据需求自定义百分位数,以便更好地理解数据分布。
用法
代码示例
import pandas as pd

data = {
    'A': [1, 2, 3, 4, 5],
    'B': [10, 20, 30, 40, 50],
    'C': ['a', 'b', 'a', 'b', 'c']
}
df = pd.DataFrame(data)

# 计算描述性统计
description = df.describe()
print(description)

# 仅对数字列进行描述
description_numeric = df.describe(include=['number'])
print(description_numeric)

# 仅对象列进行描述
description_object = df.describe(include=['object'])
print(description_object)
结果输出
          A         B
count  5.000000  5.000000
mean   3.000000 30.000000
std    1.581139 15.811388
min    1.000000 10.000000
25%    2.000000 20.000000
50%    3.000000 30.000000
75%    4.000000 40.000000
max    5.000000 50.000000

      A         B
count  5.000000  5.000000
mean   3.000000 30.000000
std    1.581139 15.811388
min    1.000000 10.000000
25%    2.000000 20.000000
50%    3.000000 30.000000
75%    4.000000 40.000000
max    5.000000 50.000000

   C
count  5
unique 3
top    a
freq   2

pandas.DataFrame.diff 方法

语法
pandas.DataFrame.diff(periods=1, axis=0)
参数
  • periods (可选,默认值为 1):整数,指定计算差异时的步长,默认是计算当前行与前一行的差异。
  • axis (可选,默认值为 0):{0 或 'index', 1 或 'columns'},指定沿着哪个方向计算差异,axis=0 表示按行计算 (纵向),axis=1 表示按列计算 (横向)。
功能

用于计算 DataFrame 中某一列值与前一个 (或指定间隔的) 值之间的差异,这对于时间序列数据分析非常有用,尤其是在需要了解数据如何变化时。

返回值

返回一个与原 DataFrame 同大小的 DataFrame,包含每个元素的差异,其中第一个元素将会是 NaN,因为没有前一个值可供计算。

说明
  1. NaN 值:由于存在没有前一个值的情况,计算出的第一行/列会包含 NaN 值。
  2. 适用数据:该方法主要适用于数值型数据,对于其他类型的数据 (如字符串) 可能未按预期工作。
  3. 时间序列数据:在处理时间序列数据时,使用 diff 可以帮助了解数据的变化趋势。
用法
代码示例
import pandas as pd

data = {
    'A': [10, 20, 30, 25, 15],
    'B': [100, 200, 300, 250, 150]
}
df = pd.DataFrame(data)

# 计算差异 (默认是前一行)
diff_default = df.diff()
print("默认差异:\n", diff_default)

# 计算与前两行的差异
diff_two_periods = df.diff(periods=2)
print("\n与前两行的差异:\n", diff_two_periods)

# 沿列方向计算差异
diff_axis1 = df.diff(axis=1)
print("\n沿列方向的差异:\n", diff_axis1)
结果输出
默认差异:
     A      B
0  NaN    NaN
1 10.0  100.0
2 10.0  100.0
3 -5.0  -50.0
4 -10.0 -100.0

与前两行的差异:
     A      B
0  NaN    NaN
1  NaN    NaN
2 20.0  200.0
3  5.0   50.0
4 -15.0 -150.0

沿列方向的差异:
     A    B
0  NaN   90
1  NaN  180
2  NaN  270
3  NaN  225
4  NaN  135

pandas.DataFrame.eval 方法

语法
pandas.DataFrame.eval(expr, *, inplace=False, **kwargs)
参数
  • expr (必须):字符串,要评估的表达式,该表达式可以使用 DataFrame 的列名,支持各种运算符。
  • inplace (可选,默认值为 False):布尔值,如果为 True,则在原 DataFrame 上进行修改,而不是返回一个新的 DataFrame。
  • ** kwargs (可选):额外的关键字参数,可以用于传递其他变量和参数。
功能

用于在 DataFrame 上评估一个表达式,并返回一个新的 DataFrame 或对象,该方法能够利用 numexpr(如果可用的话) 来加速计算,适合处理大型数据集的情况。

返回值

返回一个新的 DataFrame(如果 inplace=False) 或原 DataFrame(如果 inplace=True),表达式计算的结果。

说明
  1. 表达式限制:在表达式中只允许使用 DataFrame 的列名,表达式不能使用 Python 语言中的特殊功能。
  2. 运算符支持:支持基本的算术运算符和一些常见的数学函数。
  3. 效率:eval 方法在处理大型 DataFrame 时通常比逐列计算要快,尤其是在 numexpr 可用的情况下。
用法
代码示例
import pandas as pd

data = {
    'A': [1, 2, 3],
    'B': [4, 5, 6]
}
df = pd.DataFrame(data)

# 使用 eval 计算新列 C = A + B
df['C'] = df.eval('A + B')
print("新列 C:\n", df)

# 或者在原地修改
df.eval('D = A * B', inplace=True)
print("\n新增列 D,原地修改后:\n", df)

# 使用额外的变量
factor = 10
df['E'] = df.eval('A + B + @factor')
print("\n使用额外变量后的列 E:\n", df)
结果输出
新列 C:
   A  B  C
0  1  4  5
1  2  5  7
2  3  6  9

新增列 D,原地修改后:
   A  B  C  D
0  1  4  5  4
1  2  5  7 10
2  3  6  9 18

使用额外变量后的列 E:
   A  B  C  D   E
0  1  4  5  4  15
1  2  5  7 10  17
2  3  6  9 18  19

pandas.DataFrame.kurt 方法

语法
pandas.DataFrame.kurt(axis=0, skipna=True, numeric_only=False, **kwargs)
参数
  • axis (可选,默认值为 0):{0 或 'index', 1 或 'columns'},计算峭度的轴,0 或 'index' 表示按列计算峭度,1 或 'columns' 表示按行计算峭度。
  • skipna (可选,默认值为 True):布尔值,是否忽略缺失值 (NaNs),如果设置为 False,将会计算缺失值。
  • numeric_only (可选,默认值为 False):布尔值,如果设置为 True,只计算数值列的峭度,其他类型的列将会被排除。
  • ** kwargs (可选):额外的关键字参数,供底层函数使用。
功能

用于计算 DataFrame 中每一列的峭度 (Kurtosis),峭度是描述概率分布形状的一种统计量,主要用于评估分布的尾部厚度。

返回值

返回一个 Series 或 DataFrame,包含每一列或每一行的峭度值。

说明
  1. 数值类型:峭度计算仅适用于数值类型的数据,非数值类型的数据将被忽略,或者如 numeric_only=True,将会被排除。
  2. 缺失值:如果数据中存在缺失值,根据 skipna 参数的设置,峭度可能会受到影响。
  3. 统计性质:峭度值可以用于判断数据的分布特征:较高的峭度值表示分布的尾部较重,较低的峭度值表示分布的尾部较轻。
用法
代码示例
import pandas as pd

data = {
    'A': [4, 5, 8, 9],
    'B': [1, 2, None, 4],
    'C': [1, 1, 1, 1]
}
df = pd.DataFrame(data)

# 计算每列的峭度
kurtosis = df.kurt()
print("每列的峭度:\n", kurtosis)

# 计算每行的峭度
kurtosis_axis1 = df.kurt(axis=1)
print("每行的峭度:\n", kurtosis_axis1)
结果输出
每列的峭度:
A   -4.3391
B        NaN
C    0.0000
dtype: float64

每行的峭度:
0    NaN
1    NaN
2    NaN
3    NaN
dtype: float64

目录

  1. 用法精讲
  2. pandas.DataFrame.cumsum 方法
  3. 语法
  4. 参数
  5. 功能
  6. 返回值
  7. 说明
  8. 用法
  9. 代码示例
  10. 创建一个示例 DataFrame
  11. 计算累积和
  12. 结果输出
  13. pandas.DataFrame.describe 方法
  14. 语法
  15. 参数
  16. 功能
  17. 返回值
  18. 说明
  19. 用法
  20. 代码示例
  21. 计算描述性统计
  22. 仅对数字列进行描述
  23. 仅对象列进行描述
  24. 结果输出
  25. pandas.DataFrame.diff 方法
  26. 语法
  27. 参数
  28. 功能
  29. 返回值
  30. 说明
  31. 用法
  32. 代码示例
  33. 计算差异 (默认是前一行)
  34. 计算与前两行的差异
  35. 沿列方向计算差异
  36. 结果输出
  37. pandas.DataFrame.eval 方法
  38. 语法
  39. 参数
  40. 功能
  41. 返回值
  42. 说明
  43. 用法
  44. 代码示例
  45. 使用 eval 计算新列 C = A + B
  46. 或者在原地修改
  47. 使用额外的变量
  48. 结果输出
  49. pandas.DataFrame.kurt 方法
  50. 语法
  51. 参数
  52. 功能
  53. 返回值
  54. 说明
  55. 用法
  56. 代码示例
  57. 计算每列的峭度
  58. 计算每行的峭度
  59. 结果输出

更多推荐文章

查看全部
  • Python+Flask+Vue 在线宠物医疗预约平台的设计与实现
  • Java 开发实战:Mybatis-Plus 与 Docker 部署指南
  • Flutter eip55 库在鸿蒙系统的适配与以太坊地址校验实战
  • WebRTC 视频编码基础 (VP8/VP9/H.264/AV1)
  • 垂直 AI 大模型行业全景分析及发展趋势
  • 从零构建:使用 aiortc 实现 WebRTC 连接的实战指南
  • 基于 LLaMA-Factory 与 Stable Diffusion 的跨模态创作工作流
  • Spring AI MCP Server 集成与源码解析
  • 动态规划:粉刷房子问题
  • C++ STL 手写 String 类实现及高频易错点复盘
  • EhViewer 安卓端 E-Hentai 漫画浏览工具安装与使用教程
  • 纯 TypeScript 文本测量引擎 Pretext 突破前端布局瓶颈
  • CTFShow Web 命令执行 29-124 实战通关指南
  • 鸿蒙电商购物车全栈项目:用户管理、商品列表与购物车实现
  • Android 复刻 Apple AppStore 卡片转场动画实现详解
  • JDK 环境搭建与基础配置实战
  • SDXL Prompt Styler 提示词风格增强工具使用指南
  • Spring AI Agent 模式:利用 TodoWriteTool 解决任务遗忘
  • Linux 基础 I/O 原理与系统调用
  • Ollama 底层架构:llama.cpp 与 GGUF 详解

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

  • RSA密钥对生成器

    生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online

  • Mermaid 预览与可视化编辑

    基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online

  • 随机西班牙地址生成器

    随机生成西班牙地址(支持马德里、加泰罗尼亚、安达卢西亚、瓦伦西亚筛选),支持数量快捷选择、显示全部与下载。 在线工具,随机西班牙地址生成器在线工具,online

  • Gemini 图片去水印

    基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online

  • curl 转代码

    解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online