接續上篇文章,用資料分析的方法分析了資料科學家所需具備的跨領域知識、大多的工作內容及程度,以及所需的的程式技能,如果還沒看過的話可以點擊下方連結!
此篇文章,我們將繼續和大家分享要運用那些資料才能成為資料科學家,那麼我們就開始吧~
一、如果要深入資料科學,可以透過什麼資源來了解呢?
市面上有很多資料科學的相關課程與資源,但是該選擇哪一個呢? 別擔心! 我們依照資料科學家們的經驗,來為您做精準推薦!
我們將使用資料集中的Q12. 喜愛資源及Q13.喜愛課程來進行分析,以下分別為Q12、Q13的題目設定:
Q12. Who/what are your favorite media sources that report on data science topics? (Select all that apply) — Selected Choice
Q13. On which platforms have you begun or completed data science courses? (Select all that apply) — Selected Choice
1. 喜愛資源資料預處理
我們繼續使用相同的方法計算Q12. 喜愛資源複選題的選擇數量 (如下圖一)。
# 取出Q12的資料
lst = []
for i in multiple_choice.columns:
if i[:3] == 'Q12':
lst.append(i)
source = multiple_choice[lst].iloc[1:,]# 取出Q12多選題的選項
choose = multiple_choice[lst].iloc[0].apply(lambda x: ''.join(x.split('-')[2:]).replace(' ',''))# 統計各選項選擇數量
source_df = pd.DataFrame()
source_df['choice'] = list(choose.values)source_df['value'] = list(map(lambda i: len(source.iloc[:,i].dropna()), list(range(source.shape[1]))))source_df
2. 喜愛課程資料預處理
還有Q13. 喜愛課程複選題的選擇數量的資料整理 (如下圖二)。
# 取出Q13的資料
lst = []
for i in multiple_choice.columns:
if i[:3] == 'Q13':
lst.append(i)
course = multiple_choice[lst].iloc[1:,]# 取出Q13多選題的選項
choose = multiple_choice[lst].iloc[0].apply(lambda x: ''.join(x.split('-')[2:]).replace(' ',''))# 統計各選項選擇數量
course_df = pd.DataFrame()
course_df['choice'] = list(choose.values)course_df['value'] = list(map(lambda i: len(course.iloc[:,i].dropna()), list(range(course.shape[1]))))course_df['choice'] = course_df['choice'].replace('KaggleCourses(i.e.KaggleLearn)','KaggleCourses')course_df['choice'] = course_df['choice'].replace('UniversityCourses(resultinginauniversitydegree)','UniversityCourses')course_df
3. 喜愛資源資料視覺化
接著一樣使用plotly套件,這次使用圓餅圖來呈現(如下圖三)。
# 圖表繪製
import plotly.express as px
fig = px.pie(source_df.iloc[:-3,], values='value', names='choice', title='Media Sources Selected',
color_discrete_sequence=px.colors.sequential.Sunsetdark)
fig.update_traces(textposition='inside')
fig.show()# 自動儲存
pyplt(fig, filename ='Media Sources Selected.html')
4. 喜愛課程資料視覺化
使用一樣的方法繪製喜愛課程圓餅圖 (如下圖四)。
# 圖表繪製
import plotly.express as px
fig = px.pie(course_df.iloc[:-3,], values='value', names='choice',
title='Data Science Courses Selected',
color_discrete_sequence=px.colors.sequential.Mint)
fig.update_traces(textposition='inside', textinfo='percent+label')
fig.show()# 自動儲存
pyplt(fig, filename ='Data Science Courses Selected.html')
5. 分析
從以上兩個圓餅圖,可以得到最受喜愛的media sources前三名:
- Kaggle (forums, blog, social media, etc.)
- Blogs (TowardsDataScience, Medium, AnalyticsVidhya, KDnuggets, etc.)
- YouTube (CloudAIAdventures, SirajRaval, etc.)
Kaggle是一個資源豐富且非常容易上手的資料科學平台,可以找到許多結構完整、多元的資料集方便做使用,此外許多資料科學家會以notebook的方式呈現資料分析細節,非常適合初學者來做臨摹參考。
在Blogs的部分,以我自身的經驗非常推薦Medium平台,現在有許多臺灣或國外的資料從業人員在Medium上分享自己的資料分析經驗,同常這些文章撰寫的時間也在近幾年間,所以可以得到非常新的資訊!
Youtube上的資源也非常的充足,其中我最推薦的是台大李宏毅教授的機器學習課程! 有非常詳細且易懂的教學,非常適合初學者來入門。
此外,最受喜愛的data science courses前三名分別為:
此三個平台上都有豐富的資料科學課程,大家都可以點選上面的連結瀏覽一下,其中我自己觀看過Udemy的Machine learning A-Z課程,在Python及R的機器學習基礎上有很詳細的介紹,也推薦給大家。
來幫大家結論一下~
根據此份Kaggle資料集的分析結果,我們來逐一回答一開始提出的問題:
- 資料科學家主要工作內容有哪些?
分別為「分析並了解資料對產品或企業決策的影響、探索機器學習應用領域、改善現有的機器學習模型」簡單地來說,只要掌握好數理、資訊科學、應用領域三方面的技能,資料科學家的工作絕對難不倒你! - 資料科學家會使用哪種程式語言?
Python近乎完勝所有工作領域,因此會建議新手從Python開始學起。而各個程式語言的功能也有所不同,可以根據資料處理的需求來選擇最適合的工具。此外,也非常推薦學習R語言,在資料分析中的統計分析及視覺化上可以大大助您一臂之力! - 如果要深入資料科學,可以透過什麼資源來了解呢?
首先,我建議可以從Udemy的Machine learning A-Z課程來入門。在了解Python的基礎後,推薦觀看台大李宏毅教授的機器學習課程,也可以根據自己的需求或有興趣的領域,在Coursera、KaggleCourses或Udemy平台上選擇最適合的課程!
Plotly套件補充資訊!
簡單講解一下Plotly套件的五大特色:
- Dynamic & Interactive
- Open-source plotting library
- Supports over 40 unique chart types
- Covering a wide range of statistical, financial, geographic, scientific, and 3-dimensional use-cases
- Support for Python and R
Plotly在資料視覺化上是非常好的輔助工具,「動態繪圖」是它與其他繪圖套件最不同的地方,此外plotly可以繪製出各種不同的圖表,以下我們繼續使用Kaggle的資料集為例,視覺化分析資料科學家的薪水,來展示plotly的強大威力!
1. 資料預處理
取出我們所需的資料,分別為Q3.國籍、Q5.職業及Q10.薪水 (如下圖五)。
# 抓取Q3、Q5、Q5,並去除空值及符號
world_salary = multiple_choice[['Q3','Q5','Q10']].iloc[1:,:]
world_salary = world_salary.dropna()
world_salary['Q10'] = world_salary['Q10'].str.replace('$','', regex=False)
world_salary['Q10'] = world_salary['Q10'].str.replace(',','', regex=False)
world_salary
由於Q10.薪水蒐集的資料,是以「區間」來表示的,因此我們使用區間的中間值來代表 (如下圖六的 ‘salary’)。
# 薪水的上、下區間
world_salary['salary_lower_bound'] = pd.to_numeric(world_salary['Q10'].str.split('-', expand=True)[0], errors='coerce')world_salary['salary_upper_bound'] = pd.to_numeric(world_salary['Q10'].str.split('-', expand=True)[1], errors='coerce') + 1# 取上、下區間中間值
world_salary['salary'] = (world_salary['salary_upper_bound'] + world_salary['salary_lower_bound'])/2# 更改column names
world_salary.columns = ['country', 'job', 'salary_range', 'salary_lower_bound', 'salary_upper_bound', 'salary']world_salary
計算每個國家的資料科學家平均薪水,由於後續要和另一個dataframe合併,因此對幾個國家名稱的編碼做調整,如:’United States of America’ 改成 ’United States’ (下圖七)。
# 取出資料科學家的資料
world_salary_ds = world_salary[world_salary['job'] == 'Data Scientist']# 計算國家的平均薪水
country_salary_ds = pd.DataFrame(world_salary_ds.groupby('country')['salary'].mean().astype('int'))country_salary_ds = country_salary_ds.reset_index()
country_salary_ds = country_salary_ds.sort_values(by = 'salary', ascending = False).reset_index(drop = True)# 更改國家名稱
country_salary_ds['country'] = country_salary_ds['country'].str.replace('United States of America','United States')country_salary_ds['country'] = country_salary_ds['country'].str.replace('United Kingdom of Great Britain.*','United Kingdom')country_salary_ds['country'] = country_salary_ds['country'].str.replace('Iran, Islamic Republic.*','Iran')country_salary_ds['country'] = country_salary_ds['country'].str.replace('South Korea','Korea, Rep.')country_salary_ds['country'] = country_salary_ds['country'].str.replace('Republic of Korea','Korea, Dem. Rep.')country_salary_ds['country'] = country_salary_ds['country'].str.replace('Hong Kong (S.A.R.)','Hong Kong, China')country_salary_ds['country'] = country_salary_ds['country'].str.replace('Viet Nam','Vietnam')country_salary_ds.head(10)
將國家的country code也加入dataframe中,以做後續繪圖的參考 (如下圖八)。
#加入country code
import plotly.express as px
df = px.data.gapminder().query("year == 2007")[['country','continent','iso_alpha']]country_salary_merge_ds = pd.merge(country_salary_ds, df, on = 'country')# 將缺少的國家加入
country_salary_merge_ds = country_salary_merge_ds.append({'country':'Russia','salary':28000,'continent':'Europe','iso_alpha':'RUS'},ignore_index=True)country_salary_merge_ds = country_salary_merge_ds.append({'country':'Ukraine','salary':29102,'continent':'Europe','iso_alpha':'UKR'},ignore_index=True)country_salary_merge_ds = country_salary_merge_ds.append({'country':'Belarus','salary':27568,'continent':'Europe','iso_alpha':'BLR'},ignore_index=True)country_salary_merge_ds.head(10)
2. 資料視覺化
我們使用plotly套件,針對每個國家的資料科學家平均薪水,繪製出geo圖表。此圖使用圓圈大小以及顏色來比較平均薪水的高低,並且在世界地圖上標上此國家的資料科學家平均薪水比例 (如下影一)。
# 圖表繪製
import plotly.express as px
fig = px.scatter_geo(country_salary_merge_ds, locations="iso_alpha",
size="salary", color="salary", hover_name="country",
projection="natural earth",
title = 'Average Data Scientists Salary For Every Countries')
fig.show()# 自動儲存
pyplt(fig, filename ='Average Data Scientists Salary For Every Countries.html')
從上述我們所繪製的圖表中 (影一),可以體驗到plotly的動態圖表功能,我們可以簡單地使用滑鼠滾輪來放大縮小,或是使用鼠標來旋轉地圖,此外當鼠標移動到國家上,就能夠看見這個國家的平均薪資。
藉由實際操作程式碼來繪製圖表,來動手體驗plotly套件的強大繪圖功能吧! 希望您喜歡這次如何成為資料科學家的資料分析及Plotly的繪圖介紹,也可以按個拍手給我一點小鼓勵喔~
我們,下次見!
作者:許喬雅(臺灣行銷研究特邀作者)、鍾皓軒(臺灣行銷研究有限公司創辦人)
您可能有興趣:
📢TMR全新線上直播課程
⛳【直播Workshop-線上實戰講堂】⛳
《用AI進行顧客資料分析與銷售判斷》
🔹直播日期:11/07(六)
🔹直播時間:14:00–17:00
🔹課程詳情:https://bit.ly/2RHOwT6
【課程簡介】
📌Python技法結合商業思維,一步步建立數值化思考能力
📌機器學習分析顧客行為,找出最佳獲利模式
📌輿情數據結合STP策略,洞察潛在藍海市場
📌專業講師實案講解,帶您快速落地應用
❗現在購買還有多種好康優惠❗
💥早鳥價 :$550(7折)
💥兩人以上同行:$500(64折)
(原價:$780)
📢趕緊號召親朋好友一起上課~
🏃♂前往報名:https://bit.ly/2RHOwT6
— — — — — — — — — — — — — —
📢TMR為您量身打造「全方位數據課程」
👨🎓熱門Python程式語言結合全新商業思維,快來終生學習不間斷!
【TMR】 X 【 好學校】
👨💼Python商業全系列數位課程👨💼
#行銷人必學實用Python課程
《 Python 0到1 基礎商業數據分析實戰 》
💥 價格 :3188
👉 從0開始:手把手從頭學習,適合完全沒學過的學員
👉 商業應用全台最多:傳授市面上少見的Python實務應用
👉 網路輿情爬蟲演練:網路輿情商務爬蟲技法
👉 競品分析:競爭價值定位圖找出藍海策略
👉 貨架陳列視覺化:解析行銷策略及廣告預算配置方法
🛒 前往購買:https://hahow.in/cr/python0-1
《 顧客分類大師:Python x RFM 會員經營新觀點 》
💥 價格 :2388
🎯 Python X RFM最佳拍檔,輕鬆鎖定潛(錢)在顧客
不需要出門,在家也能學習專業課程,讓你擁有會員經營的新思維!
本課程以五個面向為您的企業,做更深入的健診:
👉 市場面:以最基本的顧客消費資料(頻率、購買次數),將現有顧客區隔分類。
👉 財務面:計算出在每個顧客身上所賺得毛利,在不同客群中的獲利。
👉 行銷面:藉由 RFM 的分析進行行銷預算重新分配。
👉 產品面:觀察在不同客群中,各個產品的銷售狀況。
👉 顧客回購面:分析顧客的購買週期後,進行精準推薦。
🛒 前往購買:https://hahow.in/cr/rfm-model
《 AI 行銷學:用 Python 機器學習創造商業新價值 》
💥 價格 :3888
👉 全台第一門Python機器學習線上課程
👉 教導你快速理解Logistic Regression, XGBoost, Random Forest商務機器學習模型。
👉 建構老闆或主管們看得懂的模型評估指標,讓精準行銷方案更容易被接受且推出
👉 如何利用機器學習找出消費者心中的重要變數及客樣貌與特徵,做到個體及總體的商品推薦?
👉 如何從數以萬計的消費資料中偵測可能的詐欺名單?
🛒 前往購買:https://hahow.in/cr/python-ml
#實用投資分析課程
《 用 Python 打造自己的股票小秘書 》
💥 價格 :4288
👉 打造自動推播機器人,趁著股市最近低迷,找出最適進場點
👉 「到價提醒」功能,大大提升投資便利性
👉 了解Python雲端服務架構,完整的專案流程
👉 孰悉No SQL資料庫操作,未來大數據的基礎
🛒 前往購買:https://hahow.in/cr/stock-secretary
#好學校企業百大課程之一:
《台科 EMBA 年年爆滿的一門 Word 課(A系列)》
💥 價格 :950
👉 系統性學習Office軟體功能,教您別人不知道的快捷鍵
👉 調整不受控制的行距與精準對齊排版
👉 一鍵轉換Word到Excel
👉 有效率處理企畫書、畢業論文、小組報告、公文等
🛒 前往購買:https://hahow.in/cr/tmr-word1
《 台科 EMBA 年年爆滿的一門 Word 課(B+C系列)》
💥 價格 :1,050
👉 傳授獨家快捷鍵字典
👉 分享好用的大綱模式,讓文章處理更有效率
👉 建立大綱模式、多層次清單、目錄與圖表目錄,掌握文件編輯規則
👉 優化文章的邏輯架構
🛒 前往購買:https://hahow.in/cr/tmr-word2
— — — — — — — — — — — — — — — — -
【TMR】 X 【工研院】
🏭工業4.0大數據智慧應用課程🏭
製程數據資料 X 資料科學,
為您開啟工業人工智慧領域的大門!
👉全球前十大智慧製程案例實戰
👉專業講師手把手帶您入門製程資料處理分析
👉課後完整模組心法讓您通通帶回家
💥價格 : 2,800
🏃趕緊手刀前往購買:https://bit.ly/39koNbn
— — — — — — — — — — — — — — — — -
2020課程地圖
💪 點我看更多
🏆 國內第一本行銷資料科學專書
💪 點我看書本資訊
🏆 國內第一本行銷資料科學 ” 實作 ” 專書
💪 點我看書本資訊
🏆國內第一本「股票小祕書」專書
附上購書網址~ 國外的朋友也可以使用博客來與金石堂的通路轉運到國外哦!