天天抽点时间,写写文采飘逸的文章bash
坚持个几年,成为称霸一方的大佬函数
坚持就会成功吧~学习
最近碰到瓶颈了, 一直找不到好的运营公众号的方式(好想有人指导唉~,对了,橡皮擦有个100多人的小qun,缺划水,话痨管理...)测试
谁有啥经验呢spa
给评论两句,帮橡皮擦指个鹿3d
嘿嘿哈嘿~code
这一篇,cdn
我要开始给你嘚啵一下分组与排序了对象
这两个函数分类blog
你必定要学会,学会了
就深得pandas精髓了
先说排序
英文sorted
好了,说完了,其余的本身感觉吧
O(∩_∩)O哈哈~
开个玩笑
做为程序布道师,我是必定要讲明白的
看,那是sorted
在dataframe
里面,有两个排序的函数
一个叫作sort_values
,还有一个也叫作sort_values
额,不对,叫作 sort_index
见到名字
对于已经看过我6篇博客的你来讲
瞬间你就知道它们是干啥的了
那咱们就先表一表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))
复制代码
噔噔噔~
看结果
固然,倒序也是比较容易的
就加一个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或者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开始,剩下的都是难的了
哈哈哈哈
赶忙让朋友也关注啊...