SQL是必學(xué)的嗎?數(shù)據(jù)科學(xué)家的技能樹(shù)該怎么點(diǎn)?
本文轉(zhuǎn)載自公眾號(hào)“讀芯術(shù)”(ID:AI_Discovery)。
一間屋子10個(gè)人,可能其中5位數(shù)據(jù)科學(xué)家都表示需要結(jié)構(gòu)化查詢語(yǔ)言(SQL)才能工作,另一半人則表示還有其他方法可以處理數(shù)據(jù)。
作為一名數(shù)據(jù)科學(xué)家,你使用什么方法?你還有其它方法嗎?數(shù)據(jù)科學(xué)家必須要會(huì)使用SQL嗎?本文將討論SQL在數(shù)據(jù)科學(xué)中的作用,以及結(jié)構(gòu)化查詢語(yǔ)言(SQL)的替代方法。
SQL
是否需要了解SQL具體取決于個(gè)人所屬公司和數(shù)據(jù)科學(xué)團(tuán)隊(duì)。有些團(tuán)隊(duì)有數(shù)位數(shù)據(jù)工程師和數(shù)據(jù)分析師以及機(jī)器學(xué)習(xí)工程師,而有些團(tuán)隊(duì)則只有一位數(shù)據(jù)科學(xué)家。所以數(shù)據(jù)科學(xué)家是否需要了解SQL,你心中自有答案。
但是,討論一下是否需要了解SOL的原因,以及不需要SOL的時(shí)機(jī)是頗為有趣且十分重要,討論這個(gè)問(wèn)題也有助于即將入職的數(shù)據(jù)科學(xué)家了解工作期望。以下是我使用SQL的原因:
- 使用SQL查詢表格以獲得有用的數(shù)據(jù)集
- 保持自主感(盡管也需要幫助)
- 在現(xiàn)有的SQL查詢中隨時(shí)發(fā)現(xiàn)和創(chuàng)建新功能
盡管數(shù)據(jù)科學(xué)可以看作是只專注于Python和R以及復(fù)雜機(jī)器學(xué)習(xí)算法的工作,但如果不充分利用SQL的優(yōu)勢(shì),一個(gè)團(tuán)隊(duì)可能很難執(zhí)行數(shù)據(jù)科學(xué)運(yùn)算進(jìn)程。不過(guò),有時(shí)SQL并不是必需的,這取決于個(gè)人在數(shù)據(jù)科學(xué)領(lǐng)域的具體角色。
如果能從數(shù)據(jù)工程師或數(shù)據(jù)分析師那里獲得一些幫助,便可以參考其他替代方法。此外,當(dāng)SQL查詢功能完全不符合專業(yè)時(shí)也不需要SQL,因?yàn)榇藭r(shí)專注點(diǎn)在于數(shù)據(jù)科學(xué)模型開(kāi)發(fā),類似于在已獲取的數(shù)據(jù)上相互測(cè)試各種機(jī)器學(xué)習(xí)算法。
替代方法
從數(shù)據(jù)分析師或數(shù)據(jù)工程師處獲取數(shù)據(jù)集后,對(duì)數(shù)據(jù)集的下一步改進(jìn)就是創(chuàng)建新功能要素,而不只是直接從數(shù)據(jù)表中獲取字段。例如,如果數(shù)據(jù)集中有10個(gè)字段,則可以開(kāi)發(fā)幾個(gè)全新指標(biāo)作為字段,而不是通過(guò)計(jì)算第1列和第2列來(lái)直接創(chuàng)建新的第11列。除了SQL以外,另一個(gè)比較容易進(jìn)行此計(jì)算的工具是pandas。充分理由顯示,數(shù)據(jù)分析師和數(shù)據(jù)科學(xué)家已廣泛使用該庫(kù)。
使用pandas,能夠快速執(zhí)行復(fù)雜計(jì)算,并且只需一行代碼。有時(shí)很難使用SQL計(jì)算數(shù)據(jù),因?yàn)樗谝曈X(jué)上呈多行布局(僅為個(gè)人看法)。
以下是一些常用的pandas 數(shù)據(jù)框操作,旨在方便化數(shù)據(jù)集特征工程運(yùn)算。
- * groupby* items* loc* iloc* iteritems*keys* iterrows* query (this operation is quite similar to SQL quering, Ihighly recommend)* aggregate* corr* mean, median, min, and max* quantile*rank* sum* std* var* append* merge* join* sort_values* isnull* notna*between_time
大量操作都可以應(yīng)用到pandas 數(shù)據(jù)框架中。個(gè)人最喜歡的操作:
- 分組(Groupby)——對(duì)數(shù)據(jù)進(jìn)行分組,并對(duì)所述組執(zhí)行進(jìn)一步的操作。
- 查詢(query)——一種類似SQL的查詢方式,但在個(gè)人的數(shù)據(jù)框架中。
圖源:unsplash
個(gè)人認(rèn)為,計(jì)算全新的字段或指標(biāo)更容易,這些字段或指標(biāo)最終將用于個(gè)人pandas數(shù)據(jù)科學(xué)模型。不過(guò),有人偏愛(ài)只在SQL中執(zhí)行計(jì)算。對(duì)我來(lái)說(shuō),使用SQL的好處是我不必一次性添加所有新特性(查詢時(shí)間過(guò)長(zhǎng)),這樣當(dāng)我想添加一個(gè)新特性時(shí),操作就非常簡(jiǎn)單有效。
數(shù)據(jù)科學(xué)家需要了解SQL嗎?答案不是絕對(duì)的。這取決于公司、團(tuán)隊(duì),有時(shí)還取決于個(gè)人偏好。
使用SQL查詢,可以使用戶受益匪淺,所以如果你還不了解SQL,可以學(xué)習(xí)其使用方法。如果你偏愛(ài)類似pandas的替代方法,你可能是龐大數(shù)據(jù)科學(xué)團(tuán)隊(duì)中的一員。
一些數(shù)據(jù)科學(xué)家同時(shí)使用SQL和Python來(lái)為模型創(chuàng)建最終的數(shù)據(jù)集。pandas最獨(dú)特的地方在于它有一個(gè)類似于SQL的查詢操作,用戶可以在pandas數(shù)據(jù)框中綜合使用SQL和Python。所以,想好你自己的解決方案了嗎?