【Python】精選22個Pandas函數!
公眾號:尤而小屋
作者:Peter
編輯:Peter
今天小編又從26個字母中精選出22個Pandas常用的函數,將它們的使用方法簡單介紹給大家,詳細內容可以查看官網學習。
其中o、y、z沒有相應的函數。之前寫過一篇文章,可以參考學習:

import?pandas?as?pd
import?numpy?as?np
apply函數
Pandas中一個很實用的函數,下面模擬了一份數據:

我們分別將python的內置函數、自定義函數、匿名函數傳給apply函數:


使用Python的匿名函數來進行傳遞:

between_time
start_time,?
end_time,?
include_start=NoDefault.no_default,
include_end=NoDefault.no_default,?
inclusive=None,?
axis=None
來自官網的案例:

如果在參數中,開始時間大于結束時間,則會呈現不同的結果:

contains函數
針對Series中的包含字符信息:

drop_duplicates函數
刪除數據中的重復值;可以選擇根據某個或者多個字段來刪除。
在刪除數據的時候,默認保留的是第一條重復的數據,我們可以通過參數keep來指定保留最后一條

expanding函數
這是一個窗口函數,實現的是一種類似累計求和的功能
DataFrame.expanding(
??min_periods=1,?
??center=None,?
??axis=0,?
??method='single')
min_periods:每個窗口最少包含的觀測值數量,小于該數量的窗口結果為NA。值可以是int,默認None。offset情況下,默認為1 center:把窗口的標簽設置為居中,布爾型,默認False,居右 axis:默認為0,對列進行計算 method:single或者table
模擬了一份數據:

分別指定1-2-3不同的窗口數:

我們發(fā)現:當窗口數大于前面的記錄數,則累計和用NaN表示
filter函數
用來進行數據的過濾操作
items:表示包含的字段 regex:表示使用正則


ge函數
進行比較的一個函數:ge表示greater equal

hist函數
pandas內置的繪制直方圖的函數
df4?=?pd.DataFrame({
????'length':?[1.5,?0.5,?1.2,?0.9,?3],
????'width':?[0.7,?0.2,?0.15,?0.2,?1.1]
????},?index=['pig',?'rabbit',?'duck',?'chicken',?'horse'])
hist?=?df4.hist(bins=3)

iterrows函數
iterrows函數用于對DataFrame進行迭代循環(huán)

join函數
join函數用于合并不同的DataFrame


kurtosis函數
用于查找一組數據中的峰度值
kurtosis(axis=index(0)?or?columns(1),?
?????????skipna=True,?
?????????level=None,?
?????????numeric_only=None,?
?????????**kwargs)
axis:要應用的函數的軸。 skipna:計算結果時排除NA /null值。 level:如果軸是MultiIndex(分層),則沿特定級別計數,并折疊成標量。 numeric_only:僅包括float,int,boolean列。 **kwargs:要傳遞給函數的其他關鍵字參數

如果給定的數據中存在缺失值,可以使用參數skipna直接跳過:
s1?=?pd.Series([10,None,16,14,30,None])
s1
0????10.0
1?????NaN
2????16.0
3????14.0
4????30.0
5?????NaN
dtype:?float64
s1.kurtosis(skipna=True)
2.646199227619398
last函數
這是一個用在基于時間數據選擇上的函數
i?=?pd.date_range('2018-04-09',?#?起始日期
??????????????????periods=4,??#?周期
??????????????????freq='2D')??#?頻率、間隔
i
DatetimeIndex(['2018-04-09',?'2018-04-11',?'2018-04-13',?'2018-04-15'],?dtype='datetime64[ns]',?freq='2D')

注意:在這里返回的日歷中3個日的數據,而不是數據中的3行記錄。13-14-15剛好是3天
max/min/mean/median
4個基于統計概念的函數:最大值、最小值、均值、中位數

nlargest函數
選擇前n個的數據,其語法如下:
nlargest(n,?columns,?keep='first')
n:整數 columns:根據一個或者多個字段篩選 keep:選擇first、last、all;默認是first
下面的例子來自官網:
df7?=?pd.DataFrame({
??'population':?[59000000,?65000000,?434000,434000,?
?????????????????434000,?337000,?11300,11300,?11300],
??'GDP':?[1937894,?2583560?,?12011,?4520,?
??????????12128,17036,?182,?38,?311],
??'alpha-2':?["IT",?"FR",?"MT",?"MV",?"BN",
??????????????"IS",?"NR",?"TV",?"AI"]},
??index=["Italy",?"France",?"Malta",
?????????"Maldives",?"Brunei",?"Iceland",
?????????"Nauru",?"Tuvalu",?"Anguilla"])
#?記錄每個國家的人口數、GDP和名稱2位大寫
df7

keep參數在不同取值下的結果:

pop函數
表示刪除某個屬性或者字段信息

quantile函數
quantile就是分位數的意思,函數具體的語法規(guī)則為:
DataFrame.quantile(
????q=0.5,??
????axis=0,?
????numeric_only=True,
????interpolation=’linear’)
q : 數字或者是類列表,范圍只能在0-1之間,默認是0.5,即中位數-第2四分位數 axis :計算方向,0-index, 1-columns,默認為 0 numeric_only:只允許是數值型數據 interpolation(插值方法):可以是 {‘linear’, ‘lower’, ‘higher’, ‘midpoint’, ‘nearest’}之一,默認是linear。

reset_index函數
reset就是重置的含義,index就是行索引;連起來就是重置行索引
df9?=?pd.DataFrame({"fruit":["蘋果","香蕉","橙子","橙子","蘋果","橙子"],
???????????????????"amount":[100,200,130,150,88,40]})
df9

當我們統計每種水果的總銷售額,是否使用reset_index函數的不同效果:

select_dtypes函數
根據字段類型來篩選數據,可以包含或者排除一個或者多個字段類型的數據。
下面是官網的案例,稍作修改:生成了3個不同數據類型的字段

1、包含字段類型

2、排除字段類型

take函數
也是選擇數據的一個函數,具體語法為:
take(indices,?axis=0,?is_copy=None,?**kwargs)
indices:選擇位置:數組或者切片 axis:選擇的軸,0-index,1-column,默認是0 is_copy:是否返回副本;從Pandas1.0開始

下面是多個例子:


以第一個例子來解釋,指定數據的記錄為0和4。表示取出df10中的第1條和第5條數據(索引從0開始),而不是看我們自定義的索引號。
update函數
更新某個DataFrame數據框;模擬兩個數據:

第一次更新的結果:

如果用于更新的數據中存在空值,則保持原來的數據不變

var函數
用于求一組數據的方差

where函數
用于查找滿足條件的數據
w?=?pd.Series(range(5))
w
0????0
1????1
2????2
3????3
4????4
dtype:?int64
#?滿足條件的顯示;不滿足的用空值代替
w.where(w>=2)
0????NaN
1????NaN
2????2.0
3????3.0
4????4.0
dtype:?float64
#?不滿足的用8替代
w.where(w>=2,?8)
0????8??#?8代替
1????8
2????2
3????3
4????4
dtype:?int64往期精彩回顧
適合初學者入門人工智能的路線及資料下載 (圖文+視頻)機器學習入門系列下載 中國大學慕課《機器學習》(黃海廣主講) 機器學習及深度學習筆記等資料打印 《統計學習方法》的代碼復現專輯 AI基礎下載 機器學習交流qq群955171419,加入微信群請掃碼:
