其实,写文章真的挺难的

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

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

坚持就会成功吧~

最近碰到瓶颈了,

一直找不到好的运营公众号的方式(好想有人指导唉~,对了,橡皮擦有个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的更多相关文章

  1. 各大公司广泛使用的在线学习算法FTRL详解

    各大公司广泛使用的在线学习算法FTRL详解 现在做在线学习和CTR常常会用到逻辑回归( Logistic Regression),而传统的批量(batch)算法无法有效地处理超大规模的数据集和在线数据 ...

  2. 9大理由告诉你为什么应该学习HTML跟CSS

    你是不是听过太多人告诉你:「人人都应该要会 coding!」都快要不耐烦了对吧? 究竟为什么身为一个行销专业者.作家.金融巨擘--,整个世界还要你学会 coding? 事实上仅仅要对 HTML.CSS ...

  3. 学习笔记之pandas

    Python Data Analysis Library — pandas: Python Data Analysis Library https://pandas.pydata.org/ panda ...

  4. 常用统计分析python包开源学习代码 numpy pandas matplotlib

    常用统计分析python包开源学习代码 numpy pandas matplotlib 待办 https://github.com/zmzhouXJTU/Python-Data-Analysis

  5. Python学习总结 05 pandas

     pandas官方网址 : http://pandas.pydata.org/ . pandas的安装比较复杂,如果想开箱即用,可以考虑下载WinPython.WinPython的官方地址是: htt ...

  6. [Pandas]利用Pandas处理excel数据

    Python 处理excel的第三包有很多,比如XlsxWriter.xlrd&xlwt.OpenPyXL.Microsoft Excel API等,最后综合考虑选用了Pandas. Pand ...

  7. pandas | 使用pandas进行数据处理——Series篇

    本文始发于个人公众号:TechFlow,原创不易,求个关注 上周我们关于Python中科学计算库Numpy的介绍就结束了,今天我们开始介绍一个新的常用的计算工具库,它就是大名鼎鼎的Pandas. Pa ...

  8. 从零开始一起学习SLAM | C++新特性要不要学?

    LAM,C++编程是必备技能.不过,大家在学校里学习的书本一般比较老,主要还是C++98那些老一套. 本文所谓的C++新特性是指C++11及其以后的C++14.C++17增加的新关键字和新语法特性.其 ...

  9. pandas数组(pandas Series)-(4)NaN的处理

    上一篇pandas数组(pandas Series)-(3)向量化运算里说到,将两个 pandas Series 进行向量化运算的时候,如果某个 key 索引只在其中一个 Series 里出现,计算的 ...

随机推荐

  1. python执行ad_hoc

    import shutil from collections import namedtuple from ansible.parsing.dataloader import DataLoader f ...

  2. python--openCV--鼠标事件

    import cv2 import numpy as np cv2.namedWindow("new") def drawxxx(event,x,y,flags,param): # ...

  3. 【题解】在你窗外闪耀的星星-C++

    题目题目描述飞逝的的时光不会模糊我对你的记忆.难以相信从我第一次见到你以来已经过去了3年.我仍然还生动地记得,3年前,在美丽的集美中学,从我看到你微笑着走出教室,你将头向后仰,柔和的晚霞照耀着你玫瑰色 ...

  4. 避免Double数据显示为科学记数

    显示现象     数据类型 实体类中为 private Double tradeAmount; Oracle数据库中为  NUMBER(19,4) 解决方式 第一种解决方式 - 无效 将Double转 ...

  5. webservice应用+建议不用webservice

    webservice应用 1.分布式应用的集成(应用程序之间的集成) 2.软件重用 将一个软件的功能以webservice方式暴露出来,达到软件重用.例如上边分析天气预报,将天气查询功能以webser ...

  6. 运算符重载之new与delete

    关于new/delete,援引C++ Primer中的一段话: 某些应用程序对内存分配有特殊的要求,因此我们无法直接将标准的内存管理机制直接应用于这些程序.他们常常需要自定义内存分配的细节,比如使用关 ...

  7. 正则regex

    Regual expression 普通正常字符 字符匹配 . 表示任意字符 匹配次数 位置锚定 分组及引用

  8. LOJ2537. 「PKUWC2018」Minimax [DP,线段树合并]

    传送门 思路 首先有一个\(O(n^2)\)的简单DP:设\(dp_{x,w}\)为\(x\)的权值为\(w\)的概率. 假设\(w\)来自\(v1\)的子树,那么有 \[ dp_{x,w}=dp_{ ...

  9. shell uniq 统计,计数

    uniq选项与参数-i:忽略大小写-c:进行计数[zhang@localhost ~]$ cat 2.txt helloHelloWOrldabcabcABChello1 对2.txt进行sort后, ...

  10. vue pdf下载

    主要技术栈是Vue,两个库: html2canvas npm地址 jspdf 具体实现代码如下: <template> <div class="priview_resume ...