陳擎文教學網:pandas商業數據程式分析(精簡版)
數據分析師:21 世紀最性感的工作
自從《哈佛商業評論》2012 年 10 月以一篇《數據分析師:21 世紀最性感的工作》爆紅後,協助企業進行大數據分析的「數據分析師」或「資料科學家」,就被視為是近年最熱門的工作

☎數據分析的一體化流程:數據採集 ➜ 數據清洗 ➜ 數據『查詢、計算』 ➜ 數據分析與挖掘 ➜ 數據可視化
☎工作職稱:DA/BA/DS/DE(Business Analyst商業分析師/Data Analyst資料分析師/Data Scientist資料科學家/Data Engineer數據工程師)
研究數據分析的4步驟圖數據分析職位的技能光譜圖商業分析決策的4步驟圖各種工具常用工具數據工具重要性排行榜2020職缺數排行榜2016職缺數排行榜2016使用度排行榜2016
☎相關證照:
中華企業資源規劃學會,大數據分析師商用數據應用師

☎完整版網站: pandas商業數據程式分析(完整版)


資源(Resource)

作業(homework)

chp0.課程簡介

【一,基礎概念】

 
chp4.python基礎
第1章 1-1-輸出生日快樂-換行-跳格 1-2-輸出1個變數,多個變數 1-3-輸入姓名年紀,讀入變數,然後輸出歡迎訊息
第2章 2-1-type(a),查詢a的資料型態 2-2-輸入2個數字,然後計算,加減乘除,商數,餘數,次方 2-3-如何計算兩個相加:5+"6"(使用int()轉換函數) 2-4-輸入三位同學成績,然後計算平均成績
第3章if 3-1-輸入成績,雙向選擇:判讀分數a,及格,或不及格 3-2-雙向選擇:判斷輸入的數字,是奇數,或偶數? 3-3-多向選擇:判斷分數a,是滿分(100),是優等(a>85),或中等(60<a<85,或不及格(a<60) 3-4-多向選擇:判斷輸入的數字a,b,誰大?
第4章迴圈 4-1-印出10行恭喜發財-for迴圈 4-2-印出99乘法表i*j-for迴圈 4-3-99乘法表i*j,印到i=5就停止 4-4-99乘法表i*j,到i=5就跳過,直接顯示下一輪
4-5-印出10行恭喜發財-while迴圈 4-6-計算1到10的總和
第5章list 5-1-list基本操作(建立,新增,修改,刪除,查詢) 5-2-串列的四種查詢 5-3-串列的排序 5-4-list的index編號
5-5-list的進階排序(呼叫自訂函數) 5-6-list的複製 5-7-list的合併 5-8-List的各種迴圈應用
第7章dict 7-1-字典dict的基本操作(建立,新增,修改,刪除,查詢) 7-2-製作英翻中字典,輸入任何英文,顯示中文解釋 7-3-dict的keys, values, items 7-4-字典dict,如何刪除欄位
7-5-字典dict的3種迴圈 7-6-字典dict的複製 7-7-巢狀字典dict與串列字典
第9章函數 📣9-1-不傳回值函數(算面積) 📣9-2-傳回值的函數(算面積) 9-3-函數多個傳回值 9-4-函數傳任意個參數:*a1
9-5-函數傳list,或dict 📣9-6-lambda一行函數寫法,判別分數,及格或不及格? 📣9-7-lambda一行函數寫法,猜測1~99的終極密碼,回答:猜中,猜太小,猜太大
(1)判別分數,及格或不及格? 2種寫法:傳統def jige(x)的多行寫法:
def jigema(x):
if x>=60:
return "及格"
else:
return "不及格"

a1 = jigema(55)
print(a1)


(2)判別分數,及格或不及格? 2種寫法:lambda一行函數寫法:
jigema2 = lambda x:"及格" if x>60 else "不及格"
print(jigema2(55))

 

☎重要性:頻率分析是指對數據集中的數據進行統計分析,計算每個值出現的次數,以便對數據集進行更深入的分析

☎指令1:用 value_counts() 函數對一維Series進行頻率分析

📣14-1-一維數據的頻數分析(查幾種unique,有種類數nunique,查每種的數量value_counts)

📣14-2-一維數據的基本計算數目函數

📣14-3-一維數據統計數目的2種做法(value_counts,groupby().size()),新生入學人數比較圖,地區比較圖

(1)性別有哪幾種?:df['性別'].unique()
(2)性別有幾種?:df['性別'].nunique()
(3)統計性別的『男,女』,出現的頻率?(統計內容值的出現次數):df['性別'].value_counts()
(4)統計性別的『男,女』,出現頻率的百分比?:value_counts(normalize=True)

☎重要性:Groupby 是Pandas 中的一個很強大的操作方法。它可以將資料「分群/分組」,之後在分群的資料上做運算,然後再將運算的結果組合起來

☎指令1:用 df.groupby("性別").size() 對性別欄位進行分群,並統計數量

☎指令2:用 df.groupby("性別")['數學'].mean() 對性別欄位進行分群,並計算對應數學的平均分數

📣15-1-建立性別欄位的分群groupby(),統計數量.size(),取出子群get_group('男')

📣15-2-一維數據的基本計算數目函數

📣15-3-一維數據統計數目的2種做法(value_counts,groupby().size()),新生入學人數比較圖,地區比較圖

📣15-4-分群的各種應用:男女數學平均,男女最高分,男女最高分是誰

📣15-5-一維數據統計數目的2種做法(value_counts,groupby().size()),新生入學人數比較圖,地區比較圖

📣15-6-一維數據統計數目的2種做法(value_counts,groupby().size()),新生入學人數比較圖,地區比較圖


(1)重點1:Groupby的特色:
(A).Groupby 是Pandas 中的一個很強大的操作方法。它可以將資料「分群/分組」,之後在分群的資料上做運算,然後再將運算的結果組合起來:
(B).pandas 其中一個最重要的功能,就是groupby,是一個很強大的操作方法。
(C).它可以將資料「分群」,之後在分群的資料上做運算,然後再將運算的結果組合起來。
(D).例如1:老師想看一年級中,不同班級的「數學」以及「英文」成績的平均值 (依班級分群,在分群中做平均值運算)。
(D).例如2:國家想統計不同都市中收入的中位數 (依都市分群,在分組中取中位數),
都可以使用 groupby 運算達成。
(E).規律原則:如果資料中有「類別變數」出現,那通常就會有 groupby 的需求。
例如:性別(男/女),班級(1A/1B/1C),等級(A/B/C),洲(亞洲/非洲/美洲),膚色(黑/白/黃)…等

(2)groupby分解與重組示意圖:

groupby結構示意圖2
groupby結構示意圖3
groupby結構示意圖4
groupby結構示意圖5

☎重要性:多層分群是『交叉分析,樞紐分析』的基礎

☎解法:多層索引鍵分析,有2種方法

☎方法1:用groupby(["分群1","分群2"])

☎方法2:先設定2層索引鍵,再用df.xs("社會組",level="選組")跨層級查詢

📣16-1-建立性別欄位的

☎重要性:商業數據分析,一個重要的目的:就是要分析不同參數之間的彼此關係

☎方法:必須先建立『樞紐分析表』(交叉分析表),然後再繪圖這個樞紐分析表,就可以達成分析目的

☎指令1:用groupby...unstack法

☎指令2:pivot_table法

📣17-1-樞紐分析表的必要指令unstack:把列索引鍵調換成欄索引(unstack展開)

📣17-2-建立樞紐分析表方法1:groupby...unstack法

📣17-3-建立樞紐分析表方法2:pivot_table法

(1)型態1:(1個分群,1組統計次數)的頻數分析【1變數x: size=f(x)】

📣18-1-分析不同『入學年份,性別』的人數統計


(2)型態2:(2個分群,1組對應統計次數)的樞紐分析表,交叉分析圖【2變數x,y: size=f(x,y)】

📣18-2-型態2:分析不同入學年份,男女的人數統計:groupby...unstack法

📣18-3-型態2:分析不同入學年份,男女的人數統計:pivot_table法


(3)型態3:(2個分群,1組對應)之樞紐分析表,交叉分析圖【3變數x,y,z: z=f(x,y)】

📣18-4-型態3:顯示總和的樞紐分析表,交叉分析圖【3變數x,y,z: z=f(x,y)】


(4)型態4:(1個分群,2組對應)之分析表/圖【3變數x,y1,y2: y1=f1(x), y2=f2(x),y1y2不同群組不同刻度】

📣18-5-型態4:不同業務單位的『銷售數量總和,銷售金額總和』對應表格與圖


(5)型態5:(1個分群,3xn組對應新增欄位(mean,max,min))之對應分析表/圖【4變數x,y1,y2,y3: y1=mean(x), y2=max(x), y3=min(x),y1y2y3不同群組不同刻度】

📣18-6-顯示不同業務單位在銷售數量和銷售金額的min,max,mean,sum(用agg新增欄位)

【折線圖,line】

📣20-1-折線圖(設定x,y),顯示中文,設定樣式

📣20-2-折線圖(若不設定x,y,就要設定列索引鍵)


【柱狀圖/長條圖(看類別比較),bar】

📣20-3-柱狀圖,堆疊柱狀圖(堆疊stacked=True)

📣20-4-水平柱狀圖barh

📣20-5-數學成績排序後,柱狀圖


【餅狀圖/圓形圖(百分比),pie】

📣20-6-數學成績餅狀圖pie,突出最高分explode,顯示百分比

📣20-7-餅狀圖自動顯示數學最低分的是誰(自動設定最低者的突出值)


【直方圖(看頻率分佈),hist】

📣20-8-直方圖hist(顯示數值頻率分佈)

📣20-9-直方圖hist,鐵達尼號的年齡分佈


【箱型圖(看頻率分佈),box,boxplot】

📣20-10-箱型圖box,更簡單地顯示數值頻率分佈:Q1(25%),Q1(50%),Q3(75%)

📣20-11-鐵達尼號資料集,箱型圖box顯示年齡頻率分佈


【分群圖(2組資料比較圖),df.groupby.plot()】

📣20-12-分群groupby繪柱狀圖bar,鐵達尼號存亡分群下,看男女數量比較

📣20-13-分群groupby直方圖hist,鐵達尼號存亡分群下,看年齡頻率分佈

📣20-14-分群groupby箱型圖box,鐵達尼號存亡分群下,看年齡頻率分佈(用箱型圖看分佈)


【散佈圖/點分佈圖(看2/3組資料有否關聯),scatter】

📣20-15-產品的運動時間,卡路里,脈搏關係圖(3組資料散佈圖scatter:設定(x,y,c)

📣20-16-鐵達尼號3組資料關係圖(散佈圖scatter)


【畫多個子圖,二種方法】

📣20-17-方法1:建立畫布fig與軸ax,畫3個子圖

📣20-18-方法2:用分群groupby.agg(['max','min','mean']),自動畫3個子圖

📣20-19-方法2:用分群groupby.agg(欄位1=(),欄位2=()),自動畫2個子圖


pandas學習流程圖綱要flow chart(簡易重點):




(1)新增:
☎新增列,新增欄位:df[], df.loc[]:7-1
☎資料合併:concat(12-1), append(12-2), merge(12-3), merge(12-4), merge(12-5

(2)修改(資料清理):
☎修改列,修改欄位:df[], df.loc[]:7-3
☎查詢缺值:df.isna(),df.isnull() : 9-19-2
☎修改缺值:填值:df.fillna(值): 9-49-5
☎修改文字:
☎修改日期:

(3)刪除(資料清理):
☎刪除列,刪除欄位:df[], df.loc[]:7-2
☎刪除缺值:df.dropna():9-3

(4)查詢:
(4-1)查詢:
☎定位取值:df[], df.iloc[], df.loc[]:6-46-5
☎條件查詢:2步驟條件查詢,多條件查詢:()&(),()|():6-1
☎df.query()
☎關鍵字查詢:.str.contains():6-2
☎排序查詢:.sort_values(“欄位”,ascending=False):6-3

(4-2)計算:
☎基本計算:Axis,欄計算,列計算:max,min,mean,sum, std,median:8-1
☎計算出現次數:value_counts:8-2
☎進階計算:使用自訂映射函數:map,applymap,apply來轉換計算: 10-510-610-710-8

(4-3)分析:
☎【數據分析1】:頻數分析(一維欄位,value_counts): 14-114-214-3
☎【數據分析2】:分群比較分析(分1群後,對應第2欄位統計,groupby): 15-115-215-315-415-515-6
☎【數據分析3】:分2群比較分析(多層分群,多層索引鍵分析的2種方法): 16-1
☎【數據分析4】:分2群比較分析(交叉分析表,樞紐分析表): 17-117-217-3
☎【數據分析5】:Groupby分群分析的5種題型: 18-118-218-318-418-518-6
☎【數據分析6】:樞紐分析表,交叉分析圖的花式變化與進階技巧: 19-119-219-319-419-5
☎【數據分析6】:樞紐分析:pivot_table: 18-3
(4-4)視覺化:
☎表格視覺化:表格標註重點: 11-111-211-3
☎圖形視覺化:
【折線圖,line】: 20-120-2
【柱狀圖/長條圖(看類別比較),bar】: 20-320-420-5
【餅狀圖/圓形圖(百分比),pie】: 20-620-7
【直方圖(看頻率分佈),hist】: 20-820-9
【箱型圖(看頻率分佈),box,boxplot】: 20-1020-11
【分群圖(2組資料比較圖),df.groupby.plot()】: 20-1220-1320-14
【散佈圖/點分佈圖(看2/3組資料有否關聯),scatter】: 20-1520-16

資源
上課工具 線上黑板( Online blackboard) 廣播教學 pandas數學家分析(完整版) 上課錄影影片 Goole輸入法(Input:exe)
證照考試:商用數據應用師 考試題庫 (從中約抽70題) 報名證照相關說明與方法 考試方式:100題單選題,每題1分,70分及格 考試指定用書
證照考試:SAS 機器學習國際認證 考試題庫 報名證照相關說明與方法 先上課再考試。考試方式:50~55 題選擇題與填充題,考試語言:英文,通過標準:65%答對即通過 考試指定軟體:SAS Viya Virtual Lab
數據集,資料集,dataset UCI的各種資料集 Kaggle的各種資料集 考試方式:100題單選題,每題1分,70分及格 考試指定用書
上課參考教材 書籍:跨領域學 Python:資料科學基礎養成 書籍:Python 資料科學與人工智慧應用實務 書籍:一行指令學Python:用機器學習掌握人工智慧
書籍:用Pandas掌握商務大數據分析 進階書籍:Python商業數據分析:零售和電子商務案例 pandas官網(英文) w3schools的pandas教學(英文)
pandas參考教材 w3Cschool的pandas教學(中文) Steam教學網-python 蓋若pandas 教程 pandas的df的操作函數
colab如何讀取google雲端硬碟的檔案
☎#步驟1:(A).導入Google Colab的drive模組:
☎#步驟2:(B).掛載Google Drive雲端硬碟到Colab虛擬機(/content/drive):
from google.colab import drive
drive.mount("/content/drive")

☎#步驟3:(C).讀入目前虛擬目錄內,剛剛掛載的自己雲端硬碟Mydrive的檔案:
df = pd.read_csv("/content/drive/MyDrive/Colab Notebooks/finance-charts-apple.csv")
colab繪圖如何顯示中文,方法1
☎#colab顯示繁體中文,方法1 問題:matplotlib繪圖,會發生中文無法顯示的問題
參考:colab繪圖如何顯示中文
程式碼
#--------------------------------
# colab繪圖顯示繁體中文
#--------------------------------
import matplotlib
# 先下載台北黑體字型
!wget -O taipei_sans_tc_beta.ttf https://drive.google.com/uc?id=1eGAsTN1HBpJAkeVM57_C7ccp7hbgSz3_&export=download import matplotlib
# 新增字體
matplotlib.font_manager.fontManager.addfont('taipei_sans_tc_beta.ttf')
# 將 font-family 設為 Taipei Sans TC Beta
# 設定完後,之後的圖表都可以顯示中文了
matplotlib.rc('font', family='Taipei Sans TC Beta')
colab繪圖如何顯示中文,方法2
☎#colab顯示繁體中文,方法2 ☎程式碼
#--------------------------------------
# 課本的中文處理
#--------------------------------------
import matplotlib as mpl
import matplotlib.font_manager as fm

!wget "https://www.wfonts.com/download/data/2014/06/01/simhei/simhei.zip"
!unzip "simhei.zip"
!rm "simhei.zip"

fm.fontManager.addfont('SimHei.ttf')
mpl.rc('font', family='SimHei')
# 這一行能讓字體變得清晰
%config InlineBackend.figure_format = 'retina'
windows的spyder繪圖如何顯示中文 ☎解決:windows的spyder,會發生中文無法顯示的問題
參考:windows繪圖如何顯示中文
程式碼
#在windows 10 的spyder,繪圖如何顯示中文
#使用微軟正黑體(Microsoft JhengHei)
plt.rcParams['font.sans-serif'] = ['Microsoft JhengHei']

#有些中文字體在碰到負號時,會無法正常顯示,尤其是內建的字體,加入以下語法就可以解決『負號無法顯示』問題
plt.rcParams['axes.unicode_minus'] = False
在colab如何更改目錄 ☎解決:在colab如何更改目錄的問題
程式碼
import os
os.chdir("/content/drive/MyDrive/Colab Notebooks")
!ls
解決簡體字csv造成亂碼 ☎解決簡體字csv,打開後都是亂碼的問題:

第2 種方式:
(1)先執行Excel 軟體,新增空白活頁簿,
(2)然後在上方功能選項中點選「資料」➜「取得外部資料」➜ 「從文字檔」 → 「選擇csv文件」,
選擇你的CSV 檔,
在「匯入字串精靈」對話框中選擇檔案原始格式65001:Unicode(UTF-8) 即可。

若是utf-8還是有亂碼,再改成
在「匯入字串精靈」對話框中選擇檔案原始格式54986:簡體中文(GB18080) 即可。

(3)打勾:我的資料有標題
(4)分隔符哈:逗號

程式模板 ☎存入excel檔案,並且畫柱狀圖
程式模板chp8-6.樞紐分析表的必要指令:展開 ☎輸出excel檔案:建立3個資料表sheet(英文成績,數學成績,中文成績)
打開chrome網頁線上英文字典功能 ☎如何安裝google chrome的網頁線上英文字典工具:
➜google chrome的右上角工具➜更多工具➜擴充功能
➜左上角主選單➜開啟chrome線上應用程式商店
➜勾選:google製作,免費
➜搜尋:google dictionary➜安裝
➜到chrome右上擴充功能➜點按google dictionary的『詳細資料』➜擴充功能選項
➜my language=chinese
➜打勾2個:Pop-up definitions:
(1)反白單字翻譯:Display pop-up when I double-click a word
(2)ctrl+拖曵整段翻譯: Display pop-up when I select a word or phrase

上課用excel 學生成績-chinese 學生成績-有缺值-chinese 學生成績-物理歷史-chinese 學生成績-amy-simon-chinese
學生成績-生日-chinese 學生成績-分組-chinese 人事資料-chinese 男女時薪-chinese
學生成績-english 學生成績-有缺值-english 學生成績-分組-english 圖書資料-chinese
上課用csv 小費tips-chinese 小費tips-english 學生成績-chinese 學生成績-english
圖書資料-chinese
上課用其它資料庫 mySQL-ch09 SQLite-student json-學生成績 xml-personnel
課本商業範例資料庫 商業銷售分析-sales csv 系所生源分析-excel 股市分析-台積電聯發科股票線型-excel 問卷資料分析-excel
pandas參考教材 十分鐘入門 Pandas(英文) 十分鐘入門 Pandas(英文) 10分鐘的Pandas入門-繁中版 十分鐘入門 Pandas(中文)
pandas參考教材 pandas官網全部章節翻譯 pandas官網全部章節翻譯
pandas參考教材(英文) kaggle pandas教學 100 pandas tricks to save you time and energy 官網0.22.0:pandas documentation
pandas參考教材(中文) Pandas 101:資料分析的基石 資料科學家的pandas 實戰手冊:掌握40 個實用 簡明 Python Pandas 入門教學 資料分析必懂的Pandas DataFrame處理雙維度資料方法
pandas速查手冊 pandas 速查手册 - 盖若 Pandas速查手冊中文版 - 知乎專欄 Pandas速查手冊中文版- 騰訊雲開發者社區
pandas速查手冊 Pandas中DataFrame基本函數整理(全) Pandas 魔法筆記(1)-常用招式總覽 pandas的df的操作函數
資料集dataset 小費資料集Tips Dataset(csv) kaggle小費資料集範例A Waiter's Tips example 【視覺化】小費(tips)資料集分析 小費(tips)資料集提取和檢視相應資料
SQL語法 SQL語法教程 pandas vs SQL
資料分析4大模組(runoob) numpy pandas matplotlib scipy
w3c、w3school、w3cschool、runoob、w3capi比較 runoob流量監控儀表板
w3school vs runoob 1.w3school中文版是直接google翻譯英文版
2.runoob.com翻譯自英文版w3schools,但重新排版
3.runoob = run + noob(菜鳥,小白)
4.runoob是python,html,javascript中文版最好的教學網
官網 python官網 vscode官網    
python 教學網站 python 3(官網手冊中文) python 3教學(中文) python 3教學(中文) 簡易1小時教學
w3school(英文版)      
線上執行python online

https://www.python.org/shell/(建議用這個)

https://repl.it/languages/python3


https://www.onlinegdb.com/online_python_compiler

https://www.tutorialspoint.com/execute_python_online.php

用Anacond寫python(*建議使用)

到Anacond官網下載安裝

作業(homework)
作業1
作業2
作業3
作業4
side project 1 第一個side project(可以放到你的履歷當做作品集)

題目:
這個是委託案,來自某私校大學系主任,因為招生日益困難,因而委託你:做學生來源落點的分析專案,
請你從各種角度來分析客戶群的潛在落點所在,探討逐年變化,並分析過去歷史的強項所在與弱項所在,
最後,請你寫個簡單的結案摘要,告訴業主,該如何做,才能改善招生率
side project 2 第二個side project(可以放到你的履歷當做作品集)

題目:
你是A公司的新進商業數據分析師,A公司今年2016年業績大幅下滑,公司想請你分析歷年數據後,寫份摘要報告,從各種不同角度分析,包括:『不同業務單位、不同業務員、不同產品、逐年、每季、每月』的分析,找出業績下降的原因,以及如何改善。
請多用定量描述的方式,來證明你分析觀點的可靠性、準確性與權威性,以建立個人數據分析的品牌與形象。

 
chp1-1.前言
1.課程簡介投影片 2.學習程式的3種方法
 

 

範例1-2.數據分析3部曲,與對應的工作職缺

(1)研究數據分析的3步驟圖:
☎步驟1:學習基礎數據分析1:pandas
☎步驟2:學習基礎數據分析2:SQL
☎步驟3:學習進階數據分析3:人工智慧(機器學習,深度學習)



(2)數據分析的相關工作職缺(數據分析職位的技能光譜圖):
☎工作職稱:DA/BA/DS/DE:
Business Analyst商業分析師(商業決策建議)
Data Engineer數據工程師(基礎第一線數據處理)
Data Analyst資料分析師(適用各領域的數據處理工作)
Data Scientist資料科學家(建模,人工智慧)




(3)商業分析決策的4步驟圖:
☎1.資料處理
☎2.資料分析
☎3.資料視覺化
☎4.商業分析決策




(4)資料分析常用工具:
☎1.python/pandas
☎2.SQL
☎3.power BI,tableau
☎4.機器學習,深度學習



 

範例1-3.數據分析常用工具


(1)資料分析常用工具:
☎1.python/pandas
☎2.SQL
☎3.power BI,tableau
☎4.機器學習,深度學習




(2)數據相關工具的職缺數排行榜2016:





(3)數據相關工具的職缺數排行榜2020:


 

範例1-4.數據相關的證照


(1)資料分析相關的證照:中華企業資源規劃學會『商用數據應用師』證照
☎1.中華企業資源規劃學會,大數據分析師
☎2.商用數據應用師


(2)資料分析相關的證照:SAS 機器學習國際認證
☎1.SAS 機器學習國際認證,報名方式
☎2.先上課再考試:認證校園班
☎3.使用軟體工具:SAS Viya Virtual Lab

 

範例1-5.數據分析的內容是什麼?


數據分析的內容主要分三種(統計,比較,預測)
(統計出現次數,分類比較,預測趨勢)


【一,基礎數據分析(python/pandas)】

1.查詢資料(1)

1.查詢資料(2)

1.查詢資料(3)

2.頻數分析,統計數量

3.(分1群)比較分析

4.描述性統計分析,直方圖,箱型圖

6.(分2群)交叉分析表,樞紐分析表

7.分群分析的5種題型

8.樞紐分析表,交叉分析圖的花式變化與進階技巧



【二,進階數據分析(機器學習/深度學習)】

11.關聯性分析association

12.迴歸預測分析regression

13.分類預測classification

 

範例2-1.現今企業的數據有哪些:


(1)所謂大數據,即是透過不同來源、渠道取得的海量數據資料

現今企業如果想做數據蒐集的方法變得非常多元,包括:

(2)來自用戶的第一方數據:

☎傳統的用戶資料建檔、問卷調查,
☎網頁的瀏覽行為等數據的追蹤,
☎App應用程式的瀏覽行為等數據的追蹤、
☎物聯網IoT設備傳遞的數據等,
這些都是可以蒐集到。

還有更多可捕捉用戶站外資訊的非第一方數據也漸漸被重視,

(3)透過交換共享得到的第二方數據:

☎第二方數據 (也稱為第二方或 2P 數據):是另一個同行公司收集的數據,但可由另一家公司通過購買或協作訪問。
☎營銷人員在希望擴展其營銷資料庫以吸引新的潛在客戶時,通常會購買它。
☎例如,如果一個為女性製作的服裝品牌決定增加一個男裝系列,並且需要相關的目標來行銷,就可以向外同行公司購買男裝的數據資料庫。

(4)任何與商業需求有關的第三方數據:

☎第三方數據 (也稱為第三方或3P數據):是來自第三方的數據,該第三方已聚合了多個數據源並使其可供購買。
☎第三方數據的缺點:是它可能缺乏準確性和品質,因此重要的是了解數據來自何處以及數據使用年限.

(5)比較:第一方、第二方和第三方數據之間的差別:

第一方、第二方和第三方數據之間的主要區別在於:『來源』。
☎第一方數據:由其『存儲/擁有的公司』收集。
☎第二方數據:由『同行公司』收集,並由另一家公司購買(或通過合作協定與他們共用)。
☎第三方數據:是從『多個未知來源』收集的,並由一家公司購買。


(6)參考文獻:
1.第一方、第二方、第三方和零數據對廣告商意味著什麼
2.分析大數據在各領域的應用

 

範例2-2.市場上的數據需求,主要分為四個階段:

☎數據蒐集、
☎數據分析、
☎數據應用

(1)數據蒐集:蒐集第一方、第二方和第三方數據


☎傳統的用戶資料建檔、問卷調查,
☎網頁的瀏覽行為等數據的追蹤,
☎App應用程式的瀏覽行為等數據的追蹤、
☎物聯網IoT設備傳遞的數據等,

☎第二方數據:向同行公司購買數據。

☎第三方數據:向『其他管道,如:數據收集公司』購買。


(2)數據分析:原始數據(raw data)要先處理過


☎透過多元渠道獲取大量數據資料往往是原始數據(raw data),無法直接使用,
☎必須經過一層又一層的處理過程
☎處理方法1:數據檢查(data inspecting)
☎處理方法2:數據清理(data cleansing)
☎處理方法3:數據轉換(data transforming)


(2-1)處理方法2:數據清理(data cleansing)

A.資料清理是資料前處理的第一步,需要先將資料中的問題處理。
B.收載資料時一定會遇到各式髒資料,有的資料樣態會導致無法轉入資料庫,而有的資料會在塞入資料庫時,出現錯位、亂碼等各式各樣非預期的情況,此時倉儲資料清理的準則變得極為重要,因將攸關於整個系統資料的統一。
C.資料清理的準則設定可以從三個角度著手:
☎「檔案類型」問題的清理
☎「欄位型態」問題的清理
☎「資料邏輯」問題的清理
D.☎數據清洗:按照一定的規則剔除或者填充不滿足實際需要的業務資料。
E.☎清洗主要包括三部分的內容:
第一部分是測試資料、
第二個是錯誤的資料,
第三個是缺失的資料。
錯誤的資料我們可以關注:『資料是否重複』、格式是否『錯誤、欄位描述』的資訊是否錯誤。





D.(2-1-a)例如:資料來源檔案類型:純文字檔

☎資料內容以純文字的方式儲存的特色:
欄位與欄位之間以特定符號作為分隔,
例如:逗號、分號或|等等,
☎較常被使用的是「逗號」

☎可能發生的問題:
然而使用各符號作為分隔時,會遇到其中一種情況是:以逗號為例,如該欄位內容包含逗號,將會造成欄位內容分割時發生錯誤,但此逗號明明屬於資料的內容,卻被誤認為是分隔符號,使得分割完的資料對應到錯誤的欄位

☎解決的辦法:
將內容值前後都加上雙引號後,再以逗號分隔串連各欄位資料


D.(2-1-a)例如:檔案類型:資料庫

☎讀取資料庫文字欄位型態的資料時,內容包含換行符號,系統就認為這筆資料已經讀取完,則換行符號後面的資料內容即為下一筆資料的開頭,無法完整的將一筆資料讀取進來。
☎解決辦法:是移除換行符號,若需要保留換行符號,


D.(2-1-b)例如:欄位型態:日期

☎格式:同時出現以 斜線分隔(YYYY/MM/DD)、無分隔符號(YYYYMMDD) 或 連接號(YYYY-MM-DD) 的日期格式。
☎處理方式:透過判斷式將內容使用的符號,或沒有符號的純文字格式,換成資料庫可接受的日期格式。

☎西元年/民國年:同一欄位參雜西元年與民國年的日期。
☎處理方式:若以西元年格式存入資料庫,年若小於1911,則將 年份+1911 ;年若大於1911,則直接轉入。

☎值異常:例如日期出現2月30日、年份早於1911年等,或是不可為NULL的欄位卻出現NULL值等非正常的日期。
☎處理方式:異常的日期通常已經無法追溯到正確的值,或來源的日期就是髒資料,可統一為特定日期(如:1911年1月1日),日後看到即可確定來源的資料因有異常而清理過。


D.(2-1-b)例如:欄位型態:特殊字元

☎說明:文字是最容易造成轉檔失敗的型態,因為此型態可容許輸入任何類型的字元,例如:特殊字元,但資料庫本身並非接納的了所有字元,較特別的會無法轉入,或需要做其他特殊的轉換才能收載。
☎處理方式:必須找出那一筆,替換掉『特殊字元』後,再登錄進資料庫。


D.(2-1-c)例如:資料邏輯:縣市代碼

☎台灣曾經經歷過縣市升格為直轄市,有更換過縣市的中文名稱,那麼資料也須跟著配合調整。
☎處理方式:是做一張新舊對照縣市代碼與名稱的轉換表,日後資料若有縣市資訊需求,即可勾稽此資料表,讓縣市升格前與後的資料,能自由並適當的轉換,得到想要的資訊。


D.(2-1-c)例如:資料邏輯:身分證號的規則判斷

☎身分證號的編碼有固定的規則,
第一碼是初次戶籍所在的縣市代碼,
第二碼是性別(1:男性;2:女性),
第三到九碼是流水碼,
最後一碼第十碼是檢查碼,檢查碼會以第一到第九碼之英數字組合經過權重計算而得。
☎若要確認身分證是否有效,可依據這些規則去做判斷。


(2-3)處理方法3:數據轉換(data transforming)

A.☎數據轉化:按照一定的規則、技術手段轉化不同格式,或者顆粒度不同的資料。
B.(1)例如:格式的轉換,比如說時間格式,在不同的業務系統可能會有不同的時間格式,但是到我們大資料系統,為了方便下游資料的使用,我們會統一轉換成一種資料格式。包括一些欄位編碼也是這樣。
C.(2)資料顆粒度的轉換:我們在DW層的資料明細層到資料應用層的整個過程,都是顆粒度不斷轉化的一個過程。還包括一些業務規則、商務規則和一些指標。


☎補充:數據顆粒度:資料顆粒度指數據的細緻程度。
資料顆粒度越高,細緻程度越高,意味著可以進行更準確的分析。
然而,需要指出的是,資料顆粒度直接決定資料庫需要的儲存空間。
高顆粒度的資料需要更多儲存空間;如果資料顆粒度太高,能夠識別出背後的資料,隱私相關挑戰也會加大。

(4)參考文獻:
1.資料指標體系(1)如何理解資料顆粒度、維度以及指標

 

2-3.資料生產的四步驟:

• 資料指標體系搭建
• 資料獲取
• 資料存儲
• 數據清洗

2.建立資料後,即可開始資料分析


 

2-4.資料最基本的三個概念:

☎顆粒度
☎維度
☎指標

(1)顆粒度

☎資料的顆粒度是指數據的 “粗細”,也就是我們看資料的視野的大小,或者說格局的大小。
☎例如:
一個電商公司,同樣是看GMV(總銷售額),CEO關注的可能是『今年總的GMV』是多少,
而業務老闆關注的可能是『每月的GMV』如何,
具體到某個小團隊,關注的點可能就是某些商品,『每天的GMV』如何了。

☎資料顆粒度最常見的劃分是:時間


(2)維度

☎資料的維度:是指看待事物不同的角度。
☎是從不同角度來看一件事,會得到不同的結論。
☎在做資料分析時也是一樣的。分析一個活動,或者一個策略對用戶的吸引時,如果我們以『新增用戶數』作為分析的指標(也就是展開方式,分析點),

☎可以列為『維度』進行拆分的項目:
• 時間維度:拆分為早晨、中午、晚上
• 性別維度:男性、女性、未知
• 受教育程度:小學、中學、大學、研究生、博士
☎通過維度的分解,我們可以看到每個部分的變動,和整體的變化趨勢是否相同,是否存在不同,而哪些不同點往往會成為我們接下來分析的重點。

☎顆粒度和維度的『相似性』:例如“時間”這個要素,在兩個部分都出現了
☎顆粒度和維度的『差異性』:不同在於拆分的方式不同
• 顆粒度:是一種縱向的聚合,類似於金字塔的形狀,不同的顆粒度都代表著不同的聚合程度
• 維度:是一種橫向拆分的模式。類似于把鏡子打碎成不同的部分,每個部分都是獨立的,把所有部分合在一起又能拼成完整的整體


(3)指標

☎資料指標:是衡量事物發展方式及程度的一種單位或者方法,一般通過對原始資料進行加減乘除等操作生成得到。
☎例如:長度,是把所有部分加在一起得到的一種衡量外在大小的單位。

☎列舉一些常見網路流量的資料指標:
• DAU(daily active user):每天,“活躍”過的用戶數的加總,count(distinct user_id) group by day
• MAU(monthly active user):每個月,“活躍”過的用戶的加總,count(distinct user_id) group by month
• 留存率(次日、7日、30日):今天“活躍”過的用戶的總量,一段時間後的某個時間點,還活躍的比例
• 轉化率:兩個有遞進的環節之間,從上層到下層用戶轉化的比例,例如:CTR=實際點擊次數/展示量



(4)參考文獻:
1.大數據前的資料清理
2.分析大數據在各領域的應用

 

2-5.為什麼有大數據的問題

現在的企業資料,因為以下的興起,造成大量數據的需求: ☎網路網路資料(社交網站,交易資料)
☎物聯網IoT, Internet of Things
☎感測器sensor


2.大資料的來源

資料來源主要分為以下三類:
(1)社交數據:
☎顧名思義,社交資料來源於社交媒體評論、發帖、圖片以及與日俱增的視頻檔。隨著全球 4G 和 5G 蜂窩網路的普及,到 2023 年,全球手機視頻使用者將增至 27.2 億。
☎雖然社交媒體及其使用趨勢瞬息萬變、難以預測,但作為數位資料的主要來源,其穩定增長趨勢是不會改變的。

(2)機器數據:
☎物聯網設備和機器都配有感測器,能夠發送和接收數位資料。物聯網感測器能夠幫助企業採集和處理來自整個企業的設備、工具和裝置的機器資料。
☎從天氣和交通感測器到安全監控,全球範圍內的資料生成設備正在迅速增多。
☎據 IDC 估計,到 2025 年,全球物聯網設備數量將超過 400 億,生成的資料量幾乎占全球數位資料總量的一半。

(3)交易資料:
☎交易資料是世界上發展速度和增長速度最快的資料。
☎例如,一家大型國際零售商每小時處理超過 100 萬筆客戶交易,全球那麼多採購和銀行交易,生成的資料量會有多麼驚人。
☎此外,交易資料越來越多地由『半結構化』資料組成,包括圖片和注釋等,使得管理和處理難度不斷增加。



3.大數據的五大特性:


(1)大數據的3V特性:
☎資料量(Volume)
☎資料類型(Variety)。
☎資料傳輸速度(Velocity)


☎Volume(資料量) 無論是天文學、生物醫療、金融、聯網物間連線、社群互動…每分每秒都正在生成龐大的數據量,如同上述所說的 TB、PB、EB 規模單位。

☎Variety(資料多元性)
真正困難的問題在於分析多樣化的資料:從文字、位置、語音、影像、圖片、交易數據、類比訊號… 等結構化與非結構化包羅萬象的資料,彼此間能進行交互分析、尋找數據間的關聯性。

☎Velocity(資料即時性)
大數據亦強調資料的時效性。隨著使用者每秒都在產生大量的數據回饋,過去三五年的資料已毫無用處。
一旦資料串流到運算伺服器,企業便須立即進行分析、即時得到結果並立即做出反應修正,才能發揮資料的最大價值。


(2)大數據的4V特性:
☎資料量(Volume)
☎資料類型(Variety)
☎資料傳輸速度(Velocity)
☎資料真實性(Veracity)

在3V成為大數據的主要定義後,隨著儲存資料的成本下降、取得成本也下降,大數據發展出第四個特性:Veracity,意旨除了資料量,也需要確認資料的真實性,過濾掉造假的數據與異常值後,分析出來的結果才能達到準確預測的目的。



(3)大數據的5V特性:
☎資料量(Volume)
☎資料類型(Variety)
☎資料傳輸速度(Velocity)
☎資料真實性(Veracity)
☎價值(Value)
大量、快速取得,來源多樣的資料,經過真實性考驗之後,擁有一定的價值,是大數據的核心架構





4.多大的資料量才算大數據Big Data

☎資料量要多大才能說是大數據?
根據維基百科的定義,資料大小從幾TB(Terabyte)到幾PB(Petabyte)不等




5參考文獻:
(1).什麼是大數據
(2).巨量資料(wiki)
(3).大數據到底是什麼意思?事實上,它是一種精神
(4).認識大數據定義、分析與工具
(5).大數據,不只是很大的數據

 

2-6.大數據分析與傳統商業分析的差異


(1)大數據分析:
☎分析方法:使用原始資料➜統計分析➜產生視覺化圖表➜產生報表
☎使用技術:原始資料,大數據,使用程式碼(python/R)進行結構化分析
☎預測方法:找出數據間的關聯性➜建立預測模型➜完成預測

2.參考文獻:
(1).大數據,不只是很大的數據

 

2-7.大數據的分析步驟:取得,儲存,運算,視覺化


☎大數據分析第一步:取得
數據隨時隨地都在產生,就連你上班時的行走路線,都可以成為商家選擇新店地址的參考資料。若是擁有大量使用者的企業,蒐集使用者的活動紀錄就可達到以數據預測未來的目標;若是較小型的企業,則可主動邀請使用者填寫問卷,逐步累積資訊量。

☎大數據分析第二步:儲存
由於資料量龐大,突破儲存技術式處理大數據的第一個難關。因此處理大數據時多使用分散式處理系統,透過分割資料與備份儲存,突破記憶體過小的障礙。

☎大數據分析第三步:運算
為達成預測未來的目的,機器可以透過分類、迴歸分析、排序、關聯分析等方式找出其中規律,並運用決策樹、遺傳演算法、人工神經網路等模型進行計算。

☎大數據分析第四步:視覺化
經過分析後的數據仍是數字與列表,不易閱讀。因此可搭配視覺化工具,將數據轉化為較容易閱讀與理解的形式。

2.參考文獻:
(1).認識大數據定義、分析與工具

 

1.三大視覺化工具:Power BI,Tableau,Data Studio
功能:都能夠製作Dashboard(互動儀表板,報表平台)



(1)Power BI:微軟Microsoft

(1-1)費用:
☎免費版:若要編輯或瀏覽 Power BI Dashboard 僅能確保每個使用者都有在桌面下載 Power BI。
但免費PC版 Power BI 僅能在 Windows 上使用,
Mac 使用者僅能夠過網頁/付費方式使用
☎付費版:Power BI 可透過企業全體購買 Pro License(每個月300元),進而能夠做到網頁版共用。

☎付費版:公司內可以購買整個 Office 365 package(已經包含 Power BI Pro License),以利內部資料互通,大家也不用另外在電腦下載應用程式,直接網路編輯與瀏覽即可,Mac 使用者也能進而編輯
☎付費版:Power BI Premium,每月每個人600元。
Power BI定價參考網址

(1-2)功能:
Power BI 基本上功能與Tableau大同小異。
Power BI的操作比較簡單,更直覺化(Tableau操作較複雜)。
Power BI同時可支援 Python & R 的視覺化工具,
Power BI 的 DAX 語法相較 Tableau 好懂。


(2)Tableau

(2-1)費用:
☎Tableau Public 是一個免費的平台
☎Tableau Prep 免費試用30天
☎Tableau Desktop 免費試用14天
☎Tableau Server 免費試用
☎CRM Analytics(原稱 Tableau CRM)
認識大數據定義、分析與工具
☎Tableau 在企業級規模部署時Power BI比較便宜,因為雖然Power BI 隨附於O365中,但若要企業級部署,考慮Power BI Pro與Power BI Premium 間的功能差距,若真的要能做到 Tableau Server 大部分的功能,是一定需要 Premium 的,不然會受到算力、數據量大小、協作功能等的差距影響,很難做到企業級部署。
而Power BI Premium 在2021/02時所記錄的起始報價為 台幣 150,120。
Tableau的產品生態:


(2-2)功能:
☎功能強大。
☎2020/01年時統計,世界500強企業裡面96%是Tableau的客戶。


(3)Data Studio

(3-1)費用:
☎google雲端軟體,完全免費的平台

(3-2)功能:
☎優點:因為 Google 產品大多都是可開權限共享,
所以要結合Google 其他應用程式(Big Query, Google Analytics),就可以直接串接到 Data Studio,因為便利而使用它。
☎優點:雲端使用,是目前線上最流暢的(因為google產品都是雲端產品),而且可以共同編輯
☎缺點:功能性而言,現在 Data Studio 在細節調整上還是略輸 Power BI 與 Tableau 一些


2.BI(Business Intelligence,商業智慧)市場分成2類:

(1)自助式分析組別:
組織裡面每個人都有能力利用此組別內的BI工具連接數據與探索數據,發表屬於自己的數據見解
例如:Power BI,Tableau,Data Studio

(2)報表組別:
大部份情況之下,因需要撰寫大量函式或需要寫SQL,需要由統一專業部門開發,如IT單位
例如:Finereport,Microstrategy



3.參考文獻:
(1).Tableau 與 Power BI 完整比較指南
(4).Tableau VS. PowerBI

 

2-9.大數據的類型:結構化、非結構化、半結構化資料





(1)結構化資料:這類資料最容易整理和搜索,

☎主要包括:財務資料、機器日誌、人口統計明細等。
結構化資料很好理解,類似於 Excel 試算表中預定義的行列佈局。
這種結構下的資料很容易分門別類,資料庫設計人員和管理員只需要定義簡單的演算法就能實現搜索和分析。
不過,即使結構化資料數量非常大,也不一定稱得上大資料,因為結構化資料本身比較易於管理,不符合大資料的定義標準。
一直以來,資料庫都是使用 SQL 程式設計語言管理結構化資料。
SQL 是由 IBM 在 20 世紀 70 年代開發的。

(2)非結構化資料:

☎因為web2.0盛行後產生很多非結構資料。
☎(web 2.0內容:透過網路應用,以使用者為中心,促進網路上人與人間的資訊交換和協同合作)
☎(web 2.0範例:網路社群、網路應用程式、社群網站、部落格、Wiki)
☎資料包括:社交媒體內容、音訊檔、圖片、開放式客戶評論等。
☎這些資料符合大數據定義中:『大而複雜』的要求,也因此這些資料通常很難用標準的行列關係型數據庫捕獲。
大多數情況下企業若想搜索、管理或分析大量非結構化資料,只能依靠繁瑣的手動流程。
毫無疑問,分析和理解這類資料能夠為企業帶來價值,但是執行成本往往太過高昂。而且,由於耗時太長。
但是因為無法存儲在試算表或關係型數據庫中,所以非結構化資料通常存儲在資料湖、資料倉庫和 NoSQL 資料庫中。

(3)半結構化資料:

☎半結構化資料是結構化資料和非結構化資料的混合體。
☎例如:電子郵件,
因為其中的正文:屬於非結構化資料,
而寄件者、收件人、主題和日期:屬於結構化資料。
使用地理標記、時間戳記或語義標記的設備也可以同時提供結構化資料和非結構化內容。


3.參考文獻:
(1).什麼是大數據
(2).web 2.0
(4).Tableau VS. PowerBI

 
chp2.安裝與使用python的四種方法
1.使用python的四種方法 2.Anaconda下載點 3.安裝anaconda 4.Anaconda cmd指令
5.建立Anaconda虛擬環境 6.使用Spyter編譯器 7.網頁版python編輯器jupyter notebook 8.其它線上雲端可編譯的python平台

1.前言

Python堪稱是大數據與AI時代的最重要程式語言,在資料處理上有著非常重要的地位。而隨著AI的興起,讓傳統的零售業、金融業、製造業、旅遊業,以及政府都爭相投入,無不希望能運用數據分析與預測來協助決策方向,也讓新興的數據分析師、資料分析師成為熱門職業,因此本課程將講解如何使用網絡爬蟲技術以掌握資料爬取分析、視覺化呈現,以及儲存交換應用的關鍵技術。

Python資料處理的三大技術分別是:擷取分析、視覺化呈現與儲存應用。
而其應用的範疇包括:網路爬蟲、資料正規化、資料視覺化、資料儲存與讀取(CSV、Excel、Google試算表、SQLite、MySQL)、批次檔案下載、公開資料應用、API建立、驗證碼辨識。

Python大數據分析最重要的四個模組

1.Python大數據分析最重要的四個模組
Python資料分析最重要的四個模組:pandas、numpy、scipy、matplotlib。

(1)pandas:是基於numpy的資料分析工具,能夠快速的處理結構化資料的大量資料結構和函數。
pandas模組應該是python用來進行一般日常的大數據分析,最重要的模組了。
因為pandas的DataFrame資料結構,可以快速的互通於所有的二維結構資料,包括『excel,csv,json,xml,mysql,任何的資料庫,網頁的表格資料,字典dict,二維串列list』
也就是pandas的DataFrame資料結構,可以與它們之間互相簡易的存取。
然後再根據DataFrame來進行想要的大數據分析,它提供內建的演算法與資料結構,能夠用一個指令,就可以進行二維資料的『排序,篩選,關鍵字查詢,任意區間範圍查詢,統計學計算,平均值,變異數,標準差,字串檢索,字串取代,欄位樞紐分析、小記、欄位加總,把二維資料任意方式圖形視覺化顯示』
而建立pandas的DataFrame資料結構,有兩種方式,可以用column的方式來輸入資料,也可以用row的方式來輸入資料。
所以pandas是大數據分析,非常實用的利器工具,是python資料分析的首選。

(2)Numpy: Numpy專門用來處理矩陣,它的運算效率比列表list串列更高效。
Numpy是Python進行專業的數值計算之重要模組,因為大多數提供科學計算的包都是用numPy的陣列作為構建基礎,因此在進行高等數學計算時,numpy就是大數據分析的最重要工具了,因為高等數學運算,都是以矩陣的方式來進行運算,例如人工智慧,機器學習,深度學習,類神經網路計算等。

(3)sscipy:是基於numpy的科學計算包,包括統計、線性代數等工具。

(4)matplotlib:是最流行的用於繪製資料圖表的 Python 庫
也可以結合pandas模組來繪圖。

2.執行python的四種方法

1.要編寫python有四種的方法:
一、方法1:安裝python單純的python

缺點:功能陽春,沒有太多的模組,無法馬上寫大數據分析程式。
安裝網址:python官網下載

二、方法2:安裝Anaconda

優點:會同時安裝python、1000多種數學繪圖模組、Spyder編輯器,能夠支援大數據分析。
缺點:會安裝了很多你用不到的模組,浪費硬碟空間。
安裝網址:到Anacond官網下載安裝

三、方法3:使用python官網線上shell

使用repl線上python

四、方法4:使用google雲端硬碟的雲端軟體:Cola,colaboratory

優點:Google 的 Colab 是一個讓你用網頁瀏覽器就能寫 Python 程式、並且執行的平台。
優點:Colab 提供免費的 GPU 讓你高效運算機器學習與深度學習演算法。
優點:Google Colab 預先幫你安裝好大家最常用的 Python 套件,幫你解決了一半以上的煩惱,讓 Python 新手可以不用在剛起步就學習環境部署的麻煩事。數據分析常用的 Pandas 與 Numpy、資料視覺化好用的 Seaborn 與 Matplotlib、還有機器學習必備的 xgboost 或 Tensorflow,這些都是 Colab 預先安裝好的套件。
不需要再自行安裝套件:(Terminal)輸入 pip install
優點:可以從 Google Drive 取得你要用的檔案、然後透過 Python 程式讀取;
優點:可以與google其它軟體整合,例如:也可以匯入 Google Sheet 的表格資料,然後用你最愛的視覺化套件(例如 Matplotlib)畫出美麗的圖表。
優點:Colab 其中一個厲害的地方就是,你除了可以執行 Python、也能執行 Command Line,只要在 Command Line 指令加上驚嘆號就能做到,像是 !mkdir。你可以在 Colab 裡 Python 程式碼寫到一半的時候,突然加進幾行 Command Line 來操作檔案,完成後,再讓 Python 程式碼接著寫下去,Python 與 Command Line 可以無痛切換。
優點:%%timeit:算出你的程式碼區塊花多少時間執行,分析你的演算法效率時很好用。
優點:%run my_script.py:執行你的另一個 Python 程式,如果你的程式還需要呼叫另一個程式,就需要使用。


3.Anaconda下載點

Anacond官網


3.安裝anaconda 3.安裝anaconda
功能:原始的python功能太陽春,若下載anaconda,則可以提供300多種的科學數學模組,可以提供大數據資料分析
(1)Anaconda是一個免費的Python和R語言的發行版本,用於計算科學(資料科學、機器學習、巨量資料處理和預測分析)
(2)因為Anaconda有很多的數據分析模組,所以大數據分析會使用到的『pandas、Numpy、Scipy』python package套件,在anaconda安裝完成時就已經包含在裡面了。
(3)Anaconda中文是森蚺(大蟒蛇)。
1)可以把Anaconda當作是Python的懶人包,除了Python本身(python2, 3) 還包含了Python常用的資料分析、機器學習、視覺化的套件
2).完全開源和免費
3).額外的加速、優化是收費的,但對於學術用途可以申請免費的 License
4).全平台支持:Linux、Windows、Mac
5).支持 Python 2.6、2.7、3.3、3.4,可自由切換,
6).內帶spyder 編譯器(還不錯的spyder編譯器)
7).自帶jupyter notebook 環境 (就是網頁版的python編輯器,副檔名為IPthon)

