分享幾個常用的Python函數(shù),助你快速成為Pandas大神?。?/h1>

在Python當中模塊Pandas在數(shù)據(jù)分析中以及可視化當中是被使用的最多的,也是最常見的模塊,模塊當中提供了很多的函數(shù)和方法來應對數(shù)據(jù)清理、數(shù)據(jù)分析和數(shù)據(jù)統(tǒng)計,今天小編就通過20個常用的函數(shù)方法來為大家展示一下其中的能力,希望大家能有所收獲。
1.讀取數(shù)據(jù) Pandas當中的read_csv的方法能夠去讀取csv類型的文件,然后轉(zhuǎn)化成類似于表格形式的dataframe,
marketing = pd.read_csv("DirectMarketing.csv")groceries = pd.read_csv("Groceries_dataset.csv")df = pd.read_csv("Churn_Modelling.csv")
要是我們只想展示一部分,比方說其中幾行的數(shù)據(jù),當然也可以這么來操作
df = pd.read_csv("Churn_Modelling.csv", nrows = 5000)df.shape(5000,14)
當然其中幾列的數(shù)據(jù),也可以這么來操作,例如下面的代碼選中“Gender”、“Age”以及“Tensure”等幾列
df1 = pd.read_csv("Churn_Modelling.csv", usecols=['Gender', 'Age', 'Tenure', 'Balance'])
2.查看缺失值 要是我們想要看一下數(shù)據(jù)集當中的缺失值的話,可以,
groceries.isna().sum()
Member_number 0Date 0itemDescription 0dtype: int64
3. 填充缺失值 下面我們來填充數(shù)據(jù)集當中的缺失值,我們有很多種方式方法來填充數(shù)據(jù)集當中的缺失值,比方說中位數(shù)、平均數(shù)、眾數(shù)等等
groceries['itemDescription'].fillna(value=groceries['itemDescription'].mode()[0], inplace=True)
groceries["Date"].fillna(method = "ffill", inplace = True)
假若我們想把這些缺失值給抹去,也很好來操作,使用“drop”方法,“inplace=True”表明原數(shù)組內(nèi)容直接被改變
groceries.drop(axis = 0, how = 'any', inplace = True)
4. 查看某一列的數(shù)據(jù)類型 首先我們來查看一下數(shù)據(jù)集當中每一列的數(shù)據(jù)類型,
groceries.dtypes
Member_number int64Date objectitemDescription objectdtype: object
我們看到的是,“Date”這一列的數(shù)據(jù)類型是“object”,我們可以通過“astype”這個方法來改變這一列的數(shù)據(jù)類型
groceries['Date'] = groceries['Date'].astype("datetime64")
當然還有“to_datetime”這個方法來嘗試
groceries['Date'] = pd.to_datetime(groceries['Date'])
除此之外,我們再讀取數(shù)據(jù)的時候,也可以通過里面的參數(shù)“parse_dates”來改變這一列的數(shù)據(jù)類型
groceries = pd.read_csv("Groceries_dataset.csv", parse_dates=['Date'])groceries.dtypes
Member_number int64Date datetime64[ns]itemDescription objectdtype: object
5. 篩選出數(shù)據(jù) 通常來說有很多種方式方法來篩選數(shù)據(jù)以得出我們想要的結(jié)果,比方說我們可以通過一些邏輯符號“==”、“!=”或者是“>”“<”等方式,例如下面的代碼便是挑選出“itemDescription”等于是“pip fruit”的數(shù)據(jù)
groceries[groceries["itemDescription"] == "pip fruit"].head()

當然還有“isin”這個方法來從一定的范圍內(nèi)選出數(shù)據(jù),我們能夠傳入一個列表,在列表中注明我們要篩選的數(shù)據(jù),例如下面的代碼,我們篩選出“Member_number”在這些范圍當中的數(shù)據(jù)
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. 排除數(shù)據(jù) “~”符號用來表明我們需要篩選出不再我們給定的范圍之內(nèi)的數(shù)據(jù),比方說下面的代碼我們篩選出“Member_number”不再這些范圍當中的數(shù)據(jù)
groceries[~groceries.Member_number.isin([3737, 2433, 3915, 2625])].head()

7. 數(shù)據(jù)統(tǒng)計 “value_counts”方法是被使用最廣泛的工具,在數(shù)據(jù)統(tǒng)計和計數(shù)當中,計算一下該列當中每大類的離散值出現(xiàn)的頻率
marketing["OwnHome"].value_counts()
Own 516Rent 484Name: OwnHome, dtype: int64
要是我們將其中的參數(shù)“normalize”改成“True”,它也將以百分比的形式出現(xiàn),
marketing.Catalogs.value_counts(normalize=True)
12 0.2826 0.25224 0.23318 0.233
除此之外,我們也可以用“nunique”這個方法來查看某一列離散值當中有幾大類,例如下面的代碼中“OwnHome”這一列只有兩大類
marketing["OwnHome"].nunique()
2
8. 將某一列作為索引 一般數(shù)據(jù)集中的索引大家可以理解為就是“行數(shù)”,也就是“第一行”、“第二行”,當然我們可以通過“set_index”這個方法來將任意某一列設置為我們需要的索引,比方說數(shù)據(jù)集中的“Date”字段被設置成了索引
groceries.set_index('Date', inplace=True)

