2018年5月29日 星期二

Coursera - Applied Data Science with Python 學習筆記 02 - matplotlib

香港2018年對比以往10年的極端氣溫 - 現在 5月尾 (至27/5) 已經連續出現破記錄的高溫

第二課:<Applied Plotting, Charting & Data Representation in Python> 學的是繪圖,倚重 Jupyter Notebook 中的 %matplotlib 功能來直接顯示繪圖的輸出。以上的圖就是其中一功課改用香港數據表示出來,詳細coding看本文的最後部份。 Jupyter Notebook 以前稱為 IPython notebook,從前安裝 Anaconda 應該是預設了Jupyter,只是一直未有使用。今次先檢查兩個2.7和3.6的python環境中的package,未有Jupyter的話就重新安裝/更新。

# 當前環境的套件
conda list
# 更新 pip
pip install --upgrade pip

# 安裝 jupyter
pip install jupyter

之後當執行jupyter,電腦會打開一個瀏覽器視窗,預設會連到localhost的 port:8888。新增或打開課程的 .ipynb 檔,當中的內容以一個個的「Cell」顯示。按 [Shift+Enter] 執行這個 Cell ,某個 Cell 的 in[?] 的結果會顯示在相應的 out[?] 之中,這樣可以選擇文件中的某部分來執行、逐步去測試。 其他功能可以在文件上方的選項,經常用到 Kernal 中的 Restart, Restart+Run all。在用完某 .ipynb 後可以把它 Shutdown;要離開 Jupyter 就可以在 Terminal 中按 [Ctrl+C] x2

# Use Jupyter
python -m jupyter notebook

用瀏覽器的 localhost:8888/tree/ 作為開頭的路徑,前往電腦中的檔案夾

打開 Jupyter Notebook 的 .ipynb 檔


2018年5月17日 星期四

Coursera - Applied Data Science with Python 學習筆記 01 - Introduction

5月初的放假期間開始了一個Coursera 的 Python Specialization 課程-<Applied Data Science with Python>, 暫時完成了3/5的課,在5月尾開始下一課前,先重溫一下第一課:<Introduction to Data Science in Python> 一些值得記著的codings.

1. 例子

# 關於資料結構
x = (1, 'a', 2, 'b')  # Tuple
x = [1, 'a', 2, 'b']  # List
      # set(x['name'] for x in df).   elist = [n for n in range(0,100) if n%2==0]
x = {1: 'a', 2: 'b'} # Dict
      # x[name], x.values(), x.items()
x = np.array([[7, 8, 9], [10, 11, 12]])     # Array:   import numpy as np.
x = Series(['item1', 'item2', 'item3'], [0, 1, 2])   # Series:  import pandas as pd
x = Dataframe(array, index, columns)   # Dataframe:  import pandas as pd
type()

# 字串 及 正則表示式
x = 'This is a string'
x[0:2]   # 從第 0th 元素開始,停止在第 2nd 元素之前
'This is a string'.split(' ')[0]  # 以空格 '  ' 分拆字串,提取第 0th 元素
re.findall(r'\w+', 'This is a string')  # 以正則表示式尋找特定字符。需要先 import re

# Numpy 中的 Array,用於使用 Vector、Matrix 的時候
a = np.arrange(start, end, step)  # 從 start 至 end,數值間隔為 step 的 Array
a = np.linspace(start, end, count)  # 從 start 至 end,count 個數值的 Array
amax = a.argmax()  # Array 中的最大值
a = np.vstack([array1, array2])  # 垂直合併兩個 Array
arrar2 = array1.copy   # 複製出獨立的 Array


# Pandas 中的 Series/Dataframe, 從 Numpy 的 Array衍生出來,處理數據的資料表時可以用到
a.argmax()
s.loc['name']   # index 為'name'的資料
df.reset_index()  # 重設 index 為 0:len(df)
df.set_index('time').sort_index()  # 以Column 'time' 為 index,並排序
df.dropna()  # 除去包含 NA 的行-Row
df.apply(min_max, axis=1)  # 進行 Row 運算
df.pivot_table(values, index, columns, aggfunc=[np.mean,np.min], margins=True)  # 製作Pivot Table綜合資料表
df= df.set_index('Col1') .groupby(level=0)['Col2'].agg({'avg': np.average}) 
pd.cut(df['avg'],10)