(4)常用套件:

Numpy: Python做多維陣列(矩陣)運算時的必備套件,比起Python內建的list,Numpy的array有極快的運算速度優勢
Pandas:有了Pandas可以讓Python很容易做到幾乎所有Excel的功能了,像是樞紐分析表、小記、欄位加總、篩選
Matplotlib:基本的視覺化工具,可以畫長條圖、折線圖等等…
Seaborn:另一個知名的視覺化工具,畫起來比matplotlib好看
SciKit-Learn: Python 關於機器學習的model基本上都在這個套件,像是SVM, Random Forest…
Notebook(Jupyter notebook): 一個輕量級web-base 寫Python的工具,在資料分析這個領域很熱門,雖然功能沒有比Pycharm, Spyder這些專業的IDE強大,但只要code小於500行,用Jupyter寫非常方便,Jupyter也開始慢慢支援一些Multi cursor的功能了,可以讓你一次改許多的變數名稱
(5)優點:省時:一鍵安裝完90%會用到的Python套件,剩下的再用pip install個別去安裝即可
(6)缺點:占空間:包含了一堆用不到的Python的套件(可安裝另一種miniconda)

(7)下載網址:https://www.anaconda.com/
選擇個人版:indivisual
https://www.anaconda.com/products/individual
→Download
→Windows
Python 3.7(會自動幫你安裝Python 3.7)
64-Bit Graphical Installer (466 MB)
32-Bit Graphical Installer (423 MB)

