Pandas 中文手册

5.5 Index实战案例

Pandas Index实战案例教程 - 创建、多级索引与数据操作

Pandas 中文手册

本章节提供Pandas中Index的实战案例,包括创建不同类型Index的基础操作、多级索引DataFrame的构建与筛选,以及利用Index实现数据快速对齐和去重,适合初学者学习。

推荐工具
PyCharm专业版开发必备

功能强大的Python IDE,提供智能代码补全、代码分析、调试和测试工具,提高Python开发效率。特别适合处理列表等数据结构的开发工作。

了解更多

Pandas Index实战案例

本章节将介绍Pandas中Index的实战应用,通过具体案例帮助新人快速掌握Index的核心操作,内容简单易懂。

引言

在Pandas中,Index是数据结构的核心组件,用于高效地标识、筛选和操作数据。掌握Index的使用,可以大大提升数据处理的效率。接下来,我们将通过三个案例深入学习。

案例1:创建不同类型的Index,完成基础操作

1.1 创建不同类型的Index

Pandas支持多种Index类型,如整数索引、字符串索引和日期时间索引。

import pandas as pd

# 创建字符串索引的Series
s = pd.Series([1, 2, 3], index=['a', 'b', 'c'])  # 索引为字符串
print("字符串索引Series:")
print(s)

# 创建整数索引的DataFrame
df = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]})
print("\n默认整数索引DataFrame:")
df.index = [0, 1, 2]  # 设置整数索引
print(df)

# 创建日期时间索引
from datetime import datetime
dates = pd.date_range('2023-01-01', periods=3)
s_dates = pd.Series([10, 20, 30], index=dates)
print("\n日期时间索引Series:")
print(s_dates)

1.2 基础操作

包括设置索引、重置索引和重命名索引。

# 设置索引:将DataFrame的列设为索引
df = pd.DataFrame({'姓名': ['张三', '李四', '王五'], '年龄': [25, 30, 35]})
df.set_index('姓名', inplace=True)  # 设置'姓名'列为索引
print("\n设置索引后:")
print(df)

# 重置索引:恢复默认整数索引
df_reset = df.reset_index()
print("\n重置索引后:")
print(df_reset)

# 重命名索引:修改索引名称
df.index = df.index.rename('名字')  # 重命名索引名称
print("\n重命名索引后:")
print(df)

案例2:多级索引DataFrame的创建与数据筛选

2.1 创建多级索引DataFrame

使用pd.MultiIndex创建多级索引(分层索引)。

# 创建多级索引
index = pd.MultiIndex.from_tuples([('北京', '2023-01'), ('北京', '2023-02'), ('上海', '2023-01'), ('上海', '2023-02')], names=['城市', '月份'])
df_multi = pd.DataFrame({'销售额': [100, 150, 200, 250]}, index=index)
print("多级索引DataFrame:")
print(df_multi)

2.2 数据筛选

使用lociloc和索引切片进行数据筛选。

# 使用loc筛选
print("\n筛选城市为'北京'的数据:")
print(df_multi.loc['北京'])  # 筛选第一级索引

print("\n筛选特定组合(北京, 2023-01):")
print(df_multi.loc[('北京', '2023-01')])  # 筛选具体组合

# 使用iloc基于位置筛选
print("\n筛选第一行数据:")
print(df_multi.iloc[0])  # 基于整数位置

# 使用索引切片
print("\n切片筛选城市'北京'到'上海'之间的数据:")
print(df_multi.loc['北京':'上海'])  # 切片操作

案例3:利用Index实现数据的快速对齐与去重

3.1 数据对齐

使用reindex方法对齐不同索引的数据,适用于合并或计算。

# 创建两个具有不同索引的Series
s1 = pd.Series([1, 2, 3], index=['A', 'B', 'C'])
s2 = pd.Series([4, 5], index=['B', 'D'])
print("原始s1:", s1)
print("原始s2:", s2)

# 对齐s2到s1的索引,缺失值填充为0
s2_aligned = s2.reindex(s1.index, fill_value=0)
print("\n对齐后s2:")
print(s2_aligned)

# 计算对齐后的和
s_sum = s1 + s2_aligned
print("\n对齐后求和:")
print(s_sum)

3.2 数据去重

利用Index的重复检测功能,实现快速去重。

# 创建有重复索引的Series
s_dup = pd.Series([10, 20, 30, 40], index=['X', 'Y', 'X', 'Z'])
print("\n有重复索引的Series:")
print(s_dup)

# 去重:保留第一个出现的索引
s_unique = s_dup[~s_dup.index.duplicated()]
print("\n去重后Series:")
print(s_unique)

# 在DataFrame中使用drop_duplicates
df_dup = pd.DataFrame({'值': [1, 2, 3, 4]}, index=['A', 'B', 'A', 'C'])
print("\n有重复索引的DataFrame:")
print(df_dup)

# 基于索引去重
df_unique = df_dup[~df_dup.index.duplicated()]
print("\n去重后DataFrame:")
print(df_unique)

总结

通过本章的三个实战案例,您学习了如何创建不同类型的Index、操作多级索引DataFrame以及利用Index进行数据对齐和去重。这些是Pandas数据处理的基础,掌握后能显著提高数据分析效率。建议通过练习巩固这些技能,逐步应用到实际项目中。

开发工具推荐
Python开发者工具包

包含虚拟环境管理、代码格式化、依赖管理、测试框架等Python开发全流程工具,提高开发效率。特别适合处理复杂数据结构和算法。

获取工具包