精华内容
下载资源
问答
  • pandas分组排序

    2020-10-29 15:25:43
    df.sort_values([‘yxid_id’, ‘msg_times_tamp’], ascending=[False, True], inplace=True)

    df.sort_values([‘yxid_id’, ‘msg_times_tamp’], ascending=[False, True], inplace=True)

    展开全文
  • pandas分组排序功能

    千次阅读 2019-03-28 10:30:30
    在一个班级里,学生考试科目有语文、数学...import pandas as pd a=['小红','小绿','小蓝','小白','小青','小紫','小粉','小傻','小红','小绿','小蓝','小白','小青','小紫','小粉','小傻','小红','小绿','小蓝','...

    在一个班级里,学生考试科目有语文、数学、英语,分别有对应的成绩。现在,想要列出每个科目班级的前五名的情况,要求包含科目、姓名、成绩、名次。
    通过以下代码实现:

    import pandas as pd
    
    a=['小红','小绿','小蓝','小白','小青','小紫','小粉','小傻','小红','小绿','小蓝','小白','小青','小紫','小粉','小傻','小红','小绿','小蓝','小白','小青','小紫','小粉','小傻']
    b=['语文','语文','语文','语文','语文','语文','语文','语文','数学','数学','数学','数学','数学','数学','数学','数学','英语','英语','英语','英语','英语','英语','英语','英语']
    c=[97,65,23,43,67,23,55,98,56,45,67,78,98,45,87,65,67,23,55,98,56,45,67,78]
    len(a),len(b),len(c)
    
    df=pd.DataFrame({'name':a,'kemu':b,'score':c})
    
    df2=df.sort_values(['kemu','score','name'], ascending=[1, 0,1])
    
    df2['rn']=df2.groupby(['kemu']).rank(method='first',ascending =0)['score']
    
    df2[df2['rn']<=5]
    ''''
    
    展开全文
  • pandas分组排序取第二大的数据

    千次阅读 2019-11-08 11:34:29
    Python用来做数据分析很方便,网上很多关于找数据中第二大的方法,但是大多数都是关于SQL的,于是我挑战一下用Python来做这件事(主要是SQL写的不好>...import pandas as pd df = pd.DataFrame([ {"class...

    Python用来做数据分析很方便,网上很多关于找数据中第二大的方法,但是大多数都是关于SQL的,于是我挑战一下用Python来做这件事(主要是SQL写的不好>_<),上代码。

    1、数据我是自己编的,在实际工作中应该从数据库中导入数据,如何从数据库导出数据,我之后会补充。

    import pandas as pd
    df = pd.DataFrame([
            {"class": 1, "name": "aa", "english": 120},
            {"class": 1, "name": "bb", "english": 110},
            {"class": 1, "name": "cc", "english": 110},
            {"class": 1, "name": "dd", "english": 110},
            {"class": 2, "name": "ee", "english": 120},
            {"class": 2, "name": "ff", "english": 140},
            {"class": 2, "name": "gg", "english": 130},
            {"class": 2, "name": "hh", "english": 130},
            {"class": 3, "name": "tt", "english": 130},
            {"class": 4, "name": "xx", "english": 130},
            {"class": 4, "name": "yy", "english": 130},
            {"class": 5, "name": "zz", "english": None},
        ])

    2、分组取第二大的数据

    def fun(df):
        # english数据去重
        sort_set = set(df["english"].values.tolist())
        if len(sort_set)<=1:
            # 数据量小于等于1,无法取到第二大的数据
            return None
        else:
            # 取english中第二大的值
            sort_value = sorted(sort_set,reverse=True)[1]
            temp_df = df[df["english"]==sort_value]
            return temp_df
    
    df = df.groupby(by=["class"]).apply(fun).reset_index(drop=True)
    print(df)

    结果如下:

        class	name	english
    0	1	bb	110.0
    1	1	cc	110.0
    2	1	dd	110.0
    3	2	gg	130.0
    4	2	hh	130.0

    3、写完啦,就这么简单,当然这还可以改为取最大、取最小、取第三大、等等......

    有需要的小伙伴可以自行更改,或者评论留言我来帮你改,喜欢的话给个关注呗!

    更多好玩的内容,欢迎关注微信公众号“数据与编程之美”

    展开全文
  • pandas 分组排序并保留原始列

    千次阅读 2020-01-08 15:31:56
    其实这一步一般是在sql中完成的,但由于要分组排序的列较多,达30列以上,代码十分不简洁,且连接的数据库为mysql,本身没有row_number() over( paritition by··· ···)的语句,实现起来较为麻烦。而本次的原始...

    场景

    需要按照各个省份及全网进行分组,对各个指标的率值进行排序。
    其实这一步一般是在sql中完成的,但由于

    1. 要分组排序的列较多,达30列以上,代码十分不简洁,python一两行即可搞定
    2. 连接的数据库为mysql,本身没有row_number() over( paritition by··· ···)的语句,实现起来较为麻烦。
    3. 本次的原始数据每日只有5000行左右并不大

    故直接用python将数据down下来进行处理。

    实现

    按照常理,直接groupby()分组再rank()排序即可

    In[12]: result1.groupby(by='省份')[['投诉完结率', '二次投诉率']].rank(ascending=False, method = 'min')
    Out[12]: 
         投诉完结率  二次投诉率
    0      1.0    4.0
    1      1.0    5.0
    2      1.0    1.0
    3      1.0    2.0
    4      1.0    3.0
    ..     ...    ...
    162    1.0    1.0
    163    1.0    1.0
    164    1.0    1.0
    165    1.0    1.0
    166    1.0    1.0
    
    [167 rows x 2 columns]
    

    但实际上得到的结果与sum() mean() max()等聚合运算得到的结果并不相同,这些聚合运算返回的Series或DataFrame的index为“by=”的列。每一组仅返回一行数据。

    In[20]: result1.groupby(by='省份').max()[['投诉完结率', '二次投诉率']].head()
    Out[20]: 
           投诉完结率   二次投诉率
    省份               
    上海       1.0  0.0121
    云南       1.0  0.0244
    全网       1.0  0.0120
    内蒙古      1.0  0.0323
    北京       1.0  0.0084
    

    但rank()方法在原本数据的基础上每一行都返回一个排名,最后得到的数据index仍为原本的index,其他列是不显示的。

    为了在结果中显示其他列,有两种方法:

    1. 如果需要将上述结果join回原result1,直接按index进行join/merge/concat即可, 但不可使用result1[['rank1','rank2']]=result1.groupby(by='省份')[['投诉完结率', '二次投诉率']].rank(ascending=False, method = 'min')这种方式直接增加一列,行的顺序并不能自动对齐 ;
    2. 如仅需一列或几列+计算得到的排名,而不需要原数据中其他列,则对result1在分组之前,将需要的列set_index更为简便
    In [14]: result1.set_index(['省份','公司名称']).groupby(by='002省份')[['投诉完结率', '二次投诉率']]\
    .rank(ascending=False, method = 'min')
    Out[14]: 
                     投诉完结率  二次投诉率
    省份   公司名称              
    全网      s       1.0    4.0
            b       1.0    5.0
            yd       1.0    1.0
            y       1.0    2.0
            z       1.0    3.0
    ...                ...    ...
    香港特别行政区 b       1.0    1.0
            s       1.0    1.0
            z       1.0    1.0
    台湾      z       1.0    1.0
            yd       1.0    1.0
    
    [167 rows x 2 columns]
    
    展开全文
  • 主要介绍了Pandas分组排序的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
  • Pandas分组排序

    千次阅读 2019-01-11 15:21:17
    一、pandas分组 1、分组运算过程:split-&gt;apply-&gt;combine 拆分:进行分组的根据 应用:每个分组运行的计算规则 合并:把每个分组的计算结果合并起来 2、分组函数 DataFrame.group...
  • 一、pandas分组* 1、分组运算过程:split->apply->combine 拆分:进行分组的根据 应用:每个分组运行的计算规则 合并:把每个分组的计算结果合并起来 2、分组函数 DataFrame.groupby(by=None, axis=0, ...
  • pandas实现分组排序

    千次阅读 2019-04-10 19:10:29
    import pandas as pd df = pd.DataFrame([['A',1,'2019-03-01 00:00:30'], ['A',3,'2019-04-01 00:00:30'], ['A',2,'2019-03-01 00:00:30'], ['B',5,'2019-...
  • pandas分组排序问题

    千次阅读 2019-08-10 01:01:06
    先进行整体的sort_values,再进行grouby https://blog.csdn.net/guofei_fly/article/details/93844612
  • 其他神经网络技术 2.3 分组排序和变换 Part 2.3: Grouping, Sorting, and Shuffling 现在我们来看看影响整个Pandas数据帧的几种方法。这些技术将允许我们对数据集进行分组排序和变换。这些都是数据预处理和评估...
  • 需要对df进行分组排序 import pandas as pd df = pd.DataFrame([['a', 100, 'c'], ['a', 300, 'a'], ['a', 200, 'b'], ['c', 300, 'a'], ['c', 200, 'b'], ['c', 100, 'c'], ['b', 200, 'b'], ['b', 300, 'a']...
  • 下面小编就为大家分享一篇pandas多级分组实现排序的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • pandas多级分组如何排序

    万次阅读 2017-08-10 14:56:29
    pandas有groupby分组函数和sort_values排序函数,但是如何对dataframe分组之后排序呢?
  • pandas分组计算

    2021-05-13 21:52:13
    按照A分组计算B的均值 df_mean = df.groupby('A')['B'].mean() 注意返回结果是dataframe类型的,不能使用列接收值
  • Pandas常用分组排序筛选数据实际操作实践笔记。
  • pandas分组后应用apply函数 知识:Pandas的GroupBy遵从split、apply、combine模 这里的split指的是pandas的groupby,我们自己实现apply函数,apply返回的结果由pandas进行combine得到结果 GroupBy.apply(function) ...
  • 通过“分组依据”,我们指的是涉及以下一个或多个步骤的过程: 根据某些标准将数据拆分为组。 将功能独立应用于每个组。 将结果组合到数据结构中。 其中,分割步骤是最直接的。实际上,在许多情况下,我们可能希望...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 8,385
精华内容 3,354
关键字:

pandas分组排序