【Pandas】pandas DataFrame sum

Pandas2.2 DataFrame

Computations descriptive stats

方法 描述
DataFrame.abs() 用于返回 DataFrame 中每个元素的绝对值
DataFrame.all(axis, bool_only, skipna) 用于判断 DataFrame 中是否所有元素在指定轴上都为 True
DataFrame.any(*, axis, bool_only, skipna) 用于判断 DataFrame 中是否至少有一个元素在指定轴上为 True
DataFrame.clip(lower, upper, axis, inplace) 用于截断(限制)DataFrame 中的数值
DataFrame.corr(method, min_periods, ...) 用于计算 DataFrame 中各列之间的相关系数矩阵(Correlation Matrix)
DataFrame.corrwith(other, axis, drop, ...) 用于计算当前 DataFrame 的每一列(或行)与另一个 Series 或 DataFrame 中对应列的相关系数
DataFrame.count(axis, numeric_only) 用于统计 DataFrame 中每列或每行的非空(非 NaN)元素数量
DataFrame.cov(min_periods, ddof, numeric_only) 用于计算 DataFrame 中每对列之间的协方差
DataFrame.cummax(axis, skipna) 用于计算 DataFrame 中每列或每行的累计最大值(cumulative maximum)
DataFrame.cummin(axis, skipna) 用于计算 DataFrame 中每列或每行的累计最小值(cumulative minimum)
DataFrame.cumprod(axis, skipna) 用于计算 DataFrame 中每列或每行的累计乘积(cumulative product)
DataFrame.cumsum(axis, skipna) 用于计算 DataFrame 中每列或每行的累计和(cumulative sum)
DataFrame.describe(percentiles, include, ...) 用于快速生成数据集的统计摘要(summary statistics)
DataFrame.diff(periods, axis) 用于计算 DataFrame 中相邻行或列之间的差值(差分)
DataFrame.eval(expr, *, inplace) 用于在 DataFrame 上下文中高效地执行字符串形式的表达式运算
DataFrame.kurt(axis, skipna, numeric_only) 用于计算 DataFrame 中每列或每行的峰度(Kurtosis)
DataFrame.kurtosis(axis, skipna, numeric_only) 用于计算 DataFrame 中每列或每行的峰度(Kurtosis)
DataFrame.max(axis, skipna, numeric_only) 用于计算 DataFrame 中每列或每行的最大值(maximum)
DataFrame.mean(axis, skipna, numeric_only) 用于计算 DataFrame 中每列或每行的平均值(mean)
DataFrame.median(axis, skipna, numeric_only) 用于计算 DataFrame 中每列或每行的中位数(median)
DataFrame.min(axis, skipna, numeric_only) 用于计算 DataFrame 中每列或每行的最小值(minimum)
DataFrame.mode(axis, numeric_only, dropna) 用于查找 众数(出现频率最高的值) 的方法
DataFrame.pct_change(periods, fill_method, ...) 用于计算 百分比变化 的方法
DataFrame.prod(axis, skipna, numeric_only, ...) 用于计算 每列或每行元素的乘积 的方法
DataFrame.product(axis, skipna, ...) 用于计算 DataFrame 中每列或每行所有元素的乘积
DataFrame.quantile(q, axis, numeric_only, ...) 用于计算 分位数(Quantiles) 的方法
DataFrame.rank(axis, method, numeric_only, ...) 用于计算 DataFrame 中每列或每行元素的排名(rank)
DataFrame.round(decimals) 用于对 DataFrame 中的数值进行四舍五入
DataFrame.sem(axis, skipna, ddof, numeric_only) 用于计算 标准误(Standard Error of the Mean, SEM),即样本均值的标准差
DataFrame.skew(axis, skipna, numeric_only) 用于计算 DataFrame 中每列或每行的偏度(Skewness)
DataFrame.sum(axis, skipna, numeric_only, ...) 用于计算 DataFrame 中每列或每行所有元素的总和

pandas.DataFrame.sum()

pandas.DataFrame.sum() 方法用于计算 DataFrame 中每列或每行所有元素的总和。它是数据分析中最常用的方法之一,常用于统计汇总、特征工程、数据聚合等场景。


📌 方法签名:
python 复制代码
DataFrame.sum(axis=0, skipna=True, numeric_only=False, min_count=0, **kwargs)

🧾 参数说明:
参数 类型 默认值 描述
axis {0/'index', 1/'columns'} 0
  • 0:按列计算总和(默认)
  • 1:按行计算总和 |
    | skipna | bool | True | 是否跳过 NaN 值。若为 False,含 NaN 的列/行结果也为 NaN。 |
    | numeric_only | bool | False | 是否只考虑数值类型列(int、float),忽略布尔、字符串等非数值列 |
    | min_count | int | 0 | 需要参与运算的最小非空值数量。如果非空值数量小于该值,则结果为 NaN |
    | **kwargs | dict | 无 | 其他可选参数 |

