780 字
4 分钟
数据分析|DataFrame的常用方法

20.1 DataFrame 常用方法总览
常用方法总览
| 方法 | 说明 |
|---|---|
head() | 查看前 n 行数据,默认 5 行 |
tail() | 查看后 n 行数据,默认 5 行 |
isin() | 判断元素是否包含在参数集合中 |
isna() | 判断是否为缺失值(如 NaN 或 None) |
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 pdimport 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 agecount 6.000000 6.000000mean 64.183333 20.166667std 19.037376 6.493587min 30.600000 15.00000025% 60.500000 15.00000050% 65.250000 17.50000075% 77.500000 24.500000max 83.500000 30.000000describe() 自动跳过非数值列(如 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.183.51564.1833333333333465.250 15Name: age, dtype: int6419.037375519400424362.421666666666660.5name 6score 6age 6dtype: int6420.3 去重与排序
去重:
print(df.drop_duplicates()) # 去除完全重复的行print(df.duplicated(subset=['age'])) # 判断指定列的重复情况输出:
name score age1 tom 60.5 153 jack 80.0 154 alice 30.6 205 bob 70.0 266 allen 83.5 301 False2 True3 True4 False5 False6 Falsedtype: boolduplicated(subset=['age']) 检查 age 列的值是否重复,返回布尔 Series。
排序:
print(df.sort_index(ascending=False))print(df.sort_values(by=['score', 'age'], ascending=[False, True]))输出:
name score age6 allen 83.5 305 bob 70.0 264 alice 30.6 203 jack 80.0 152 tom 60.5 151 tom 60.5 15 name score age3 jack 80.0 156 allen 80.0 305 bob 70.0 261 tom 60.5 152 tom 60.5 154 alice 30.6 20sort_values() 支持多列排序:先按 score 降序,再按 age 升序。
取最大/最小 n 行:
print(df.nlargest(2, columns=['score', 'age']))print(df.nsmallest(2, columns=['score', 'age']))输出:
name score age6 allen 83.5 303 jack 80.0 15 name score age4 alice 30.6 201 tom 60.5 1520.4 其他实用方法
print(df.isin(['jack', 20])) # 判断元素是否在集合中print(df.isna()) # 判断是否为缺失值print(df.value_counts()) # 统计每行出现的频次print(df.replace(15, 30)) # 将 15 替换为 30print(df.sample(2)) # 随机抽样 2 行输出(结果随机):
name score age1 False False False2 False False False3 True False False4 False False True5 False False False6 False False False name score age1 False False False... name score age1 tom 60.5 302 tom 60.5 303 jack 80.0 304 alice 30.6 205 bob 70.0 266 allen 83.5 3020.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 案例 综合练习这些方法。
数据分析
连载中数据分析|DataFrame的常用方法
https://luq-blog.xyz/posts/2026-07-04-data-notes-20-df-methods/分享文章
生成精美分享图或复制链接,与更多人分享本文。
继续阅读
换条路线
从其他文章中稳定抽取
最后更新于 ,距今已过 91 天
部分内容可能已过时
评论