(8)安裝過程,要勾選
不勾選:add the anaconda to the system PATH(但是2020年,ananconda不建議勾選這個,容易發生錯誤)
勾選:Register anaconda as system Python 3.7

(9)安裝結束
→在windows開始→anaconda有6個項目,最常用的有3個
(1)anaconda prompt:可以直接下cmd指令
(2)Spyter:編譯器(還不錯的spyder編譯器)
(3)jupyter notebook(網頁版的python編輯器,副檔名為IPthon)
4.Anaconda prompt:cmd指令 4.使用anaconda prompt:直接下cmd指令
注意:windows 10 必須使用管理員來執行(點選anaconda prompt→滑鼠右鍵→以系統管理員身份進行)
(1)列出目前已經安裝的anaconda的模組與版本:
conda list

(2)對某個模組更新安裝
conda update 模組
範例:conda update ipython

(3)安裝某個模組
方法1:conda install 模組
範例:conda install numpy

# 安裝 NumPy 1.15 以後、 1.16 以前
conda install 'numpy>=1.15,<1.16'

方法2:pip install 模組
範例:pip install numpy

(4)解除安裝某個模組
方法1:conda uninstall 模組
範例:conda uninstall numpy

方法2:輸入 conda remove PACKAGE_NAME可以從目前的工作環境移除指定套件。
# 移除 NumPy
conda remove numpy numpy-base

方法3:pip uninstall 模組
範例:pip uninstall numpy

(5)在anaconda prompt執行python程式
方法1:
先到工作目錄:cd ch1
執行.py程式:python test1.py

方法2:python c:\chp1\test1.py

(6)常用指令
conda --version 檢視 conda 版本
conda update PACKAGE_NAME更新指定套件
conda --help 檢視 conda 指令說明文件
conda list --ENVIRONMENT 檢視指定工作環境安裝的套件清單
conda install PACAKGE_NAME=MAJOR.MINOR.PATCH 在目前的工作環境安裝指定套件
conda remove PACKAGE_NAME 在目前的工作環境移除指定套件
conda create --name ENVIRONMENT python=MAIN.MINOR.PATCH 建立新的工作環境且安裝指定 Python 版本
conda activate ENVIRONMENT 切換至指定工作環境
conda deactivate 回到 base 工作環境
conda env export --name ENVIRONMENT --file ENVIRONMENT.yml 將指定工作環境之設定匯出為 .yml 檔藉此複製且重現工作環境
conda remove --name ENVIRONMENT --all 移除指定工作環境
使用 conda list | grep numpy 檢查 Python 套件清單中是否還有 NumPy 套件
輸入 conda search PACKAGE_NAME可以檢視指定套件在 conda 中可安裝的版本列表。
# 檢視 NumPy 在 conda 中可安裝的版本
conda search numpy=1.16.3
5.用Anaconda prompt來建立虛擬環境 5.使用Anaconda prompt來建立虛擬環境
功能:可以建立多個Anaconda虛擬環境
例如:目前安裝後預設是python 3.x版本的環境,若要創建一個python 2.x的環境,就可以在Anaconda虛擬環境實現
(1)# 檢視電腦中可使用與目前所在的工作環境
conda env list

