色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

常用數據清洗的SQL對比版

人工智能與大數據技術 ? 來源:數據管道 ? 作者:寶器 ? 2022-09-13 10:32 ? 次閱讀

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

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

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

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

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

adc1ad48-3305-11ed-ba43-dac502259ad0.png

01 刪除指定列、重命名列

場景

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

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

刪除列Python版:
df.drop(col_names,axis=1,inplace=True)

刪除列SQL版:
1、selectcol_namesfromTable_Name

2、altertabletableNamedropcolumncolumnName

重命名列Python版:
df.rename(index={'row1':'A'},columns={'col1':'B'})

重命名列SQL版:
selectcol_namesascol_name_BfromTable_Name

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

02 重復值、缺失值處理

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

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

重復值處理Python版:
df.drop_duplicates()

重復值處理SQL版:
1、selectdistinctcol_namefromTable_Name

2、selectcol_namefromTable_Namegroupbycol_name

缺失值處理Python版:
df.fillna(value=0)

df1.combine_first(df2)

缺失值處理SQL版:
1、selectifnull(col_name,0)valuefromTable_Name

2、selectcoalesce(col_name,col_name_A,0)asvaluefromTable_Name

3、selectcasewhencol_nameisnullthen0elsecol_nameendfromTable_Name

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

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

字符串處理Python版:
##1、空格處理
df[col_name]=df[col_name].str.lstrip()

##2、*%d等垃圾符處理
df[col_name].replace('&#.*','',regex=True,inplace=True)

##3、字符串分割
df[col_name].str.split('分割符')

##4、字符串拼接
df[col_name].str.cat()

字符串處理SQL版:
##1、空格處理
selectltrim(col_name)fromTable_name

##2、*%d等垃圾符處理
selectregexp_replace(col_name,正則表達式)fromTable_name

##3、字符串分割
selectsplit(col_name,'分割符')fromTable_name

##4、字符串拼接
selectconcat_ws(col_name,'拼接符')fromTable_name

04 合并處理

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

合并處理Python版:

左右合并
1、pd.merge(left,right,how='inner',on=None,left_on=None,right_on=None,
left_index=False,right_index=False,sort=True,
suffixes=('_x','_y'),copy=True,indicator=False,
validate=None)
2、pd.concat([df1,df2])

上下合并
df1.append(df2,ignore_index=True,sort=False)

合并處理SQL版:

左右合并
selectA.*,B.*fromTable_aAjoinTable_bBonA.id=B.id

selectA.*fromTable_aAleftjoinTable_bBonA.id=B.id

上下合并
## Union:對兩個結果集進行并集操作,不包括重復行,同時進行默認規則的排序;
## Union All:對兩個結果集進行并集操作,包括重復行,不進行排序;

selectA.*fromTable_aA
union
selectB.*fromTable_bB

# Union 因為會將各查詢子集的記錄做比較,故比起Union All ,通常速度都會慢上許多。一般來說,如果使用Union All能滿足要求的話,務必使用Union All。
05、窗口函數的分組排序

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

addca792-3305-11ed-ba43-dac502259ad0.png

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

df['Rank']=df.groupby(by=['Sale_store'])['Sale_Num'].transform(lambdax:x.rank(ascending=False))

窗口分組SQL版:

select
*
from
(
Select
*,
row_number()over(partitionbySale_storeorderbySale_Numdesc)rk
from
table_name
)bwhereb.rk=1

ae012900-3305-11ed-ba43-dac502259ad0.png

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

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

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

所以,請別張口閉口數據科學,你竟SQL都不會。




審核編輯:劉清

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • SQL
    SQL
    +關注

    關注

    1

    文章

    768

    瀏覽量

    44177
  • MySQL
    +關注

    關注

    1

    文章

    817

    瀏覽量

    26632
  • 機器學習
    +關注

    關注

    66

    文章

    8425

    瀏覽量

    132776
  • python
    +關注

    關注

    56

    文章

    4800

    瀏覽量

    84823

原文標題:5大SQL數據清洗方法!

