天天抽點時間,寫寫文采飄逸的文章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))
複製代碼
噔噔噔~
看結果
看到了沒,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開始,剩下的都是難的了
哈哈哈哈
趕忙讓朋友也關注啊...