Pandas df.head() 函数
head() 是 Pandas DataFrame 和 Series 中最常用的函数之一,用于快速查看数据集的开头部分。它返回前 n 行数据,让我们在不加载整个数据集的情况下,先了解数据的基本结构和内容。
这个函数在数据分析工作中使用频率极高,特别是在处理大型数据集时,我们通常先使用 head() 查看数据的前几行,确认数据结构是否符合预期,然后再进行进一步的分析和处理。
基本语法与参数
head() 是 DataFrame 和 Series 的成员函数,通过点运算符 . 来调用。它不需要传入任何必需参数,但可以接受一个可选参数来指定返回的行数。
语法格式
DataFrame.head(n=5) Series.head(n=5)
参数说明
| 参数 | 类型 | 是否必填 | 说明 | 默认值 |
|---|---|---|---|---|
| n | int | 可选 | 返回前 n 行数据。如果 n 大于总行数,则返回全部数据。 | 5 |
返回值说明
- 返回值类型: 当调用者是 DataFrame 时,返回一个 DataFrame;当调用者是 Series 时,返回一个 Series。
- 返回行数: 最多返回 n 行,如果数据行数少于 n,则返回全部数据。
实例
让我们通过一系列例子,全面掌握 head() 的用法。
示例 1:基础用法 - 查看 DataFrame 前几行
首先创建一个简单的 DataFrame,然后使用 head() 查看前几行数据。
实例
import pandas as pd
# 创建一个示例 DataFrame,包含学生成绩数据
data = {
'name': ['Alice', 'Bob', 'Charlie', 'David', 'Eve', 'Frank', 'Grace', 'Henry', 'Iris', 'Jack'],
'age': [18, 19, 17, 18, 20, 19, 18, 17, 19, 18],
'score': [85, 92, 78, 90, 88, 95, 82, 76, 89, 91],
'grade': ['A', 'A', 'B', 'A', 'B', 'A', 'B', 'C', 'B', 'A']
}
df = pd.DataFrame(data)
# 默认返回前 5 行
print("默认前 5 行:")
print(df.head())
# 指定返回前 3 行
print("n前 3 行:")
print(df.head(3))
# 返回前 7 行
print("n前 7 行:")
print(df.head(7))
# 创建一个示例 DataFrame,包含学生成绩数据
data = {
'name': ['Alice', 'Bob', 'Charlie', 'David', 'Eve', 'Frank', 'Grace', 'Henry', 'Iris', 'Jack'],
'age': [18, 19, 17, 18, 20, 19, 18, 17, 19, 18],
'score': [85, 92, 78, 90, 88, 95, 82, 76, 89, 91],
'grade': ['A', 'A', 'B', 'A', 'B', 'A', 'B', 'C', 'B', 'A']
}
df = pd.DataFrame(data)
# 默认返回前 5 行
print("默认前 5 行:")
print(df.head())
# 指定返回前 3 行
print("n前 3 行:")
print(df.head(3))
# 返回前 7 行
print("n前 7 行:")
print(df.head(7))
运行结果:
默认前 5 行:
name age score grade
0 Alice 18 85 A
1 Bob 19 92 A
2 Charlie 17 78 B
3 David 18 90 A
4 Eve 20 88 B
前 3 行:
name age score grade
0 Alice 18 85 A
1 Bob 19 92 A
2 Charlie 17 78 B
前 7 行:
name age score grade grade
0 Alice 18 85 A
1 Bob 19 92 A
2 Charlie 17 78 B
3 David 18 90 A
4 Eve 20 88 B
5 Frank 19 95 A
6 Grace 18 82 B
代码解析:
- 创建了一个包含 10 行学生数据的 DataFrame。
df.head()不带参数时,默认返回前 5 行数据,这是最常用的方式。df.head(3)返回前 3 行,可以根据需要调整查看的行数。- 当指定的 n 值大于数据总行数时,会返回全部数据,不会报错。
示例 2:查看 Series 的前几行
head() 不仅适用于 DataFrame,也同样适用于 Series 对象。
实例
import pandas as pd
# 创建一个 Series,包含一系列数值
s = pd.Series([10, 20, 30, 40, 50, 60, 70, 80, 90, 100])
# 查看 Series 的前 3 个元素
print("前 3 个元素:")
print(s.head(3))
# 创建带索引的 Series
s2 = pd.Series([100, 200, 300, 400, 500], index=['a', 'b', 'c', 'd', 'e'])
print("n带索引 Series 的前 2 个元素:")
print(s2.head(2))
# 创建一个 Series,包含一系列数值
s = pd.Series([10, 20, 30, 40, 50, 60, 70, 80, 90, 100])
# 查看 Series 的前 3 个元素
print("前 3 个元素:")
print(s.head(3))
# 创建带索引的 Series
s2 = pd.Series([100, 200, 300, 400, 500], index=['a', 'b', 'c', 'd', 'e'])
print("n带索引 Series 的前 2 个元素:")
print(s2.head(2))
运行结果:
前 3 个元素: 0 10 1 20 2 30 dtype: int64 带索引 Series 的前 2 个元素: a 100 b 200 dtype: int64
代码解析:
- Series 同样支持
head()方法,返回前 n 个元素。 - 自定义索引的 Series 也能正常使用
head(),会保留原始索引。
示例 3:结合其他函数使用
head() 经常与其他 DataFrame 函数结合使用,进行数据探索和分析。
实例
import pandas as pd
import numpy as np
# 创建更大的 DataFrame
np.random.seed(42) # 设置随机种子,保证结果可复现
df = pd.DataFrame({
'date': pd.date_range('2024-01-01', periods=100),
'value': np.random.randn(100).round(2),
'category': np.random.choice(['A', 'B', 'C'], 100)
})
# 查看数据类型信息
print("数据类型信息:")
print(df.dtypes)
print()
# 查看前 10 行数据
print("前 10 行数据:")
print(df.head(10))
# 先排序,再查看前几行
df_sorted = df.sort_values('value', ascending=False)
print("n按 value 降序排列后的前 5 行:")
print(df_sorted.head())
# 查看前几行的统计信息
print("n前 5 行的统计信息:")
print(df.head().describe())
import numpy as np
# 创建更大的 DataFrame
np.random.seed(42) # 设置随机种子,保证结果可复现
df = pd.DataFrame({
'date': pd.date_range('2024-01-01', periods=100),
'value': np.random.randn(100).round(2),
'category': np.random.choice(['A', 'B', 'C'], 100)
})
# 查看数据类型信息
print("数据类型信息:")
print(df.dtypes)
print()
# 查看前 10 行数据
print("前 10 行数据:")
print(df.head(10))
# 先排序,再查看前几行
df_sorted = df.sort_values('value', ascending=False)
print("n按 value 降序排列后的前 5 行:")
print(df_sorted.head())
# 查看前几行的统计信息
print("n前 5 行的统计信息:")
print(df.head().describe())
运行结果:
数据类型信息:
date datetime64[ns]
value float64
category object
dtype: object
前 10 行数据:
date value category
0 2024-01-01 0.34 A
1 2024-01-02 -0.23 B
2 2024-01-03 0.54 C
3 2024-01-04 -1.58 B
4 2024-01-05 -0.29 后几行
...
按 value 降序排列后的前 5 行:
date value category
72 2024-03-13 2.87 C
55 2024-02-25 2.32 A
31 2024-02-01 2.21 B
64 2024-03-05 1.71 C
84 2024-03-25 1.55 A
前 5 行的统计信息:
age score
count 5.0 5.000
mean 18.0 87.200
std 1.0 5.403
min 17.0 78.000
50% 18.0 88.000
max 20.0 95.000
代码解析:
head()可以与sort_values()结合使用,先排序再看前几行。head()返回的仍然是一个 DataFrame,因此可以继续调用其他 DataFrame 方法。describe()可以对head()返回的数据进行统计汇总。
注意事项
head()不会修改原始 DataFrame 或 Series,它返回一个新的对象。- 当 n 小于等于 0 时,返回空 DataFrame 或空 Series。
- 对于大型数据集,先使用
head()查看结构是良好的实践习惯。 head()返回的数据保留了原始的索引值,不会重新编号。
提示:在 Jupyter Notebook 或 JupyterLab 环境中,直接输入 DataFrame 变量名并执行,默认就会显示
head()的结果,这大大方便了数据探索工作。
小结
head() 是 Pandas 中最基础也最实用的数据查看函数之一。它能够快速预览数据集的开头部分,帮助我们了解数据结构、列名、数据类型等关键信息。
在实际数据分析工作中,我们通常会:先用 head() 查看数据的基本结构,然后用 tail() 查看数据的末尾部分,再用 info() 和 describe() 了解数据的整体情况。这个"查看数据四部曲"是每个数据分析师都应该掌握的基本技能。

Pandas 常用函数