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

在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è)置為我們需要的索引,比方說數(shù)據(jù)集中的“Date”字段被設(shè)置成了索引
groceries.set_index('Date', inplace=True)
當我們?nèi)コ裟硯仔袛?shù)據(jù)之后,數(shù)據(jù)集當中的索引會出現(xiàn)“斷裂”的情況,同理當我們合并兩個數(shù)據(jù)集的時候,索引也不會被重新設(shè)置,要是上面的情況出現(xiàn),數(shù)據(jù)集中的索引便不是“連續(xù)”的了,我們可以通過“reset_index”來重新設(shè)置索引,例如下面的數(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ù)集的基礎(chǔ)上,通過“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")
推薦閱讀:
入門: 最全的零基礎(chǔ)學Python的問題 | 零基礎(chǔ)學了8個月的Python | 實戰(zhàn)項目 |學Python就是這條捷徑
干貨:爬取豆瓣短評,電影《后來的我們》 | 38年NBA最佳球員分析 | 從萬眾期待到口碑撲街!唐探3令人失望 | 笑看新倚天屠龍記 | 燈謎答題王 |用Python做個海量小姐姐素描圖 |碟中諜這么火,我用機器學習做個迷你推薦系統(tǒng)電影
趣味:彈球游戲 | 九宮格 | 漂亮的花 | 兩百行Python《天天酷跑》游戲!
AI: 會做詩的機器人 | 給圖片上色 | 預測收入 | 碟中諜這么火,我用機器學習做個迷你推薦系統(tǒng)電影
小工具: Pdf轉(zhuǎn)Word,輕松搞定表格和水?。?/a> | 一鍵把html網(wǎng)頁保存為pdf!| 再見PDF提取收費! | 用90行代碼打造最強PDF轉(zhuǎn)換器,word、PPT、excel、markdown、html一鍵轉(zhuǎn)換 | 制作一款釘釘?shù)蛢r機票提示器! |60行代碼做了一個語音壁紙切換器天天看小姐姐!|
年度爆款文案
點閱讀原文,領(lǐng)AI全套資料!


