SlideShare une entreprise Scribd logo
Python 工作坊
Python工作坊 黃柏瑀 @ NCTU
1
ABOUT
● 清大資工所在學中
● 清大學評中心資料分析
● 清大助教
● 大華科大講師
2
3
LINK
https://ppt.c
c/fLCpMx
投影片網址
資工系念久了,很多概念已經當
成理所當然,若有沒講清楚的地
方請踴躍發問!!!
4
10:00 - 12:00
Python 介紹與安裝
基礎語法介紹
13:30 - 15:30
爬蟲介紹與程式撰寫
15:40 - 17:30
Panda介紹與程式撰寫
5
Agenda
Python Introduction
What is Python?
What can Python do?
Why Python?
6
7
Python?
“Python is an interpreted high-level
programming language for
general-purpose programming.”
8
“Python is an interpreted high-level
programming language for
general-purpose programming.”
9
● 一種程式語言
● Python 直譯器
10
What is Python?
● 一種程式語言
● Python 直譯器
11
What is Python?
Python 的設計哲學:簡潔、易懂
12
13
● 一種程式語言
● Python 直譯器
14
What is Python?
15
直譯器?編譯器?
程式語言百百種,Python 有什麼
過人之處嗎?
16
Why Python?
● 運算資源越來越便宜,寶貴的
是人的時間
● 用最簡潔的語法,讓電腦做事
● 大公司用,所以跟著用
17
Why Python?
● Python’s standard libraries is:
○ very large
○ wide ranged
○ well-supported
○ well-documented
18
Batteries included
Why can Python do ?
19
20
Python?
21
Python?
22
Anything you can think of...
23
Python?
Anaconda 安裝
24
Anaconda
● Python 懶人安裝包
● Python2 + Python 3 + 一堆
常用的 libraries
25
Anaconda
1. 選擇作業系統
2. 選擇 architecture
(32 or 64)
26
DOWNLOAD
macOS 安裝/下載流程請參考
Windows 安裝/下載流程請參考
27
安裝今天課程所需的 packages
28
Step1. 打開終端機
(macOS)
29
Step1. 打開Anaconda Prompt
(Windows)
30
step 3. 安裝中...
31
下載今天課程的程式碼
32
Python 工作坊教材
33
DOWNLOAD
choose direct download
34
step 1. 解壓縮
35
step 1. 將資料夾放在房子底下的資料夾
(macOS)
36
step 1. 將資料夾放在
C:Users{UserNmae}
(Windows)
step 2 切換目錄
cd Python 工作坊
change directory 目錄名稱
37
Step3. 輸入以下指令
pip install -r requirements.txt
python
套件管理程式
安裝 從後面檔案讀
packages
name
含有 packages names 的檔案
38
完成!!!
可以開始寫程式囉!!!
39
40
等等,
你想面對黑黑(或白白)的
終端機寫 code 嗎?
41
更親民的選擇
IPython:Interactive Python Shell
● 程式總是修修改改,不會一寫就對
○ 有時候忘了語法
○ 有時候邏輯寫錯
● 這時候 python shell 就可以幫助你
○ 即時回饋
○ 和藹可親的老師手把手教學呢!
42
IPython overview
程式碼
執行結果
help 協助你查找語法
43
44
網頁版的 IPython: Jupyter-notebook
● 網頁連接電腦上
的 python 直譯器
● 可以 show 出各
種圖表
Relation of Ipython and Jupyter-notebook?
45
Jupyter-notebook workflow
46
Jupyter-notebook Overview
47
Cell
48
Insert New Cell
49
Run Cell
50
Shift + Enter to run
code
Run All Cell at Once
51
來點基本語法吧 !!!
52
基本程式結構
53
定義變數
定義 function
執行 function
基本程式結構
#開頭代表註解,會被直
譯器忽略
縮排區隔出程式碼區塊
變數(variable)
55
● 程式語言的主角,紀錄資料在程式中的變化
● 讓程式容易被閱讀和理解
● 聽聽小男孩怎麼說
名字 = '馬力喔'
滿血 = 75
金幣 = 4141
跑速 = 10
加速度 = 1.17
資料型態 (data type)
56
名字 = '馬力喔' # string
滿血 = 75 # int
金幣 = 4141 # int
跑速 = 10 # int
加速度 = 1.17 # float
資料型態轉換
57
Data Structure: List
58
請用一個變數描述馬力喔的狀態?
名字 = '馬力喔' # string
滿血 = 75 # int
金幣 = 4141 # int
跑速 = 10 # int
加速度 = 1.17 # float
馬力喔_status = [ '馬力喔', 75 , 4141, 10 , 1.17 ]
List 的取值
59
馬力喔_status = [ '馬力喔', 75 , 4141, 10 , 1.17 ]
第0個 第4個
馬力喔_status[0] -> ‘馬力喔’
馬力喔_status[4] -> 1.1.7
馬力喔_status[-1] -> 1.17
Data Structure: Dict
60
請用一個變數描述馬力喔的狀態?
名字 = '馬力喔' # string
滿血 = 75 # int
金幣 = 4141 # int
跑速 = 10 # int
加速度 = 1.17 # float
馬力喔_status = {
'名字:' : '馬力喔',
'滿血': 75,
'金幣':4141,
'跑速':10,
'加速度': 1.17
}
Dict 的取值
61
請用一個變數描述馬力喔的狀態?
馬力喔_status = {
'名字:' : '馬力喔',
'滿血': 75,
'金幣':4141,
'跑速':10,
'加速度': 1.17
}
馬力喔_status[‘名字’] -> ‘馬力喔’
馬力喔_status[‘加速度’] -> 1.17
馬力喔_status[‘金幣’] -> 75
馬力喔_status[‘性別] -> Error
module
站在巨人的肩膀上 -> 立基於大神的程式碼
62
Use Modules
如何在自己的程式中引用別人的程式碼呢?
63
import 應用藝術研究所
應用藝術研究所.取得同學名單()
import 應用藝術研究所 as 應
應.取得同學名單()
每次使用都要打落落長的文字,有簡潔一點的寫法嗎?
Use Modules
如何在自己的程式中引用別人的程式碼呢?
64
import a_module
a_module.method()
import a_module as m
m.method()
每次使用都要打落落長的文字,有簡潔一點的寫法嗎?
Only want some functions in module
65
from 應用藝術研究所同學名單 import 郭同學 as 郭
郭()
from 應用藝術研究所同學名單 import 郭同學
郭同學()
應用藝術研究
所同學名單
姚同學
郭同學
林同學
只需要 郭同學
Only want some functions in module
66
from a_module import methodB as B
B()
from a_module import methodB
methodB()
a_module
methodA
methodB
methodC
只需要 methodB
Value & naming
● python 只有 name 沒有
variable
● name refer to variable
● many name can refer to
one value
● Names are reassigned
independently
● [Python Names]
67
break time
68
69
70
網路爬蟲是什麼?
71
網路爬蟲是什麼? 爬取網頁的程式
72
網頁
73
實際上是
<div class="r-ent">
<div class="nrec">...</div>
<div class="title">
<a href="/bbs/movie/M.1534377501.A.8AA.html">[請益] 請問
有人看過001嗎</a>
….
<div class="item"><a href="/bbs/movie/search?q=...">搜尋同
標題文章</a></div>
….
74
box in box
<div class="r-ent">
<div class="nrec">...</div>
<div class="title">
<a href="/bbs/movie/M.1534377501.A.8AA.html">[請益] 請問有人看過001嗎</a>
….
<div class="item"><a href="/bbs/movie/search?q=...">搜尋同標題文章
….
75
爬蟲爬資料的方式
<div class="r-ent">
<div class="nrec">...</div>
<div class="title">
<a href="/bbs/movie/M.1534377501.A.8AA.html">[請益] 請問有人看過001嗎</a>
….
<div class="item"><a href="/bbs/movie/search?q=...">搜尋同標題文章
….
76
網路爬蟲能為我們做什麼?
● 網路搶票
● ptt 測風向
● 股票歷史紀錄抓取
● [video:文組都能懂的網路爬
蟲]
77
Requests: HTTP for Human
輕鬆地透過 Python 和爬取網頁資料
78
79
lego Get()
return lego back()
80
What is HTTP ?
81
How do we order a meal?
.doc
.ppt
.txt
82
How do we order a meal?
83
Get(data)
return back(data)
How do we open a file?
How Browser open a web page?
84
http Get(URL)
return web page
瀏覽器
伺服器
How to use Requests?
85
requests.get(URL)
return web page
利用 multicore
加速爬蟲
86
87
你的 CPU
88
不像你想的那樣
89
不像你想的那樣
Core Core
Core Core
90
每個 core 就像
一個什麼都會的工人
Core Core
Core Core
Core
=
91
之前,我們讓一個工人去執行爬蟲
工作內容:
92
但我們有四個工人
93
讓他們一起爬起來 !
94
讓他們一起爬起來 !
95
use Multiprocess package
from multiprocessing import Pool
...
...
URLs = ['ptt網址', 'ptt網址2', ...]
with Pool(processes=4) as pool:
contents = pool.map(crawler, URLs)
96
use Multiprocess package
with Pool(processes=4) as pool:
contents = pool.map(crawler, URLs)
Pool 像一個小房間
(容量等於 4)
97
use Multiprocess package
上工 GOGOGO !
98
use Multiprocess package
99
use Multiprocess package
做完收工
回小房間等下一個工作 QQQ..
List Comprehension
100
Numpy Overview
101
NumPy is the foundation of theNumPy is the foundation
of thepython scientific stackpython scientific stack
102
Numpy Ecosystem
103
why Numpy?
● Python is slow compared to compiled language like C/C++.
104
Why numpy fast?
105
Numpy Internal
106
Numpy 資源
● Cheat sheet
107

