SlideShare a Scribd company logo
7 檔案
時雨量檔轉製多小時累積雨量檔 (一)
15
 以下為 2015 年 9 月 28 日梅姬颱風穿越台灣中部時於石門水庫上游
10 個雨量測站所記錄到的時雨量(mm)資料檔如下:
7 檔案 16
檔案的第一列為各個測站名稱,第二列為各測站的雨量百分比加權
數,整個石門水庫集水區域的平均時雨量為各個測站量測雨量乘上對應
的加權數之和。某生要讀入此時雨量檔造出指定的多個小時累積雨量檔
。例如:四小時累積雨量為以每四個小時為累積單位的雨量數據
("rain4.dat"),造出的資料檔如下:
時雨量檔轉製多小時累積雨量檔 (二)
rain.dat@web
7 檔案 17
時雨量檔轉製多小時累積雨量檔 (三)
檔案資料處理是許多人經常需要做的,對一些簡單問題,使用類似 Excel
試算表即可解決,但若為複雜的資料處理問題,仍需透過程式設計才能完成。
一般來說,當每一列的資料在讀入程式後通常都需要做數據分解,此時可使用
split() 與星號式子將資料存入串列,但分解後的數據仍屬字串型別,若要用
於計算需將字串型別的數字轉型為數字,此時可透過 list comprehension
或者是使用 map 函式,這些都考驗著程式設計者要熟悉串列與字串的相關語
法,才能於程式中自由運用。
本題目要列印每 n 個小時的累積雨量,解題關鍵即要找到每 n 個小時的
第一個小時,重新設定累積雨量為第一個小時兩量。有了初始雨量,第二個小
時之後的雨量即可累加。程式碼如同前幾章範例一樣都相當簡潔。
本程式只要稍加改寫,就可自動產生各種間隔小時的累積雨量資料檔,同
時若配合使用 pylab 繪圖套件,所產生的資料就能以各式的圖形呈現出來,
這就是使用程式設計處理資料的好處。 python 程式語言在資料處理的方便性
與靈活度是一般試算表軟體難以望其項背,當然要達到運用自如、自由自在的
地步,就需具備純熟的 python 程式設計能力。
7 檔案 18
n = int( input( "> " ) )
ofile = "rain" + str(n) + ".dat"
with open("rain.dat") as infile , open(ofile,"w") as outfile :
# 讀寫前二列
outfile.write(infile.readline())
outfile.write(infile.readline())
# 第三列以後
for i , line in enumerate(infile) :
date , hr , *rain = line.split()
# 將字串數字轉型為整數
rain = [ int(x) for x in rain ]
if i%n == 0 :
# 每 n 小時雨量的第一個小時
rsum = rain
else :
# 每 n 小時雨量的第二個小時之後
for k , rf in enumerate(rain) :
rsum[k] += rf
# 在 n 小時的倍數時,列印累積雨量
if (i+1)%n == 0 :
arf = ( date + ":" + hr +
" ".join( map( lambda x : "{:>5}".format(x) , rsum ) ) )
outfile.write( arf + "n" )
時雨量檔轉製多小時累積雨量檔 (四)
7 檔案
雨量直條圖 (一)
19
 讀入上題的時雨量檔案,畫出各測站當天所量測到的雨量直條圖。
由於 matplotlib 尚無法正確使用中文字型,圖形的測站名稱暫時以
大寫字母表示。
本題讀取上題的資料檔,由中畫出石門水庫集水區各個測站的一日量
測到的雨量圖。計算雨量的程式部份很簡單,大部份的程式是用設定圖形
呈現樣式。 rain.dat@web
7 檔案
雨量直條圖 (二)
20
import pylab
pylab.figure(facecolor=’white’)
with open( "rain.dat" ) as infile :
# 跳過中文測站名稱
infile.readline()
#讀取百分比加權數
wname , *weights = infile.readline().strip().split()
sumloc = [0] * len(weights)
for line in infile :
date , hr , *srainfall = line.strip().split()
rainfall = [ int(x) for x in srainfall ]
#加總各個測站一天的雨量
sumloc = list( map( lambda x , y : x+y , sumloc , rainfall ) )
7 檔案
雨量直條圖 (三)
21
# 計算集水區一天的平均雨量
total = sum( map( lambda x , y : x*float(y)/100 , sumloc , weights ) )
xs = [ x+1 for x in range(len(weights)) ]
# 給 xs 與 sumloc 畫直條圖
pylab.bar(xs,sumloc,align=’center’,color=’c’)
# 設定各直條圖的刻度文字:以大寫字母代替
pylab.xticks(xs,[ chr(ord(’A’)+i) for i in range(len(weights))])
# 顯示區域,格線
pylab.axis( (0,11,0,500) )
pylab.grid()
# 設定 x 軸與 y 軸文字
pylab.xlabel(’Location’)
pylab.ylabel(’Rainfall in mm’)
# 設定圖形標頭文字
pylab.title( ’Average Rainfall : ’ + ”{:6.2f}”.format(total) +
’ mm on ’+ date, color=’r’,fontsize=16) )
# 儲存圖形
pylab.savefig(’rain_vbar.jpg’)
pylab.show()
7 檔案
四小時累積雨量直條圖 (一)
22
 本題利用 pylab 的 subplots 函式讀入上題的雨量檔,計算各測站
