1. 程式人生 > 其它 >1 常用的Pandas函式

1 常用的Pandas函式

20個常用的函式方法

1.讀取資料

marketing = pd.read_csv("DirectMarketing.csv")
groceries = pd.read_csv("Groceries_dataset.csv")
df = pd.read_csv("Churn_Modelling.csv"

#只想展示一部分,比方說其中幾行的資料
df = pd.read_csv("Churn_Modelling.csv", nrows = 5000)
df.shape
(5000,14)

# 其中幾列的資料,例如下面的程式碼選中“Gender”、“Age”以及“Tensure”等幾列
df1 = pd.read_csv("Churn_Modelling.csv", usecols=['Gender', 'Age', 'Tenure', 'Balance'])

2.檢視缺失值

groceries.isna().sum()

Member_number      0
Date               0
itemDescription    0
dtype: int64

3.填充缺失值

# 這裡用的是眾數來填充,當然也可以用平均數mean,中位數median
groceries['itemDescription'].fillna(value=groceries['itemDescription'].mode()[0], inplace=True)

# 或者是用"fillna"這個方法
groceries["Date"].fillna(method = "
ffill", inplace = True) # 假若我們想把這些缺失值給抹去,也很好來操作,使用“drop”方法,#“inplace=True”表明原陣列內容直接被改變 groceries.drop(axis = 0, how = 'any', inplace = True)

4.檢視某一列的資料型別

# 首先我們來檢視一下資料集當中每一列的資料型別
groceries.dtypes

Member_number       int64
Date               object
itemDescription    object
dtype: object

# 我們看到的是,“Date”這一列的資料型別是“object”,我們可以通過#“astype”這個方法來改變這一列的資料型別
groceries['Date'] = groceries['Date'].astype("datetime64") #當然還有“to_datetime”這個方法來嘗試 groceries['Date'] = pd.to_datetime(groceries['Date']) #通過裡面的引數“parse_dates”來改變這一列的資料型別 groceries = pd.read_csv("Groceries_dataset.csv", parse_dates=['Date']) groceries.dtypes Member_number int64 Date datetime64[ns] itemDescription object dtype: object

5.篩選出資料

"""通常來說有很多種方式方法來篩選資料以得出我們想要的結果,比方說我們可以通過一些邏輯符號“==”、“!=”或者是“>”“<”等方式,例如下面的程式碼便是挑選出“itemDescription”等於是“pip fruit”的資料"""
groceries[groceries["itemDescription"] == "pip fruit"].head()
"""當然還有“isin”這個方法來從一定的範圍內選出資料,我們能夠傳入一個列表,在列表中註明我們要篩選的資料,例如下面的程式碼,我們篩選出“Member_number”在這些範圍當中的資料"""
groceries[groceries.Member_number.isin([3737, 2433, 3915, 2625])].head()
# “query”這個方法也可以幫助到我們
groceries.query('3000 < Member_number < 5000').head()
# “where”這個方法也行
groceries[['Member_number','Date', 'itemDescription']].where(groceries['Member_number'] > 2500, 0).head()

6.排除資料

#“~”符號用來表明我們需要篩選出不再我們給定的範圍之內的資料,比方說下#面的程式碼我們篩選出“Member_number”不再這些範圍當中的資料
groceries[~groceries.Member_number.isin([3737, 2433, 3915, 2625])].head()

7.資料統計

#“value_counts”方法是被使用最廣泛的工具,在資料統計和計數當中,計算#一下該列當中每大類的離散值出現的頻率
marketing["OwnHome"].value_counts()

Own     516
Rent    484
Name: OwnHome, dtype: int64

#我們將其中的引數“normalize”改成“True”,它也將以百分比的形式出現,
marketing.Catalogs.value_counts(normalize=True)

12    0.282
6     0.252
24    0.233
18    0.233

#除此之外,我們也可以用“nunique”這個方法來檢視某一列離散值當中有#幾大類,例如下面的程式碼中“OwnHome”這一列只有兩大類
marketing["OwnHome"].nunique()

2

8.將某一列作為索引

"""一般資料集中的索引大家可以理解為就是“行數”,也就是“第一行”、“第二行”,當然我們可以通過“set_index”這個方法來將任意某一列設定為我們需要的索引,比方說資料集中的“Date”欄位被設定成了索引"""

groceries.set_index('Date', inplace=True)

9.重新設定索引

# 我們可以通過“reset_index”來重新設定索引,例如下面的資料集的索引並不#是連續的
groceries.reset_index(drop=True, inplace=True)

10.關於“loc”和“iloc”

# “loc”方法和“iloc”方法用法想類似,其中比較重要的一點是“loc”方法一般可以接受標籤,例如
groceries.loc[:,["Member_number", "Date"]].head()
# 而“iloc”裡面要是放標籤的話,則會報錯,一般“iloc”裡面放的則是索引
# 取第一列和第二列兩列的資料
groceries.iloc[:,[0, 1]].head()

11.提取“月份”和“年份”

# 我們可以通過“dt”這個方法來提取時間型別的資料中的年份和月份,例如 
groceries['Year'] = groceries['Date'].dt.year
groceries['Month'] = groceries['Date'].dt.month

12.去除某幾列的資料

#要是碰到我們想去除掉某幾列的資料的時候,可以使用“drop”方法,例如,我#們去除掉“Year”和“Month”這兩列
groceries.drop(['Year','Month'], axis=1, inplace=True)

13.增加某幾列的資料

# 要是想在資料集當中增加幾列的時候,我們可以使用“insert”方法,例如,我#們再第一列和第二列的位置插入“Month”資料和“Year”的資料
year = groceries['Date'].dt.year
month = groceries['Date'].dt.month

groceries.insert(1, 'Month', month)
groceries.insert(2, 'Year', year)

14.排名統計

# 我們可以為某一列資料做一個排名,使用“rank”這個方法
groceries['Member_number_rank'] = groceries['Member_number'].rank(method = 'first', ascending = False).astype('int')

15.展示小數點後面的幾位小數

# 資料集當中對於浮點型的數字,小數點後面可能仍然會有很多的數字,我們可以通過“round”方法來進行調整,例如我們保留一位小數
df.round(1).head()

16.基於字串去篩選資料

# 我們有時候需要基於字串去進行資料的篩選,例如,我們要篩選出下面的資料集當中顧客的名字是以“Mi”開頭的顧客,我們可以這麼來做
df[df['Surname'].str.startswith('Mi')].head()

17.基於字串的長度來篩選資料

# 有時候我們也可以通過字串的長度來篩選資料,例如我們通過下面的程式碼篩選出“itemDescription”這個欄位長度大於20的資料
groceries[groceries.itemDescription.str.len() > 20].head()

18.對離散值型別的資料進行分離

#“Date”這一列當中的資料是字串,然後我們可以通過“split”這個方法來進行字串的分離,例如下面的程式碼將“Date”這一列當中的月份資料給分離出來了
groceries['Month'] = groceries['Date'].str.split('-', expand=True)[1]

19.畫圖

# 我們可以在已有資料集的基礎上,通過“plot”這個方法以及裡面的引數“kind”來進行視覺化,例如我們想要話直方圖的話
df['Balance'].plot(kind='hist', figsize=(10,6), title='Customer Balance')

20.標註重點

# 有時候可能需要對資料集當中某些資料打標籤,表上顏色來顯示其重要性,在“Pandas”模組中有“style”這個方法可以使用,例如下面的程式碼將“Salary”以及“Catalogs”這兩列的最大值標出來了
df_new.style.highlight_max(axis = 0, color = "yellow")