Contenu connexe

Similaire à Python 工作坊 (NCTU)

Proud Plone on Cloud
Proud Plone on CloudProud Plone on Cloud
Proud Plone on CloudTsungWei Hu
 
專案績效提昇四步驟-簡單學會專案管理
專案績效提昇四步驟-簡單學會專案管理專案績效提昇四步驟-簡單學會專案管理
專案績效提昇四步驟-簡單學會專案管理明義 袁
 
Python简明教程
Python简明教程Python简明教程
Python简明教程ingong
 
twMVC#46_SQL Server 資料分析大躍進 Machine Learning Services
twMVC#46_SQL Server 資料分析大躍進 Machine Learning ServicestwMVC#46_SQL Server 資料分析大躍進 Machine Learning Services
twMVC#46_SQL Server 資料分析大躍進 Machine Learning ServicestwMVC
 
D2_Node在淘宝的应用实践
D2_Node在淘宝的应用实践D2_Node在淘宝的应用实践
D2_Node在淘宝的应用实践Jackson Tian
 
柔性数据接口的设计与实现
柔性数据接口的设计与实现柔性数据接口的设计与实现
柔性数据接口的设计与实现Leo Zhou
 
Swift girls 9th_teaching_meeting20171016
Swift girls 9th_teaching_meeting20171016Swift girls 9th_teaching_meeting20171016
Swift girls 9th_teaching_meeting20171016雅方 鄭
 
