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