📊 返回值
  • 返回一个 Series,表示每列(或每行)所有元素的总和。
  • 如果某列/行中没有足够多的非空值(由 min_count 控制),则对应位置的结果为 NaN
  • 非数值列会被自动忽略(除非设置 numeric_only=False 且列可以相加,如字符串拼接)。

✅ 示例及结果
示例数据:
python 复制代码
import pandas as pd
import numpy as np

df = pd.DataFrame({
    'A': [1, 2, 3],
    'B': [10, 20, 30],
    'C': [100, 200, 300],
    'D': ['a', 'b', 'c']
})

输出原始数据:

复制代码
   A   B    C  D
0  1  10  100  a
1  2  20  200  b
2  3  30  300  c

示例 1:默认参数(按列求和)
python 复制代码
df.sum()

结果:

复制代码
A      6
B     60
C    600
D      abc
dtype: object

解释:

  • 数值列正常求和
  • 字符串列 'D' 被拼接成 'abc'(因为 numeric_only=False

示例 2:设置 numeric_only=True(仅数值列)
python 复制代码
df.sum(numeric_only=True)

结果:

复制代码
A      6
B     60
C    600
dtype: int64

解释:

  • 忽略字符串列 'D',只对数值列求和

示例 3:按行求和(axis=1
python 复制代码
df['E'] = df[['A', 'B', 'C']].sum(axis=1)  # 新增一列 E 表示每行的数值总和

结果:

复制代码
   A   B    C  D    E
0  1  10  100  a  111
1  2  20  200  b  222
2  3  30  300  c  333

解释:

  • 每行数值列相加得到新列 E

示例 4:包含 NaN 值时的行为
python 复制代码
df_with_nan = pd.DataFrame({
    'X': [1, 2, np.nan],
    'Y': [np.nan, 10, 20]
})

df_with_nan.sum()

结果:

复制代码
X     3.0
Y    30.0
dtype: float64

解释:

  • 默认 skipna=True,NaN 被跳过
  • 若设置 skipna=False,则结果为 NaN

示例 5:使用 min_count 参数控制最少非空值数量
python 复制代码
df_with_nan.sum(min_count=2)

结果:

复制代码
X     NaN
Y    30.0
dtype: float64

解释:

  • 列 X 只有 2 个非空值,但 min_count=2 → 正常求和
  • 列 Y 有 2 个非空值 → 正常求和

示例 6:字符串列拼接行为
python 复制代码
df[['D']].sum()

结果:

复制代码
D    abc
dtype: object

解释:

  • 字符串列默认会进行拼接操作(类似 'a' + 'b' + 'c'

⚠️ 注意事项
  • 支持数值列、布尔列、字符串列(拼接)
  • 使用 numeric_only=True 可避免报错并仅处理数值列
  • NaN 值默认被跳过(可通过 skipna=False 控制)
  • min_count 控制是否允许少量非空值参与计算
  • 不会影响原始 DataFrame,返回新 Series

🎯 适用场景
场景 描述
数据汇总 对多个数值列进行快速求和
特征工程 构造新特征,如"历史累计总和"
缺失值分析 结合 min_count 分析缺失情况
字符串拼接 快速合并文本列内容

📋 总结
特性 描述
功能 计算 DataFrame 每列或每行的总和
默认行为 按列计算,跳过 NaN,处理所有列
是否修改原数据 否,返回新 Series
适用类型 数值型列(int、float)、字符串列(可选)
输出类型 Series,索引为列名(axis=0)或行索引(axis=1

sum() 是一个非常基础但重要的方法,适合用于快速获取数据总量、特征构造、数据质量检查等任务。

相关推荐
鬼手点金7 小时前
Scrapy + Playwright 完整示例(JS 动态渲染网页)
开发语言·javascript·爬虫·python·scrapy·html·json
vx-程序开发7 小时前
springboot旅游推介平台---附源码24175
java·spring boot·python·spring cloud·eclipse·django·idea
心运软件7 小时前
基于深度学习的宝石图像分类系统
人工智能·python·深度学习·机器学习·分类·数据挖掘
一木 之林7 小时前
AI实战 : Numpy图像处理与深度学习框架
python
c_lb72887 小时前
零基础选策略工具,先分清三件事
人工智能·python
夜雪一千7 小时前
Python如何使用XPath定位没有特征的元素?无id、无class通用定位技巧
开发语言·python
流浪0018 小时前
Python 基础语法(一):常量、变量、输入输出与运算符
开发语言·python
鸿芯微控科技8 小时前
MFC关断后还有流量怎么办?零流量、阀门泄漏、压差与Python分析
c++·python·mfc·质量流量控制器·关断泄漏·零流量测试
点云-激光雷达-Slam-三维牙齿10 小时前
速度起飞 笔记本电脑6G显卡llama运行Qwen3.6 35BA3B MTP 大模型
人工智能·python·电脑·llama
言乐611 小时前
Python游戏水平测试辅助系统
开发语言·python·游戏·django·pygame