简单Pthon教程
简单Pthon教程简单Pthon教程
简单Pthon教程junjun chen
 
淺談物聯網巨量資料挑戰 - Jazz 王耀聰 (2016/3/17 於鴻海內湖) 免費講座
淺談物聯網巨量資料挑戰 - Jazz 王耀聰 (2016/3/17 於鴻海內湖) 免費講座淺談物聯網巨量資料挑戰 - Jazz 王耀聰 (2016/3/17 於鴻海內湖) 免費講座
淺談物聯網巨量資料挑戰 - Jazz 王耀聰 (2016/3/17 於鴻海內湖) 免費講座NTC.im(Notch Training Center)
 
我要活下來 - Ruby Junior 工程師的存活術
我要活下來 - Ruby Junior 工程師的存活術我要活下來 - Ruby Junior 工程師的存活術
我要活下來 - Ruby Junior 工程師的存活術Li Hsuan Hung
 
參考講義展示版-丘祐瑋-20170617-機器學習python入門者課程
參考講義展示版-丘祐瑋-20170617-機器學習python入門者課程參考講義展示版-丘祐瑋-20170617-機器學習python入門者課程
參考講義展示版-丘祐瑋-20170617-機器學習python入門者課程Beckett Hsieh
 
Python web开发吐槽
Python web开发吐槽Python web开发吐槽
Python web开发吐槽Felinx Lee
 
F723000 class#5 devops
F723000 class#5 devopsF723000 class#5 devops
F723000 class#5 devopsncku_f723000
 
