<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>政府開放資料平台 彙整 - 台大系統訓練班課程網頁 (林奇賦)</title>
	<atom:link href="http://cflin.com/wordpress/tag/%E6%94%BF%E5%BA%9C%E9%96%8B%E6%94%BE%E8%B3%87%E6%96%99%E5%B9%B3%E5%8F%B0/feed" rel="self" type="application/rss+xml" />
	<link>http://cflin.com/wordpress</link>
	<description>台大系統訓練班 python 課程相關資料</description>
	<lastBuildDate>Fri, 15 Dec 2017 08:41:47 +0000</lastBuildDate>
	<language>zh-TW</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=5.8.3</generator>

<image>
	<url>http://cflin.com/wordpress/wp-content/uploads/2017/12/cropped-2000px-Python-logo-notext.svg_-32x32.png</url>
	<title>政府開放資料平台 彙整 - 台大系統訓練班課程網頁 (林奇賦)</title>
	<link>http://cflin.com/wordpress</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Pandas+SQL-空氣品質資料擷取</title>
		<link>http://cflin.com/wordpress/617/pandassql-python-sample</link>
					<comments>http://cflin.com/wordpress/617/pandassql-python-sample#respond</comments>
		
		<dc:creator><![CDATA[Chifu]]></dc:creator>
		<pubDate>Fri, 15 Dec 2017 07:45:37 +0000</pubDate>
				<category><![CDATA[Python範例]]></category>
		<category><![CDATA[json]]></category>
		<category><![CDATA[pandas]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[sql]]></category>
		<category><![CDATA[sqlalchemy]]></category>
		<category><![CDATA[政府開放資料平台]]></category>
		<guid isPermaLink="false">http://cflin.com/wordpress/?p=617</guid>

					<description><![CDATA[<p>Pandas+SQL 操作 &#8211; 前言 Pandas+SQL 的操作範例，本篇文章以政府開放資料平台中的 空氣品質指標(AQI) 為資料來源，展示了如何使用 pandas 搭配 SQL 語法 來做資料搜尋，對於已經有 SQL 語法操作基礎的人，可以用之前學過的 SQL 語法快速的搜尋並篩選出所需要的資料，提供大家參考。 Pandas 簡介 Pandas 是 python 的一個數據分析模組庫，於 2009 年底開源出來，提供高效能、簡易使用的資料格式 (Data Frame) 讓使用者可以快速操作及分析資料，主要特色描述如下： 在異質數據的讀取、轉換和處理上，讓分析人員更容易處理，例如：從列欄試算表中找到想要的值。 Pandas 提供兩種主要的資料結構，Series 與 DataFrame。 Series： 用來處理時間序列相關的資料(如感測器資料等)，主要為建立索引的一維陣列。 DataFrame： 用來處理結構化(Table like)的資料，有列索引與欄標籤的二維資料集，例如：關聯式資料庫、 CSV  等等。 透過載入至 Pandas 的資料結構物件後，透過結構化物件所提供的方法，快速地資料前處理。例如：資料補值，空值去除或取代等。 更多的輸入來源及輸出整合性，例如：可以從資料庫讀取資料進入 Dataframe ，也可將處理完的資料存回資料庫。 本篇文章就是使用 DataFrame 搭配關連式資料庫，使用 SQL 語法進行資料查詢篩選，而未來有時間再整理更多其他 Pandas 相關的應用範例。 安裝 Pandas Python &#8230; <a href="http://cflin.com/wordpress/617/pandassql-python-sample" class="more-link">閱讀全文 <span class="screen-reader-text">Pandas+SQL-空氣品質資料擷取</span> <span class="meta-nav">&#8594;</span></a></p>
<p>這篇文章 <a rel="nofollow" href="http://cflin.com/wordpress/617/pandassql-python-sample">Pandas+SQL-空氣品質資料擷取</a> 最早出現於 <a rel="nofollow" href="http://cflin.com/wordpress">台大系統訓練班課程網頁 (林奇賦)</a>。</p>
]]></description>
										<content:encoded><![CDATA[<h2>Pandas+SQL 操作 &#8211; 前言</h2>
<p><strong>Pandas+SQL</strong> 的操作範例，本篇文章以政府開放資料平台中的 <a href="https://data.gov.tw/dataset/40448">空氣品質指標(AQI)</a> 為資料來源，展示了如何使用 <a href="https://pandas.pydata.org/">pandas</a> 搭配 SQL 語法 來做資料搜尋，對於已經有 SQL 語法操作基礎的人，可以用之前學過的 SQL 語法快速的搜尋並篩選出所需要的資料，提供大家參考。</p>
<h2>Pandas 簡介</h2>
<p><em>Pandas</em> 是 <em>python</em> 的一個數據分析模組庫，於 2009 年底開源出來，提供高效能、簡易使用的資料格式 (Data Frame) 讓使用者可以快速操作及分析資料，主要特色描述如下：</p>
<ul>
<li>在異質數據的讀取、轉換和處理上，讓分析人員更容易處理，例如：從列欄試算表中找到想要的值。</li>
<li><em>Pandas</em> 提供兩種主要的資料結構，<em>Series</em> 與 <em>DataFrame</em>。
<ul>
<li>Series： 用來處理時間序列相關的資料(如感測器資料等)，主要為建立索引的一維陣列。</li>
<li>DataFrame： 用來處理結構化(Table like)的資料，有列索引與欄標籤的二維資料集，例如：關聯式資料庫、 CSV  等等。</li>
</ul>
</li>
<li>透過載入至 Pandas 的資料結構物件後，透過結構化物件所提供的方法，快速地資料前處理。例如：資料補值，空值去除或取代等。</li>
<li>更多的輸入來源及輸出整合性，例如：可以從資料庫讀取資料進入 Dataframe ，也可將處理完的資料存回資料庫。</li>
</ul>
<p>本篇文章就是使用 DataFrame 搭配關連式資料庫，使用 SQL 語法進行資料查詢篩選，而未來有時間再整理更多其他 Pandas 相關的應用範例。</p>
<h2 id="pandas">安裝 Pandas</h2>
<p>Python 安裝方式一樣都是透過 pip install 即可完成安裝，語法如下：</p>
<pre><code>pip install pandas  
</code></pre>
<p>其他介紹可以參考 <a href="http://pandas.pydata.org/">官方網站</a></p>
<h2>JSON</h2>
<p><b>JSON</b>（<b>J</b>ava<b>S</b>cript <b>O</b>bject <b>N</b>otation）是一種由<a title="道格拉斯·克羅克福特" href="https://zh.wikipedia.org/wiki/%E9%81%93%E6%A0%BC%E6%8B%89%E6%96%AF%C2%B7%E5%85%8B%E7%BE%85%E5%85%8B%E7%A6%8F%E7%89%B9">道格拉斯·克羅克福特</a>構想設計、輕量級的<a class="new" title="資料交換語言（頁面不存在）" href="https://zh.wikipedia.org/w/index.php?title=%E8%B3%87%E6%96%99%E4%BA%A4%E6%8F%9B%E8%AA%9E%E8%A8%80&amp;action=edit&amp;redlink=1">資料交換語言</a>，以文字為基礎，且易於讓人閱讀。儘管 JSON 是 <a class="mw-redirect" title="Javascript" href="https://zh.wikipedia.org/wiki/Javascript">Javascript </a>的一個子集，但 JSON 是獨立於語言的<a title="文字檔案" href="https://zh.wikipedia.org/wiki/%E6%96%87%E6%9C%AC%E6%96%87%E4%BB%B6">文字格式</a>，並且採用了類似於 <a class="mw-redirect" title="C語言" href="https://zh.wikipedia.org/wiki/C%E8%AA%9E%E8%A8%80">C語言</a> 家族的一些習慣。此種格式與XML格式常被用於API的資料回傳格式。本篇文章的程式碼範例就是以 JSON 格式的內容為資料的輸入來源。</p>
<h2>範例程式碼</h2>
<p>此範例程式主要流程大致為：</p>
<ol>
<li>透過 <em>requests </em>呼叫政府公開資料的 <em>API</em> 得到空氣品質指標的資料( JSON 格式)</li>
<li>透過 <em>json.loads </em>函數將資料讀入</li>
<li>使用 <em>pandas DataFrame</em> 產生出資料框</li>
<li>透過 <em>sqlalchemy </em>模組中的 create_engine 函數來建立 sqlite 的連線 ，並設定將資料表儲存在 memory 中(提供一次性的操作使用，若需要永久儲存則可以寫入檔案中)</li>
<li>使用 SQL 語法作取出特定的欄位(縣市、區域、平均 PM2.5 值)並以 PM2.5 的值由大至小排序。</li>
</ol>
<pre class="brush: python; title: ; notranslate">
import json
import requests
import pandas as pd
'''
資料庫的讀寫函數可以使用 SQLAlchemy，支援 PostgreSQL, MySQL, Oracle,
Microsoft SQL server 等資料庫...
'''
from sqlalchemy import create_engine

req = requests.get('http://opendata2.epa.gov.tw/AQI.json')
data = json.loads(req.content.decode('utf8'))
df = pd.DataFrame(data)

#透過sqlalchemy模組中的create_engine函數來建立sqlite的連線
#並設定將資料表儲存在memory中(提供一次性的操作使用，若需要永久儲存則可以寫入檔案中)
engine = create_engine('sqlite:///:memory:')
df.to_sql('db_table', engine, index=False)
print(pd.read_sql_query('SELECT `County` as `縣市`, `SiteName` as `區域`, \
	CAST(`PM2.5_AVG` AS int) as `PM2.5` FROM `db_table` \
	order by CAST(`PM2.5_AVG` AS int) ASC', engine))
</pre>
<p><a href="https://notebooks.azure.com/chifu/libraries/train/html/aqi.ipynb">點我觀看執行範例 </a>(使用 Microsoft Azure Notebooks )</p>
<figure id="attachment_618" aria-describedby="caption-attachment-618" style="width: 1981px" class="wp-caption alignnone"><a href="https://cflin.com/wordpress/wp-content/uploads/2017/12/FireShot-Capture-042-train_aqi.ipynb-chifu-Microsoft-A_-https___notebooks.azure_.com_chifu_-e1513324113924.jpeg"><img loading="lazy" class="wp-image-618 size-full" src="https://cflin.com/wordpress/wp-content/uploads/2017/12/FireShot-Capture-042-train_aqi.ipynb-chifu-Microsoft-A_-https___notebooks.azure_.com_chifu_-e1513324113924.jpeg" alt="Pandas+SQL 執行效果截圖" width="1981" height="3046" srcset="http://cflin.com/wordpress/wp-content/uploads/2017/12/FireShot-Capture-042-train_aqi.ipynb-chifu-Microsoft-A_-https___notebooks.azure_.com_chifu_-e1513324113924.jpeg 1981w, http://cflin.com/wordpress/wp-content/uploads/2017/12/FireShot-Capture-042-train_aqi.ipynb-chifu-Microsoft-A_-https___notebooks.azure_.com_chifu_-e1513324113924-195x300.jpeg 195w, http://cflin.com/wordpress/wp-content/uploads/2017/12/FireShot-Capture-042-train_aqi.ipynb-chifu-Microsoft-A_-https___notebooks.azure_.com_chifu_-e1513324113924-768x1181.jpeg 768w, http://cflin.com/wordpress/wp-content/uploads/2017/12/FireShot-Capture-042-train_aqi.ipynb-chifu-Microsoft-A_-https___notebooks.azure_.com_chifu_-e1513324113924-666x1024.jpeg 666w" sizes="(max-width: 1981px) 100vw, 1981px" /></a><figcaption id="caption-attachment-618" class="wp-caption-text">Pandas+SQL 執行效果截圖</figcaption></figure>
<p>若有其他想法，例如：想知道哪個縣市的整體平均空氣品質較差就可以在 SQL 語法中使用 GROUP BY 語法，對於 SQL 語法熟悉的話就能輕易地藉由改變查詢的語法來獲得想查詢 / 篩選的資料。</p>
<p>PS. 對於Python語法上有疑問可以參考<a href="http://cflin.com/wordpress/python-%e7%a8%8b%e5%bc%8f%e8%a8%ad%e8%a8%88%e6%8a%95%e5%bd%b1%e7%89%87">課程投影片</a></p>
<p>這篇文章 <a rel="nofollow" href="http://cflin.com/wordpress/617/pandassql-python-sample">Pandas+SQL-空氣品質資料擷取</a> 最早出現於 <a rel="nofollow" href="http://cflin.com/wordpress">台大系統訓練班課程網頁 (林奇賦)</a>。</p>
]]></content:encoded>
					
					<wfw:commentRss>http://cflin.com/wordpress/617/pandassql-python-sample/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
