日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

【Python】精选23个Pandas常用函数

發布時間:2025/3/12 python 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Python】精选23个Pandas常用函数 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

公眾號:尤而小屋
作者:Peter
編輯:Peter

從26個字母中精選出23個Pandas常用的函數,將它們的使用方法介紹給大家。其中o、y、z沒有相應的函數。

import?pandas?as?pd import?numpy?as?np

下面介紹每個函數的使用方法,更多詳細的內容請移步官網:https://pandas.pydata.org/docs/reference/general_functions.html

assign函數

df?=?pd.DataFrame({'temp_c':?[17.0,?25.0]},index=['Portland',?'Berkeley']) df
temp_cPortlandBerkeley
17.0
25.0
#?生成新的字段df.assign(temp_f=df['temp_c']?*?9?/?5?+?32)
temp_ctemp_fPortlandBerkeley
17.062.6
25.077.0
df??#?原來DataFrame是不改變的
temp_cPortlandBerkeley
17.0
25.0
如果是通過下面的方式來生成新的字段,那么原來的數據則會改變:df["temp_f1"]?=?df["temp_c"]?*?9?/?5?+?32 df
temp_ctemp_f1PortlandBerkeley
17.062.6
25.077.0
df
temp_ctemp_f1PortlandBerkeley
17.062.6
25.077.0

bool函數

返回單個Series或者DataFrame中單個元素的bool值:True或者False

pd.Series([True]).bool()Truepd.Series([False]).bool()Falsepd.DataFrame({'col':?[True]}).bool()Truepd.DataFrame({'col':?[False]}).bool()False#?#?多個元素引發報錯#?pd.DataFrame({'col':?[True,False]}).bool()

concat函數

該函數是用來表示多個DataFrame的拼接,橫向或者縱向皆可。

df1?=?pd.DataFrame({"sid":["s1","s2"],"name":["xiaoming","Mike"]}) df1
sidname01
s1xiaoming
s2Mike
df2?=?pd.DataFrame({"sid":["s3","s4"],"name":["Tom","Peter"]}) df2
sidname01
s3Tom
s4Peter
df3?=?pd.DataFrame({"address":["北京","深圳"],?????????????"sex":["Male","Female"]}) df3
addresssex01
北京Male
深圳Female
#?使用1:縱向 pd.concat([df1,df2])
sidname0101
s1xiaoming
s2Mike
s3Tom
s4Peter
#?使用2:橫向 pd.concat([df1,df3],axis=1)
sidnameaddresssex01
s1xiaoming北京Male
s2Mike深圳Female

dropna函數

刪除空值:可以對整個DataFrame刪除,也可以指定某個屬性來刪除

df4?=?pd.DataFrame({"sid":["s1","s2",?np.nan],?????????????"name":["xiaoming",np.nan,?"Mike"]}) df4
sidname012
s1xiaoming
s2NaN
NaNMike
df4.dropna()
sidname0
s1xiaoming
df4.dropna(subset=["name"])
sidname02
s1xiaoming
NaNMike

explode函數

爆炸函數的使用:將寬表轉成長表。爆炸之后原數據是沒有改變的

df5?=?pd.DataFrame({"sid":["s1","s2"],???????"phones":[["華為","小米","一加"],["三星","蘋果"]]}) df5
sidphones01
s1[華為, 小米, 一加]
s2[三星, 蘋果]
df5.explode("phones")
sidphones00011
s1華為
s1小米
s1一加
s2三星
s2蘋果
df5 # 原數據沒有變
sidphones01
s1[華為, 小米, 一加]
s2[三星, 蘋果]

fillna函數

填充缺失值;可以整體填充,也可以對每個屬性單獨填充

df4
sidname012
s1xiaoming
s2NaN
NaNMike
df4.fillna({"sid":"s3","name":"Peter"})
sidname012
s1xiaoming
s2Peter
s3Mike

groupby函數

同組統計的功能

圖解Pandas的groupby機制

#?借用這個結果 df6?=?df5.explode("phones") df6
sidphones00011
s1華為
s1小米
s1一加
s2三星
s2蘋果
df6.groupby("sid")["phones"].count()sid s1 3 s2 2 Name: phones, dtype: int64

head函數

查看前幾行的數據,默認是前5行

df7?=?pd.DataFrame({"sid":list(range(10)),????????????????"name":list(range(80,100,2))}) df7
sidname0123456789
080
182
284
386
488
590
692
794
896
998
df7.head()???#?默認前5行
sidname01234
080
182
284
386
488
df7.head(3)??#?指定前3行
sidname012
080
182
284

