1. 程式人生 > 其它 >pandas預備知識

pandas預備知識

技術標籤:pythonnumpy

一.Python基礎

1. 列表推導式與條件賦值

def my_func(x):
    return 2*x
[my_func(i) for i in range(5)]

列表表示式還支援多層巢狀,如下面的例子中第一個for為外層迴圈,第二個為內層迴圈:

[m+'_'+n for m in ['a', 'b'] for n in ['c', 'd']]

在這裡插入圖片描述
除了列表推導式,另一個實用的語法糖是帶有if選擇的條件賦值,其形式為value = a if condition else b:

L = [1, 2, 3, 4, 5, 6, 7]
[i if i <=
5 else 5 for i in L]

在這裡插入圖片描述

2. 匿名函式與map方法

列表推導式的匿名函式對映,Python中提供了map函式來完成,它返回的是一個map物件,需要通過list轉為列表:

list(map(lambda x: 2*x, range(5)))

在這裡插入圖片描述
對於多個輸入值的函式對映,可以通過追加迭代物件實現:

list(map(lambda x, y: str(x)+'_'+y, range(5), list('abcde')))

在這裡插入圖片描述

3. zip物件與enumerate方法

zip函式能夠把多個可迭代物件打包成一個元組構成的可迭代物件,它返回了一個zip物件,通過tuple, list可以得到相應的打包結果:

L1, L2, L3 = list('abc'), list('def'), list('hij')
list(zip(L1, L2, L3))

在這裡插入圖片描述

for i, j, k in zip(L1, L2, L3):
     print(i, j, k)

在這裡插入圖片描述
enumerate是一種特殊的打包,它可以在迭代時繫結迭代元素的遍歷序號:

L = list('abcd')
for index, value in enumerate(L):
     print(index, value)

在這裡插入圖片描述

二、Numpy基礎

1. np陣列的構造¶

最一般的方法是通過array來構造:

import numpy as
np np.array([1,2,3])

在這裡插入圖片描述

【a】等差序列:np.linspace, np.arange

np.linspace(1,5,11) # 起始、終止(包含)、樣本個數

在這裡插入圖片描述

np.arange(1,5,2) # 起始、終止(不包含)、步長

在這裡插入圖片描述

【b】特殊矩陣:zeros, eye, full

np.zeros((2,3)) # 傳入元組表示各維度大小

在這裡插入圖片描述

np.eye(3) # 3*3的單位矩陣

在這裡插入圖片描述

np.full((2,3), 10) # 元組傳入大小,10表示填充數值

在這裡插入圖片描述

【c】隨機矩陣:np.random

最常用的隨機生成函式為rand, randn, randint, choice,它們分別表示0-1均勻分佈的隨機陣列、標準正態的隨機陣列、隨機整陣列和隨機列表抽樣:

np.random.rand(3, 3) # 注意這裡傳入的不是元組,每個維度大小分開輸入

在這裡插入圖片描述
randint可以指定生成隨機整數的最小值最大值(不包含)和維度大小:

low, high, size = 5, 15, (2,2) # 生成514的隨機整數
np.random.randint(low, high, size)

在這裡插入圖片描述
choice可以從給定的列表中,以一定概率和方式抽取結果,當不指定概率時為均勻取樣,預設抽取方式為有放回抽樣:

my_list = ['a', 'b', 'c', 'd']
np.random.choice(my_list, 2, replace=False, p=[0.1, 0.7, 0.1 ,0.1])

在這裡插入圖片描述
最後,需要提到的是隨機種子,它能夠固定隨機數的輸出結果:
在這裡插入圖片描述

2. np陣列的變形與合併

【a】轉置:T

np.zeros((2,3)).T

在這裡插入圖片描述

【b】合併操作:r_, c_

對於二維陣列而言,r_和c_分別表示上下合併和左右合併:

np.r_[np.zeros((2,3)),np.zeros((2,3))]

在這裡插入圖片描述

np.c_[np.zeros((2,3)),np.zeros((2,3))]

在這裡插入圖片描述

【c】維度變換:reshape

target = np.arange(8).reshape(2,4)
target

在這裡插入圖片描述

3. np陣列的切片與索引

陣列的切片模式支援使用slice型別的start