日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網(wǎng)為廣大站長提供免費收錄網(wǎng)站服務(wù),提交前請做好本站友鏈:【 網(wǎng)站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(wù)(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

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

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

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

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

而公司的業(yè)務(wù)數(shù)據(jù)一般存儲在數(shù)據(jù)倉庫里面,數(shù)據(jù)量很大,這時候用Pandas處理是不大方便的,更多時候用的是HiveSQL和MySQL做處理。

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

干貨!做數(shù)據(jù)分析應(yīng)該掌握的5個SQL數(shù)據(jù)清洗方法

 

刪除指定列、重命名列

場景

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

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

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

刪除列SQL版:
1、select col_names from Table_Name

2、alter table tableName drop column columnName

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

重命名列SQL版:
select col_names as col_name_B from Table_Name

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

重復(fù)值、缺失值處理

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

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

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

重復(fù)值處理SQL版:
1、select distinct col_name from Table_Name

2、select col_name from Table_Name group bycol_name

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

df1.combine_first(df2)

缺失值處理SQL版:
1、select ifnull(col_name,0) value from Table_Name

2、select coalesce(col_name,col_name_A,0) as value from Table_Name

3、select case when col_name is null then 0 else col_name end from Table_Name

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

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

字符串處理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、空格處理
select ltrim(col_name) from Table_name 

## 2、*%d等垃圾符處理
select regexp_replace(col_name,正則表達式) from Table_name 

## 3、字符串分割
select split(col_name,'分割符') from Table_name 

## 4、字符串拼接
select concat_ws(col_name,'拼接符') from Table_name 

合并處理

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

合并處理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版:
左右合并
select A.*,B.* from Table_a A join Table_b B on A.id = B.id
select A.* from Table_a A left join Table_b B on A.id = B.id
上下合并
## Union:對兩個結(jié)果集進行并集操作,不包括重復(fù)行,同時進行默認(rèn)規(guī)則的排序;
## Union All:對兩個結(jié)果集進行并集操作,包括重復(fù)行,不進行排序;
select A.* from Table_a A 
union
elect B.* from Table_b B 

# Union 因為會將各查詢子集的記錄做比較,故比起Union All ,通常速度都會慢上許多。一般來說,如果使用Union All能滿足要求的話,務(wù)必使用Union All。 

窗口函數(shù)的分組排序

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

干貨!做數(shù)據(jù)分析應(yīng)該掌握的5個SQL數(shù)據(jù)清洗方法

 

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

窗口分組Python版:
df['Rank'] = df.groupby(by=['Sale_store'])['Sale_Num'].transform(lambda x: x.rank(ascending=False))
窗口分組SQL版:
select 
  * 
from
  (
  Select 
    *,
    row_number() over(partition by Sale_store order by Sale_Num desc) rk
  from 
    table_name
  ) b where b.rk = 1
干貨!做數(shù)據(jù)分析應(yīng)該掌握的5個SQL數(shù)據(jù)清洗方法

 

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

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

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

文源:數(shù)據(jù)管道 作者:寶器

分享到:
標(biāo)簽:清洗 數(shù)據(jù)
用戶無頭像

網(wǎng)友整理

注冊時間:

網(wǎng)站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨大挑戰(zhàn)2018-06-03

數(shù)獨一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學(xué)四六

運動步數(shù)有氧達人2018-06-03

記錄運動步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績評定2018-06-03

通用課目體育訓(xùn)練成績評定