isnull函數

判斷是否存在缺失值,超級常用的函數

df4
sidname012
s1xiaoming
s2NaN
NaNMike
df4.isnull()??#?True表示缺失
sidname012
FalseFalse
FalseTrue
TrueFalse
df4.isnull().sum()??#?每個字段缺失的總和sid 1 name 1 dtype: int64df6.isnull().sum()???#?沒有缺失值sid 0 phones 0 dtype: int64

join函數

用于連接不同的DataFrame:圖解Pandas數據合并:concat、join、append

df7?=?pd.DataFrame({'key':?['K0',?'K1',?'K2',?'K3',?'K4',?'K5'],'A':?['A0',?'A1',?'A2',?'A3',?'A4',?'A5']}) df7
keyA012345
K0A0
K1A1
K2A2
K3A3
K4A4
K5A5
df8?=?pd.DataFrame({'key':?['K0',?'K1',?'K2'],'B':?['B0',?'B1',?'B2']}) df8
keyB012
K0B0
K1B1
K2B2
df7.join(df8,lsuffix="_df7",rsuffix="_df8")
key_df7Akey_df8B012345
K0A0K0B0
K1A1K1B1
K2A2K2B2
K3A3NaNNaN
K4A4NaNNaN
K5A5NaNNaN

kurt函數

查找數據的峰度值:從統計和數據角度出發,如何看待房價?

df9?=?pd.DataFrame({"A":[12,?4,?5,?44,?1],?"B":[5,?2,?54,?3,?2],?"C":[20,?16,?7,?3,?8],?"D":[14,?3,?17,?2,?6]})? df9
ABCD01234
1252014
42163
554717
44332
1286
df9.kurt()A 3.936824 B 4.941512 C -1.745717 D -2.508808 dtype: float64

loc函數

loc就是location的縮寫,定位查找數據

df9
ABCD01234
1252014
42163
554717
44332
1286
df9.loc[1,:]??#?第一行全部列的數據A 4 B 2 C 16 D 3 Name: 1, dtype: int64df9.loc[1:3,"B"]??#?1到3行的B列1 2 2 54 3 3 Name: B, dtype: int64

merge函數

同樣也是數據的合并函數,類似SQL中的join,功能最為強大

df7
keyA012345
K0A0
K1A1
K2A2
K3A3
K4A4
K5A5
df8
keyB012
K0B0
K1B1
K2B2
pd.merge(df7,df8)??#?默認how的參數是inner
keyAB012
K0A0B0
K1A1B1
K2A2B2
pd.merge(df7,df8,how="outer")
keyAB012345
K0A0B0
K1A1B1
K2A2B2
K3A3NaN
K4A4NaN
K5A5NaN

nunique函數

用于統計數據的唯一值

df10?=?pd.DataFrame({"sid":list("acbdefg"),"score":[9,8,9,7,8,9,3]}) df10
sidscore0123456
a9
c8
b9
d7
e8
f9
g3
df10.nunique()sid 7 score 4 dtype: int64

pct_change函數

計算當前時期和前一個時期的比值

s?=?pd.Series([90,?91,?85]) s0 90 1 91 2 85 dtype: int64s.pct_change()0 NaN 1 0.011111 2 -0.065934 dtype: float64(91?-?90)?/?900.011111111111111112(85?-?91)?/?91-0.06593406593406594#?和前兩個時期相比 s.pct_change(periods=2)0 NaN 1 NaN 2 -0.055556 dtype: float64#?如果存在空值,用填充方法 s?=?pd.Series([90,?91,?None,?85]) s0 90.0 1 91.0 2 NaN 3 85.0 dtype: float64s.pct_change(fill_method='ffill')0 NaN 1 0.011111 2 0.000000 3 -0.065934 dtype: float64

query函數

根據條件查詢取值

df10
sidscore0123456
a9
c8
b9
d7
e8
f9
g3
df10.query("score?>=?8")
sidscore01245
a9
c8
b9
e8
f9

rank函數

進行排名的函數,類似SQL的窗口函數功能:

df10
sidscore0123456
a9
c8
b9
d7
e8
f9
g3
df10["rank_10"]?=?df10["score"].rank() df10
sidscorerank_100123456
a96.0
c83.5
b96.0
d72.0
e83.5
f96.0
g31.0
df10["rank_10_max"]?=?df10["score"].rank(method="max") df10
sidscorerank_10rank_10_max0123456
a96.07.0
c83.54.0
b96.07.0
d72.02.0
e83.54.0
f96.07.0
g31.01.0
df10["rank_10_min"]?=?df10["score"].rank(method="min") df10
sidscorerank_10rank_10_maxrank_10_min0123456
a96.07.05.0
c83.54.03.0
b96.07.05.0
d72.02.02.0
e83.54.03.0
f96.07.05.0
g31.01.01.0

