1. 程式人生 > >高手如何做數據分析?這11招是你應該具備的技能

高手如何做數據分析?這11招是你應該具備的技能

python web 爬蟲 基礎 入門

菜鳥獨白

用Python來玩轉數據分析實在是太爽了,因為有強大的Pandas來處理數據非常方便,我個人對數據分析情有獨鐘,探索數據的秘密非常好玩!前段時間寫過一篇小白學數據分析入門招式,但是進階的部分上次沒有來得及整理,今天分享給大家。

我們依然用比較有名的泰坦尼克數據集來做示例,通過對這個數據集的處理,來快速上手數據分析的常見招式和基本手法,讓初學者可以快速上手數據分析!

技術分享圖片


要點:

  • 數據的字符處理

  • 數據的過濾

  • 數據的分組

  • 數據的透視表

1.數據集的字符處理

第一招:對列的處理

我們看一下這個數據集裏面的列都是英文的,不是很爽,我們把列的名字變成中文,這樣看的舒服。

技術分享圖片


df.rename(columns={'Survived':'是否獲救',

'Name':'姓名',

'Pclass':'船艙等級','Sex':'性別',

'Age':'年齡','SibSp':'兄弟姐妹數',

'Parch':'父母小孩數','Ticket':'船票',

'Fare':'船票費'})

這樣處理完之後看一下是不是舒服很多:

技術分享圖片


第二招:對數據集裏面的特定字符串進行替換

我們把性別裏面的male替換為男,female替換為女

df['性別'].map({'female':'女','male':'男'})

技術分享圖片


第三招:對列的字符進行替換

我們看到船票比如A/5 21171 有兩部分組成,一部分是英文字符,一部分是純數字,如果我們只想保留數字部分,我們直接用str字符串進行處理

df['船票']=df['船票'].str.replace(r'[^d+]','')

df.head(3)

技術分享圖片


pandas裏面的字符串功能非常強大,除了replace之外,

還有contains,split,match,findall,endswith等等,這招在清洗數據的非常有用。

2.數據集的過濾

我們在分析數據的時候經常要對數據內容進行過濾,或者是部分提取。

第四招:用邏輯表達式組合過濾

提取性別是女孩並且年齡在10歲以下的

df[(df['性別']=='女')&(df['年齡']<=10)]

df.head(3)

技術分享圖片


第五招:巧用不等於

提取非3等艙,並且獲救乘客信息

df[(df['是否獲救']==1)&(df['船艙等級']!=3)]

技術分享圖片


第六招:也可以用query函數

df.query('船艙等級==[1,2]')

技術分享圖片


3.數據的分類

我們有的時候需要對數據進行多維度的細分和統計,有下面幾招:

第七招:用where函數

第一種比較簡單,用where

比如我們認為比如我們認為 年齡在18以下都是未成年,18歲以上成年的

df['是否成年']=np.where(df['年齡']>=18,'成年','未成年')

df.sample(3)

技術分享圖片


第八招:用萬能的apply函數

apply可以處理比較復雜的邏輯,比如我們把年齡劃分為幾個階段,小孩,青年,成人,老人。

技術分享圖片


看一下新增的列"年齡分類"是不是層次分類更精準!

技術分享圖片


4.數據的切片和透視表

第九招:神奇的groupby函數

我們喜歡對數據按照某種類別分組統計:

1).從性別的維度來對是否獲救的人數進行統計

df.groupby('性別')['是否獲救'].count()

性別

女 314

男 577

Name: 是否獲救, dtype: int64

2).從船艙的等級來看是非獲救

df.groupby('船艙等級')['是否獲救'].count()

船艙等級

1 216

2 184

3 491

Name: 是否獲救, dtype: int64

第十招:對數據進行軸切片分析

比如我們希望對是非獲救和船艙等級這個兩個軸進行深入切片分析,這樣的伎倆在R語言裏面也經常用到,這裏pandas給我們提供了非常方便的agg函數

df.groupby(['是否獲救','船艙等級'])['年齡'].agg(['size','max','min','mean'])

技術分享圖片


這樣就很容易發現,獲救裏面的頭等艙的人比較多,平均年齡相對未獲救的要年輕不少.

第十一招:數據透視表

透視表在很多數據分析裏面都有,比如常見的excel裏面,pandas也提供了類似的功能.

根據一個或者多個鍵對數據進行聚合,我們用透視表也能做出類似上面的功能,比groupby還要強大.

df.pivot_table(columns=['性別'],

index=['是否獲救','船艙等級'],

values='年齡',

aggfunc={'年齡':[np.mean,min,max]})

技術分享圖片


看完上面的11招,加上前面的(18招,小白必看的數據分析招式|精選上篇),學會這些招數基本上可以算是入門數據分析了。

當然如果需要對數據分析進行系統的學習,還需要掌握很多其他的知識,如有不同見解,我在評論去等著你。

技術分享圖片

高手如何做數據分析?這11招是你應該具備的技能