文章出處:【微信號:TheBigData1024,微信公眾號:人工智能與大數據技術】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    通過Skyvia Connect SQL終端節點訪問任何數據

    通過 Skyvia Connect SQL 終端節點訪問任何數據 ? 通過 Skyvia Connect SQL 終端節點訪問任何數據ADO.NET
    的頭像 發表于 01-02 09:31 ?81次閱讀
    通過Skyvia Connect <b class='flag-5'>SQL</b>終端節點訪問任何<b class='flag-5'>數據</b>

    如何使用SQL進行數據分析

    使用SQL進行數據分析是一個強大且靈活的過程,它涉及從數據庫中提取、清洗、轉換和聚合數據,以便進行進一步的分析和洞察。 1.
    的頭像 發表于 11-19 10:26 ?331次閱讀

    常用SQL函數及其用法

    SQL(Structured Query Language)是一種用于管理和操作關系數據庫的編程語言。SQL 提供了豐富的函數庫,用于數據檢索、數據
    的頭像 發表于 11-19 10:18 ?342次閱讀

    SQL與NoSQL的區別

    在信息技術領域,數據庫是存儲和管理數據的核心組件。隨著互聯網的發展和大數據時代的到來,對數據庫的需求也在不斷變化。SQL和NoSQL作為兩種
    的頭像 發表于 11-19 10:15 ?197次閱讀

    數據從業者必知必會的Hive SQL調優技巧

    數據從業者必知必會的Hive SQL調優技巧 摘要 :在大數據領域中,Hive SQL被廣泛應用于數據倉庫的
    的頭像 發表于 09-24 13:30 ?287次閱讀

    數據數據恢復—SQL Server數據庫出現823錯誤的數據恢復案例

    SQL Server數據庫故障: SQL Server附加數據庫出現錯誤823,附加數據庫失敗。數據
    的頭像 發表于 09-20 11:46 ?374次閱讀
    <b class='flag-5'>數據</b>庫<b class='flag-5'>數據</b>恢復—<b class='flag-5'>SQL</b> Server<b class='flag-5'>數據</b>庫出現823錯誤的<b class='flag-5'>數據</b>恢復案例

    恒訊科技分析:sql數據庫怎么用?

    SQL數據庫的使用通常包括以下幾個基本步驟: 1、選擇數據庫系統: 選擇適合您需求的SQL數據庫系統,如MySQL、PostgreSQL、M
    的頭像 發表于 07-15 14:40 ?377次閱讀

    數據數據恢復—SQL Server數據庫所在分區空間不足報錯的數據恢復案例

    SQL Server數據數據恢復環境: 某品牌服務器存儲中有兩組raid5磁盤陣列。操作系統層面跑著SQL Server數據庫,
    的頭像 發表于 07-10 13:54 ?526次閱讀

    什么是 Flink SQL 解決不了的問題?

    簡介 在實時數據開發過程中,大家經常會用 Flink SQL 或者 Flink DataStream API 來做數據加工。通常情況下選用2者都能加工出想要的數據,但是總會有 Flin
    的頭像 發表于 07-09 20:50 ?344次閱讀

    超聲波清洗常用的頻率及清洗特點

    超聲波清洗機是一種利用超聲波振動原理進行清洗的設備,廣泛應用于工業、醫療、實驗室等領域。不同的超聲波清洗機使用的頻率不同,而頻率的不同也會影響到清洗的效果和特點。本文將對超聲波
    的頭像 發表于 04-15 14:14 ?3210次閱讀
    超聲波<b class='flag-5'>清洗</b>機<b class='flag-5'>常用</b>的頻率及<b class='flag-5'>清洗</b>特點

    火電廠凝汽器不停車在線清洗與凝汽器停車清洗八種技術對比分析

    通過凝汽器結垢對發電機組運行安全性和經濟性的影響分析,以及對火電行業現有凝汽器清洗技術的優劣對比介紹,并通過火電廠凝汽器在線化學清洗技術案例,對清洗前后凝汽器運行性能
    的頭像 發表于 03-21 19:57 ?498次閱讀
    火電廠凝汽器不停車在線<b class='flag-5'>清洗</b>與凝汽器停車<b class='flag-5'>清洗</b>八種技術<b class='flag-5'>對比</b>分析

    SQL全外連接剖析

    SQL中的全外連接是什么? 在SQL中,FULLOUTERJOIN組合左外連接和右外連接的結果,并返回連接子句兩側表中的所有(匹配或不匹配)行。接下面sojson給大家詳細講解。 ? 圖解:SQL
    的頭像 發表于 03-19 18:28 ?2256次閱讀
    <b class='flag-5'>SQL</b>全外連接剖析

    超聲波清洗機的4大清洗特點與清洗原理

    一、超聲波清洗機的4大清洗特點 1. 高效性:超聲波清洗機利用高頻振動產生的微小氣泡在物體表面進行沖擊和剝離,從而實現對物體表面的高效清洗。相比傳統的手工
    的頭像 發表于 03-04 09:45 ?1364次閱讀
    超聲波<b class='flag-5'>清洗</b>機的4大<b class='flag-5'>清洗</b>特點與<b class='flag-5'>清洗</b>原理

    為什么需要監控SQL服務器?

    如今,大多數桌面、移動、云、物聯網和其他應用程序都嚴重依賴數據庫。為了支持這些,SQL Server部署、容量和工作負載不斷增長。當這種情況發生時,企業需要確保數據系統滿足所需的性能要求。 S
    的頭像 發表于 02-19 17:19 ?489次閱讀

    數據治理為什么要清洗數據

    治理成為了當務之急。而數據清洗作為數據治理的重要環節之一,更是不可或缺的一部分。 數據清洗是指在數據
    的頭像 發表于 01-23 08:55 ?1064次閱讀
    主站蜘蛛池模板: 伊人色综合久久天天| 把腿张开再深点好爽宝贝| 抽插嫩B乳无码漫| 色欲天天婬色婬香影院| 国产毛A片啊久久久久久A| 亚洲免费中文| 麻豆国产人妻欲求不满| 成人免费小视频| 亚洲精品久久7777777| 精品欧美18videosex欧美| 日韩免费精品视频| 亚洲人成77777在线视频| 伦理片92伦理午夜| 成人五级毛片免费播放| 亚洲AV福利天堂一区二区三| 老师的快感电影完整版| 俄罗斯美幼| 在线观看国产小视频| 肉肉高潮液体高干文H| 久久国产免费观看精品1| 饱满奶大30p| 夜色88V精品国产亚洲AV| 日本工口生肉全彩大全| 久久成人伊人欧洲精品AV| 成人小视频免费在线观看| 亚洲中字幕永久在线观看| 日韩 国产 欧美视频二区| 久久成人无码国产免费播放| 高h 纯肉文| 99re久久精品在线播放| 亚洲高清在线视频| 日本美女阴道| 蜜桃成熟时2在线观看完整版hd| 国产精品99久久久久久宅男AV| 4438全国免费观看| 亚洲国产第一| 涩涩游戏盒| 免费可以看黄的视频s色| 黑人巨大两根一起挤进欧美| 夫妻主vk| WWW亚洲精品久久久乳|