每四小時的累積雨量,以 2x3 矩陣式排列六張累積雨量圖。由於使用
pylab 畫複合圖形的程式語法相較複雜,本程式的大部份都在設定各圖
形的呈現細節。
本範例教授使用者如何由資料檔讀入資料後,經過計算畫出多張子
圖。未來讀者若有需要可依樣畫葫蘆輕鬆地產生矩陣式排列圖形。
7 檔案
四小時累積雨量直條圖 (二)
23
import pylab
n = 4
all_sumlocs = []
totals = []
with open( "rain.dat" ) as infile :
# 跳過中文測站名稱
infile.readline()
# 讀取百分比加權數
wname , *weights = infile.readline().strip().split()
for k , line in enumerate(infile) :
date , hr , *srainfall = line.strip().split()
rainfall = [ int(x) for x in srainfall ]
if k%n == 0 :
# 第一個小時
sumloc = rainfall
else :
# 第二個小時後雨量加總
sumloc = list( map( lambda x , y : x+y , sumloc , rainfall ) )
if (k+1)%n == 0 :
all_sumlocs += [ sumloc ]
# 計算集水區每 4 個小時的平均雨量
totals += [ sum( map( lambda x , y : x*float(y)/100 ,
sumloc , weights ) ) ]
7 檔案
四小時累積雨量直條圖 (三)
24
# 找出所有測站的最大雨量
maxr = 0
for x in all_sumlocs : maxr = max( *x , maxr )
# 調整為雨量最大刻度值
maxr = int(pylab.ceil(maxr/50)*50)
# 子圖橫縱向數量
nrows , ncols = 2 , 3
# 區分 2x3 圖形六圖,共用 x , y 軸
fig , gs = pylab.subplots(nrows,ncols,sharex=’all’,sharey=’all’,
facecolor=’w’)
# hspace 設定縱向兩圖間的間距(平均縱軸高度的比例)
# wspace 設定橫向兩圖間的間距(平均橫軸寬度的比例)
pylab.subplots_adjust(hspace=0.4,wspace=0.2)
# X 座標
xs = [ x+1 for x in range(len(weights)) ]
# 直條圖的 rgb 色碼
cs = ( 0.1 , 0.6 , 0.8 )
# k 圖形順序下標
k = 0
# 給 xs 與 sumloc 畫直條圖
for i in range(nrows) :
7 檔案
四小時累積雨量直條圖 (四)
25
for j in range(ncols) :
# 畫直條圖
gs[i][j].bar(xs,all_sumlocs[k],align=’center’,color=cs)
# 設定各直條圖的刻度文字:以大寫字母代替
pylab.setp( gs[i][j] , xticks = xs ,
xticklabels = [ chr(ord(’A’)+i)
for i in range(len(weights))] )
# 顯示區域,格線
gs[i][j].axis( (0,11,0,maxr) )
gs[i][j].grid()
# 設定 x 軸與 y 軸文字
gs[i][j].set_xlabel(’Location’)
gs[i][j].set_ylabel(’Rainfall in mm’)
# 設定圖形標頭文字
gs[i][j].set_title( date + ’ [{:0>2}-{:0>2}]’.format(k*4,(k+1)*4) +
’ : ’ + "{:6.2f}".format(totals[k]) + ’ mm’ ,
color=’r’ , fontsize=14 )
k += 1
pylab.show()
7 檔案
小綠人 (一):使用網頁表格
26
網路的發達使得以網頁來呈現程式的輸出變得更為頻繁,為了讓瀏覽器能依程
式輸出排版,程式在輸出時就要以 html 語法來安排資料。本範例特別使用 html
的表格來呈現小綠人的點矩陣圖,以下是簡單的 html 語法介紹。
html 是一種標識語言(markup language)用來將資料加以排版呈現於網頁
上,資料通常寫在起始/終止標籤之間,例如:<html>...</html> 為整個 html
檔起始與終止標籤,網頁內容都寫在其中。一個 html 檔包含表頭
<head>...</head> 與主體 <body>...</body> 兩大部份,表頭用來儲存網
頁的一些設定,如網頁的字元編碼方式、網頁標頭(title)、網頁連結(link)、樣
式(style)等等,而網頁內容則寫在主體標籤內。html 包含許多排版標籤可用來
建構各式各樣的版型,有興趣者可自行上網搜尋「html」,在此並不多描述。以下
為一個 html 檔基本型式:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>小綠人</title>
</head>
<body>
...
</body>
</html>
7 檔案
小綠人 (二)
27
以上第一列告知瀏覽器此檔為 html5 文件, <meta charset=”UTF-8”>
代表網頁是以 UTF-8 編碼, <title>小綠人</title> 設定網頁標頭名稱為「
小綠人」。
本範例要使用 html 的 table 表格標籤,藉由設定格子的長寬尺寸與控制
格子的背景顏色於網頁呈現三個點陣小綠人圖形。html 的表格標籤為 <table>
</table>,表格中的每一列由 <tr> 起始 </tr> 結束。每列可有若干個欄位
,各欄位可用 <th> </th> 或 <td> </td> 來設定,兩者差別是前者會將欄位
文字以粗體字呈現且置中排列,<th> 通常用在表格的第一列。例如:
<table>
<tr><th>動物</th><th>數量</th></tr>
<tr><th>羊</th><td>20</td></tr>
<tr><th>牛</th><td>10</td></tr>
</table>
動物 數量
羊 20
牛 10
7 檔案
小綠人 (三)
28
表格欄位的尺寸與背景或文字顏色可在 <th> 或 <td> 內設定,例如:
<table>
<tr>
<th style="width:2cm;height:1cm;background-
color:#aaffaa;color:red;">動物</th>
<th style="width:2cm;height:1cm;background-
color:#aaffaa;color:red;">數量</th>
</tr>
<tr style="background-color:#bbffff;">
<th style="color:green;">羊</th>
<td style="color:blue;text-align:center">20</td>
</tr>
<tr style="background-color:#bbffff;">
<th style="color:green;">牛</th>
<td style="color:blue;text-align:center">10</td>
</tr>
</table>
7 檔案
小綠人 (四)
29
以上 style 樣式用來設定使用標籤一些控制參數,參數以分號分開,雙引號包
裹起來。例如:width 與 height 設定寬度與高度,background-color 與
color 分別為背景顏色與文字顏色。顏色設定可直接使用顏色名稱或以 16 進位方
式依次設定紅色、綠色、藍色三種顏色的強度。例如:#ff0000 代表紅色,
#00ff00 代表藍色,#7f0000 代表暗紅色,#ffff00 則為黃色。text-align
用來控制文字的水平對齊位置,可設為 left、center、 right 分別代表靠左,
置中或靠右對齊。其它尚有許多參數,由於篇幅限制,予以忽略。
以上表格僅有三列,但其 html 語法已有些繁瑣,每個 <th> 或 <td> 都要
輸入一長串的 style 設定是相當耗時。為簡化輸入,可先將常用樣式寫在 <head>
的 <style> 標籤內,然後在應用的標籤上使用 class 設定樣式名稱即可。例如以
下在 <style> 內設定了三個樣式:rc、gm、by,之後不同的 <th> 標籤可利用
class 直接使用樣式。請留意,在 <style> 內的樣式名稱前都要加句點。
動物 數量
羊 20
牛 10
7 檔案
小綠人 (五)
30
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>數學系</title>
<style>
.rc {width:1cm;height:1cm;background-color:red;color:cyan;}
.gm {width:1cm;height:1cm;background-color:green;color:magenta;}
.by {width:1cm;height:1cm;background-color:blue;color:yellow;}
</style>
</head>
<body>
<table>
<tr><th class=”rc”>數</th><th class=”gm”>學</th><th class=”by”>系
</th></tr>
</table>
</body>
</html>
數 學 系
7 檔案
小綠人 (六)
31
許多網頁的內容經常隨著時間更動,若以手動方式修改網頁的 html
檔是不切實際的。一般的作法是透過程式自動產生更新的 html 檔,這
樣可節省大量時間。
本範例要使用網頁來呈現三個點矩陣小綠人,程式作法與第 68 頁
點矩範例類似,唯一的差別是本範例程式透過更動表格欄位的背景顏色替
代點矩陣的輸出點,當瀏覽器開啟網頁輸出檔後可看到以下的圖案:
7 檔案
小綠人 (七)
32
# 小綠人點矩陣
gman = [ 0x180 , 0x3c0 , 0x180 , 0xc0 , 0xf0 , 0xe8 , 0x164 ,
0x264 , 0x70 , 0x50 , 0x8e , 0x81 , 0x82 , 0x300 ]
# 每個小綠人為 14x10 點矩陣構成
R , C = 14 , 10
headstr = ’’’
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>小 綠 人</title>
<style>
.red {width:10mm;height:10mm;background-color:red;}
.green {width:10mm;height:10mm;background-color:green;}
.blue {width:10mm;height:10mm;background-color:blue;}
.white {width:10mm;height:10mm;background-color:white;}
</style>
</head>
’’’
stys = [ "red" , "green" , "blue" ]
wsty = "white"
tailstr = "</body>n</html>n"
7 檔案
小綠人 (八)
33
# 產生 html 語法檔
with open( "gman.htm","w") as outfile :
outfile.write( headstr )
outfile.write( "<body>n<table>n" )
# 每列
for r in range(R) :
outfile.write( "<tr>n" )
# 每個小綠人
for k in range(3) :
# 每行
for c in range(C-1,-1,-1) :
if gman[r] & ( 1 << c ) :
outfile.write( ’<th class="’ + stys[k] + ’"></th>n’ )
else :
outfile.write( ’<th class="’ + wsty + ’"></th>n’ )
outfile.write( ’<th class="’ + wsty + ’"></th>n’ )
outfile.write( "</tr>n" )
outfile.write( "</table>n" )
outfile.write( tailstr )
7 檔案
世界各國教育支出比例排名 (一)
34
 在 wiki 百科網頁中有著世界各國在教育支出上佔該國 GDP 百分比的統
計表,資料經過整理後如下:
edu.dat@web
7 檔案
世界各國教育支出比例排名 (二)
35
以上每一列資料依次為國名、GDP 百分比、統計年度、註解。資料中
有些國家的名稱可能不只為一個字。若該國家沒有 GDP 百分比時則以
n.a. 替代。
現在我們要撰寫程式重新以 GDP 的百分比由大到小排列,沒有 GDP
百分比的國家排列在最後,同時將資料以橫線替代。此外如果 GDP 百分比
一樣的國家,則按照國家名稱的字母順列排列。以下程式要輸出的內容:
7 檔案
世界各國教育支出比例排名 (三)
36
由以上的輸出規定,本範例在讀入資料檔後要依 GDP 支出百分比排序
,同時在列印時除了要改變資料排列格式外,也要微幅更改呈現資料,這樣
的簡單要求是試算表程式無法勝任的,通常透過程式設計才能處理。一般來
說,資料處理是 python 程式語言的強項,經常只要短短的幾十列程式就
能解決大多數問題。
以下的程式大致區分為兩部份,第一部份為讀檔,檔案的每一列包含國
名、GDP、年份、來源等等,仔細觀察資料,發現有些國家的名稱超過一個
字,此時可使用星號式子將國名先存為字串串列,之後在將其合併為單一字
串。程式的第二部份為排序,在 sorted 函式內定義排序標準,回傳排序
串列用來表示資料是先依 GDP 百分比由大到小,再依國名字母順序排列。
最後在程式末尾使用 format 重新排列資料後列印。
7 檔案
世界各國教育支出比例排名 (四)
37
nations , gdps , years = [] , [] , []
with open("edu.dat") as infile :
for line in infile :
if line.isspace() : continue
# 星號將多字串的國家名稱儲存到串列
*nation , gdp , year , src = line.split()
# 儲存國名與年度資料於串列
nations.append( " ".join(nation) )
years.append( year )
# 沒有資料時,gdp 以 -1 替代
if year == "n.a." :
gdps.append( -1 )
else :
gdps.append( float(gdp) )
7 檔案
世界各國教育支出比例排名 (五)
38
i = 1
# 依 gdp 由大到小,國名依字母順序排列
for nation , gdp , yr in sorted( zip(nations,gdps,years) ,
key=lambda p : ( -p[1] , p[0] ) ) :
if gdp == -1 :
line = "{:>3}:{:>5} [{:>4}] {:}".format( i , "---" ,
yr , nation )
else :
line = "{:>3}:{:>5.1F} [{:>4}] {:}".format( i , gdp ,
yr , nation )
print( line )
i += 1

