跳到主要内容
Python Pandas DataFrame 常用方法精讲 | 极客日志
Python AI 算法
Python Pandas DataFrame 常用方法精讲 Pandas DataFrame 提供 cumsum、describe、diff、eval、kurt 等核心方法,分别用于计算累积和、生成描述性统计、计算数值差异、评估字符串表达式及计算分布峭度。内容涵盖各方法的语法结构、参数说明、功能特性及完整代码示例,适用于时间序列分析、数据清洗及统计特征提取场景,助力提升数据处理效率。
SecGuard 发布于 2026/2/23 更新于 2026/5/29 26 浏览用法精讲
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,其中每个元素表示其前面所有元素的和。
说明
缺失值处理 :如果 skipna 为 True,所有 NaN 值将被忽略;如果为 False,结果中的任何 NaN 都会导致后续的结果也为 NaN。
适用于时间序列 :cumsum 方法也常用于处理时间序列数据,以帮助识别随时间变化的总和趋势。
效率 :计算累积和的效率很高,适用于处理大规模数据集。
用法
代码示例
import pandas as pd
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。
说明
缺失值 :该方法会自动忽略缺失值 (NaN) 进行统计。
数据类型 :默认情况下,describe 会根据数据类型自动选择要计算的列。
自定义百分位数 :可以根据需求自定义百分位数,以便更好地理解数据分布。
用法
代码示例 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,因为没有前一个值可供计算。
说明
NaN 值 :由于存在没有前一个值的情况,计算出的第一行/列会包含 NaN 值。
适用数据 :该方法主要适用于数值型数据,对于其他类型的数据 (如字符串) 可能未按预期工作。
时间序列数据 :在处理时间序列数据时,使用 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),表达式计算的结果。
说明
表达式限制 :在表达式中只允许使用 DataFrame 的列名,表达式不能使用 Python 语言中的特殊功能。
运算符支持 :支持基本的算术运算符和一些常见的数学函数。
效率 :eval 方法在处理大型 DataFrame 时通常比逐列计算要快,尤其是在 numexpr 可用的情况下。
用法
代码示例 import pandas as pd
data = {
'A' : [1 , 2 , 3 ],
'B' : [4 , 5 , 6 ]
}
df = pd.DataFrame(data)
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,包含每一列或每一行的峭度值。
说明
数值类型 :峭度计算仅适用于数值类型的数据,非数值类型的数据将被忽略,或者如 numeric_only=True,将会被排除。
缺失值 :如果数据中存在缺失值,根据 skipna 参数的设置,峭度可能会受到影响。
统计性质 :峭度值可以用于判断数据的分布特征:较高的峭度值表示分布的尾部较重,较低的峭度值表示分布的尾部较轻。
用法
代码示例 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
相关免费在线工具 加密/解密文本 使用加密算法(如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