大周末的不休息,继续学习pandas吧,pandas你该这么学,No.7

其实,写文章真的挺难的

天天抽点时间,写写文采飘逸的文章函数

坚持个几年,成为称霸一方的大佬学习

坚持就会成功吧~测试

在这里插入图片描述

最近碰到瓶颈了,
一直找不到好的运营公众号的方式(好想有人指导唉~,对了,橡皮擦有个100多人的小qun,缺划水,话痨管理...)3d

谁有啥经验呢code

给评论两句,帮橡皮擦指个鹿对象

嘿嘿哈嘿~blog

在这里插入图片描述

上一篇,咱们捣鼓了一下dataframe计算类的函数

这一篇,排序

我要开始给你嘚啵一下分组与排序了索引

这两个函数分类事件

你必定要学会,学会了

就深得pandas精髓了

先说排序

英文sorted

好了,说完了,其余的本身感觉吧

O(∩_∩)O哈哈~
在这里插入图片描述

开个玩笑

做为程序布道师,我是必定要讲明白的

看,那是sorted

dataframe里面,有两个排序的函数

一个叫作sort_values,还有一个也叫作sort_values 额,不对,叫作 sort_index

见到名字

对于已经看过我6篇博客的你来讲

瞬间你就知道它们是干啥的了

  • sort_index 按照索引排序
  • sort_values 按照值排序

那咱们就先表一表sort_index

先准备一个基本的数据

代码写的好很差,全看你找的数据准不许

df = pd.DataFrame([[4,8,3],[5,6,1],[1,9,2]],columns=['boys','girls','aboys'],index=['class2','class1','class3'])

打印出来,一看就能看到,这个栗子举得真棒

boys  girls  aboys
class2     4      8      3
class1     5      6      1
class3     1      9      2

注意看,列索引的名字分别是boys,girls,aboys
行索引的名字分别是 class2,class1,class3

顺序都是乱的哦~

下面,使用排序

df = pd.DataFrame([[4,8,3],[5,6,1],[1,9,2]],columns=['boys','girls','aboys'],index=['class2','class1','class3'])


print(df)
print(df.sort_index())
print(df.sort_index(axis=1))
print(df.sort_index(axis=0))

噔噔噔~

看结果

在这里插入图片描述
看到了没,axis这个参数,又起到做用了哦~

在这里插入图片描述

固然,倒序也是比较容易的

就加一个ascending =False 就OK啦

这么简单,就不演示了

sort_index嘚啵完毕,就该sort_values出面了

这个函数,比上面多一个参数by

演示走一波

df = pd.DataFrame([[4,8,3],[5,6,1],[1,9,2]],columns=['boys','girls','aboys'],index=['class2','class1','class3'])


print(df)
print(df.sort_values(by='boys'))
print(df.sort_values(by='girls'))

print(df.sort_values(by='class1',axis=1))

继续上个小图,说明一下

在这里插入图片描述
固然,还能够指定多列,不过不推荐,你能够用下面的代码
微微一测,技术到手

print(df.sort_values(by=['boys','girls']))

排序嘚啵完毕,下面开始分组

分组,组叫作group

在pandas中,这个就属于比较高级的函数的

在这里插入图片描述

GroupBy

官网注释里面给了一句

在这里插入图片描述
注意看,他把by当成了可选参数,

呵呵,官网写错了

在这里插入图片描述

你必需要传递一个by或者level进去

也就是按照谁来分组

可是,问题又来了

你要分组,必需要有意义

什么意思?

好比,咱们一直测试的数据

在这里插入图片描述
这个数据,请问,你须要分组

你须要怎么分组?

这个压根不须要分组的好吧

在这里插入图片描述

因此分组前,你必需要明确的看到

恩,这个数据,我须要分组,才能不拉不拉的作一些事情

因而乎,我开始分组

顺手就来

看数据

import pandas as pd

mydict = {
    'class_name':['class1','class1','class2','class2'],
    'student':[20,30,10,20]
}
df = pd.DataFrame(mydict)
print(df)

唉,这个数据就比较好学习分组了
在这里插入图片描述

在某次,某次什么事件中,统计到的每一个班的学生人数以下

我接下来,要知道class1班有多少,class2班有多少人

那须要按照班级名字分组啊
也就是
class_name

你看,分组概念出来了吧

print("*"*100)
print(df.groupby(by='class_name'))

一瞅,结果

在这里插入图片描述

嘿嘿,果真看不懂

****************************************************************************************************
<pandas.core.groupby.groupby.DataFrameGroupBy object at 0x000001CB1D07CE80>

其实没啥了,是一个DataFrameGroupBy 对象

分组以后,你须要在使用一个聚合或者计算类的函数

就OK的拉

好比,分组求和

print(df.groupby(by='class_name').sum())
------------------------------------------
            student
class_name         
class1           50
class2           30

好比,分组求平均值

print(df.groupby(by='class_name').mean())

好比,分组求那个啥?

print(df.groupby(by='class_name').count())

还有那个啥

df.groupby(by='class_name').size()

好了,来了一个小重点 small case

这两个乍一看,咦,结果同样唉

注意,细节,细节才能区分大佬与大菜鸟

print("*"*100)
print(type(df.groupby(by='class_name').size()))
print("*"*100)
print(type(df.groupby(by='class_name').count()))

这两返回的类型都不一样

****************************************************************************************************
<class 'pandas.core.series.Series'>
****************************************************************************************************
<class 'pandas.core.frame.DataFrame'>

一个是Series,是个是DataFrame

在往深处研究

import pandas as pd

mydict = {
    'class_name':['class1','class1','class2','class2','class3','class4','class4'],
    'student':[20,30,10,20,5,None,12]
}
df = pd.DataFrame(mydict)
print(df)

print("*"*100)
print(df.groupby(by='class_name').size())
print("*"*100)
print(df.groupby(by='class_name').count())

对比结果吧

在这里插入图片描述

拿出笔来,画重点

count不统计none值

漂亮,深得精髓

在这里插入图片描述

OK了,这篇博客到此结果喽

知道你没学会,学会你就是最聪明的

明天咱们继续研究groupby的其余用法

到如今为止,简单的部分已经完事了

从NOW开始,剩下的都是难的了

哈哈哈哈

你已经关注我公主号了,对不对

赶忙让朋友也关注啊...

在这里插入图片描述

在这里插入图片描述

相关文章
相关标签/搜索