zoukankan      html  css  js  c++  java
  • pandas 的index用途

    # 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 ,时间类型索引,强大的日期和时间的方法支持

    好好学习,天天向上

  • 相关阅读:
    C/C++——二维数组与指针、指针数组、数组指针(行指针)、二级指针的用法
    C/C++——C语言数组名与指针
    C/C++——C语言跳出多重循环方法
    知识储备——国际象棋术语中英文对照
    C/C++——C语言库函数大全
    C/C++——C语言常用库函数
    C/C++——[05] 函数
    C/C++——[04] 语句
    C/C++——[03] 注释
    C/C++——[02] 运算符和表达式
  • 原文地址:https://www.cnblogs.com/spp666/p/11857821.html
Copyright © 2011-2022 走看看