app_train[['TARGET', 'EXT_SOURCE_1', 'EXT_SOURCE_2', 'EXT_SOURCE_3', 'DAYS_BIRTH']] 程式碼中為何會使用到2個中括號? enumerate的使用方法?
回答列表
-
2019/05/01 下午 00:04張維元 (WeiYuan)贊同數:3不贊同數:0留言數:1
1、請問一下,以下的程式碼第二行app_train後面為什麼需要用到二個中括號?
ext_data = app_train[['TARGET', 'EXT_SOURCE_1', 'EXT_SOURCE_2', 'EXT_SOURCE_3', 'DAYS_BIRTH']]
ext_data_corrs = ext_data.corr()
=> 一個中括號取出的是 series,兩個中括號取出的是 dataframe
-
2019/05/01 下午 00:07張維元 (WeiYuan)贊同數:2不贊同數:0留言數:1
2、下列的程式碼看起來像迴圈,但好像又不太一樣,可以說明一下用法嗎?
for i, source in enumerate(['EXT_SOURCE_1', 'EXT_SOURCE_2', 'EXT_SOURCE_3']):
# 做 subplot
plt.subplot(1, 3, i + 1)
=> 這個是迴圈沒錯,你要問的應該是 enumerate 是什麼嗎?
enumerate 中文叫做枚舉、列舉,意思是他會幫你的容器計數,他的結果會變成這樣:
['EXT_SOURCE_1', 'EXT_SOURCE_2', 'EXT_SOURCE_3'] => [(0, 'EXT_SOURCE_1'), (1, 'EXT_SOURCE_2') ... ]
原本的寫法等同於下面的寫法:
```
i = 0
for source in ['EXT_SOURCE_1', 'EXT_SOURCE_2', 'EXT_SOURCE_3']:
plt.subplot(1, 3, i + 1)
i = i + 1
```
-
2019/05/01 下午 00:09張維元 (WeiYuan)贊同數:1不贊同數:0留言數:1
3、這個函數的定義看不太懂,可以說明一下相關參數的意思嗎?謝謝。
```
# 定義函數 : 計算兩個 column 之間的相關係數
def corr_func(x, y, **kwargs):
r = np.corrcoef(x, y)[0][1]
ax = plt.gca()
ax.annotate("r = {:.2f}".format(r),
xy=(.2, .8), xycoords=ax.transAxes,
size = 20)
```
=> corr_func 輸入兩個 column x, y,會利用 np.corrcoef 計算相關性後回傳。**kwargs 在這裡沒有用到,可以拿掉沒關係。