大周末的不休息,继续学习pandas吧,pandas你该这么学,No.7
其实,写文章真的挺难的
每天抽点时间,写写文采飘逸的文章
坚持个几年,成为称霸一方的大佬
坚持就会成功吧~
最近碰到瓶颈了,
一直找不到好的运营公众号的方式(好想有人指导唉~,对了,橡皮擦有个100多人的小qun,缺划水,话痨管理...)
谁有啥经验呢
给评论两句,帮橡皮擦指个鹿
嘿嘿哈嘿~
上一篇,我们捣鼓了一下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开始,剩下的都是难的了
哈哈哈哈
你已经关注我公主号了,对不对
赶紧让朋友也关注啊...
大周末的不休息,继续学习pandas吧,pandas你该这么学,No.7的更多相关文章
- 各大公司广泛使用的在线学习算法FTRL详解
各大公司广泛使用的在线学习算法FTRL详解 现在做在线学习和CTR常常会用到逻辑回归( Logistic Regression),而传统的批量(batch)算法无法有效地处理超大规模的数据集和在线数据 ...
- 9大理由告诉你为什么应该学习HTML跟CSS
你是不是听过太多人告诉你:「人人都应该要会 coding!」都快要不耐烦了对吧? 究竟为什么身为一个行销专业者.作家.金融巨擘--,整个世界还要你学会 coding? 事实上仅仅要对 HTML.CSS ...
- 学习笔记之pandas
Python Data Analysis Library — pandas: Python Data Analysis Library https://pandas.pydata.org/ panda ...
- 常用统计分析python包开源学习代码 numpy pandas matplotlib
常用统计分析python包开源学习代码 numpy pandas matplotlib 待办 https://github.com/zmzhouXJTU/Python-Data-Analysis
- Python学习总结 05 pandas
pandas官方网址 : http://pandas.pydata.org/ . pandas的安装比较复杂,如果想开箱即用,可以考虑下载WinPython.WinPython的官方地址是: htt ...
- [Pandas]利用Pandas处理excel数据
Python 处理excel的第三包有很多,比如XlsxWriter.xlrd&xlwt.OpenPyXL.Microsoft Excel API等,最后综合考虑选用了Pandas. Pand ...
- pandas | 使用pandas进行数据处理——Series篇
本文始发于个人公众号:TechFlow,原创不易,求个关注 上周我们关于Python中科学计算库Numpy的介绍就结束了,今天我们开始介绍一个新的常用的计算工具库,它就是大名鼎鼎的Pandas. Pa ...
- 从零开始一起学习SLAM | C++新特性要不要学?
LAM,C++编程是必备技能.不过,大家在学校里学习的书本一般比较老,主要还是C++98那些老一套. 本文所谓的C++新特性是指C++11及其以后的C++14.C++17增加的新关键字和新语法特性.其 ...
- pandas数组(pandas Series)-(4)NaN的处理
上一篇pandas数组(pandas Series)-(3)向量化运算里说到,将两个 pandas Series 进行向量化运算的时候,如果某个 key 索引只在其中一个 Series 里出现,计算的 ...
随机推荐
- C# 使用多线程,在关闭窗体时 怎么关闭窗体的所有线程,使程序退出。
this.Close(); 只是关闭当前窗口,若不是主窗体的话,是无法退出程序的,另外若有托管线程(非主线程),也无法干净地退出: Application.Exit(); 强制所有消息中止,退出 ...
- React中生命周期
1.过时的生命周期(v16.3之前) 1.当前组件初次渲染: 绿色表示执行顺序. constructor(): 如果不需要初始化,可以直接省略,会自动补全该函数. 可以在这个方法中初始化this.st ...
- VueCropper 图片裁剪
基于vue的图片裁剪vue-cropper 简小咖 关注 0.2 2018.12.12 15:42 字数 164 阅读 3900评论 1喜欢 3 vue-cropper官网http://xyxiao ...
- 51nod 1503
动态规划 $f[a][b][c][d]$ 表示从 $(1, 1)$ 走到 $(a, b)$ 和从 $(n, m)$ 走到 $(c, d)$ 的方案数 $f[a][b][c][d]$ $= f[a][b ...
- Java集合总结(一):列表和队列
java中的具体容器类都不是从头构建的,他们都继承了一些抽象容器类.这些抽象容器类,提供了容器接口的部分实现,方便具体容器类在抽象类的基础上做具体实现.容器类和接口的关系架构图如下: 虚线框表示接口, ...
- seq2seq聊天模型(三)—— attention 模型
注意力seq2seq模型 大部分的seq2seq模型,对所有的输入,一视同仁,同等处理. 但实际上,输出是由输入的各个重点部分产生的. 比如: (举例使用,实际比重不是这样) 对于输出"晚上 ...
- Ubuntu14.04 系统复制迁移到新的机器上
1.打包系统文件 制作启动盘,然后进入bios, #进入bios的boot标签选择sandisk启动 如果没有找到u盘进入save & exit标签页选择boot override中的sand ...
- Echarts-树状图(源码 含flare.json)
刚刚发现官网实例里边的数据其实在:https://www.echartsjs.com/data/asset/data/flare.json 源码: html: <!DOCTYPE html> ...
- String 类型的数据强转成int的方法
有2个方法:1). int i = Integer.parseInt(str); 2). int i = Integer.valueOf(str).intValue();
- 调皮捣蛋的Linux下有趣终端的合集
*本文作者:国光,转载自 FreeBuf.COM,原文地址:https://www.freebuf.com/news/144050.html 前言 刚开始接触Linux的我们,肯定认为Linux系统就 ...