More Related Content

What's hot

Ch11 教學
Ch11 教學Ch11 教學
Ch11 教學
hungchiayang1
 
Ch12 範例
Ch12 範例Ch12 範例
Ch12 範例
hungchiayang1
 
Ch6 教學
Ch6 教學Ch6 教學
Ch6 教學
hungchiayang1
 
Ch9 教學
Ch9 教學Ch9 教學
Ch9 教學
hungchiayang1
 
Ch10 範例
Ch10 範例Ch10 範例
Ch10 範例
hungchiayang1
 
Ch5 範例
Ch5 範例Ch5 範例
Ch5 範例
hungchiayang1
 
Ch9 範例
Ch9 範例Ch9 範例
Ch9 範例
hungchiayang1
 
Ch8 範例
Ch8 範例Ch8 範例
Ch8 範例
hungchiayang1
 
Appendix B 教學
Appendix B 教學Appendix B 教學
Appendix B 教學
hungchiayang1
 
Appendix B 範例
Appendix B 範例Appendix B 範例
Appendix B 範例
hungchiayang1
 
Ppt 1-50
Ppt 1-50Ppt 1-50
Ppt 1-50
hungchiayang1
 
Ch2 教學
Ch2 教學Ch2 教學
Ch2 教學
hungchiayang1
 
Ppt 51-77
Ppt 51-77Ppt 51-77
Ppt 51-77
hungchiayang1
 
Ppt 138-142
Ppt 138-142Ppt 138-142
Ppt 138-142
hungchiayang1
 
Ch1 教學
Ch1 教學Ch1 教學
Ch1 教學
hungchiayang1
 
Ppt 127-135
Ppt 127-135Ppt 127-135
Ppt 127-135
hungchiayang1
 
Sym py edu
Sym py eduSym py edu
Sym py edu
Alisha Smile
 

What's hot (20)

Ch11 教學
Ch11 教學Ch11 教學
Ch11 教學
 
Ch12 範例
Ch12 範例Ch12 範例
Ch12 範例
 
Ch6 教學
Ch6 教學Ch6 教學
Ch6 教學
 
Ch9 教學
Ch9 教學Ch9 教學
Ch9 教學
 
Ch10 範例
Ch10 範例Ch10 範例
Ch10 範例
 
Ch5 範例
Ch5 範例Ch5 範例
Ch5 範例
 
Ch9 範例
Ch9 範例Ch9 範例
Ch9 範例
 
Ch8 範例
Ch8 範例Ch8 範例
Ch8 範例
 
Appendix B 教學
Appendix B 教學Appendix B 教學
Appendix B 教學
 
Appendix B 範例
Appendix B 範例Appendix B 範例
Appendix B 範例
 
Ppt 1-50
Ppt 1-50Ppt 1-50
Ppt 1-50
 
Ch2 教學
Ch2 教學Ch2 教學
Ch2 教學
 
Ch8
Ch8Ch8
Ch8
 
Ppt 51-77
Ppt 51-77Ppt 51-77
Ppt 51-77
 
Ch5
Ch5Ch5
Ch5
 
Ppt 138-142
Ppt 138-142Ppt 138-142
Ppt 138-142
 
Ch1 教學
Ch1 教學Ch1 教學
Ch1 教學
 
Ch5
Ch5Ch5
Ch5
 
Ppt 127-135
Ppt 127-135Ppt 127-135
Ppt 127-135
 
Sym py edu
Sym py eduSym py edu
Sym py edu
 

Similar to Ch7 範例

ncuma_pylab.pptx
ncuma_pylab.pptxncuma_pylab.pptx
ncuma_pylab.pptx
NCU MCL
 
手把手教你 R 語言分析實務
手把手教你 R 語言分析實務手把手教你 R 語言分析實務
手把手教你 R 語言分析實務
Helen Afterglow
 
Python入門:5大概念初心者必備 2021/11/18
Python入門:5大概念初心者必備 2021/11/18Python入門:5大概念初心者必備 2021/11/18
Python入門:5大概念初心者必備 2021/11/18
Derek Lee
 
20161017 R語言資料分析實務 (2)
20161017 R語言資料分析實務 (2)20161017 R語言資料分析實務 (2)
20161017 R語言資料分析實務 (2)
羅左欣
 
Python入門:5大概念初心者必備
Python入門:5大概念初心者必備Python入門:5大概念初心者必備
Python入門:5大概念初心者必備
Derek Lee
 
Osc scott linux下的数据库优化for_postgresql
Osc scott linux下的数据库优化for_postgresqlOsc scott linux下的数据库优化for_postgresql
Osc scott linux下的数据库优化for_postgresqlOpenSourceCamp
 
C語言結構與串列
C語言結構與串列 C語言結構與串列
C語言結構與串列
吳錫修 (ShyiShiou Wu)
 
R intro 20140716-basic
R intro 20140716-basicR intro 20140716-basic
R intro 20140716-basic
Kevin Chun-Hsien Hsu
 
twMVC#27 | C# 7.0 新功能介紹
twMVC#27 | C# 7.0 新功能介紹twMVC#27 | C# 7.0 新功能介紹
twMVC#27 | C# 7.0 新功能介紹
twMVC
 
Practical Data Analysis in R
Practical Data Analysis in RPractical Data Analysis in R
Practical Data Analysis in R
Chun-Ming Chang
 
Practical data analysis in R: from data collection to data insight
Practical data analysis in R: from data collection to data insight Practical data analysis in R: from data collection to data insight
Practical data analysis in R: from data collection to data insight
Chun-Min Chang
 
[系列活動] 手把手教你R語言資料分析實務
[系列活動] 手把手教你R語言資料分析實務[系列活動] 手把手教你R語言資料分析實務
[系列活動] 手把手教你R語言資料分析實務
台灣資料科學年會
 
Arduino程式快速入門
Arduino程式快速入門Arduino程式快速入門
Arduino程式快速入門
吳錫修 (ShyiShiou Wu)
 
部門會議 950619 Leon的錦囊妙計
部門會議 950619 Leon的錦囊妙計部門會議 950619 Leon的錦囊妙計
部門會議 950619 Leon的錦囊妙計Leon Chuang
 
CKAN 技術介紹 (開發篇)
CKAN 技術介紹 (開發篇)CKAN 技術介紹 (開發篇)
CKAN 技術介紹 (開發篇)
Chengjen Lee
 
程式人雜誌 -- 2014 年11月號
程式人雜誌 -- 2014 年11月號程式人雜誌 -- 2014 年11月號
程式人雜誌 -- 2014 年11月號
鍾誠 陳鍾誠
 
Free Marker中文文档
Free Marker中文文档Free Marker中文文档
Free Marker中文文档yiditushe
 

Similar to Ch7 範例 (20)

Ch7
Ch7Ch7
Ch7
 
ncuma_pylab.pptx
ncuma_pylab.pptxncuma_pylab.pptx
ncuma_pylab.pptx
 
Ch12
Ch12Ch12
Ch12
 
手把手教你 R 語言分析實務
手把手教你 R 語言分析實務手把手教你 R 語言分析實務
手把手教你 R 語言分析實務
 
Python入門:5大概念初心者必備 2021/11/18
Python入門:5大概念初心者必備 2021/11/18Python入門:5大概念初心者必備 2021/11/18
Python入門:5大概念初心者必備 2021/11/18
 
20161017 R語言資料分析實務 (2)
20161017 R語言資料分析實務 (2)20161017 R語言資料分析實務 (2)
20161017 R語言資料分析實務 (2)
 
Python入門:5大概念初心者必備
Python入門:5大概念初心者必備Python入門:5大概念初心者必備
Python入門:5大概念初心者必備
 
Osc scott linux下的数据库优化for_postgresql
Osc scott linux下的数据库优化for_postgresqlOsc scott linux下的数据库优化for_postgresql
Osc scott linux下的数据库优化for_postgresql
 
C語言結構與串列
C語言結構與串列 C語言結構與串列
C語言結構與串列
 
