mobile wallpaper 1mobile wallpaper 2mobile wallpaper 3mobile wallpaper 4mobile wallpaper 5mobile wallpaper 6mobile wallpaper 7mobile wallpaper 8mobile wallpaper 9mobile wallpaper 10mobile wallpaper 11mobile wallpaper 12mobile wallpaper 13mobile wallpaper 14mobile wallpaper 15mobile wallpaper 16mobile wallpaper 17mobile wallpaper 18mobile wallpaper 19mobile wallpaper 20mobile wallpaper 21mobile wallpaper 22mobile wallpaper 23
494 字
1 分钟
笔记|数据分析学习笔记20|DataFrame的常用方法
2026-07-04
2026-07-05

本系列所有文章都放在数据科学标签,总目录如下:

合集|数据分析学习笔记|系列总目录

上一篇:笔记|数据分析学习笔记19|DataFrame的访问


20.1 DataFrame 常用方法总览#

常用方法总览#

方法说明
head()查看前 n 行数据,默认 5 行
tail()查看后 n 行数据,默认 5 行
isin()判断元素是否包含在参数集合中
isna()判断是否为缺失值(如 NaNNone
sum()求和,自动忽略缺失值
mean()平均值
min()最小值
max()最大值
var()方差
std()标准差
median()中位数
mode()众数(可返回多个)
quantile(q)分位数,q 取 0~1 之间
describe()常见统计信息(count、mean、std、min、25%、50%、75%、max)
value_counts()每个唯一值的出现次数
count()非缺失值数量
duplicated()判断行是否重复
drop_duplicates()去除重复行
sample()随机抽样
sort_index()按索引排序
sort_values()按值排序
replace()替换值
nlargest()返回某列最大的 n 条数据
nsmallest()返回某列最小的 n 条数据

20.2 统计描述方法#

import pandas as pd
import numpy as np
df = pd.DataFrame(
{
'name': ['tom', 'tom', 'jack', 'alice', 'bob', 'allen'],
'score': [60.5, 60.5, 80, 30.6, 70, 83.5],
'age': [15, 15, 15, 20, 26, 30]
},
index=[1, 2, 3, 4, 5, 6]
)

描述性统计:

print(df.describe())

输出:

score age
count 6.000000 6.000000
mean 64.183333 20.166667
std 19.037376 6.493587
min 30.600000 15.000000
25% 60.500000 15.000000
50% 65.250000 17.500000
75% 77.500000 24.500000
max 83.500000 30.000000

describe() 自动跳过非数值列(如 name),仅对数值列做统计。

常用统计计算:

print(df['score'].sum()) # 求和
print(df.score.max()) # 最大值
print(df.age.min()) # 最小值
print(df.score.mean()) # 平均值
print(df.score.median()) # 中位数
print(df.age.mode()) # 众数
print(df.score.std()) # 标准差
print(df.score.var()) # 方差
print(df.score.quantile(0.25)) # 第25百分位数
print(df.count()) # 每列非缺失值数量

输出:

385.1
83.5
15
64.18333333333334
65.25
0 15
Name: age, dtype: int64
19.037375519400424
362.4216666666666
60.5
name 6
score 6
age 6
dtype: int64

20.3 去重与排序#

去重:

print(df.drop_duplicates()) # 去除完全重复的行
print(df.duplicated(subset=['age'])) # 判断指定列的重复情况

输出:

name score age
1 tom 60.5 15
3 jack 80.0 15
4 alice 30.6 20
5 bob 70.0 26
6 allen 83.5 30
1 False
2 True
3 True
4 False
5 False
6 False
dtype: bool

duplicated(subset=['age']) 检查 age 列的值是否重复,返回布尔 Series。

排序:

print(df.sort_index(ascending=False))
print(df.sort_values(by=['score', 'age'], ascending=[False, True]))

输出:

name score age
6 allen 83.5 30
5 bob 70.0 26
4 alice 30.6 20
3 jack 80.0 15
2 tom 60.5 15
1 tom 60.5 15
name score age
3 jack 80.0 15
6 allen 80.0 30
5 bob 70.0 26
1 tom 60.5 15
2 tom 60.5 15
4 alice 30.6 20

sort_values() 支持多列排序:先按 score 降序,再按 age 升序。

取最大/最小 n 行:

print(df.nlargest(2, columns=['score', 'age']))
print(df.nsmallest(2, columns=['score', 'age']))

输出:

name score age
6 allen 83.5 30
3 jack 80.0 15
name score age
4 alice 30.6 20
1 tom 60.5 15

20.4 其他实用方法#

print(df.isin(['jack', 20])) # 判断元素是否在集合中
print(df.isna()) # 判断是否为缺失值
print(df.value_counts()) # 统计每行出现的频次
print(df.replace(15, 30)) # 将 15 替换为 30
print(df.sample(2)) # 随机抽样 2 行

输出(结果随机):

name score age
1 False False False
2 False False False
3 True False False
4 False False True
5 False False False
6 False False False
name score age
1 False False False
...
name score age
1 tom 60.5 30
2 tom 60.5 30
3 jack 80.0 30
4 alice 30.6 20
5 bob 70.0 26
6 allen 83.5 30

20.5 本节小结#

本节完成了以下内容:

  • 掌握了 describe()sum()mean()max()min()median()mode()std()var()quantile() 等统计方法。
  • 掌握了 drop_duplicates()duplicated() 去重方法。
  • 掌握了 sort_index()sort_values()nlargest()nsmallest() 排序与取值方法。
  • 掌握了 isin()isna()value_counts()replace()sample() 等实用方法。

下一节我们将通过 DataFrame 案例 综合练习这些方法。

下一篇:笔记|数据分析学习笔记21|DataFrame案例


分享

如果这篇文章对你有帮助,欢迎分享给更多人!

笔记|数据分析学习笔记20|DataFrame的常用方法
https://luq-blog.xyz/posts/2026-07-04-data-notes-20-df-methods/
作者
Luquiescene
发布于
2026-07-04
许可协议
CC BY-NC-SA 4.0

部分信息可能已经过时

目录