成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

干貨!做數據分析應該掌握的5個SQL數據清洗方法

新聞 前端
日常工作中,分析師會接到一些專項分析的需求,首先會搜索腦中的分析體系,根據業務需求構建相應的分析模型(不只是機器學習模型),根據模型填充相應維度表,這些維度特征表能夠被使用的前提是假設已經清洗干凈了。

日常工作中,分析師會接到一些專項分析的需求,首先會搜索腦中的分析體系,根據業務需求構建相應的分析模型(不只是機器學習模型),根據模型填充相應維度表,這些維度特征表能夠被使用的前提是假設已經清洗干凈了。

但真正的原始表是混亂且包含了很多無用的冗余特征,所以能夠根據原始數據清洗出相對干凈的特征表就很重要。

前兩天在Towards Data Science上看到一篇文章,講的是用Pandas做數據清洗,作者將常用的清洗邏輯封裝成了一個個的清洗函數。

https://towardsdatascience.com/the-simple-yet-practical-data-cleaning-codes-ad27c4ce0a38

而公司的業務數據一般存儲在數據倉庫里面,數據量很大,這時候用Pandas處理是不大方便的,更多時候用的是HiveSQL和MySql做處理。

基于此,我拓展了部分內容,寫了一個常用數據清洗的SQL對比版,腳本很簡單,重點是這些清洗場景和邏輯,大綱如圖:

干貨!做數據分析應該掌握的5個SQL數據清洗方法

刪除指定列、重命名列

場景

多數情況并不是底表的所有特征(列)都對分析有用,這個時候就只需要抽取部分列,對于不用的那些列,可以刪除。

重命名列可以避免有些列的命名過于冗長(比如Case When 語句),且有時候會根據不同的業務指標需求來命名。

  1. 刪除列Python版: 
  2. df.drop(col_names, axis=1, inplace=True) 
  3.  
  4. 刪除列SQL版: 
  5. 1、select col_names from Table_Name 
  6.  
  7. 2、alter table tableName drop column columnName 
  8.  
  9. 重命名列Python版: 
  10. df.rename(index={'row1':'A'},columns ={'col1':'B'}) 
  11.  
  12. 重命名列SQL版: 
  13. select col_names as col_name_B from Table_Name 

因為一般情況下是沒有刪除的權限(可以構建臨時表),反向思考,刪除的另一個邏輯是選定指定列(Select)。

重復值、缺失值處理

場景:比如某網站今天來了1000個人訪問,但一個人一天中可以訪問多次,那數據庫中會記錄用戶訪問的多條記錄,而這時候如果想要找到今天訪問這個網站的1000個人的ID并根據此做用戶調研,需要去掉重復值給業務方去回訪。

