分享20个常用的Python函数,轻松玩转Pandas!!
作者/俊欣
在Python當中模塊Pandas在數據分析中以及可視化當中是被使用的最多的,也是最常見的模塊,模塊當中提供了很多的函數和方法來應對數據清理、數據分析和數據統計,今天小編就通過20個常用的函數方法來為大家展示一下其中的能力,希望大家能有所收獲。
1.讀取數據
Pandas當中的read_csv的方法能夠去讀取csv類型的文件,然后轉化成類似于表格形式的dataframe,
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:?int643. 填充缺失值
下面我們來填充數據集當中的缺失值,我們有很多種方式方法來填充數據集當中的缺失值,比方說中位數、平均數、眾數等等
#?這里用的是眾數來填充,當然也可以用平均數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.dtypesMember_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.dtypesMember_number???????????????int64 Date???????????????datetime64[ns] itemDescription????????????object dtype:?object5. 篩選出數據
通常來說有很多種方式方法來篩選數據以得出我們想要的結果,比方說我們可以通過一些邏輯符號“==”、“!=”或者是“>”“<”等方式,例如下面的代碼便是挑選出“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”,它也將以百分比的形式出現,
除此之外,我們也可以用“nunique”這個方法來查看某一列離散值當中有幾大類,例如下面的代碼中“OwnHome”這一列只有兩大類
marketing["OwnHome"].nunique()28. 將某一列作為索引
一般數據集中的索引大家可以理解為就是“行數”,也就是“第一行”、“第二行”,當然我們可以通過“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.month12. 去除某幾列的數據
要是碰到我們想去除掉某幾列的數據的時候,可以使用“drop”方法,例如,我們去除掉“Year”和“Month”這兩列
groceries.drop(['Year','Month'],?axis=1,?inplace=True)13. 增加某幾列的數據
要是想在數據集當中增加幾列的時候,我們可以使用“insert”方法,例如,我們在第一列和第二列的位置插入“Month”數據和“Year”的數據
year?=?groceries['Date'].dt.year month?=?groceries['Date'].dt.monthgroceries.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")——END——
最近發現一個點外賣每頓飯都能少花5-20元的寶藏號。
就是她,↓點擊下面名片關注公眾號↓
進入公眾號點擊菜單領取紅包最低5元,最高56元!總結
以上是生活随笔為你收集整理的分享20个常用的Python函数,轻松玩转Pandas!!的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 终结 Python 原生字典?这个库要逆
- 下一篇: Python 69个内置函数分8类总结,