pandas python 排名_python pandas 组内排名 - CSDN
精华内容
参与话题
  • Pandas —— rank( )函数进行排名

    万次阅读 2019-01-30 10:55:30
    1、默认情况下,rank是通过“为各组分配一个平均排名”的方式破坏平级关系的 In [120]:obj = pd.Series([7,-5,7,4,2,0,4]) In [121]:obj.rank() Out [121]: 0 6.5 1 1.0 2 6.5 3 4.5 4 3.0 5 2.0 6 ...

    rank( )

    rank函数返回从小到大排序的下标

    1、默认情况下,rank是通过“为各组分配一个平均排名”的方式破坏平级关系的

    In [120]:obj = pd.Series([7,-5,7,4,2,0,4])
    In [121]:obj.rank()
    Out [121]:
    0    6.5
    1    1.0
    2    6.5
    3    4.5
    4    3.0
    5    2.0
    6    4.5
    dtype: float64
    

    2、根据值在原数据中出现的顺序排名

    In [122]:obj.rank(method='first')
    Out [122]:
    0    6.0
    1    1.0
    2    7.0
    3    4.0
    4    3.0
    5    2.0
    6    5.0
    dtype: float64
    

    3、按降序进行排名

    In [123]:obj.rank(ascending=False, method='max')
    Out [123]:
    0    2.0
    1    7.0
    2    2.0
    3    4.0
    4    5.0
    5    6.0
    6    4.0
    dtype: float64
    

    4、若对DataFrame进行排序,则可根据axis指定要进行排序的轴

    In [136]: frame=pd.DataFrame({'b':[5,7,-3,2],'a':[0,1,0,1],'c':[-2,5,8,-3]})
    
    In [137]: frame
    Out[137]:
       a  b  c
    0  0  5 -2
    1  1  7  5
    2  0 -3  8
    3  1  2 -3
    
    In [138]: frame.rank(axis=0)
    Out[138]:
         a    b    c
    0  1.5  3.0  2.0
    1  3.5  4.0  3.0
    2  1.5  1.0  4.0
    3  3.5  2.0  1.0
    
    In [139]: frame.rank(axis=1)
    Out[139]:
         a    b    c
    0  2.0  3.0  1.0
    1  1.0  3.0  2.0
    2  2.0  1.0  3.0
    3  2.0  3.0  1.0
    

    method方法的选项

    Tables Are
    average 默认:在相等分组中,为各个值分配平均排名
    min 使用整个分组的最小排名
    max 使用整个分组的最大排名
    first 按值在原始数据中的出现顺序分配排名

    转载地址:

    《利用Python进行数据分析》

    展开全文
  • 使用pandas实现excel的vlookup功能

    万次阅读 2019-07-07 19:22:11
    import pandas as pd df1 = pd.DataFrame(pd.read_excel('table1.xls',sheet_name = 'Sheet1')) df2 = pd.DataFrame(pd.read_excel('table2.xls',sheet_name = 'Sheet1')) >>> df1...

    1.读取数据

    import openpyxl
    import pandas as pd
    df1 = pd.DataFrame(pd.read_excel('table1.xls',sheet_name = 'Sheet1'))
    df2 = pd.DataFrame(pd.read_excel('table2.xls',sheet_name = 'Sheet1'))
    
    >>> df1
       学号  姓名  班级
    0   1  张三  1班
    1   2  李四  1班
    2   3  王五  2班
    3   4  赵六  3班
    4   5  钱七  3班
    >>> df2
       学号  姓名   分数  排名
    0   1  张三  100   1
    1   2  李四   99   2
    2   3  王五   98   3
    3   4  赵六   96   4
    
    

    2.实现vlookup功能

    #只在table1添加分数列,不添加排名列
    result = pd.merge(df1,df2.loc[:,['学号','分数']],how='left',on = '学号')
    >>> result
       学号  姓名  班级     分数
    0   1  张三  1班  100.0
    1   2  李四  1班   99.0
    2   3  王五  2班   98.0
    3   4  赵六  3班   96.0
    4   5  钱七  3班    NaN
    

    3.保存结果

    writer = pd.ExcelWriter('result.xlsx')
    result.to_excel(writer,index=False)
    writer.save()
    
    
    展开全文
  • 利用PythonPandas进行数据分析

    千次阅读 2015-10-14 16:47:55
    Python中用Pandas进行数据分析,最常用的就是Dataframe数据结构。文章介绍Pandas如何读取mysql数据到Dataframe,及如何将数据写回Mysql。1. Pandas读取Mysql数据要读取Mysql中的数据,首先要安装Mysqldb包。假设我...

    Python中用Pandas进行数据分析,最常用的就是Dataframe数据结构。文章介绍Pandas如何读取mysql数据到Dataframe,及如何将数据写回Mysql。

    1. Pandas读取Mysql数据

    要读取Mysql中的数据,首先要安装Mysqldb包。假设我数据库安装在本地,用户名位myusername,密码为mypassword,要读取mydb数据库中的数据,那么对应的代码如下:

    import pandas as pd
    import MySQLdb
    mysql_cn= MySQLdb.connect(host='localhost', port=3306,user='myusername', passwd='mypassword', db='mydb')
    df = pd.read_sql('select * from test;', con=mysql_cn)    
    mysql_cn.close()

    上面的代码读取了test表中所有的数据到df中,而df的数据结构为Dataframe。

    2.Pandas将Dataframe数据写入Mysql

    import pandas as pd
    import MySQLdb
    mysql_cn= MySQLdb.connect(host='localhost', port=3306,user='myusername', passwd='mypassword', db='mydb')
    sql = "select * from test limit 3"
    df = pd.read_sql(sql,conn,index_col="id")
    #数据处理
    pd.io.sql.to_sql(df,"test",mysql_cn, flavor='mysql', if_exists='append')

    3.排序和排名

    在 DataFrame 上,.sort_index(axis=0, by=None, ascending=True) 方法多了一个轴向的选择参数与一个 by 参数,by 参数的作用是针对某一(些)列进行排序(不能对行使用 by 参数):

    df.sort_index(by='Ohio')
       Ohio  Texas  California
    a     0      1           2
    c     3      4           5
    d     6      7           8
    
    [3 rows x 3 columns]
    >>> df.sort_index(by=['California','Texas'])
       Ohio  Texas  California
    a     0      1           2
    c     3      4           5
    d     6      7           8
    
    [3 rows x 3 columns]
    >>> df.sort_index(axis=1)
       California  Ohio  Texas
    a           2     0      1
    c           5     3      4
    d           8     6      7
    
    [3 rows x 3 columns]

    DataFrame 的 .rank(axis=0, method=’average’, ascending=True) 方法多了个 axis 参数,可选择按行或列分别进行排名,暂时好像没有针对全部元素的排名方法。

    展开全文
  • 摘要:本文主要是讲解一下,如何进行排序。分为两种情况,不分组进行排序和组内进行排序。什么意思呢?具体来说,我举个栗子。 ****注意**** 如果只是单纯想对某一列进行排序,而不进行打序号的话直接使用.sort_...

    摘要:本文主要是讲解一下,如何进行排序。分为两种情况,不分组进行排序和组内进行排序。什么意思呢?具体来说,我举个栗子。

    ****注意****

    如果只是单纯想对某一列进行排序,而不进行打序号的话直接使用.sort_values就可以了。下文是关于如何把序号也打上的

    ————————————————————————————

    我们有一个数据集如下:


    我们下面想进行两种排序。先说第一种比较简单的也是很常用的,简单的对某一列进行排序然后添加一列序号。

    例如,我们队comment_num这一列进行从大到小的排序,然后给出序号。如下图:


    可以看到,sort_num这一列就是我们队comment_num的排序。如何实现呢?很简单,代码如下(数据集为data):

    data['sort_num']=data['comment_num'].rank(ascending=0,method='dense')
    这里,我们用到了两个参数,第一个很好理解 ascending,就是选择是升序还是降序排列。

    另外一个参数method,这个参数很重要。我下面详细讲一下。

    有时候,我们排序的时候会遇到相同大小,这个时候怎么处理呢?method其实就是让我们选择如何处理。

    有以下几种处理方案:

    第一种情况,如果出现相等,则序号一样,之后序号照常递增。这种情况就是上图的,我们看到comment_num等于4的有2个,序号为1。comment_num等于3的时候,序号为2,这个叫做正常按1依次递增。这和时候method='dense'


    第二种情况,如果出现相等,则取最先出现的值序号为“最小”,其他相同值依次按1递增,如果把上面代码method='first',就是实现这种效果,效果如下图:

    data['sort_num']=data['comment_num'].rank(ascending=0,method='first')

    comment_num中,4最大,并且第1行中的4最先出现,故序号为1。


    第三种情况和第四种情况比较复杂。文字不好说明,下面直接放代码和效果。

    当method='min'时

    data['sort_num']=data['comment_num'].rank(ascending=0,method='min')



    当method='max'时

    data['sort_num']=data['comment_num'].rank(ascending=0,method='max')


    --------------------------------分割线--------------------------------------


    上面只是某一列的排序,下面是组内排序。什么是意思?同样看下面的例子


    假如,我想对cate为7的comment_num进行排序,同样也对,cate为8的comment_num进行排序。也就是说,对comment_num排序的时候,只考虑相同的cate,这个就是对组内进行排序。实现的效果应该如下图:



    实现代码也很简单。

    data['group_sort']=data['comment_num'].groupby(data['cate']).rank(ascending=0,method='dense')


    展开全文
  • pandas组内排序,并在每个分组内按序打上序号 pandas dataframe 对dep_id组内的salary排序。希望给下面原本只有前三列的dataframe,添加上第四列。 等价于sql的row_number() 假设我已经建好了仅有前三列的dataframe...
  • 在进行数据分析之前,会有许多的成绩表,格式也颇为混乱,为了研究方便,可以将学生成绩统一到一张表上。我们用的学生各个时期的数据表格式如下图: 且有许多的这样的表格,以便分析:   ...
  • python pandas库——pivot使用心得

    万次阅读 多人点赞 2017-12-14 17:24:46
    最近在做基于python的数据分析工作,引用第三方数据分析库——pandas。 在做数据统计二维表转换的时候走了不少弯路,发现pivot()这个方法可以解决很多问题,让我少走一些弯路,节省了大量的代码。于是我这里对于...
  • 本文参考《利用Python进行数据分析》的第五章 pandas入门 2基本功能 介绍操作Series和DataFrame中的数据的基本手段。 重新索引reindex 当调用Series的reindex将会根据新索引进行重排;当某个索引值当前不存在,就...
  • Pandas的排序、排名方法

    千次阅读 2020-01-17 12:05:04
    Pandas 是一个灵活而强大的Python数据分析 / 操作库,提供快速、灵活和富有表现力的数据结构,旨在使“关系”或“标记”数据的使用既简单又直观,功能十分强大。 本文旨在讲解一下排序、排名的函数,毕竟内容还是太...
  • pandas 中 rank 的用法

    千次阅读 2018-05-05 21:25:50
    官方文档 例子: import pandas as pd import numpy as np ...a = pd.DataFrame(np.arange(12).reshape(3,4),columns = list("...a =a.sort_index(axis=1,ascending=False) ...显示了排名,...
  • 使用pandas合并两个excel表

    千次阅读 2019-07-07 19:21:53
    import pandas as pd df1 = pd.DataFrame(pd.read_excel('table1.xls',sheet_name = 'Sheet1')) df2 = pd.DataFrame(pd.read_excel('table2.xls',sheet_name = 'Sheet1')) >>> df1...
  • Python之所以适合数据分析,是因为它有很多第三方强大的库来协助,pandas就是其中之一。pandas的文档中是这样描述的: “快速,灵活,富有表现力的数据结构,旨在使”关系“或”标记“数据的使用既简单又直观。” ...
  • Python数据分析:pandas数据操作和分析案例 项目介绍: https://www.kaggle.com/openfoodfacts/world-food-facts 项目任务: 统计各个国家食物中的食品添加剂种类个数 import zipfile import os import pandas ...
  • PythonPandas:rank函数

    千次阅读 2018-12-28 14:07:39
    CSDN上看到几篇有关rank函数的介绍,都是引用了以下同一个例子:   obj = pd.Series([7,-5,7,4,2,0,4]) ...这个例子源于《利用Python进行数据分析》一书,书中没有介绍各项数值是怎么来的,只...
  • Pandas 描述统计函数

    千次阅读 2017-04-20 10:16:27
    Pandas中三个对象的轴参数规定如下: Series: 没有轴参数 DataFrame: “index” (axis=0, default), “columns” (axis=1) Panel: “items” (axis=0), “major” (axis=1, default), “minor” (axis=2) 统计...
  • PythonPandas中Series、DataFrame实践

    万次阅读 2019-09-12 10:13:51
    PythonPandas中Series、DataFrame实践1. pandas的数据结构Series1.1 Series是一种类似于一维数组的对象,它由一组数据(各种NumPy数据类型)以及一组与之相关的数据标签(即索引)组成。 1.2 Series的字符串表现...
  • Pandas中的rank()方法

    千次阅读 2018-09-12 15:37:38
    Pandas中的rank()方法 在《利用python进行数据分析》一书中,涉及到到了rank方法,在此做一下记录。 首先,生成Series(默认使用平均排名方式,也就是说当出现相同元素的时候,优先级相加除以元素的个数): obj =...
  • pandas 筛选数据,同时满足多个条件

    万次阅读 2018-07-13 17:38:11
    top10_dire = df_dire.groupby('dire').id.agg('count').sort_values(ascending=False)[:10] ## top10_dire dire Woody Allen 46 Clint Eastwood 34 Martin Scorsese 31 Steven Spielberg 3...
  • 比如对于如下数据,提取各id的num值位于前3的数据: id num a 13 a 24 b 6 b 7 a 8 a 9 b 10 c 11 c ...import pandas as pd df = pd.read_excel(r'C:\Users\Mortal\Des...
  • 不用Pandas包和用pandas包处理数据集

    千次阅读 2016-11-14 21:33:03
    python不用Pandas包和用pandas包处理数据集
1 2 3 4 5 ... 20
收藏数 4,701
精华内容 1,880
关键字:

pandas python 排名