大週末的不休息,繼續學習pandas吧,pandas你該這麼學,No.7

其實,寫文章真的挺難的

天天抽點時間,寫寫文采飄逸的文章bash

堅持個幾年,成爲稱霸一方的大佬函數

堅持就會成功吧~學習

在這裏插入圖片描述

最近碰到瓶頸了, 一直找不到好的運營公衆號的方式(好想有人指導唉~,對了,橡皮擦有個100多人的小qun,缺划水,話癆管理...)測試

誰有啥經驗呢spa

給評論兩句,幫橡皮擦指個鹿3d

嘿嘿哈嘿~code

在這裏插入圖片描述

上一篇,咱們搗鼓了一下dataframe計算類的函數

這一篇,cdn

我要開始給你嘚啵一下分組與排序了對象

這兩個函數分類blog

你必定要學會,學會了

就深得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開始,剩下的都是難的了

哈哈哈哈

你已經關注我公主號了,對不對

趕忙讓朋友也關注啊...

在這裏插入圖片描述

在這裏插入圖片描述
相關文章
相關標籤/搜索