Pandas Index 对象
Pandas 的 Index 对象是用于标识轴标签的基类,它提供了丰富的功能来表示和管理数据的索引。
以下是 Index 对象的一些关键特性和用途:
- 唯一标识:
Index
对象为数据提供唯一的标识符,这对于数据的选择和操作至关重要。 - 标签基础:与基于位置的索引(如 Python 列表的索引)不同,
Index
允许基于标签的索引,这使得数据操作更加直观和灵活。 - 数据类型支持:
Index
可以容纳多种类型的数据,包括整数、浮点数、字符串、日期时间等。
Pandas 提供了几种不同的 Index 类型,用于不同的场景:
- RangeIndex:一个内存节省型的整数值索引对象,类似于 Python 的
range
对象。 - Index:最基本的索引类型,可以包含任何类型的数据。
- MultiIndex:一个多级索引,允许你拥有多个索引级别,类似于数据框架中的多个列。
- DatetimeIndex:一个针对日期时间数据优化的索引,提供了日期时间相关的功能。
- PeriodIndex:基于时间段的索引,例如年、季度等。
- TimedeltaIndex:基于时间差(Δt)的索引。
Index 构造函数
类/方法 | 描述 |
---|---|
pd.Index(data, dtype, name) |
创建一个 Index 对象,支持自定义数据、数据类型和名称。 |
Index 属性
属性 | 描述 |
---|---|
Index.values |
返回 Index 的数据部分(numpy 数组)。 |
Index.dtype |
返回 Index 的数据类型。 |
Index.name |
返回或设置 Index 的名称。 |
Index.shape |
返回 Index 的形状(元组形式)。 |
Index.size |
返回 Index 中元素的数量。 |
Index.nlevels |
返回 Index 的层级数(对于 MultiIndex)。 |
Index.is_unique |
检查 Index 中的值是否唯一。 |
Index.is_monotonic |
检查 Index 是否单调递增。 |
Index.is_monotonic_decreasing |
检查 Index 是否单调递减。 |
Index.has_duplicates |
检查 Index 是否有重复值。 |
Index.empty |
检查 Index 是否为空。 |
Index 方法
数据操作
方法 | 描述 |
---|---|
Index.append(other) |
将另一个 Index 追加到当前 Index。 |
Index.drop(labels) |
删除指定的标签。 |
Index.insert(loc, item) |
在指定位置插入元素。 |
Index.unique() |
返回 Index 中的唯一值。 |
Index.drop_duplicates() |
删除重复值。 |
Index.sort_values() |
按值排序。 |
Index.sort_values(ascending=False) |
按值降序排序。 |
Index.tolist() |
将 Index 转换为列表。 |
Index.to_numpy() |
将 Index 转换为 numpy 数组。 |
Index.to_frame() |
将 Index 转换为 DataFrame。 |
Index.astype(dtype) |
将 Index 转换为指定数据类型。 |
Index.map(func) |
对 Index 中的每个元素应用函数。 |
Index.where(cond, other) |
根据条件替换值。 |
Index.mask(cond, other) |
根据条件替换值(与 where 相反)。 |
索引操作
方法 | 描述 |
---|---|
Index.get_loc(key) |
返回指定标签的位置。 |
Index.get_indexer(target) |
返回目标 Index 在当前 Index 中的位置。 |
Index.slice_locs(start, end) |
返回指定范围的切片位置。 |
Index.intersection(other) |
返回两个 Index 的交集。 |
Index.union(other) |
返回两个 Index 的并集。 |
Index.difference(other) |
返回两个 Index 的差集。 |
Index.symmetric_difference(other) |
返回两个 Index 的对称差集。 |
Index.isin(values) |
检查 Index 中的值是否在指定列表中。 |
Index.reindex(target) |
根据目标 Index 重新索引。 |
Index.reindex_like(other) |
根据另一个 Index 重新索引。 |
统计计算
方法 | 描述 |
---|---|
Index.min() |
返回 Index 中的最小值。 |
Index.max() |
返回 Index 中的最大值。 |
Index.argmin() |
返回最小值的索引位置。 |
Index.argmax() |
返回最大值的索引位置。 |
Index.value_counts() |
返回 Index 中每个值的频率。 |
MultiIndex 方法
方法 | 描述 |
---|---|
pd.MultiIndex.from_arrays() |
从数组创建 MultiIndex。 |
pd.MultiIndex.from_tuples() |
从元组创建 MultiIndex。 |
pd.MultiIndex.from_product() |
从笛卡尔积创建 MultiIndex。 |
MultiIndex.levels |
返回 MultiIndex 的层级。 |
MultiIndex.codes |
返回 MultiIndex 的编码。 |
MultiIndex.swaplevel(i, j) |
交换两个层级的位置。 |
MultiIndex.droplevel(level) |
删除指定层级。 |
MultiIndex.set_levels(levels) |
设置 MultiIndex 的层级。 |
MultiIndex.set_codes(codes) |
设置 MultiIndex 的编码。 |
实例
实例
import pandas as pd
# 创建 Index
idx = pd.Index([1, 2, 3], name='MyIndex')
# 查看属性
print(idx.values) # 输出数据部分
print(idx.name) # 输出名称
# 数据操作
idx_new = idx.append(pd.Index([4, 5]))
print(idx_new) # 输出追加后的 Index
# 索引操作
print(idx.get_loc(2)) # 输出标签 2 的位置
# MultiIndex 操作
arrays = [[1, 1, 2, 2], ['A', 'B', 'A', 'B']]
multi_idx = pd.MultiIndex.from_arrays(arrays, names=('Num', 'Letter'))
print(multi_idx)
# 创建 Index
idx = pd.Index([1, 2, 3], name='MyIndex')
# 查看属性
print(idx.values) # 输出数据部分
print(idx.name) # 输出名称
# 数据操作
idx_new = idx.append(pd.Index([4, 5]))
print(idx_new) # 输出追加后的 Index
# 索引操作
print(idx.get_loc(2)) # 输出标签 2 的位置
# MultiIndex 操作
arrays = [[1, 1, 2, 2], ['A', 'B', 'A', 'B']]
multi_idx = pd.MultiIndex.from_arrays(arrays, names=('Num', 'Letter'))
print(multi_idx)
如果需要更详细的信息,可以参考 Pandas 官方文档。
点我分享笔记