# pandas的索引index的用途 # 把数据存储于普通的column列也能用于数据查询,那使用index有什么好处? # 1、更方便的数据查询 # 2、使用index可以获得性能提升 # 3、 自动的数据对其功能 # 4、更多强大的数据结构支持 import pandas as pd # 1 使用index查询数据 # drop==False,让索引列保持在columns df.set_index("userId",inplace=True,drop = False) df.head() df.index # 使用index的查询方法 df.loc[500].head(5) # 使用column的condition查询方法 df.loc[df["userId"]==500].head() # 2 使用index会提升查询性能 # 如果index是惟一的,pandas会使用哈希表优化,查询性能为O(1) # 如果index不是惟一的,但是有序,pandas会使用二分查找算法,查询性能为O(logN # 如果index是完全随机的,那么每次查询都要扫描去哪表,查询性能为O(N) # 实验一:完全随机的顺序查询 # 将数据随机打散 from sklearn.utils import shuffle df_shuffle = shuffle(df)#打散数据 # 索引是否是递增的 df_shuffle.index.is_mononic_increasing # 判断索引是否是唯一的 df_shuffle.index.is_unique # 计时,查询id ==500数据的性能 %timeit df_shuffle.loc[500] # 实验二:将index排序后的查询 df_sorted = df_shuffle.sort_index() df_sorted.head() #索引是否是递增的 df_sorted.index.is_monotonic_increasing df_sorted.index.is_unique %timeit df_sorted.loc[500] # 3 使用index能自动对齐数据(包括series & dataframe) s1 = pd.Series([1,2,30],index= list("abc")) s2 = pd.Series([2,3,4],index=list("bcd")) s1 + s2 # 4 使用index更多更强大的数据结构支持 # 很多强大的数据结构 # # Categoricallndex ,基于分类数的index,提升性能 # Multilndex , 多维索引,用于group by多维聚合结果等 # Datetimeindex ,时间类型索引,强大的日期和时间的方法支持
好好学习,天天向上