zoukankan      html  css  js  c++  java
  • pandas-06 Series和Dataframe的排序操作

    pandas-06 Series和Dataframe的排序操作

    对pandas中的Series和Dataframe进行排序,主要使用sort_values()和sort_index()。
    DataFrame.sort_values(by, axis=0, ascending=True, inplace=False, kind=‘quicksort’, na_position=‘last’)
    by:列名,按照某列排序
    axis:按照index排序还是按照column排序
    ascending:是否升序排列
    kind:选择 排序算法{‘quicksort’, ‘mergesort’, ‘heapsort’}, 默认是‘quicksort’,也就是快排
    na_position:nan排列的位置,是前还是后{‘first’, ‘last’}, 默认是‘last’
    sort_index() 的参数和上面差不多。

    实例:

    import numpy as np
    import pandas as pd
    from pandas import Series, DataFrame
    
    np.random.seed(666)
    
    s1 = Series(np.random.randn(10))
    print(s1)
    '''
    0    0.824188
    1    0.479966
    2    1.173468
    3    0.909048
    4   -0.571721
    5   -0.109497
    6    0.019028
    7   -0.943761
    8    0.640573
    9   -0.786443
    dtype: float64
    '''
    
    #  为series排序的两种方式,1 用 value 来排序, 2 用 index 来排序
    s2 = s1.sort_values() # 按照 value 来排序
    print(s2)
    '''
    7   -0.943761
    9   -0.786443
    4   -0.571721
    5   -0.109497
    6    0.019028
    1    0.479966
    8    0.640573
    0    0.824188
    3    0.909048
    2    1.173468
    dtype: float64
    '''
    
    # axis 设置轴 的方向, ascending 设置升降序
    s2 = s1.sort_values(axis = 0, ascending=False)
    print(s2)
    '''
    2    1.173468
    3    0.909048
    0    0.824188
    8    0.640573
    1    0.479966
    6    0.019028
    5   -0.109497
    4   -0.571721
    9   -0.786443
    7   -0.943761
    dtype: float64
    '''
    
    # 通过 对 index 进行排序
    s2.sort_index()
    print(s2)
    '''
    2    1.173468
    3    0.909048
    0    0.824188
    8    0.640573
    1    0.479966
    6    0.019028
    5   -0.109497
    4   -0.571721
    9   -0.786443
    7   -0.943761
    dtype: float64
    '''
    
    # 对于 dataframe 的排序
    
    df1 = DataFrame(np.random.randn(40).reshape(8, 5), columns=['a', 'b', 'c', 'd', 'e'])
    print(df1)
    '''
              a         b         c         d         e
    0  0.608870 -0.931012  0.978222 -0.736918 -0.298733
    1 -0.460587 -1.088793 -0.575771 -1.682901  0.229185
    2 -1.756625  0.844633  0.277220  0.852902  0.194600
    3  1.310638  1.543844 -0.529048 -0.656472 -0.201506
    4 -0.700616  0.687138 -0.026076 -0.829758  0.296554
    5 -0.312680 -0.611301 -0.821752  0.897123  0.136079
    6 -0.258655  1.110766 -0.188424 -0.041489 -0.984792
    7 -1.352282  0.194324  0.267239 -0.426474  1.447735
    '''
    
    # 按照 columns 进行排序, 这种做法 和 对 series的 操作 差不多
    print(df1['a'].sort_values())
    '''
    2   -1.756625
    7   -1.352282
    4   -0.700616
    1   -0.460587
    5   -0.312680
    6   -0.258655
    0    0.608870
    3    1.310638
    Name: a, dtype: float64
    '''
    
    # 将 dataframe 按照 其中 某个列进行排序, 参数ascending来控制 升降序
    print(df1.sort_values('a'))
    '''
              a         b         c         d         e
    2 -1.756625  0.844633  0.277220  0.852902  0.194600
    7 -1.352282  0.194324  0.267239 -0.426474  1.447735
    4 -0.700616  0.687138 -0.026076 -0.829758  0.296554
    1 -0.460587 -1.088793 -0.575771 -1.682901  0.229185
    5 -0.312680 -0.611301 -0.821752  0.897123  0.136079
    6 -0.258655  1.110766 -0.188424 -0.041489 -0.984792
    0  0.608870 -0.931012  0.978222 -0.736918 -0.298733
    3  1.310638  1.543844 -0.529048 -0.656472 -0.201506
    '''
    
    df2 = df1.sort_values('a')
    print(df2)
    '''
              a         b         c         d         e
    2 -1.756625  0.844633  0.277220  0.852902  0.194600
    7 -1.352282  0.194324  0.267239 -0.426474  1.447735
    4 -0.700616  0.687138 -0.026076 -0.829758  0.296554
    1 -0.460587 -1.088793 -0.575771 -1.682901  0.229185
    5 -0.312680 -0.611301 -0.821752  0.897123  0.136079
    6 -0.258655  1.110766 -0.188424 -0.041489 -0.984792
    0  0.608870 -0.931012  0.978222 -0.736918 -0.298733
    3  1.310638  1.543844 -0.529048 -0.656472 -0.201506
    '''
    
    # 对 df2 的 索引 进行排序, 又回到之前的原本的 df2
    print(df2.sort_index())
    '''
              a         b         c         d         e
    0  0.608870 -0.931012  0.978222 -0.736918 -0.298733
    1 -0.460587 -1.088793 -0.575771 -1.682901  0.229185
    2 -1.756625  0.844633  0.277220  0.852902  0.194600
    3  1.310638  1.543844 -0.529048 -0.656472 -0.201506
    4 -0.700616  0.687138 -0.026076 -0.829758  0.296554
    5 -0.312680 -0.611301 -0.821752  0.897123  0.136079
    6 -0.258655  1.110766 -0.188424 -0.041489 -0.984792
    7 -1.352282  0.194324  0.267239 -0.426474  1.447735
    '''
    
  • 相关阅读:
    门头沟PHP,java编程兴趣小组欢迎大家的加入。
    mysql数据库怎么存入emoji表情,更改utf8mb4后为什么出现全是问号
    Laravel发送邮件配置-问题解决
    php版本低更换php版本-问题以解决
    极光客户互动云java post请求
    【问题解决】增加https后 phpcms 分页错误
    阿里云阿里免费ssl wap网站在手机微信、手机浏览器无法访问
    Kali Linux on Android # 实测:小米2s离线安装Kali Linux
    3-1 LVS-NAT集群
    使用LVM方式安装Ubuntu 16.04
  • 原文地址:https://www.cnblogs.com/wenqiangit/p/11252731.html
Copyright © 2011-2022 走看看