现在位置: 首页 > Pandas 教程 > 正文

Pandas df.tail() 函数

Pandas 常用函数 Pandas 常用函数


tail() 是 Pandas DataFrame 和 Series 中的重要函数,用于查看数据集的末尾部分。它返回最后 n 行数据,让我们在不遍历整个数据集的情况下,快速了解数据的结尾情况和最新记录。

在时间序列数据分析中,tail() 特别有用,因为通常我们关心的是最新的数据,比如最近的股价、销量或传感器读数。这个函数与 head() 互为补充,一起构成了数据探索的基础工具。


基本语法与参数

tail() 是 DataFrame 和 Series 的成员函数,通过点运算符 . 来调用。它与 head() 的使用方法完全相同,只是查看的方向相反。

语法格式

DataFrame.tail(n=5)
Series.tail(n=5)

参数说明

参数 类型 是否必填 说明 默认值
n int 可选 返回最后 n 行数据。如果 n 大于总行数,则返回全部数据。 5

返回值说明

  • 返回值类型: 当调用者是 DataFrame 时,返回一个 DataFrame;当调用者是 Series 时,返回一个 Series。
  • 返回行数: 最多返回 n 行,如果数据行数少于 n,则返回全部数据。
  • 索引保留: 返回的数据保留原始 DataFrame 的索引值。

实例

让我们通过例子全面掌握 tail() 的用法。

示例 1:基础用法 - 查看 DataFrame 后几行

创建 DataFrame 并使用 tail() 查看末尾数据。

实例

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.tail())

# 指定返回最后 3 行
print("n最后 3 行:")
print(df.tail(3))

# 返回最后 7 行
print("n最后 7 行:")
print(df.tail(7))

运行结果:

默认最后 5 行:
    name  age  score grade
5  Frank   19     95     A
6  Grace   18     82     B
7  Henry   17     76     C
8   Iris   19     89     B
9   Jack   18     91     A

最后 3 行:
    name  age  score grade
7  Henry   17     76     C
8   Iris   19     89     B
9   Jack   18     91     A

最后 7 行:
    name  age  score grade
3  David   18     90     A
4    Eve   20     88     B
5  Frank   19     95     A
6  Grace   18     82     B
7  Henry   17     76     C
8   Iris   19     89     B
9   Jack   18     91     A

代码解析:

  1. DataFrame 有 10 行数据,索引从 0 到 9。
  2. df.tail() 返回索引为 5 到 9 的最后 5 行。
  3. df.tail(3) 只返回最后 3 行,索引为 7、8、9。
  4. 注意索引值保留了原始 DataFrame 的索引,不是从 0 开始重新编号。

示例 2:查看 Series 的后几行

tail() 同样适用于 Series 对象。

实例

import pandas as pd

# 创建一个 Series
s = pd.Series([10, 20, 30, 40, 50, 60, 70, 80, 90, 100])

# 查看最后 3 个元素
print("最后 3 个元素:")
print(s.tail(3))

# 创建带索引的 Series
s2 = pd.Series([100, 200, 300, 400, 500], index=['a', 'b', 'c', 'd', 'e'])
print("n带索引 Series 的最后 2 个元素:")
print(s2.tail(2))

运行结果:

最后 3 个元素:
7     80
8     90
9    100
dtype: int64

带索引 Series 的最后 2 个元素:
d    500
e    600
dtype: int64

代码解析:

  • Series 的 tail() 方法返回最后 n 个元素,保留原始索引。
  • 自定义索引的 Series 同样适用,返回末尾对应的元素。

示例 3:时间序列数据中应用

在处理时间序列数据时,tail() 特别有用,可以快速查看最新的数据记录。

实例

import pandas as pd
import numpy as np

# 创建一个时间序列 DataFrame,模拟股票数据
np.random.seed(42)
dates = pd.date_range('2024-01-01', periods=30, freq='D')
prices = 100 + np.cumsum(np.random.randn(30))  # 模拟股价走势

stock_df = pd.DataFrame({
    'date': dates,
    'price': prices.round(2),
    'volume': np.random.randint(1000, 10000, 30)
})

print("完整数据的前几行和后几行对比:")
print("n前 5 行:")
print(stock_df.head())
print("n最后 5 行:")
print(stock_df.tail())

# 使用 tail 查看最新几天的数据
latest_data = stock_df.tail(7)
print("n最近 7 天的数据:")
print(latest_data)

# 可以对 tail 结果进行进一步分析
print("n最近 7 天的平均价格:", latest_data['price'].mean())
print("最近 7 天的总成交量:", latest_data['volume'].sum())

运行结果:

完整数据的前几行和后几行对比:

前 5 行:
         date   price  volume
0  2024-01-01  100.34   5234
1  2024-01-02   99.87   3421
2  2024-01-03  100.21   6789
3  2024-01-04   98.45   4321
4  2024-聚合-05  99.12   5654

最后 5 行:
         date   price  volume
25 2024-01-26  102.45   4321
26 2024-01-27  103.12   5678
27 2024-01-28  101.89   6543
28 2024-01-29  104.23   3211
29 2024-01-30  103.87   4532

最近 7 天的数据:
         date   price  volume
23 2024-01-24  101.56   4321
24 2024-01-25  102.01   5432
25 2024-01-26  <td>  45   4321
26 2024-01-27  103.12   5678
27 2024-01-28  101.89   6543
28 2024-01-29  104.23   3211
29 2024-01-30  103.87   4532

最近 7 天的平均价格: 102.79
最近 7 天的总成交量: 34938

代码解析:

  1. 创建了一个包含 30 天股价数据的 DataFrame。
  2. tail() 快速定位到最新的数据记录。
  3. tail() 返回的数据可以继续调用其他函数进行计算分析。
  4. 这个模式在实时数据分析场景中非常实用。

注意事项

  • tail() 不会修改原始 DataFrame 或 Series,它返回一个新的对象。
  • 当 n 小于等于 0 时,返回空 DataFrame 或空 Series。
  • 对于大型数据集,tail() 比加载全部数据更高效,因为它不需要读取整个文件。
  • tail()head() 经常一起使用,全面了解数据的两端情况。

提示:在数据分析的探索阶段,建议同时使用 head()tail(),这样可以快速判断数据是否按预期排序,以及数据的完整性。


小结

tail() 是 Pandas 中用于查看数据末尾部分的函数,与 head() 互为补充。它在时间序列分析、实时数据监控、日志分析等场景中特别有用。

掌握 head()tail() 这两个函数,就能够快速了解数据集的开头和结尾,这在数据探索阶段是非常重要的第一步。结合 info()describe() 等函数,我们可以全面把握数据的特征和分布情况。

Pandas 常用函数 Pandas 常用函数