(2)使用 conda create --name ENVIRONMENT python=MAIN.MINOR.PATCH 指令可以建立出乾淨、極簡且資源隔絕的工作環境。
指令:conda create -n 虛擬環境名稱 python=版本 anaconda

# 建立一個名稱為 demo 的 Python 2 工作環境
conda create --name demo python=2
範例:建立py27env環境
conda create -n py27env python=2.7 anaconda

(3)輸入 conda activate ENVIRONMENT 可以啟動指定工作環境、
方法1:conda activate ENVIRONMENT
方法2:activate ENVIRONMENT
範例:activate py27env

方法3:到windows→開始→點選Anaconda prompt(py27env)

(4)關閉虛擬目錄,回到原本pytohn環境(base)
使用 conda deactivate 則是切換回預設的 base 工作環境。
方法1:conda deactivate
方法2:deactivate

(5)# 檢視 demo 工作環境中的套件
conda list -n py27env

(5)範例 A.建立py27env虛擬環境
conda create -n py27env python=2.7 anaconda
B.切換到py27env虛擬環境
activate py27env
C.檢視 demo 工作環境中的套件
conda list -n py27env
D.# 檢視 Python 版本
python --version
E.關閉虛擬目錄,回到原本pytohn環境(base)
deactivate

(5)複製一個與目前pyhon環境(或是py27env) 完全相同的工作環境
conda create -n 新虛擬環境名稱 --clone root
範例:conda create -n py27env2 --clone root