9. 重新設置索引 當我們?nèi)コ裟硯仔袛?shù)據(jù)之后,數(shù)據(jù)集當中的索引會出現(xiàn)“斷裂”的情況,同理當我們合并兩個數(shù)據(jù)集的時候,索引也不會被重新設置,要是上面的情況出現(xiàn),數(shù)據(jù)集中的索引便不是“連續(xù)”的了,我們可以通過“reset_index”來重新設置索引,例如下面的數(shù)據(jù)集的索引并不是連續(xù)的

groceries.reset_index(drop=True, inplace=True)

10. 關于“l(fā)oc”和“iloc” “l(fā)oc”方法和“iloc”方法用法想類似,其中比較重要的一點是“l(fā)oc”方法一般可以接受標簽,例如
groceries.loc[:,["Member_number", "Date"]].head()

而“iloc”里面要是放標簽的話,則會報錯,一般“iloc”里面放的則是索引,
# 取第一列和第二列兩列的數(shù)據(jù)groceries.iloc[:,[0, 1]].head()

11. 提取“月份”和“年份” 我們可以通過“dt”這個方法來提取時間類型的數(shù)據(jù)中的年份和月份,例如
groceries['Year'] = groceries['Date'].dt.yeargroceries['Month'] = groceries['Date'].dt.month

12. 去除某幾列的數(shù)據(jù)
要是碰到我們想去除掉某幾列的數(shù)據(jù)的時候,可以使用“drop”方法,例如,我們?nèi)コ簟癥ear”和“Month”這兩列
groceries.drop(['Year','Month'], axis=1, inplace=True)

13. 增加某幾列的數(shù)據(jù) 要是想在數(shù)據(jù)集當中增加幾列的時候,我們可以使用“insert”方法,例如,我們再第一列和第二列的位置插入“Month”數(shù)據(jù)和“Year”的數(shù)據(jù)
year = groceries['Date'].dt.yearmonth = groceries['Date'].dt.month
groceries.insert(1, 'Month', month)groceries.insert(2, 'Year', year)

14. 排名統(tǒng)計 我們可以為某一列數(shù)據(jù)做一個排名,使用“rank”這個方法
groceries['Member_number_rank'] = groceries['Member_number'].rank(method = 'first', ascending = False).astype('int')

15. 展示小數(shù)點后面的幾位小數(shù) 數(shù)據(jù)集當中對于浮點型的數(shù)字,小數(shù)點后面可能仍然會有很多的數(shù)字,我們可以通過“round”方法來進行調(diào)整,例如我們保留一位小數(shù)
df.round(1).head()

16. 基于字符串去篩選數(shù)據(jù) 我們有時候需要基于字符串去進行數(shù)據(jù)的篩選,例如,我們要篩選出下面的數(shù)據(jù)集當中顧客的名字是以“Mi”開頭的顧客,我們可以這么來做
df[df['Surname'].str.startswith('Mi')].head()

17. 基于字符串的長度來篩選數(shù)據(jù) 有時候我們也可以通過字符串的長度來篩選數(shù)據(jù),例如我們通過下面的代碼篩選出“itemDescription”這個字段長度大于20的數(shù)據(jù)
groceries[groceries.itemDescription.str.len() > 20].head()

18. 對離散值類型的數(shù)據(jù)進行分離 我們可以對離散值類型的某一列數(shù)據(jù),當中是字符串的數(shù)據(jù),進行分離,例如我們遇到“Date”這一列當中的數(shù)據(jù)是字符串,然后我們可以通過“split”這個方法來進行字符串的分離,例如下面的代碼將“Date”這一列當中的月份數(shù)據(jù)給分離出來了
groceries['Month'] = groceries['Date'].str.split('-', expand=True)[1]

19. 畫圖 我們可以在已有數(shù)據(jù)集的基礎上,通過“plot”這個方法以及里面的參數(shù)“kind”來進行可視化,例如我們想要話直方圖的話
df['Balance'].plot(kind='hist', figsize=(10,6), title='Customer Balance')

20. 標注重點 我們有時候可能需要對數(shù)據(jù)集當中某些數(shù)據(jù)打標簽,表上顏色來顯示其重要性,在“Pandas”模塊中有“style”這個方法可以使用,例如下面的代碼將“Salary”以及“Catalogs”這兩列的最大值標出來了
df_new.style.highlight_max(axis = 0, color = "yellow")


