天天抽點時間,寫寫文采飄逸的文章函數
堅持個幾年,成爲稱霸一方的大佬學習
堅持就會成功吧~測試
最近碰到瓶頸了,
一直找不到好的運營公衆號的方式(好想有人指導唉~,對了,橡皮擦有個100多人的小qun,缺划水,話癆管理...)3d
誰有啥經驗呢code
給評論兩句,幫橡皮擦指個鹿對象
嘿嘿哈嘿~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))
噔噔噔~
看結果
看到了沒,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開始,剩下的都是難的了
哈哈哈哈
趕忙讓朋友也關注啊...