# 檢查明確所有虛擬環境名稱
conda info -e

(6)移除某個虛擬環境
conda remove -n 虛擬環境名稱 --all
範例:conda remove -n py27env --all

(7)常用指令整理
安裝:conda install
更新:conda update
移除:conda remove

在工作環境管理透過
創建:conda create
啟動:conda activate
停止:conda deactivate
匯出設定檔:conda env export
移除:conda remove
6.使用Spyter編譯器 6.使用Spyter:編譯器
(1)新增一個py檔案
File→ New file

print("你好,歡迎光臨")
print(1+1)

Run➤

(2)開啟已經存在的檔案
方法1:File→ Open
方法2:拖曵檔案總管的py檔案到Spyder

(3)在Spyter使用簡易智慧輸入
方法:按『tab』
範例:
先輸入p
然後按『tab』
出現list清單,都是p開始的指令

(4)程式除錯
方法1:若是這一行有指令寫錯,就會在最左邊出現三角形▲警告icon
方法2:在這個一行最左邊double click,就會出現中斷點(或是這一行按F12)
7.jupyter notebook網頁版的python編輯器 7.jupyter notebook
(1)功能:是網頁版的python編輯器,副檔名為IPthon
會開啟瀏覽器:http://localhost:8888/tree
對應的硬碟目錄 = C:\Users\電腦名稱
(例如: C:\Users\user)