推薦閱讀:
入門: 最全的零基礎學Python的問題 | 零基礎學了8個月的Python | 實戰(zhàn)項目 |學Python就是這條捷徑
干貨:爬取豆瓣短評,電影《后來的我們》 | 38年NBA最佳球員分析 | 從萬眾期待到口碑撲街!唐探3令人失望 | 笑看新倚天屠龍記 | 燈謎答題王 |用Python做個海量小姐姐素描圖 |碟中諜這么火,我用機器學習做個迷你推薦系統(tǒng)電影
趣味:彈球游戲 | 九宮格 | 漂亮的花 | 兩百行Python《天天酷跑》游戲!
AI: 會做詩的機器人 | 給圖片上色 | 預測收入 | 碟中諜這么火,我用機器學習做個迷你推薦系統(tǒng)電影
小工具: Pdf轉(zhuǎn)Word,輕松搞定表格和水印! | 一鍵把html網(wǎng)頁保存為pdf!| 再見PDF提取收費! | 用90行代碼打造最強PDF轉(zhuǎn)換器,word、PPT、excel、markdown、html一鍵轉(zhuǎn)換 | 制作一款釘釘?shù)蛢r機票提示器! |60行代碼做了一個語音壁紙切換器天天看小姐姐!|
年度爆款文案

點閱讀原文,領AI全套資料!
瀏覽
11

在Python當中模塊Pandas在數(shù)據(jù)分析中以及可視化當中是被使用的最多的,也是最常見的模塊,模塊當中提供了很多的函數(shù)和方法來應對數(shù)據(jù)清理、數(shù)據(jù)分析和數(shù)據(jù)統(tǒng)計,今天小編就通過20個常用的函數(shù)方法來為大家展示一下其中的能力,希望大家能有所收獲。
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)
df1 = pd.read_csv("Churn_Modelling.csv", usecols=['Gender', 'Age', 'Tenure', 'Balance'])groceries.isna().sum()Member_number 0Date 0itemDescription 0dtype: int64
下面我們來填充數(shù)據(jù)集當中的缺失值,我們有很多種方式方法來填充數(shù)據(jù)集當中的缺失值,比方說中位數(shù)、平均數(shù)、眾數(shù)等等
groceries['itemDescription'].fillna(value=groceries['itemDescription'].mode()[0], inplace=True)groceries["Date"].fillna(method = "ffill", inplace = True)
假若我們想把這些缺失值給抹去,也很好來操作,使用“drop”方法,“inplace=True”表明原數(shù)組內(nèi)容直接被改變
groceries.drop(axis = 0, how = 'any', inplace = True)groceries.dtypesMember_number int64Date objectitemDescription objectdtype: object
我們看到的是,“Date”這一列的數(shù)據(jù)類型是“object”,我們可以通過“astype”這個方法來改變這一列的數(shù)據(jù)類型
groceries['Date'] = groceries['Date'].astype("datetime64")groceries['Date'] = pd.to_datetime(groceries['Date'])除此之外,我們再讀取數(shù)據(jù)的時候,也可以通過里面的參數(shù)“parse_dates”來改變這一列的數(shù)據(jù)類型
groceries = pd.read_csv("Groceries_dataset.csv", parse_dates=['Date'])groceries.dtypesMember_number int64Date datetime64[ns]itemDescription objectdtype: object
通常來說有很多種方式方法來篩選數(shù)據(jù)以得出我們想要的結(jié)果,比方說我們可以通過一些邏輯符號“==”、“!=”或者是“>”“<”等方式,例如下面的代碼便是挑選出“itemDescription”等于是“pip fruit”的數(shù)據(jù)
groceries[groceries["itemDescription"] == "pip fruit"].head()
當然還有“isin”這個方法來從一定的范圍內(nèi)選出數(shù)據(jù),我們能夠傳入一個列表,在列表中注明我們要篩選的數(shù)據(jù),例如下面的代碼,我們篩選出“Member_number”在這些范圍當中的數(shù)據(jù)
groceries[groceries.Member_number.isin([3737, 2433, 3915, 2625])].head()
groceries.query('3000 < Member_number < 5000').head()
groceries[['Member_number','Date', 'itemDescription']].where(groceries['Member_number'] > 2500, 0).head()
“~”符號用來表明我們需要篩選出不再我們給定的范圍之內(nèi)的數(shù)據(jù),比方說下面的代碼我們篩選出“Member_number”不再這些范圍當中的數(shù)據(jù)
groceries[~groceries.Member_number.isin([3737, 2433, 3915, 2625])].head()
“value_counts”方法是被使用最廣泛的工具,在數(shù)據(jù)統(tǒng)計和計數(shù)當中,計算一下該列當中每大類的離散值出現(xiàn)的頻率
marketing["OwnHome"].value_counts()Own 516Rent 484Name: OwnHome, dtype: int64
marketing.Catalogs.value_counts(normalize=True)12 0.2826 0.25224 0.23318 0.233
除此之外,我們也可以用“nunique”這個方法來查看某一列離散值當中有幾大類,例如下面的代碼中“OwnHome”這一列只有兩大類
marketing["OwnHome"].nunique()2
一般數(shù)據(jù)集中的索引大家可以理解為就是“行數(shù)”,也就是“第一行”、“第二行”,當然我們可以通過“set_index”這個方法來將任意某一列設置為我們需要的索引,比方說數(shù)據(jù)集中的“Date”字段被設置成了索引
groceries.set_index('Date', inplace=True)
當我們?nèi)コ裟硯仔袛?shù)據(jù)之后,數(shù)據(jù)集當中的索引會出現(xiàn)“斷裂”的情況,同理當我們合并兩個數(shù)據(jù)集的時候,索引也不會被重新設置,要是上面的情況出現(xiàn),數(shù)據(jù)集中的索引便不是“連續(xù)”的了,我們可以通過“reset_index”來重新設置索引,例如下面的數(shù)據(jù)集的索引并不是連續(xù)的