缺失值:NULL做運算邏輯時,返回的結果還是NULL,這可能就會出現一些腳本運行正確,但結果不對的BUG,此時需要將NULL值填充為指定值。

  1. 重復值處理Python版: 
  2. df.drop_duplicates() 
  3.  
  4. 重復值處理SQL版: 
  5. 1、select distinct col_name from Table_Name 
  6.  
  7. 2、select col_name from Table_Name group bycol_name 
  8.  
  9. 缺失值處理Python版: 
  10. df.fillna(value = 0
  11.  
  12. df1.combine_first(df2) 
  13.  
  14. 缺失值處理SQL版: 
  15. 1、select ifnull(col_name,0) value from Table_Name 
  16.  
  17. 2、select coalesce(col_name,col_name_A,0) as value from Table_Name 
  18.  
  19. 3、select case when col_name is null then 0 else col_name end from Table_Name 

替換字符串空格、清洗*%@等垃圾字符、字符串拼接、分隔等字符串處理

場景:理解用戶行為的重要一項是去假設用戶的心理,這會用到用戶的反饋意見或一些用研的文本數據,這些文本數據一般會以字符串的形式存儲在數據庫中,但用戶反饋的這些文本一般都會很亂,所以需要從這些臟亂的字符串中提取有用信息,就會需要用到文字符串處理函數。

  1. 字符串處理Python版: 
  2. ## 1、空格處理 
  3. df[col_name] = df[col_name].str.lstrip()  
  4.  
  5. ## 2、*%d等垃圾符處理 
  6. df[col_name].replace(' &#.*''', regex=True, inplace=True) 
  7.  
  8. ## 3、字符串分割 
  9. df[col_name].str.split('分割符'
  10.  
  11. ## 4、字符串拼接 
  12. df[col_name].str.cat() 
  13.  
  14. 字符串處理SQL版: 
  15. ## 1、空格處理 
  16. select ltrim(col_name) from Table_name  
  17.  
  18. ## 2、*%d等垃圾符處理 
  19. select regexp_replace(col_name,正則表達式) from Table_name  
  20.  
  21. ## 3、字符串分割 
  22. select split(col_name,'分割符') from Table_name  
  23.  
  24. ## 4、字符串拼接 
  25. select concat_ws(col_name,'拼接符') from Table_name  

合并處理

場景:有時候你需要的特征存儲在不同的表里,為便于清洗理解和操作,需要按照某些字段對這些表的數據進行合并組合成一張新的表,這樣就會用到連接等方法。

  1. 合并處理Python版: 
  2. 左右合并 
  3. 1、pd.merge(left, right, how='inner', on=None, left_on=None, right_on=None, 
  4.          left_index=False, right_index=False, sort=True, 
  5.          suffixes=('_x''_y'), copy=True, indicator=False, 
  6.          validate=None) 
  7. 2、pd.concat([df1,df2]) 
  8. 上下合并 
  9. df1.append(df2, ignore_index=True, sort=False) 
  10. 合并處理SQL版: 
  11. 左右合并 
  12. select A.*,B.* from Table_a A join Table_b B on A.id = B.id 
  13. select A.* from Table_a A left join Table_b B on A.id = B.id 
  14. 上下合并 
  15. ## Union:對兩個結果集進行并集操作,不包括重復行,同時進行默認規則的排序; 
  16. ## Union All:對兩個結果集進行并集操作,包括重復行,不進行排序; 
  17. select A.* from Table_a A  
  18. union 
  19. elect B.* from Table_b B  
  20.  
  21. # Union 因為會將各查詢子集的記錄做比較,故比起Union All ,通常速度都會慢上許多。一般來說,如果使用Union All能滿足要求的話,務必使用Union All。 

 

窗口函數的分組排序

場景:假如現在你是某寶的分析師,要分析今年不同店的不同品類銷售量情況,需要找到那些銷量較好的品類,并在第二年中加大曝光,這個時候你就需要將不同店里不同品類進行分組,并且按銷量進行排序,以便查找到每家店銷售較好的品類。

干貨!做數據分析應該掌握的5個SQL數據清洗方法

Demo數據如上,一共a,b,c三家店鋪,賣了不同品類商品,銷量對應如上,要找到每家店賣的最多的商品。

  1. 窗口分組Python版: 
  2. df['Rank'] = df.groupby(by=['Sale_store'])['Sale_Num'].transform(lambda x: x.rank(ascending=False)) 
  3. 窗口分組SQL版: 
  4. select  
  5.   *  
  6. from 
  7.   ( 
  8.   Select  
  9.     *, 
  10.     row_number() over(partition by Sale_store order by Sale_Num desc) rk 
  11.   from  
  12.     table_name 
  13.   ) b where b.rk = 1 
干貨!做數據分析應該掌握的5個SQL數據清洗方法

可以很清晰的看到,a店鋪賣的最火的是蔬菜,c店鋪賣的最火的是雞肉,b店鋪?

嗯,b店鋪很不錯,賣了888份寶器狗。

總結,上面的內容核心是掌握這些數據清洗的應用場景,這些場景幾乎可以涵蓋90%的數據分析前數據清洗的內容。而對于分析模型來說,SQL和Python都是工具,如果熟悉SQL,是能夠更快速、方便的將特征清洗用SQL實現。

 

責任編輯:張燕妮 來源: 今日頭條
相關推薦

2020-10-29 15:15:09

SQL數據清洗Python

2019-09-11 14:40:44

數據清洗數據分析數據類型

2020-10-25 08:56:31

數據分析數據大數據

2016-05-17 10:37:46

2017-06-28 14:54:17

大數據數據分析

2019-10-14 15:57:36

數據分析多維度二八法

2019-01-16 18:39:24

數據開發模型

2020-04-30 09:17:28

數據分析電商分析思維

2021-04-19 14:18:17

數據分析互聯網運營大數據

2020-07-26 19:19:46

SQL數據庫工具

2020-07-07 14:35:41

Python數據分析命令

2025-03-21 08:20:00

數據清洗Python編程

2015-09-08 10:05:50

數據分析素質優秀

2020-05-15 15:09:51

R語言數據分析

2019-11-11 22:42:51

數據分析企業管理數據

2020-09-28 15:51:23

數據分析技術IT

2021-03-16 11:45:15

大數據數據分析數據經典模型

2015-09-25 10:31:52

數據分析r

2016-09-30 01:04:45

數據分析數據

2020-11-29 16:52:13

數據庫SQL數據分析
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 热99视频| www.亚洲一区 | 伊人激情综合网 | av网站在线看| 中文字幕欧美在线观看 | 国产精品视频一区二区三 | www中文字幕 | 色影视| 午夜a√ | 国产午夜精品一区二区三区嫩草 | 九九热这里 | 黄色综合 | 丁香婷婷久久久综合精品国产 | 欧美 日韩 国产 成人 在线 | 一级片在线免费看 | 中文字幕在线一区 | 国产精品国产a | 黄视频在线网站 | 欧美极品在线观看 | 日韩超碰| 久久久精| 色欧美片视频在线观看 | 在线观看亚洲 | 91午夜在线| 日本久久一区二区三区 | 日韩二三区 | 国产精品国产三级国产aⅴ中文 | 亚洲人成人网 | 一区二区三区视频在线观看 | 成人免费观看男女羞羞视频 | 视频在线亚洲 | 天天综合网7799精品 | 久草综合在线 | 亚洲va欧美va天堂v国产综合 | 国产一区不卡在线观看 | 一级片在线播放 | 亚洲一区二区在线视频 | 性色av一区 | 999免费视频 | 欧美不卡在线 | 欧美日韩国产一区二区三区 |