(2)練習線上編輯一個簡單python程式
A.右方→New→Python3
在cell裡面輸入In[1]
a = ("apple","grape","banana")
print(a[2])

B.Run

C.修改檔案名稱→Untitled→exp1-3

D.查詢雲端檔案放置位置:C:\Users\電腦名稱\exp1-3.ipynb

(3)二種不同的Run方式
A.Run:會新增一個new cell
B.Ctrl+Enter:會停留在原本的cell

(4)在jupyter notebook使用簡易智慧輸入
方法:按『tab』
範例:
先輸入p
然後按『tab』
出現list清單,都是p開始的指令

(5)在jupyter notebook編輯的檔案無法讓python IDE編譯
jupyter notebook編輯的檔案是.ipynb
與python的.py不同
改善方法:只能把程式碼複製貼上,在兩個平台交流
8.其它線上雲端可編譯的python平台 8.其它線上雲端可編譯的python平台
網站:http://rep.it/languages/python3
 

 
chp3.Pandas與數據分析
2-1.Python大數據分析最重要的四個模組:pandas,matplotlib,numpy,scipy 2-2.Pandas介紹 2-3.Pandas安裝 2-4.Pandas的資料結構
Pandas速查手冊 2-1-Pandas速查手冊
上課參考教材 用Pandas掌握商務大數據分析 pandas官網(英文) w3schools的pandas教學(英文) runoob的pandas菜鳥教程(中文)
pandas參考教材 w3Cschool的pandas教學(中文) Steam教學網-python 蓋若pandas 教程 pandas的df的操作函數
pandas參考教材 十分鐘入門 Pandas(英文) 十分鐘入門 Pandas(英文) 10分鐘的Pandas入門-繁中版 十分鐘入門 Pandas(中文)
pandas參考教材 pandas官網全部章節翻譯 pandas官網全部章節翻譯
pandas參考教材(英文) kaggle pandas教學 100 pandas tricks to save you time and energy 官網0.22.0:pandas documentation
pandas參考教材(中文) Pandas 101:資料分析的基石 資料科學家的pandas 實戰手冊:掌握40 個實用 簡明 Python Pandas 入門教學 資料分析必懂的Pandas DataFrame處理雙維度資料方法
pandas速查手冊 pandas 速查手册 - 盖若 Pandas速查手冊中文版 - 知乎專欄 Pandas速查手冊中文版- 騰訊雲開發者社區
pandas速查手冊 Pandas中DataFrame基本函數整理(全) Pandas 魔法筆記(1)-常用招式總覽
資料集dataset kaggle小費資料集範例A Waiter's Tips example 【視覺化】小費(tips)資料集分析 小費(tips)資料集提取和檢視相應資料 小費資料集Tips Dataset(csv)
資料集dataset Kaggle的星巴克滿意度調查資料集( 中文解析:Kaggle星巴克滿意度調查
SQL語法 SQL語法教程 pandas vs SQL 如何在Pandas裡寫SQL查詢語句
資料分析4大模組(runoob) numpy pandas matplotlib scipy
資料分析四大模組

1.Python大數據分析最重要的四個模組
Python資料分析最重要的四個模組:pandas、numpy、scipy、matplotlib。

(1)pandas:

是基於numpy的資料分析工具,能夠快速的處理結構化資料的大量資料結構和函數。
pandas模組應該是python用來進行一般日常的大數據分析,最重要的模組了。
因為pandas的DataFrame資料結構,可以快速的互通於所有的二維結構資料,包括『excel,csv,json,xml,mysql,任何的資料庫,網頁的表格資料,字典dict,二維串列list』
也就是pandas的DataFrame資料結構,可以與它們之間互相簡易的存取。
然後再根據DataFrame來進行想要的大數據分析,它提供內建的演算法與資料結構,能夠用一個指令,就可以進行二維資料的『排序,篩選,關鍵字查詢,任意區間範圍查詢,統計學計算,平均值,變異數,標準差,字串檢索,字串取代,欄位樞紐分析、小記、欄位加總,把二維資料任意方式圖形視覺化顯示』
而建立pandas的DataFrame資料結構,有兩種方式,可以用column的方式來輸入資料,也可以用row的方式來輸入資料。
所以pandas是大數據分析,非常實用的利器工具,是python資料分析的首選。

(2)Numpy:

Numpy專門用來處理矩陣,它的運算效率比列表list串列更高效。
Numpy是Python進行專業的數值計算之重要模組,因為大多數提供科學計算的包都是用numPy的陣列作為構建基礎,因此在進行高等數學計算時,numpy就是大數據分析的最重要工具了,因為高等數學運算,都是以矩陣的方式來進行運算,例如人工智慧,機器學習,深度學習,類神經網路計算等。

(3)sscipy:

是基於numpy的科學計算包,包括統計、線性代數等工具。

(4)matplotlib:

是最流行的用於繪製資料圖表的 Python 庫
也可以結合pandas模組來繪圖。

Pandas介紹

2-2.Pandas介紹:
特色:
(1)pandas是大數據分析,非常實用的利器工具,是python資料分析的首選。

(1)Pandas是python的一個數據分析模組,2009 年底被開發出來。
(2)pandas:是基於numpy的資料分析工具,能夠快速的處理結構化資料的大量資料結構和函數。

(3)pandas模組應該是python用來進行一般日常的大數據分析,最重要的模組了。

(4)提供高效能、簡易使用的資料格式(Data Frame)讓使用者可以快速操作及分析資料,

(5)Pandas強化了資料處理的方便性也能與處理網頁資料與資料庫資料等,有點類似於Office的Excel, 能更加方便的進行運算、分析等.
因為pandas的DataFrame資料結構,可以快速的互通於所有的二維結構資料,包括『excel,csv,json,xml,mysql,任何的資料庫,網頁的表格資料,字典dict,二維串列list』

(6)建立pandas的DataFrame資料結構,有兩種方式:
可以用column的方式來輸入資料,
也可以用row的方式來輸入資料。

(8) Pandas 是一個 Python 用來資料處理的工具,可以讀取各種檔案轉成欄列式資料格式,進而過濾或是進行資料前處理(將資料整理好方便後續資料分析使用)

(9)方便簡單的異質數據讀取、轉換和處理。
(10)提供兩種主要的資料結構:
Series用來處理時間序列相關的資料,是個擁有標籤的一維陣列;
DataFrame則是用來處理像表格一樣的二維的資料,並且可以隨意更改結構和任意欄位的資料型態。

(11)資料載入Pandas的資料結構物件後,可以提供的方法,統一進行資料處理,如合併、補值,過濾或取代等等。

(12)多輸入來源及多輸出整合,例如:可以從資料庫讀取資料進行處理後,可以輸出到資料庫或檔案等等。

Pandas安裝

2-3.Pandas安裝:

1. 若使用Anaconda:(Anaconda預設沒有安裝pandas):

安裝方法:
(1)Anaconda Prompt 或 Terminal 終端機下安裝
指令:pip install pandas

(2)若使用 Jupyter Notebook 安裝套件,需使用以下語法安裝:
指令:!pip install pandas


2. 若使用google雲端硬碟的雲端軟體:Cola,colaboratory:

colaboratory預設已經安裝pandas了。可以直接使用

Pandas的資料結構

2-4.Pandas的資料結構:

1. Pandas提供以下三種資料結構供使用:

(1)Series:用來處理時間序列相關的資料(如感測器資料等),
主要為建立索引的一維陣列。

(2)DataFrame:用來處理結構化(Table like)的資料,
有列索引與欄標籤的二維資料集,例如關聯式資料庫、CSV 等等。

(3)Panel:用來處理有資料及索引、列索引與欄標籤的三維資料集(除了特殊需求之外少使用… 略過)。


2.建立一維的(Series):
(1)一維的資料,就像列表List


(2)範例:建立Series物件
import pandas as pd
s = pd.Series([13, 30, 77, 6, 111, 10])

(3)Series就像一維陣列一樣(list),預設索引值從0開始。
dtype表示Series內資料型態為int64。

3.建立二維的DataFrame
(1)DataFrame結構為一個表格,類似微軟Excel或蘋果Numbers試算表:


(2)每個欄位內的資料型態是固定的。
不同欄位資料型態可以不同。

(3)範例:建立DataFrame
import pandas as pd
data = {
'學號': [1, 2, 3, 4, 5],
'姓名': ['Aaron', 'Amber', 'Apple', 'Andy', 'Astrid'],
'國文': [100, 90, 80, 70, 60],
'英文': [90, 80, 70, 60, 50],
'數學': [100, 95, 85, 75, 65]
}
df = pd.DataFrame(data)