「Python 數據分析」學習筆記(四)

前言

本文為「成為 Python 數據分析達人的第一堂課」課程的學習筆記。

字典

字典(Dictionary)是一種可變容器模型,可儲存任意類型物件。

1
2
3
>>> mydict = {'Apple': '蘋果', 'Banana': '香蕉'}
>>> mydict
{'Apple': '蘋果', 'Banana': '香蕉'}

取得字典的値。

1
2
>>> mydict['Apple']
'蘋果'

新增字典的値。

1
2
3
>>> mydict['orange'] = '柳橙'
>>> mydict
{'Apple': '蘋果', 'Banana': '香蕉', 'orange': '柳橙'}

使用迴圈印出字典。

1
2
3
4
5
>>> for key in mydict:
print('{}:{}'.format(key, mydict[key]))
Apple:蘋果
Banana:香蕉
orange:柳橙

互動功能

先建立一個簡單的 f(x) 函數。

1
2
3
4
5
6
7
>>> from ipywidgets import interact
>>> def f(x):
print(x)
>>> f(5)
5
>>> f('hi')
'hi'

建立一個數値滑竿,參數是整數。

1
>>> interact(f, x=3)

建立一個數値滑竿,參數是浮點數。

1
>>> interact(f, x=3.)

建立一個數値滑竿,參數是整數,並設定其範圍。

1
>>> interact(f, x=(1, 10))

建立一個數値滑竿,參數是浮點數,並設定其範圍。

1
>>> interact(f, x=(1., 10.))

建立一個文字輸入框,參數是字串。

1
>>> interact(f, x='Hi')

建立一個下拉式選單,參數是串列。

1
>>> interact(f, x=['台北', '新竹', '桃園'])

建立一個下拉式選單,參數是字典。

1
>>> interact(f, x={'台北':1, '台中':2, '台南':3})
  • 印出來會是鍵對應的値。

互動應用

建立一個簡單的 move(n) 函數。

1
2
3
4
>>> def move(n):
>>> print(' '*n + 'oooo')
>>> move(10)
oooo

建立一個數値滑竿,參數是整數。

1
>>> interact(move, n=50)

圖形互動

先使用 np.linspace() 方法建立繪圖區間。

1
>>> x = np.linspace(0, 2*np.pi, 1000)

建立一個 draw(n) 函數,畫出正弦的圖形。

1
2
3
>>> def draw(n):
y = np.sin(n*x)
plt.plot(x, y, lw=5)
  • lw 參數可以調整線條粗細。

建立一個數値滑竿,畫出正弦的圖形。

1
>>> interact(draw, n=(1., 10,))

過適

過適(overfitting)的模型在訓練集上表現良好,但在測試集上表現不好。

首先使用 scatter() 函數畫出點。

1
2
3
>>> X = np.random.rand(6)
>>> Y = np.random.rand(6)
>>> plt.scatter(X, Y, s=200, c='r')
  • s 參數可以調整點的大小。
  • c 參數可以調整點的顏色。

畫出一個通過點的模型,以用來做預測。

1
2
3
4
5
6
>>> x = np.linspace(0, 1, 1000)
>>> def draw(n):
plt.scatter(X, Y, s=200, c='r')
y = 0.5*np.sin(n*x*2*np.pi) + 0.5
plt.plot(x, y)
>>> interact_manual(draw, n=(1., 100.))
  • interact_manual() 函數需要按下按鈕才會出現圖案。

此時將 n 的値拉到模型足以通過所有的點,這時就發生過適的現象。

BMI 計算器

使用 interact_manual() 函數建立一個 BMI 計算器。

1
2
3
4
5
6
>>> def BMIcal(身高, 體重):
身高 = float(身高)/100
體重 = float(體重)
bmi = 體重 / (身高**2)
print('你的 BMI = {:.2f}'.format(bmi))
>>> interact_manual(BMIcal, 身高='請輸入身高', 體重='請輸入體重')
  • 數字格式化 :.2f 代表保留小數點後兩位。