sort_values函數

根據數據進行排序的函數

df9
ABCD01234
1252014
42163
554717
44332
1286
df9.sort_values("A")??#?默認是升序排列
ABCD41203
1286
42163
554717
1252014
44332
#?先根據B升序,如果B相同,再根據D降序df9.sort_values(["B","D"],?ascending=[True,False])
ABCD41302
1286
42163
44332
1252014
554717

tail函數

查看末尾的數據

df7.tail()
keyA12345
K1A1
K2A2
K3A3
K4A4
K5A5
df7.tail(3)
keyA345
K3A3
K4A4
K5A5

unique函數

查找每個字段的唯一元素

df10
sidscorerank_10rank_10_maxrank_10_min0123456
a96.07.05.0
c83.54.03.0
b96.07.05.0
d72.02.02.0
e83.54.03.0
f96.07.05.0
g31.01.01.0
df10["score"].unique()array([9, 8, 7, 3])df10["rank_10"].unique()array([6. , 3.5, 2. , 1. ])

value_counts函數

用于統計字段中每個唯一值的個數

df6
sidphones00011
s1華為
s1小米
s1一加
s2三星
s2蘋果
df6["sid"].value_counts()s1 3 s2 2 Name: sid, dtype: int64df6["phones"].value_counts()華為 1 蘋果 1 三星 1 一加 1 小米 1 Name: phones, dtype: int64

where函數

用于查找Series或者DataFrame中滿足某個條件的數據

w?=?pd.Series(range(7)) w0 0 1 1 2 2 3 3 4 4 5 5 6 6 dtype: int64#?滿足條件的顯示;不滿足的用空值代替 w.where(w>3)0 NaN 1 NaN 2 NaN 3 NaN 4 4.0 5 5.0 6 6.0 dtype: float64#?不滿足條件的用8代替 w.where(w?>?1,?8)0 8 1 8 2 2 3 3 4 4 5 5 6 6 dtype: int64

xs函數

該函數是用于多層級索引中用于獲取指定索引處的值,使用一個關鍵參數來選擇多索引特定級別的數據。

d?=?{'num_legs':?[4,?4,?2,?2],'num_wings':?[0,?0,?2,?2],'class':?['mammal',?'mammal',?'mammal',?'bird'],'animal':?['cat',?'dog',?'bat',?'penguin'],'locomotion':?['walks',?'walks',?'flies',?'walks']} #?生成數據 df11?=?pd.DataFrame(data=d) #?重置索引 df11?=?df11.set_index(['class',?'animal',?'locomotion']) df11


num_legsnum_wingsclassanimallocomotion

mammalcatwalksdogwalksbatfliesbirdpenguinwalks
40
40
22
22
#?獲取指定索引的值 df11.xs('mammal')

num_legsnum_wingsanimallocomotion

catwalksdogwalksbatflies
40
40
22
#?指定多個索引處的值 df11.xs(('mammal',?'dog'))
num_legsnum_wingslocomotion

walks
40
#?獲取指定索引和級別(level)的值 df11.xs('cat',?level=1)

num_legsnum_wingsclasslocomotion

mammalwalks
40
df11


num_legsnum_wingsclassanimallocomotion

mammalcatwalksdogwalksbatfliesbirdpenguinwalks
40
40
22
22
#?獲取多個索引和級別的值 df11.xs(('bird',?'walks'),level=[0,?'locomotion'])
num_legsnum_wingsanimal

penguin
22
#?獲取指定列和軸上的值 df11.xs('num_wings',?axis=1)class animal locomotion mammal cat walks 0dog walks 0bat flies 2 bird penguin walks 2 Name: num_wings, dtype: int64往期精彩回顧適合初學者入門人工智能的路線及資料下載機器學習及深度學習筆記等資料打印機器學習在線手冊深度學習筆記專輯《統計學習方法》的代碼復現專輯 AI基礎下載黃海廣老師《機器學習課程》視頻課黃海廣老師《機器學習課程》711頁完整版課件

本站qq群955171419,加入微信群請掃碼:

總結

以上是生活随笔為你收集整理的【Python】精选23个Pandas常用函数的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。