groceries.reset_index(drop=True, inplace=True)
groceries.loc[:,["Member_number", "Date"]].head()
# 取第一列和第二列兩列的數(shù)據(jù)groceries.iloc[:,[0, 1]].head()

groceries['Year'] = groceries['Date'].dt.yeargroceries['Month'] = groceries['Date'].dt.month

12. 去除某幾列的數(shù)據(jù)
groceries.drop(['Year','Month'], axis=1, inplace=True)
要是想在數(shù)據(jù)集當中增加幾列的時候,我們可以使用“insert”方法,例如,我們再第一列和第二列的位置插入“Month”數(shù)據(jù)和“Year”的數(shù)據(jù)
year = groceries['Date'].dt.yearmonth = groceries['Date'].dt.monthgroceries.insert(1, 'Month', month)groceries.insert(2, 'Year', year)

groceries['Member_number_rank'] = groceries['Member_number'].rank(method = 'first', ascending = False).astype('int')
df.round(1).head()
df[df['Surname'].str.startswith('Mi')].head()
groceries[groceries.itemDescription.str.len() > 20].head()
我們可以對離散值類型的某一列數(shù)據(jù),當中是字符串的數(shù)據(jù),進行分離,例如我們遇到“Date”這一列當中的數(shù)據(jù)是字符串,然后我們可以通過“split”這個方法來進行字符串的分離,例如下面的代碼將“Date”這一列當中的月份數(shù)據(jù)給分離出來了
groceries['Month'] = groceries['Date'].str.split('-', expand=True)[1]
我們可以在已有數(shù)據(jù)集的基礎上,通過“plot”這個方法以及里面的參數(shù)“kind”來進行可視化,例如我們想要話直方圖的話
df['Balance'].plot(kind='hist', figsize=(10,6), title='Customer Balance')
我們有時候可能需要對數(shù)據(jù)集當中某些數(shù)據(jù)打標簽,表上顏色來顯示其重要性,在“Pandas”模塊中有“style”這個方法可以使用,例如下面的代碼將“Salary”以及“Catalogs”這兩列的最大值標出來了
df_new.style.highlight_max(axis = 0, color = "yellow")
推薦閱讀:
入門: 最全的零基礎學Python的問題 | 零基礎學了8個月的Python | 實戰(zhàn)項目 |學Python就是這條捷徑
干貨:爬取豆瓣短評,電影《后來的我們》 | 38年NBA最佳球員分析 | 從萬眾期待到口碑撲街!唐探3令人失望 | 笑看新倚天屠龍記 | 燈謎答題王 |用Python做個海量小姐姐素描圖 |碟中諜這么火,我用機器學習做個迷你推薦系統(tǒng)電影
趣味:彈球游戲 | 九宮格 | 漂亮的花 | 兩百行Python《天天酷跑》游戲!
AI: 會做詩的機器人 | 給圖片上色 | 預測收入 | 碟中諜這么火,我用機器學習做個迷你推薦系統(tǒng)電影
小工具: Pdf轉(zhuǎn)Word,輕松搞定表格和水印! | 一鍵把html網(wǎng)頁保存為pdf!| 再見PDF提取收費! | 用90行代碼打造最強PDF轉(zhuǎn)換器,word、PPT、excel、markdown、html一鍵轉(zhuǎn)換 | 制作一款釘釘?shù)蛢r機票提示器! |60行代碼做了一個語音壁紙切換器天天看小姐姐!|
年度爆款文案
點閱讀原文,領AI全套資料!
