- Python Pandas 教程
- Python Pandas - 首页
- Python Pandas - 简介
- Python Pandas - 环境设置
- Python Pandas - 基础
- Python Pandas - 数据结构介绍
- Python Pandas - 索引对象
- Python Pandas - 面板
- Python Pandas - 基本功能
- Python Pandas - 索引和数据选择
- Python Pandas - Series
- Python Pandas - Series
- Python Pandas - 切片 Series 对象
- Python Pandas - Series 对象的属性
- Python Pandas - Series 对象上的算术运算
- Python Pandas - 将 Series 转换为其他对象
- Python Pandas - DataFrame
- Python Pandas - DataFrame
- Python Pandas - 访问 DataFrame
- Python Pandas - 切片 DataFrame 对象
- Python Pandas - 修改 DataFrame
- Python Pandas - 从 DataFrame 中删除行
- Python Pandas - DataFrame 上的算术运算
- Python Pandas - I/O 工具
- Python Pandas - I/O 工具
- Python Pandas - 使用 CSV 格式
- Python Pandas - 读取和写入 JSON 文件
- Python Pandas - 从 Excel 文件读取数据
- Python Pandas - 将数据写入 Excel 文件
- Python Pandas - 使用 HTML 数据
- Python Pandas - 剪贴板
- Python Pandas - 使用 HDF5 格式
- Python Pandas - 与 SQL 的比较
- Python Pandas - 数据处理
- Python Pandas - 排序
- Python Pandas - 重新索引
- Python Pandas - 迭代
- Python Pandas - 连接
- Python Pandas - 统计函数
- Python Pandas - 描述性统计
- Python Pandas - 处理文本数据
- Python Pandas - 函数应用
- Python Pandas - 选项和自定义
- Python Pandas - 窗口函数
- Python Pandas - 聚合
- Python Pandas - 合并/连接
- Python Pandas - 多级索引
- Python Pandas - 多级索引基础
- Python Pandas - 使用多级索引进行索引
- Python Pandas - 使用多级索引进行高级重新索引
- Python Pandas - 重命名多级索引标签
- Python Pandas - 对多级索引进行排序
- Python Pandas - 二元运算
- Python Pandas - 二元比较运算
- Python Pandas - 布尔索引
- Python Pandas - 布尔掩码
- Python Pandas - 数据重塑和透视表
- Python Pandas - 透视表
- Python Pandas - 堆叠和取消堆叠
- Python Pandas - 熔化
- Python Pandas - 计算虚拟变量
- Python Pandas - 分类数据
- Python Pandas - 分类数据
- Python Pandas - 分类数据的排序和排序
- Python Pandas - 比较分类数据
- Python Pandas - 处理缺失数据
- Python Pandas - 缺失数据
- Python Pandas - 填充缺失数据
- Python Pandas - 缺失值的插值
- Python Pandas - 删除缺失数据
- Python Pandas - 使用缺失数据进行计算
- Python Pandas - 处理重复项
- Python Pandas - 重复数据
- Python Pandas - 计数和检索唯一元素
- Python Pandas - 重复标签
- Python Pandas - 分组和聚合
- Python Pandas - GroupBy
- Python Pandas - 时间序列数据
- Python Pandas - 日期功能
- Python Pandas - Timedelta
- Python Pandas - 稀疏数据结构
- Python Pandas - 稀疏数据
- Python Pandas - 可视化
- Python Pandas - 可视化
- Python Pandas - 其他概念
- Python Pandas - 注意事项和陷阱
- Python Pandas 有用资源
- Python Pandas - 快速指南
- Python Pandas - 有用资源
- Python Pandas - 讨论
Python Pandas - 索引对象
在 Pandas 中,索引对象在以结构化的方式组织和访问数据方面发挥着重要作用。它们像带标签的数组一样工作,并在定义数据如何在Series和DataFrames等结构中排列和访问方面发挥着重要作用。索引允许快速数据搜索、高效切片并保持数据正确对齐,同时为每一行提供有意义的标签。
索引用于标记 DataFrame 的行或 Series 中的元素。这些标签可以是数字、字符串或日期,它们帮助您识别数据。关于 Pandas 索引需要记住的一件重要的事情是,它们是不可变的,这意味着一旦创建,您就无法更改其大小。
在本教程中,我们将学习 Pandas 索引对象以及 Pandas 中各种类型的索引。
Index 类
Index 类是用于存储 Pandas 对象中所有索引类型的基本对象。它提供了访问和操作数据的基本功能。
索引对象的关键特征
不可变:索引对象是不可变的序列,一旦创建就无法修改。
对齐:索引确保来自不同 DataFrame 或 Series 的数据可以根据索引值正确组合。
切片:索引允许根据标签快速切片和检索数据。
语法
以下是 Index 类的语法:
class pandas.Index(data=None, dtype=None, copy=False, name=None, tupleize_cols=True)
其中,
data:索引的数据,可以是类似数组的结构(如列表或 NumPy 数组)或其他索引对象。
dtype:它指定索引值的的数据类型,如果未提供,Pandas 将根据索引值确定数据类型。
copy:这是一个布尔参数(True 或 False),它指定是否创建输入数据的副本。
name:此参数为索引提供标签。
data:这也是一个布尔参数(True 或 False),当为 True 时,它会尝试在可能的情况下创建 MultiIndex。
Pandas 中的索引类型
Pandas 提供各种类型的索引来处理不同类型的数据。例如:
让我们讨论 Pandas 中所有类型的索引。
数值索引
数值索引是 Pandas 中的基本索引类型,它包含数值。数值索引是默认索引,如果您未提供任何索引,Pandas 会自动分配它。
示例
以下示例演示了 Pandas 如何自动为 Pandas DataFrame 对象分配数值索引。
import pandas as pd # Generate some data for DataFrame data = { 'Name': ['Steve', 'Lia', 'Vin', 'Katie'], 'Age': [32, 28, 45, 38], 'Gender': ['Male', 'Female', 'Male', 'Female'], 'Rating': [3.45, 4.6, 3.9, 2.78] } # Creating the DataFrame df = pd.DataFrame(data) # Display the DataFrame print(df) print("\nDataFrame Index Object Type:",df.index.dtype)
以下是上述代码的输出:
Name | Age | Gender | Rating | |
---|---|---|---|---|
0 | Steve | 32 | Male | 3.45 |
1 | Lia | 28 | Female | 4.60 |
2 | Vin | 45 | Male | 3.90 |
3 | Katie | 38 | Female | 2.78 |
分类索引
分类索引用于处理重复标签。此索引在内存使用和处理大量重复元素方面效率很高。
示例
以下示例使用分类索引创建一个 Pandas DataFrame。
import pandas as pd # Creating a CategoricalIndex categories = pd.CategoricalIndex(['a','b', 'a', 'c']) df = pd.DataFrame({'Col1': [50, 70, 90, 60], 'Col2':[1, 3, 5, 8]}, index=categories) print("Input DataFrame:\n",df) print("\nDataFrame Index Object Type:",df.index.dtype)
以下是上述代码的输出:
Input DataFrame:
Col1 | Col2 | |
---|---|---|
a | 50 | 1 |
b | 70 | 3 |
a | 90 | 5 |
c | 60 | 8 |
区间索引
区间索引用于表示数据中的区间(范围)。此类型的索引将使用interval_range()方法创建。
示例
以下示例使用interval_range()方法创建具有区间索引的 DataFrame。
import pandas as pd # Creating a IntervalIndex interval_idx = pd.interval_range(start=0, end=4) # Creating a DataFrame with IntervalIndex df = pd.DataFrame({'Col1': [1, 2, 3, 4], 'Col2':[1, 3, 5, 8]}, index=interval_idx) print("Input DataFrame:\n",df) print("\nDataFrame Index Object Type:",df.index.dtype)
以下是上述代码的输出:
Input DataFrame:
Col1 | Col2 | |
---|---|---|
(0, 1] | 1 | 1 |
(1, 2] | 2 | 3 |
(2, 3] | 3 | 5 |
(3, 4] | 4 | 8 |
多级索引
Pandas 多级索引用于表示 Pandas 数据结构索引中的多个级别或层,也称为分层索引。
示例
以下示例显示了创建简单的多级索引 DataFrame。
import pandas as pd # Create MultiIndex arrays = [[1, 1, 2, 2], ['red', 'blue', 'red', 'blue']] multi_idx = pd.MultiIndex.from_arrays(arrays, names=('number', 'color')) # Create a DataFrame with MultiIndex df = pd.DataFrame({'Col1': [1, 2, 3, 4], 'Col2':[1, 3, 5, 8]}, index=multi_idx) print("MultiIndexed DataFrame:\n",df)
以下是上述代码的输出:
MultiIndexed DataFrame:
Col1 | Col2 | ||
---|---|---|---|
1 | red | 1 | 1 |
blue | 2 | 3 | |
2 | red | 3 | 5 |
blue | 4 | 8 |
日期时间索引
Pandas 日期时间索引对象用于表示日期和时间值。换句话说,它用于时间序列数据,其中每一行都链接到一个特定的时间戳。
示例
以下示例使用日期时间索引创建一个 Pandas DataFrame。
import pandas as pd # Create DatetimeIndex datetime_idx = pd.DatetimeIndex(["2020-01-01 10:00:00", "2020-02-01 11:00:00"]) # Create a DataFrame with DatetimeIndex df = pd.DataFrame({'Col1': [1, 2], 'Col2':[1, 3]}, index=datetime_idx ) print("DatetimeIndexed DataFrame:\n",df)
以下是上述代码的输出:
DatetimeIndexed DataFrame:
Col1 | Col2 | |
---|---|---|
2020-01-01 10:00:00 | 1 | 1 |
2020-02-01 11:00:00 | 2 | 3 |
时间增量索引
Pandas 时间增量索引用于表示两个日期或时间之间的持续时间,例如事件之间的天数或小时数。
示例
此示例使用时间增量索引创建一个 Pandas DataFrame。
import pandas as pd # Create TimedeltaIndex timedelta_idx = pd.TimedeltaIndex(['0 days', '1 days', '2 days']) # Create a DataFrame with TimedeltaIndex df = pd.DataFrame({'Col1': [1, 2, 3], 'Col2':[1, 3, 3]}, index=timedelta_idx ) print("TimedeltaIndexed DataFrame:\n",df)
以下是上述代码的输出:
TimedeltaIndexed DataFrame:
Col1 | Col2 | |
---|---|---|
0 days | 1 | 1 |
1 days | 2 | 3 |
2 days | 3 | 3 |
周期索引
Pandas 周期索引用于表示时间中的规则周期,例如季度、月份或年份。
示例
此示例使用周期索引对象创建一个 Pandas DataFrame。
import pandas as pd # Create PeriodIndex period_idx = pd.PeriodIndex(year=[2020, 2024], quarter=[1, 3]) # Create a DataFrame with PeriodIndex df = pd.DataFrame({'Col1': [1, 2], 'Col2':[1, 3]}, index=period_idx ) print("PeriodIndexed DataFrame:\n",df)
以下是上述代码的输出:
PeriodIndexed DataFrame:
Col1 | Col2 | |
---|---|---|
2020Q1 | 1 | 1 |
2024Q3 | 2 | 3 |