R intro 20140716-basic
R intro 20140716-basicR intro 20140716-basic
R intro 20140716-basic
 
twMVC#27 | C# 7.0 新功能介紹
twMVC#27 | C# 7.0 新功能介紹twMVC#27 | C# 7.0 新功能介紹
twMVC#27 | C# 7.0 新功能介紹
 
Practical Data Analysis in R
Practical Data Analysis in RPractical Data Analysis in R
Practical Data Analysis in R
 
Practical data analysis in R: from data collection to data insight
Practical data analysis in R: from data collection to data insight Practical data analysis in R: from data collection to data insight
Practical data analysis in R: from data collection to data insight
 
[系列活動] 手把手教你R語言資料分析實務
[系列活動] 手把手教你R語言資料分析實務[系列活動] 手把手教你R語言資料分析實務
[系列活動] 手把手教你R語言資料分析實務
 
Arduino程式快速入門
Arduino程式快速入門Arduino程式快速入門
Arduino程式快速入門
 
部門會議 950619 Leon的錦囊妙計
部門會議 950619 Leon的錦囊妙計部門會議 950619 Leon的錦囊妙計
部門會議 950619 Leon的錦囊妙計
 
CKAN 技術介紹 (開發篇)
CKAN 技術介紹 (開發篇)CKAN 技術介紹 (開發篇)
CKAN 技術介紹 (開發篇)
 
程式人雜誌 -- 2014 年11月號
程式人雜誌 -- 2014 年11月號程式人雜誌 -- 2014 年11月號
程式人雜誌 -- 2014 年11月號
 
Rrdtool
RrdtoolRrdtool
Rrdtool
 
Free Marker中文文档
Free Marker中文文档Free Marker中文文档
Free Marker中文文档
 

More from hungchiayang1

Exercise 1 3
Exercise 1 3Exercise 1 3
Exercise 1 3
hungchiayang1
 
P127 135 new
P127 135 newP127 135 new
P127 135 new
hungchiayang1
 
Python p.193 197
Python p.193 197Python p.193 197
Python p.193 197
hungchiayang1
 
Python differential equation
Python differential equationPython differential equation
Python differential equation
hungchiayang1
 
化學系 python 習題
化學系 python 習題化學系 python 習題
化學系 python 習題
hungchiayang1
 
化學系 python 練習
化學系 python 練習化學系 python 練習
化學系 python 練習
hungchiayang1
 
化學系 python 教學
化學系 python 教學化學系 python 教學
化學系 python 教學
hungchiayang1
 
Ppt 120-126
Ppt 120-126Ppt 120-126
Ppt 120-126
hungchiayang1
 
Ppt 151-151
Ppt 151-151Ppt 151-151
Ppt 151-151
hungchiayang1
 
Ppt 136-136
Ppt 136-136Ppt 136-136
Ppt 136-136
hungchiayang1
 
Ppt 143-143
Ppt 143-143Ppt 143-143
Ppt 143-143
hungchiayang1
 
Ppt 137-137
Ppt 137-137Ppt 137-137
Ppt 137-137
hungchiayang1
 
Ppt 150-150
Ppt 150-150Ppt 150-150
Ppt 150-150
hungchiayang1
 
Ppt 26-50
Ppt 26-50Ppt 26-50
Ppt 26-50
hungchiayang1
 
Ppt 145-149
Ppt 145-149Ppt 145-149
Ppt 145-149
hungchiayang1
 
Ppt 174-174
Ppt 174-174Ppt 174-174
Ppt 174-174
hungchiayang1
 
Ppt 1-25
Ppt 1-25Ppt 1-25
Ppt 1-25
hungchiayang1
 
Ppt 144-144
Ppt 144-144Ppt 144-144
Ppt 144-144
hungchiayang1
 
Ppt 167-173
Ppt 167-173Ppt 167-173
Ppt 167-173
hungchiayang1
 
Ppt 152-155
Ppt 152-155Ppt 152-155
Ppt 152-155
hungchiayang1
 

More from hungchiayang1 (20)

Exercise 1 3
Exercise 1 3Exercise 1 3
Exercise 1 3
 
P127 135 new
P127 135 newP127 135 new
P127 135 new
 
Python p.193 197
Python p.193 197Python p.193 197
Python p.193 197
 
Python differential equation
Python differential equationPython differential equation
Python differential equation
 
化學系 python 習題
化學系 python 習題化學系 python 習題
化學系 python 習題
 
化學系 python 練習
化學系 python 練習化學系 python 練習
化學系 python 練習
 
化學系 python 教學
化學系 python 教學化學系 python 教學
化學系 python 教學
 
Ppt 120-126
Ppt 120-126Ppt 120-126
Ppt 120-126
 
Ppt 151-151
Ppt 151-151Ppt 151-151
Ppt 151-151
 
Ppt 136-136
Ppt 136-136Ppt 136-136
Ppt 136-136
 
Ppt 143-143
Ppt 143-143Ppt 143-143
Ppt 143-143
 
Ppt 137-137
Ppt 137-137Ppt 137-137
Ppt 137-137
 
Ppt 150-150
Ppt 150-150Ppt 150-150
Ppt 150-150
 
Ppt 26-50
Ppt 26-50Ppt 26-50
Ppt 26-50
 
Ppt 145-149
Ppt 145-149Ppt 145-149
Ppt 145-149
 
Ppt 174-174
Ppt 174-174Ppt 174-174
Ppt 174-174
 
Ppt 1-25
Ppt 1-25Ppt 1-25
Ppt 1-25
 
Ppt 144-144
Ppt 144-144Ppt 144-144
Ppt 144-144
 
Ppt 167-173
Ppt 167-173Ppt 167-173
Ppt 167-173
 
Ppt 152-155
Ppt 152-155Ppt 152-155
Ppt 152-155
 

Recently uploaded

20240521-開放資料的前置準備與清理-楊富鈞.pdf_20240521-開放資料的前置準備與清理-楊富鈞.pdf
20240521-開放資料的前置準備與清理-楊富鈞.pdf_20240521-開放資料的前置準備與清理-楊富鈞.pdf20240521-開放資料的前置準備與清理-楊富鈞.pdf_20240521-開放資料的前置準備與清理-楊富鈞.pdf
20240521-開放資料的前置準備與清理-楊富鈞.pdf_20240521-開放資料的前置準備與清理-楊富鈞.pdf
jhujyunjhang
 
台科大史懷哲團隊研習課程(專題課程發展分享 以Arduino專案實作出發)20240613
台科大史懷哲團隊研習課程(專題課程發展分享 以Arduino專案實作出發)20240613台科大史懷哲團隊研習課程(專題課程發展分享 以Arduino專案實作出發)20240613
台科大史懷哲團隊研習課程(專題課程發展分享 以Arduino專案實作出發)20240613
趙 亨利
 
流體力學講義 流體力學講義 流體力學講義 流體力學講義 流體力學講義 流體力學講義
流體力學講義 流體力學講義 流體力學講義 流體力學講義 流體力學講義 流體力學講義流體力學講義 流體力學講義 流體力學講義 流體力學講義 流體力學講義 流體力學講義
流體力學講義 流體力學講義 流體力學講義 流體力學講義 流體力學講義 流體力學講義
LinPhil
 
GPA低,申硕困难。想问一下是否能修改成绩单?希望得到您的帮助申请美国大学改成绩单可以吗?如何增加申请成功几率【微信:oojjiijj】
GPA低,申硕困难。想问一下是否能修改成绩单?希望得到您的帮助申请美国大学改成绩单可以吗?如何增加申请成功几率【微信:oojjiijj】GPA低,申硕困难。想问一下是否能修改成绩单?希望得到您的帮助申请美国大学改成绩单可以吗?如何增加申请成功几率【微信:oojjiijj】
GPA低,申硕困难。想问一下是否能修改成绩单?希望得到您的帮助申请美国大学改成绩单可以吗?如何增加申请成功几率【微信:oojjiijj】
微信 tytyqqww业务接单
 
20230913-資料標準-劉璟儀.pdf_20230913-資料標準-劉璟儀.pdf
20230913-資料標準-劉璟儀.pdf_20230913-資料標準-劉璟儀.pdf20230913-資料標準-劉璟儀.pdf_20230913-資料標準-劉璟儀.pdf
20230913-資料標準-劉璟儀.pdf_20230913-資料標準-劉璟儀.pdf
jhujyunjhang
 
20240520-敏感資料處理原則-柯智仁.pptx.pdf_20240520-敏感資料處理原則-柯智仁.pptx.pdf
20240520-敏感資料處理原則-柯智仁.pptx.pdf_20240520-敏感資料處理原則-柯智仁.pptx.pdf20240520-敏感資料處理原則-柯智仁.pptx.pdf_20240520-敏感資料處理原則-柯智仁.pptx.pdf
20240520-敏感資料處理原則-柯智仁.pptx.pdf_20240520-敏感資料處理原則-柯智仁.pptx.pdf
jhujyunjhang
 
20240520-TaiBIF和GBIF介紹-劉璟儀.pdf_20240520-TaiBIF和GBIF介紹-劉璟儀.pdf
20240520-TaiBIF和GBIF介紹-劉璟儀.pdf_20240520-TaiBIF和GBIF介紹-劉璟儀.pdf20240520-TaiBIF和GBIF介紹-劉璟儀.pdf_20240520-TaiBIF和GBIF介紹-劉璟儀.pdf
20240520-TaiBIF和GBIF介紹-劉璟儀.pdf_20240520-TaiBIF和GBIF介紹-劉璟儀.pdf
jhujyunjhang
 
20230913-開放資料流程-柯智仁.pdf_20230913-開放資料流程-柯智仁.pdf
20230913-開放資料流程-柯智仁.pdf_20230913-開放資料流程-柯智仁.pdf20230913-開放資料流程-柯智仁.pdf_20230913-開放資料流程-柯智仁.pdf
20230913-開放資料流程-柯智仁.pdf_20230913-開放資料流程-柯智仁.pdf
jhujyunjhang
 
20220325-如何下載與引用資料-柯智仁.pdf_20220325-如何下載與引用資料-柯智仁.pdf
20220325-如何下載與引用資料-柯智仁.pdf_20220325-如何下載與引用資料-柯智仁.pdf20220325-如何下載與引用資料-柯智仁.pdf_20220325-如何下載與引用資料-柯智仁.pdf
20220325-如何下載與引用資料-柯智仁.pdf_20220325-如何下載與引用資料-柯智仁.pdf
jhujyunjhang
 
Unit 3 Self-Introduction New words 2.pptx
Unit 3 Self-Introduction New words 2.pptxUnit 3 Self-Introduction New words 2.pptx
Unit 3 Self-Introduction New words 2.pptx
priscilleng1
 
20240522-如何下載與引用TBIA資料-張俊怡.pdf_20240522-如何下載與引用TBIA資料-張俊怡.pdf
20240522-如何下載與引用TBIA資料-張俊怡.pdf_20240522-如何下載與引用TBIA資料-張俊怡.pdf20240522-如何下載與引用TBIA資料-張俊怡.pdf_20240522-如何下載與引用TBIA資料-張俊怡.pdf
20240522-如何下載與引用TBIA資料-張俊怡.pdf_20240522-如何下載與引用TBIA資料-張俊怡.pdf
jhujyunjhang
 
澳大利亚大学成绩单修改 GPA修改 G5研究生保录英国大学成绩修单改 GPA修改 G5研究生保录实时手机定位app有哪些?【微信:oojjiijj】
澳大利亚大学成绩单修改 GPA修改 G5研究生保录英国大学成绩修单改 GPA修改 G5研究生保录实时手机定位app有哪些?【微信:oojjiijj】澳大利亚大学成绩单修改 GPA修改 G5研究生保录英国大学成绩修单改 GPA修改 G5研究生保录实时手机定位app有哪些?【微信:oojjiijj】
澳大利亚大学成绩单修改 GPA修改 G5研究生保录英国大学成绩修单改 GPA修改 G5研究生保录实时手机定位app有哪些?【微信:oojjiijj】
微信 tytyqqww业务接单
 
Unit 3 Self-Introduction New words 3.pptx
Unit 3 Self-Introduction New words 3.pptxUnit 3 Self-Introduction New words 3.pptx
Unit 3 Self-Introduction New words 3.pptx
priscilleng1
 
20230513-datapaper-何芷蔚.pdf_20230513-datapaper-何芷蔚.pdf
20230513-datapaper-何芷蔚.pdf_20230513-datapaper-何芷蔚.pdf20230513-datapaper-何芷蔚.pdf_20230513-datapaper-何芷蔚.pdf
20230513-datapaper-何芷蔚.pdf_20230513-datapaper-何芷蔚.pdf
jhujyunjhang
 
20230913 資料發布類型-陳建文.pdf_20230913 資料發布類型-陳建文.pdf
20230913 資料發布類型-陳建文.pdf_20230913 資料發布類型-陳建文.pdf20230913 資料發布類型-陳建文.pdf_20230913 資料發布類型-陳建文.pdf
20230913 資料發布類型-陳建文.pdf_20230913 資料發布類型-陳建文.pdf
jhujyunjhang
 
根据课文训练学生习写《可以喝的书》,丙组作文也是一篇供料作文,满分为十分.pptx
根据课文训练学生习写《可以喝的书》,丙组作文也是一篇供料作文,满分为十分.pptx根据课文训练学生习写《可以喝的书》,丙组作文也是一篇供料作文,满分为十分.pptx
根据课文训练学生习写《可以喝的书》,丙组作文也是一篇供料作文,满分为十分.pptx
OOJIANHANGMoe
 
🔥黑客改成绩,你想知道的都在这里! 🌟[爆炸头] 大胆尝试新方法?试试这个吧~ 💡 提高效率,不再拖延。一键优化,成绩瞬间飙升! #学习动力源泉 #神奇改...
🔥黑客改成绩,你想知道的都在这里! 🌟[爆炸头] 大胆尝试新方法?试试这个吧~ 💡 提高效率,不再拖延。一键优化,成绩瞬间飙升! #学习动力源泉 #神奇改...🔥黑客改成绩,你想知道的都在这里! 🌟[爆炸头] 大胆尝试新方法?试试这个吧~ 💡 提高效率,不再拖延。一键优化,成绩瞬间飙升! #学习动力源泉 #神奇改...
🔥黑客改成绩,你想知道的都在这里! 🌟[爆炸头] 大胆尝试新方法?试试这个吧~ 💡 提高效率,不再拖延。一键优化,成绩瞬间飙升! #学习动力源泉 #神奇改...
微信 tytyqqww业务接单
 
Lesson 3 Self-Introduction New words 1 .pptx
Lesson 3 Self-Introduction New words 1 .pptxLesson 3 Self-Introduction New words 1 .pptx
Lesson 3 Self-Introduction New words 1 .pptx
priscilleng1
 
20220317-開放授權規範-林誠夏.pdf_20220317-開放授權規範-林誠夏.pdf
20220317-開放授權規範-林誠夏.pdf_20220317-開放授權規範-林誠夏.pdf20220317-開放授權規範-林誠夏.pdf_20220317-開放授權規範-林誠夏.pdf
20220317-開放授權規範-林誠夏.pdf_20220317-開放授權規範-林誠夏.pdf
jhujyunjhang
 
113學年度國中教育會考寫作測驗六級分樣卷、113學年度國中教育會考寫作測驗六級分樣卷
113學年度國中教育會考寫作測驗六級分樣卷、113學年度國中教育會考寫作測驗六級分樣卷113學年度國中教育會考寫作測驗六級分樣卷、113學年度國中教育會考寫作測驗六級分樣卷
113學年度國中教育會考寫作測驗六級分樣卷、113學年度國中教育會考寫作測驗六級分樣卷
ssuserd66db11
 

Recently uploaded (20)

20240521-開放資料的前置準備與清理-楊富鈞.pdf_20240521-開放資料的前置準備與清理-楊富鈞.pdf
20240521-開放資料的前置準備與清理-楊富鈞.pdf_20240521-開放資料的前置準備與清理-楊富鈞.pdf20240521-開放資料的前置準備與清理-楊富鈞.pdf_20240521-開放資料的前置準備與清理-楊富鈞.pdf
20240521-開放資料的前置準備與清理-楊富鈞.pdf_20240521-開放資料的前置準備與清理-楊富鈞.pdf
 
台科大史懷哲團隊研習課程(專題課程發展分享 以Arduino專案實作出發)20240613
台科大史懷哲團隊研習課程(專題課程發展分享 以Arduino專案實作出發)20240613台科大史懷哲團隊研習課程(專題課程發展分享 以Arduino專案實作出發)20240613
台科大史懷哲團隊研習課程(專題課程發展分享 以Arduino專案實作出發)20240613
 
流體力學講義 流體力學講義 流體力學講義 流體力學講義 流體力學講義 流體力學講義
流體力學講義 流體力學講義 流體力學講義 流體力學講義 流體力學講義 流體力學講義流體力學講義 流體力學講義 流體力學講義 流體力學講義 流體力學講義 流體力學講義
流體力學講義 流體力學講義 流體力學講義 流體力學講義 流體力學講義 流體力學講義
 
GPA低,申硕困难。想问一下是否能修改成绩单?希望得到您的帮助申请美国大学改成绩单可以吗?如何增加申请成功几率【微信:oojjiijj】
GPA低,申硕困难。想问一下是否能修改成绩单?希望得到您的帮助申请美国大学改成绩单可以吗?如何增加申请成功几率【微信:oojjiijj】GPA低,申硕困难。想问一下是否能修改成绩单?希望得到您的帮助申请美国大学改成绩单可以吗?如何增加申请成功几率【微信:oojjiijj】
GPA低,申硕困难。想问一下是否能修改成绩单?希望得到您的帮助申请美国大学改成绩单可以吗?如何增加申请成功几率【微信:oojjiijj】
 
20230913-資料標準-劉璟儀.pdf_20230913-資料標準-劉璟儀.pdf
20230913-資料標準-劉璟儀.pdf_20230913-資料標準-劉璟儀.pdf20230913-資料標準-劉璟儀.pdf_20230913-資料標準-劉璟儀.pdf
20230913-資料標準-劉璟儀.pdf_20230913-資料標準-劉璟儀.pdf
 
20240520-敏感資料處理原則-柯智仁.pptx.pdf_20240520-敏感資料處理原則-柯智仁.pptx.pdf
20240520-敏感資料處理原則-柯智仁.pptx.pdf_20240520-敏感資料處理原則-柯智仁.pptx.pdf20240520-敏感資料處理原則-柯智仁.pptx.pdf_20240520-敏感資料處理原則-柯智仁.pptx.pdf
20240520-敏感資料處理原則-柯智仁.pptx.pdf_20240520-敏感資料處理原則-柯智仁.pptx.pdf
 
20240520-TaiBIF和GBIF介紹-劉璟儀.pdf_20240520-TaiBIF和GBIF介紹-劉璟儀.pdf
20240520-TaiBIF和GBIF介紹-劉璟儀.pdf_20240520-TaiBIF和GBIF介紹-劉璟儀.pdf20240520-TaiBIF和GBIF介紹-劉璟儀.pdf_20240520-TaiBIF和GBIF介紹-劉璟儀.pdf
20240520-TaiBIF和GBIF介紹-劉璟儀.pdf_20240520-TaiBIF和GBIF介紹-劉璟儀.pdf
 
20230913-開放資料流程-柯智仁.pdf_20230913-開放資料流程-柯智仁.pdf
20230913-開放資料流程-柯智仁.pdf_20230913-開放資料流程-柯智仁.pdf20230913-開放資料流程-柯智仁.pdf_20230913-開放資料流程-柯智仁.pdf
20230913-開放資料流程-柯智仁.pdf_20230913-開放資料流程-柯智仁.pdf
 
20220325-如何下載與引用資料-柯智仁.pdf_20220325-如何下載與引用資料-柯智仁.pdf
20220325-如何下載與引用資料-柯智仁.pdf_20220325-如何下載與引用資料-柯智仁.pdf20220325-如何下載與引用資料-柯智仁.pdf_20220325-如何下載與引用資料-柯智仁.pdf
20220325-如何下載與引用資料-柯智仁.pdf_20220325-如何下載與引用資料-柯智仁.pdf
 
Unit 3 Self-Introduction New words 2.pptx
Unit 3 Self-Introduction New words 2.pptxUnit 3 Self-Introduction New words 2.pptx
Unit 3 Self-Introduction New words 2.pptx
 
20240522-如何下載與引用TBIA資料-張俊怡.pdf_20240522-如何下載與引用TBIA資料-張俊怡.pdf
20240522-如何下載與引用TBIA資料-張俊怡.pdf_20240522-如何下載與引用TBIA資料-張俊怡.pdf20240522-如何下載與引用TBIA資料-張俊怡.pdf_20240522-如何下載與引用TBIA資料-張俊怡.pdf
20240522-如何下載與引用TBIA資料-張俊怡.pdf_20240522-如何下載與引用TBIA資料-張俊怡.pdf
 
澳大利亚大学成绩单修改 GPA修改 G5研究生保录英国大学成绩修单改 GPA修改 G5研究生保录实时手机定位app有哪些?【微信:oojjiijj】
澳大利亚大学成绩单修改 GPA修改 G5研究生保录英国大学成绩修单改 GPA修改 G5研究生保录实时手机定位app有哪些?【微信:oojjiijj】澳大利亚大学成绩单修改 GPA修改 G5研究生保录英国大学成绩修单改 GPA修改 G5研究生保录实时手机定位app有哪些?【微信:oojjiijj】
澳大利亚大学成绩单修改 GPA修改 G5研究生保录英国大学成绩修单改 GPA修改 G5研究生保录实时手机定位app有哪些?【微信:oojjiijj】
 
Unit 3 Self-Introduction New words 3.pptx
Unit 3 Self-Introduction New words 3.pptxUnit 3 Self-Introduction New words 3.pptx
Unit 3 Self-Introduction New words 3.pptx
 
20230513-datapaper-何芷蔚.pdf_20230513-datapaper-何芷蔚.pdf
20230513-datapaper-何芷蔚.pdf_20230513-datapaper-何芷蔚.pdf20230513-datapaper-何芷蔚.pdf_20230513-datapaper-何芷蔚.pdf
20230513-datapaper-何芷蔚.pdf_20230513-datapaper-何芷蔚.pdf
 
20230913 資料發布類型-陳建文.pdf_20230913 資料發布類型-陳建文.pdf
20230913 資料發布類型-陳建文.pdf_20230913 資料發布類型-陳建文.pdf20230913 資料發布類型-陳建文.pdf_20230913 資料發布類型-陳建文.pdf
20230913 資料發布類型-陳建文.pdf_20230913 資料發布類型-陳建文.pdf
 
根据课文训练学生习写《可以喝的书》,丙组作文也是一篇供料作文,满分为十分.pptx
根据课文训练学生习写《可以喝的书》,丙组作文也是一篇供料作文,满分为十分.pptx根据课文训练学生习写《可以喝的书》,丙组作文也是一篇供料作文,满分为十分.pptx
根据课文训练学生习写《可以喝的书》,丙组作文也是一篇供料作文,满分为十分.pptx
 
🔥黑客改成绩,你想知道的都在这里! 🌟[爆炸头] 大胆尝试新方法?试试这个吧~ 💡 提高效率,不再拖延。一键优化,成绩瞬间飙升! #学习动力源泉 #神奇改...
🔥黑客改成绩,你想知道的都在这里! 🌟[爆炸头] 大胆尝试新方法?试试这个吧~ 💡 提高效率,不再拖延。一键优化,成绩瞬间飙升! #学习动力源泉 #神奇改...🔥黑客改成绩,你想知道的都在这里! 🌟[爆炸头] 大胆尝试新方法?试试这个吧~ 💡 提高效率,不再拖延。一键优化,成绩瞬间飙升! #学习动力源泉 #神奇改...
🔥黑客改成绩,你想知道的都在这里! 🌟[爆炸头] 大胆尝试新方法?试试这个吧~ 💡 提高效率,不再拖延。一键优化,成绩瞬间飙升! #学习动力源泉 #神奇改...
 
Lesson 3 Self-Introduction New words 1 .pptx
Lesson 3 Self-Introduction New words 1 .pptxLesson 3 Self-Introduction New words 1 .pptx
Lesson 3 Self-Introduction New words 1 .pptx
 
20220317-開放授權規範-林誠夏.pdf_20220317-開放授權規範-林誠夏.pdf
20220317-開放授權規範-林誠夏.pdf_20220317-開放授權規範-林誠夏.pdf20220317-開放授權規範-林誠夏.pdf_20220317-開放授權規範-林誠夏.pdf
20220317-開放授權規範-林誠夏.pdf_20220317-開放授權規範-林誠夏.pdf
 
113學年度國中教育會考寫作測驗六級分樣卷、113學年度國中教育會考寫作測驗六級分樣卷
113學年度國中教育會考寫作測驗六級分樣卷、113學年度國中教育會考寫作測驗六級分樣卷113學年度國中教育會考寫作測驗六級分樣卷、113學年度國中教育會考寫作測驗六級分樣卷
113學年度國中教育會考寫作測驗六級分樣卷、113學年度國中教育會考寫作測驗六級分樣卷
 

