Python map, apply, transform彙總(打標籤法初階到高階)

引言

  根據數據的某列進行打標籤操作在數據分析領域極度常用,對於一些較爲複雜的打標籤方法,Python 與 SQL 都能很好的實現,這篇針對 Python,主要用到 map,apply 與 transform 等函數,從初階到高階,體會方法的異同優劣。

  與此同時,SQL 的打標籤方法除了在業務上常用,也是一個面試的小考點,具體見以下兩篇文章。

SQL 面試經典 & 業務實戰(一)

https://blog.csdn.net/weixin_43329700/article/details/104118169

SQL 面試經典 & 業務實戰(三)

https://blog.csdn.net/weixin_43329700/article/details/104207897


業務背景 & 實現效果

針對背景某地區房價數據進行數據分析過程中的打標籤操作,增加可讀性的同時也可以根據源數據集來增加一些本來沒有的變量,並對並生成可能會對模型精度有提升效果的布爾變量。如生成如下新的一列變量

  • 生成一列每個地區各自的房價平均值,並與源數據的房價對比,看該地區的某一房價是在平均值之上還是平均值之下
  • 增加標籤:每一個客戶的瀏覽時長是在平均值之上(1)還是之下(0),從而探究之上的是不是會更有可能購買產品,之上購買的概率會大多少?

口說無憑,看一下效果圖即可

源數據(只展示一小部分,網絡爬蟲獲取)
在這裏插入圖片描述

map

需求:將地區列 dist 的拼音全部轉換成對應的中文

方法1:最 low 最強硬的 replace 法
方法2
老司機 map 字典映射法,關於 map 的方法以及其他相關方法就不一一述說了,只是針對打標籤而言。
在這裏插入圖片描述

apply

  剛剛的 map 針對的是 “靜態數據”,即爲名義變量,“動態數據” 如 roomnum 房間數量列則爲數值變量,既然是數值變量,那數目肯定非常多,像 AREA 面積列,分類後的唯一固定值太多了,不像地區那樣就那麼六個,這時候就可以祭出 apply 了。同樣,作爲必會且極度出名的 apply,使用方法也無須多言,這裏依然只是針對打標籤而言。

需求:給房間數目 roomnum 分層
  • 1 ~ 2 個:少(0)
  • 3 個或以上:多(1)

在這裏插入圖片描述
同理,添加與平均房價相比的 price_bool 變量亦如此,不多贅述

apply 作用機理
在這裏插入圖片描述


重點來了!

  與平均房價相比的 price_bool 變量的添加難度還不大,那 根據地區劃分 的平均房價變量呢,即每個地區某一房價與該地區的平均房價相比,聽起來有點拗口。下面來拆解流程

探索性數據分析查看一下各地區的平均房價分佈情況
在這裏插入圖片描述
  由 boxenplot 可以看出不同地區房價的中位數和分佈情況的差異還是比較大的,上述看似簡單的圖其實包含了不少可視化的設置與細節,後續將會繼續輸出大量實用的可視化的文章,可以直接關注。

  • 圖例設置,字體細節
  • 圖片整體風格,底色可調
  • 背景網格,增強可讀性
  • 左上右邊框隱去,視野更加聚焦於圖形
  • 底軸 x 輕微向下與偏移,整潔不臃腫

  上述圖形的代碼和設置均可以封裝在自寫庫中,用到時只需引入自己寫的圖形庫,一行短代碼,一個小函數即可。

  所以如果能夠分別求出每個地區的房價的平均值,再與該地區的源房價進行比較,那就完美了。

法1:經驗者的 to_dict 構造字典配合 map 映射法

在這裏插入圖片描述
groupby 作用機理
在這裏插入圖片描述
在這裏插入圖片描述

還有沒有更能體現實力的方法呢?—— transform
在這裏插入圖片描述
transform 作用機理
在這裏插入圖片描述

後記

  後續有更多的 Python 數據分析(清洗評估及各種操作),可視化,網絡爬蟲,SQL 面試,商業實戰,Excel 實戰,Word 論文排版,心理學等,助力全面發展。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章