如何利用 OpenAPI 及 WebHooks 讓老舊的網路服務也可程式化
如何利用 OpenAPI 及 WebHooks 讓老舊的網路服務也可程式化如何利用 OpenAPI 及 WebHooks 讓老舊的網路服務也可程式化
如何利用 OpenAPI 及 WebHooks 讓老舊的網路服務也可程式化Mu Chun Wang
 
20如何成为真正的ppt高手(2010网络传播版)
20如何成为真正的ppt高手(2010网络传播版)20如何成为真正的ppt高手(2010网络传播版)
20如何成为真正的ppt高手(2010网络传播版)hustmarco
 

Similaire à Python 工作坊 (NCTU) (20)

Proud Plone on Cloud
Proud Plone on CloudProud Plone on Cloud
Proud Plone on Cloud
 
專案績效提昇四步驟-簡單學會專案管理
專案績效提昇四步驟-簡單學會專案管理專案績效提昇四步驟-簡單學會專案管理
專案績效提昇四步驟-簡單學會專案管理
 
RESTful API Design
RESTful API DesignRESTful API Design
RESTful API Design
 
Python简明教程
Python简明教程Python简明教程
Python简明教程
 
twMVC#46_SQL Server 資料分析大躍進 Machine Learning Services
twMVC#46_SQL Server 資料分析大躍進 Machine Learning ServicestwMVC#46_SQL Server 資料分析大躍進 Machine Learning Services
twMVC#46_SQL Server 資料分析大躍進 Machine Learning Services
 
D2_Node在淘宝的应用实践
D2_Node在淘宝的应用实践D2_Node在淘宝的应用实践
D2_Node在淘宝的应用实践
 
柔性数据接口的设计与实现
柔性数据接口的设计与实现柔性数据接口的设计与实现
柔性数据接口的设计与实现
 
Swift girls 9th_teaching_meeting20171016
Swift girls 9th_teaching_meeting20171016Swift girls 9th_teaching_meeting20171016
Swift girls 9th_teaching_meeting20171016
 
Python系列1
Python系列1Python系列1
Python系列1
 
getPDF.aspx
getPDF.aspxgetPDF.aspx
getPDF.aspx
 
getPDF.aspx
getPDF.aspxgetPDF.aspx
getPDF.aspx
 
简单Pthon教程
简单Pthon教程简单Pthon教程
简单Pthon教程
 
淺談物聯網巨量資料挑戰 - Jazz 王耀聰 (2016/3/17 於鴻海內湖) 免費講座
淺談物聯網巨量資料挑戰 - Jazz 王耀聰 (2016/3/17 於鴻海內湖) 免費講座淺談物聯網巨量資料挑戰 - Jazz 王耀聰 (2016/3/17 於鴻海內湖) 免費講座
淺談物聯網巨量資料挑戰 - Jazz 王耀聰 (2016/3/17 於鴻海內湖) 免費講座
 
Ai robot
Ai robotAi robot
Ai robot
 
我要活下來 - Ruby Junior 工程師的存活術
我要活下來 - Ruby Junior 工程師的存活術我要活下來 - Ruby Junior 工程師的存活術
我要活下來 - Ruby Junior 工程師的存活術
 
參考講義展示版-丘祐瑋-20170617-機器學習python入門者課程
參考講義展示版-丘祐瑋-20170617-機器學習python入門者課程參考講義展示版-丘祐瑋-20170617-機器學習python入門者課程
參考講義展示版-丘祐瑋-20170617-機器學習python入門者課程
 
Python web开发吐槽
Python web开发吐槽Python web开发吐槽
Python web开发吐槽
 
F723000 class#5 devops
F723000 class#5 devopsF723000 class#5 devops
F723000 class#5 devops
 
如何利用 OpenAPI 及 WebHooks 讓老舊的網路服務也可程式化
如何利用 OpenAPI 及 WebHooks 讓老舊的網路服務也可程式化如何利用 OpenAPI 及 WebHooks 讓老舊的網路服務也可程式化
如何利用 OpenAPI 及 WebHooks 讓老舊的網路服務也可程式化
 
20如何成为真正的ppt高手(2010网络传播版)
20如何成为真正的ppt高手(2010网络传播版)20如何成为真正的ppt高手(2010网络传播版)
20如何成为真正的ppt高手(2010网络传播版)
 

Python 工作坊 (NCTU)