Ch7 範例

  • 1. 7 檔案 時雨量檔轉製多小時累積雨量檔 (一) 15  以下為 2015 年 9 月 28 日梅姬颱風穿越台灣中部時於石門水庫上游 10 個雨量測站所記錄到的時雨量(mm)資料檔如下:
  • 3. 7 檔案 17 時雨量檔轉製多小時累積雨量檔 (三) 檔案資料處理是許多人經常需要做的,對一些簡單問題,使用類似 Excel 試算表即可解決,但若為複雜的資料處理問題,仍需透過程式設計才能完成。 一般來說,當每一列的資料在讀入程式後通常都需要做數據分解,此時可使用 split() 與星號式子將資料存入串列,但分解後的數據仍屬字串型別,若要用 於計算需將字串型別的數字轉型為數字,此時可透過 list comprehension 或者是使用 map 函式,這些都考驗著程式設計者要熟悉串列與字串的相關語 法,才能於程式中自由運用。 本題目要列印每 n 個小時的累積雨量,解題關鍵即要找到每 n 個小時的 第一個小時,重新設定累積雨量為第一個小時兩量。有了初始雨量,第二個小 時之後的雨量即可累加。程式碼如同前幾章範例一樣都相當簡潔。 本程式只要稍加改寫,就可自動產生各種間隔小時的累積雨量資料檔,同 時若配合使用 pylab 繪圖套件,所產生的資料就能以各式的圖形呈現出來, 這就是使用程式設計處理資料的好處。 python 程式語言在資料處理的方便性 與靈活度是一般試算表軟體難以望其項背,當然要達到運用自如、自由自在的 地步,就需具備純熟的 python 程式設計能力。
  • 4. 7 檔案 18 n = int( input( "> " ) ) ofile = "rain" + str(n) + ".dat" with open("rain.dat") as infile , open(ofile,"w") as outfile : # 讀寫前二列 outfile.write(infile.readline()) outfile.write(infile.readline()) # 第三列以後 for i , line in enumerate(infile) : date , hr , *rain = line.split() # 將字串數字轉型為整數 rain = [ int(x) for x in rain ] if i%n == 0 : # 每 n 小時雨量的第一個小時 rsum = rain else : # 每 n 小時雨量的第二個小時之後 for k , rf in enumerate(rain) : rsum[k] += rf # 在 n 小時的倍數時,列印累積雨量 if (i+1)%n == 0 : arf = ( date + ":" + hr + " ".join( map( lambda x : "{:>5}".format(x) , rsum ) ) ) outfile.write( arf + "n" ) 時雨量檔轉製多小時累積雨量檔 (四)
  • 5. 7 檔案 雨量直條圖 (一) 19  讀入上題的時雨量檔案,畫出各測站當天所量測到的雨量直條圖。 由於 matplotlib 尚無法正確使用中文字型,圖形的測站名稱暫時以 大寫字母表示。 本題讀取上題的資料檔,由中畫出石門水庫集水區各個測站的一日量 測到的雨量圖。計算雨量的程式部份很簡單,大部份的程式是用設定圖形 呈現樣式。 rain.dat@web
  • 6. 7 檔案 雨量直條圖 (二) 20 import pylab pylab.figure(facecolor=’white’) with open( "rain.dat" ) as infile : # 跳過中文測站名稱 infile.readline() #讀取百分比加權數 wname , *weights = infile.readline().strip().split() sumloc = [0] * len(weights) for line in infile : date , hr , *srainfall = line.strip().split() rainfall = [ int(x) for x in srainfall ] #加總各個測站一天的雨量 sumloc = list( map( lambda x , y : x+y , sumloc , rainfall ) )
  • 7. 7 檔案 雨量直條圖 (三) 21 # 計算集水區一天的平均雨量 total = sum( map( lambda x , y : x*float(y)/100 , sumloc , weights ) ) xs = [ x+1 for x in range(len(weights)) ] # 給 xs 與 sumloc 畫直條圖 pylab.bar(xs,sumloc,align=’center’,color=’c’) # 設定各直條圖的刻度文字:以大寫字母代替 pylab.xticks(xs,[ chr(ord(’A’)+i) for i in range(len(weights))]) # 顯示區域,格線 pylab.axis( (0,11,0,500) ) pylab.grid() # 設定 x 軸與 y 軸文字 pylab.xlabel(’Location’) pylab.ylabel(’Rainfall in mm’) # 設定圖形標頭文字 pylab.title( ’Average Rainfall : ’ + ”{:6.2f}”.format(total) + ’ mm on ’+ date, color=’r’,fontsize=16) ) # 儲存圖形 pylab.savefig(’rain_vbar.jpg’) pylab.show()
  • 8. 7 檔案 四小時累積雨量直條圖 (一) 22  本題利用 pylab 的 subplots 函式讀入上題的雨量檔,計算各測站 每四小時的累積雨量,以 2x3 矩陣式排列六張累積雨量圖。由於使用 pylab 畫複合圖形的程式語法相較複雜,本程式的大部份都在設定各圖 形的呈現細節。 本範例教授使用者如何由資料檔讀入資料後,經過計算畫出多張子 圖。未來讀者若有需要可依樣畫葫蘆輕鬆地產生矩陣式排列圖形。
  • 9. 7 檔案 四小時累積雨量直條圖 (二) 23 import pylab n = 4 all_sumlocs = [] totals = [] with open( "rain.dat" ) as infile : # 跳過中文測站名稱 infile.readline() # 讀取百分比加權數 wname , *weights = infile.readline().strip().split() for k , line in enumerate(infile) : date , hr , *srainfall = line.strip().split() rainfall = [ int(x) for x in srainfall ] if k%n == 0 : # 第一個小時 sumloc = rainfall else : # 第二個小時後雨量加總 sumloc = list( map( lambda x , y : x+y , sumloc , rainfall ) ) if (k+1)%n == 0 : all_sumlocs += [ sumloc ] # 計算集水區每 4 個小時的平均雨量 totals += [ sum( map( lambda x , y : x*float(y)/100 , sumloc , weights ) ) ]
  • 10. 7 檔案 四小時累積雨量直條圖 (三) 24 # 找出所有測站的最大雨量 maxr = 0 for x in all_sumlocs : maxr = max( *x , maxr ) # 調整為雨量最大刻度值 maxr = int(pylab.ceil(maxr/50)*50) # 子圖橫縱向數量 nrows , ncols = 2 , 3 # 區分 2x3 圖形六圖,共用 x , y 軸 fig , gs = pylab.subplots(nrows,ncols,sharex=’all’,sharey=’all’, facecolor=’w’) # hspace 設定縱向兩圖間的間距(平均縱軸高度的比例) # wspace 設定橫向兩圖間的間距(平均橫軸寬度的比例) pylab.subplots_adjust(hspace=0.4,wspace=0.2) # X 座標 xs = [ x+1 for x in range(len(weights)) ] # 直條圖的 rgb 色碼 cs = ( 0.1 , 0.6 , 0.8 ) # k 圖形順序下標 k = 0 # 給 xs 與 sumloc 畫直條圖 for i in range(nrows) :
  • 11. 7 檔案 四小時累積雨量直條圖 (四) 25 for j in range(ncols) : # 畫直條圖 gs[i][j].bar(xs,all_sumlocs[k],align=’center’,color=cs) # 設定各直條圖的刻度文字:以大寫字母代替 pylab.setp( gs[i][j] , xticks = xs , xticklabels = [ chr(ord(’A’)+i) for i in range(len(weights))] ) # 顯示區域,格線 gs[i][j].axis( (0,11,0,maxr) ) gs[i][j].grid() # 設定 x 軸與 y 軸文字 gs[i][j].set_xlabel(’Location’) gs[i][j].set_ylabel(’Rainfall in mm’) # 設定圖形標頭文字 gs[i][j].set_title( date + ’ [{:0>2}-{:0>2}]’.format(k*4,(k+1)*4) + ’ : ’ + "{:6.2f}".format(totals[k]) + ’ mm’ , color=’r’ , fontsize=14 ) k += 1 pylab.show()
  • 12. 7 檔案 小綠人 (一):使用網頁表格 26 網路的發達使得以網頁來呈現程式的輸出變得更為頻繁,為了讓瀏覽器能依程 式輸出排版,程式在輸出時就要以 html 語法來安排資料。本範例特別使用 html 的表格來呈現小綠人的點矩陣圖,以下是簡單的 html 語法介紹。 html 是一種標識語言(markup language)用來將資料加以排版呈現於網頁 上,資料通常寫在起始/終止標籤之間,例如:<html>...</html> 為整個 html 檔起始與終止標籤,網頁內容都寫在其中。一個 html 檔包含表頭 <head>...</head> 與主體 <body>...</body> 兩大部份,表頭用來儲存網 頁的一些設定,如網頁的字元編碼方式、網頁標頭(title)、網頁連結(link)、樣 式(style)等等,而網頁內容則寫在主體標籤內。html 包含許多排版標籤可用來 建構各式各樣的版型,有興趣者可自行上網搜尋「html」,在此並不多描述。以下 為一個 html 檔基本型式: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>小綠人</title> </head> <body> ... </body> </html>
  • 13. 7 檔案 小綠人 (二) 27 以上第一列告知瀏覽器此檔為 html5 文件, <meta charset=”UTF-8”> 代表網頁是以 UTF-8 編碼, <title>小綠人</title> 設定網頁標頭名稱為「 小綠人」。 本範例要使用 html 的 table 表格標籤,藉由設定格子的長寬尺寸與控制 格子的背景顏色於網頁呈現三個點陣小綠人圖形。html 的表格標籤為 <table> </table>,表格中的每一列由 <tr> 起始 </tr> 結束。每列可有若干個欄位 ,各欄位可用 <th> </th> 或 <td> </td> 來設定,兩者差別是前者會將欄位 文字以粗體字呈現且置中排列,<th> 通常用在表格的第一列。例如: <table> <tr><th>動物</th><th>數量</th></tr> <tr><th>羊</th><td>20</td></tr> <tr><th>牛</th><td>10</td></tr> </table> 動物 數量 羊 20 牛 10
  • 14. 7 檔案 小綠人 (三) 28 表格欄位的尺寸與背景或文字顏色可在 <th> 或 <td> 內設定,例如: <table> <tr> <th style="width:2cm;height:1cm;background- color:#aaffaa;color:red;">動物</th> <th style="width:2cm;height:1cm;background- color:#aaffaa;color:red;">數量</th> </tr> <tr style="background-color:#bbffff;"> <th style="color:green;">羊</th> <td style="color:blue;text-align:center">20</td> </tr> <tr style="background-color:#bbffff;"> <th style="color:green;">牛</th> <td style="color:blue;text-align:center">10</td> </tr> </table>
  • 15. 7 檔案 小綠人 (四) 29 以上 style 樣式用來設定使用標籤一些控制參數,參數以分號分開,雙引號包 裹起來。例如:width 與 height 設定寬度與高度,background-color 與 color 分別為背景顏色與文字顏色。顏色設定可直接使用顏色名稱或以 16 進位方 式依次設定紅色、綠色、藍色三種顏色的強度。例如:#ff0000 代表紅色, #00ff00 代表藍色,#7f0000 代表暗紅色,#ffff00 則為黃色。text-align 用來控制文字的水平對齊位置,可設為 left、center、 right 分別代表靠左, 置中或靠右對齊。其它尚有許多參數,由於篇幅限制,予以忽略。 以上表格僅有三列,但其 html 語法已有些繁瑣,每個 <th> 或 <td> 都要 輸入一長串的 style 設定是相當耗時。為簡化輸入,可先將常用樣式寫在 <head> 的 <style> 標籤內,然後在應用的標籤上使用 class 設定樣式名稱即可。例如以 下在 <style> 內設定了三個樣式:rc、gm、by,之後不同的 <th> 標籤可利用 class 直接使用樣式。請留意,在 <style> 內的樣式名稱前都要加句點。 動物 數量 羊 20 牛 10
  • 16. 7 檔案 小綠人 (五) 30 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>數學系</title> <style> .rc {width:1cm;height:1cm;background-color:red;color:cyan;} .gm {width:1cm;height:1cm;background-color:green;color:magenta;} .by {width:1cm;height:1cm;background-color:blue;color:yellow;} </style> </head> <body> <table> <tr><th class=”rc”>數</th><th class=”gm”>學</th><th class=”by”>系 </th></tr> </table> </body> </html> 數 學 系
  • 17. 7 檔案 小綠人 (六) 31 許多網頁的內容經常隨著時間更動,若以手動方式修改網頁的 html 檔是不切實際的。一般的作法是透過程式自動產生更新的 html 檔,這 樣可節省大量時間。 本範例要使用網頁來呈現三個點矩陣小綠人,程式作法與第 68 頁 點矩範例類似,唯一的差別是本範例程式透過更動表格欄位的背景顏色替 代點矩陣的輸出點,當瀏覽器開啟網頁輸出檔後可看到以下的圖案:
  • 18. 7 檔案 小綠人 (七) 32 # 小綠人點矩陣 gman = [ 0x180 , 0x3c0 , 0x180 , 0xc0 , 0xf0 , 0xe8 , 0x164 , 0x264 , 0x70 , 0x50 , 0x8e , 0x81 , 0x82 , 0x300 ] # 每個小綠人為 14x10 點矩陣構成 R , C = 14 , 10 headstr = ’’’ <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>小 綠 人</title> <style> .red {width:10mm;height:10mm;background-color:red;} .green {width:10mm;height:10mm;background-color:green;} .blue {width:10mm;height:10mm;background-color:blue;} .white {width:10mm;height:10mm;background-color:white;} </style> </head> ’’’ stys = [ "red" , "green" , "blue" ] wsty = "white" tailstr = "</body>n</html>n"
  • 19. 7 檔案 小綠人 (八) 33 # 產生 html 語法檔 with open( "gman.htm","w") as outfile : outfile.write( headstr ) outfile.write( "<body>n<table>n" ) # 每列 for r in range(R) : outfile.write( "<tr>n" ) # 每個小綠人 for k in range(3) : # 每行 for c in range(C-1,-1,-1) : if gman[r] & ( 1 << c ) : outfile.write( ’<th class="’ + stys[k] + ’"></th>n’ ) else : outfile.write( ’<th class="’ + wsty + ’"></th>n’ ) outfile.write( ’<th class="’ + wsty + ’"></th>n’ ) outfile.write( "</tr>n" ) outfile.write( "</table>n" ) outfile.write( tailstr )
  • 20. 7 檔案 世界各國教育支出比例排名 (一) 34  在 wiki 百科網頁中有著世界各國在教育支出上佔該國 GDP 百分比的統 計表,資料經過整理後如下: edu.dat@web
  • 21. 7 檔案 世界各國教育支出比例排名 (二) 35 以上每一列資料依次為國名、GDP 百分比、統計年度、註解。資料中 有些國家的名稱可能不只為一個字。若該國家沒有 GDP 百分比時則以 n.a. 替代。 現在我們要撰寫程式重新以 GDP 的百分比由大到小排列,沒有 GDP 百分比的國家排列在最後,同時將資料以橫線替代。此外如果 GDP 百分比 一樣的國家,則按照國家名稱的字母順列排列。以下程式要輸出的內容:
  • 22. 7 檔案 世界各國教育支出比例排名 (三) 36 由以上的輸出規定,本範例在讀入資料檔後要依 GDP 支出百分比排序 ,同時在列印時除了要改變資料排列格式外,也要微幅更改呈現資料,這樣 的簡單要求是試算表程式無法勝任的,通常透過程式設計才能處理。一般來 說,資料處理是 python 程式語言的強項,經常只要短短的幾十列程式就 能解決大多數問題。 以下的程式大致區分為兩部份,第一部份為讀檔,檔案的每一列包含國 名、GDP、年份、來源等等,仔細觀察資料,發現有些國家的名稱超過一個 字,此時可使用星號式子將國名先存為字串串列,之後在將其合併為單一字 串。程式的第二部份為排序,在 sorted 函式內定義排序標準,回傳排序 串列用來表示資料是先依 GDP 百分比由大到小,再依國名字母順序排列。 最後在程式末尾使用 format 重新排列資料後列印。
  • 23. 7 檔案 世界各國教育支出比例排名 (四) 37 nations , gdps , years = [] , [] , [] with open("edu.dat") as infile : for line in infile : if line.isspace() : continue # 星號將多字串的國家名稱儲存到串列 *nation , gdp , year , src = line.split() # 儲存國名與年度資料於串列 nations.append( " ".join(nation) ) years.append( year ) # 沒有資料時,gdp 以 -1 替代 if year == "n.a." : gdps.append( -1 ) else : gdps.append( float(gdp) )
  • 24. 7 檔案 世界各國教育支出比例排名 (五) 38 i = 1 # 依 gdp 由大到小,國名依字母順序排列 for nation , gdp , yr in sorted( zip(nations,gdps,years) , key=lambda p : ( -p[1] , p[0] ) ) : if gdp == -1 : line = "{:>3}:{:>5} [{:>4}] {:}".format( i , "---" , yr , nation ) else : line = "{:>3}:{:>5.1F} [{:>4}] {:}".format( i , gdp , yr , nation ) print( line ) i += 1