index 索引
index是pandas中DataFrame数据类型必不可少的,实际上在很多数据分析的情况下没有完全使用到index的特性。
方便查询
提升性能提升
自动的数据对齐功能
强大的数据结构支持
# 设置index
df.set_index()
# 两个比较重要的参数 inplace这个就不用看了 drop 默认为True 将一列设置为索引后会删除这一列数据
# 将索引排序
df.sort_index()
查询
如果index是唯一的,pandas会优化为哈希表,那么查询速度为o(1)
如果index不是唯一,但有序那么pandas会使用二分查,速度为o(logn)
如果是完全随机那么就要全盘扫描了,速度为o(n)
如果索引不是唯一的,那么最好提前将索引排序之后再进行查询,明显有提升
# 标准使用loc列字段 查询方法
df.loc[df["id"] == 500].head()
# 使用索引查询
df.set_index("id",inplace=True)
df.loc[500].head()
# 查询索引是否是递增的 第二快
df.index.is_monotonic_increasing
# 查询索引是否是唯一的 哈希表查 最快
df.index.is_unique
自动对齐数据
se1 = pd.Series([1,2,3],index=list("abc"))
se2 = pd.Series([1,2,3],index=list("bcd"))
# 此时两个Series会根据index自动对齐相加,类似于外连接 但是两个表独有的a和d会显示为空值
se1+se2
其他
Cate其他goricalIndex
基于分类数据的index,提升性能
MultiIndex
多维,用于groupby分组多维聚合后的结果
DatetimeIndex
基于时间类型的索引