Please enable JavaScript.
Coggle requires JavaScript to display documents.
Numpy、pandas、matplotlib (Numpy (處理陣列與矩陣的運算 (陣列類型ndarray (將List傳遞給array函數,就…
Numpy、pandas、matplotlib
Numpy
處理陣列與矩陣的運算
陣列類型ndarray
將List傳遞給array函數,就能建立ndarray物件
np.array([1, 2, 3])
a.shape 確認大小
np.array([[1, 2, 3], [4, 5, 6]])
c1.reshape(2, 3) 翻轉,將一維轉乘 N x N
c2.ravel() 恢復成一維陣列
c2.flatten() flatten 功能同ravel,差別在ravel傳回參照、flatten傳回的是複製
a.dtype 確認numpy的資料類型
d.astype(np.float16) 將整數轉成浮點數
索引與切片 (一維和list一樣就不寫)
ndarray和list在代入資料都是淺複製(傳參照),
而切片方面List是以複製的方式傳遞切片結果,
Numpy是以參照的方式傳遞切片結果
np.arange(10) 建立Numpy陣列
內建的random函數
np.random.random((3, 2))
np.random.rand(3, 2)
np.random.randint(1, 10)
np.random.uniform(0.0, 5.0, size=(2, 3))
randn
np.zeros((2, 3)) 建立指定數量的0.0陣列
np.ones((3, 4)) 建立指定數量的1.0陣列
np.eye(3) 建立單位矩陣
np.full(3, 3.14) full以指定值填滿陣列
nan表示not a number,屬於float資料型別
np.linspace(0, 1, 5) 在指定範圍內建立間距相等的資料
np.diff(l) 回傳元素之間的差距
np.concatenate([a, a1]) concatenate連結
hstack效果同concatenate的行連結
vstack效果同concatenate的列連結
first, second = np.hsplit(b3, [2])
分割 hsplit沿著行分割、vsplit沿著列分割
轉置 T
增加維度newaxis
增減維度也可用reshape
建立網格資料meshgrid
Universal Functions工具,包含許多功能,一口氣轉換陣列資料
Broadcast工具,包含許多功能,直接運算陣列內部資料
點積dot,python3.5可用
運算子
判定、邏輯值
allclose判斷誤差範圍
矩陣類型matrix
Pandas
以Numpy為基礎
Series資料類型
一維資料
.Series() 建立一維資料
DataFrame資料類型
二維資料
.DataFrame() 建立二維資料
.head() 輸出開頭5筆資料
.tail() 輸出後5列資料
.shape 查大小
.loc[] 篩選資料,指定索引與欄位名稱。或可用於插入欄位
.iloc[] 篩選資料,指定索引與欄位編號
.read_csv()
.read_excel()
.read_html()
.read_pickle()
.query 指定篩選條件
.dtypes 確認資料型態
.to_datetime 函式,轉成datetime資料型態
.apply() 轉換資料型態
.astype() 資料轉換類型
.set_index() 資料中某一欄設為index
.sort_values() 依指定欄位排序
.drop() 刪除欄位
.get_dummies() 依照某一欄位分割出新dataframe
.date_range 建立時序資料
.groupby() 加總資料
resample() 好像和groupby功能類似
pd.Grouper() 這個class好像可以聰明的區分星期幾
dropna() 刪除缺損值的列
.fillna() 將0代入缺損值
.concat() 資料合併
.max()最大值
.min() 最小值
.mode() 眾數
.mean() 平均值
.median() 中位數
.std() 樣本標準差
.std(ddof=0) 母體標準差
.count() 確認資料筆數
.describe()
.corr()
.values 把pandas的DataFrame轉成Numpy的ndarray
自取索引、欄位名稱
以字典格式建立DataFrame
Matplotlib
繪製平面圖的函式庫
MATLAB風格
物件導向風格
建立資料
x = [1,2,3]
y = [2,4,9]
建立繪圖物件figure(fig)並配置一個subplot(ax)
fig, ax = plt.subplots()
繪製折線圖
ax.plot(x,y)
plt.show()
ax.set_title('xxx') 設定圖表標題
matplotlib.style.use() 指定圖表樣式
fig.suptitle('xxx') 替繪圖物件設定圖表標題
在圖表的座標軸指定標籤
ax.set_xlabel('xxx')
ax.set_ylabel('xxx')
設定圖例標籤
ax.plot([1,2,3],[2,4,9],label='xxx')
ax.legend(loc='best') 顯示圖例(指定為best樣式)
savefig方法轉存為檔案
fig.savefig('aa.png')
折線圖,用基本.plot即可繪製
fig, ax = plt.subplots()
x = [1,2,3]
y1 = [1,2,3]
y2 = [3,1,2]
ax.plot(x, y1) #以plot方法繪製
ax.plot(x, y2)
曲線圖,讓折線圖的值間隔變小即可
長條圖,以bar方法繪製
x = [1,2,3]
y = [10,2,3]
ax.bar(x,y)
顯示指定標籤
labels = ['aa','bb','cc']
ax.bar(x, y, tick_label=labels)
橫條圖,以barh方法繪製
x = [1,2,3]
y = [10,2,3]
labels = ['spam','ham','egg']
ax.barh(x, y, tick_label=labels)
顯示多個直條圖
繪製堆疊直條圖
散布圖,以scatter方法繪製
x = np.random.rand(50)
y = np.random.rand(50)
ax.scatter(x,y)
marker參數指定預設資料標記圖示
直方圖,利用hist方法繪製,x另外計算,去看程式
n, bins, patches = ax.hist(x)
hist的3個傳回值代表意思詳見第3章
hist方法的bins參數能變更
值方的數量,預設為10
ax.hist(x,bins=25)
hist方法的orientation='horizontal'參數能繪製水平直方圖
ax.hist(x,orientation='horizontal')
直方圖不同於長條圖的是,
若指定多個值會自動水平排列
hist方法的參數若指定為stacked=True,則可繪製堆疊直方圖
盒鬚圖,使用boxplot方法
labels = ['x0','x1','x2']
ax.boxplot((x0,x1,x2),labels=labels)
水平盒鬚圖
labels = ['x0','x1','x2']
ax.boxplot((x0,x1,x2),labels=labels,vert=False)
圓形圖,利用pie方法繪製
fig,ax=plt.subplots()
ax.pie(x,labels=labels)
維持長寬比例的圓形圖
ax.axis('equal')
圓形圖預設3點鐘位置逆時針繪製,startangle和counterclock可修改設定
fig,ax=plt.subplots()
ax.pie(x,labels=labels,startangle=90,counterclock=False)
ax.axis('equal')
plt.show()
shadow=True增加陰影
autopct顯示%
explode = [0,0.2,0] #第一個元素分割出來
在單一subplot繪製不同圖表
ax.bar(x1,y1,label='QQ')
ax.plot(x2,y2,label='AA')
ax.plot()其他參數設定
color='#0000ff' 設定線條顏色
linewidth=5.5 設定線條寬
linestyle='--' 設定虛線
ax.bar()其他參數設定
edgecolor='black' 設定長條圖顏色
ax.text(0.2,0.4,'text',size=20) 繪製文字
利用pandas的DataFrame、Series繪製圖表。這種繪製方式的內部也使用Matplotlib
import pandas as pd
matplotlib.style.use('ggplot')
建立DataFrame
df=pd.DataFrame({'A':[1,2,3],'B':[3,1,2]})
df.plot()
plt.show()
對比一般建置方式
建立資料
x = [1,2,3]
y = [2,4,9]
建立繪圖物件figure(fig)並配置一個subplot(ax)
fig, ax = plt.subplots()
ax.plot(x,y) # 繪製折線圖
ax.set_title('00P-style') # 設定圖表標題
plt.show()
長條圖利用plot.bar繪製,偌多筆資料會自動排成一列
隨機產生3列2行的資料,藉此建立dataframe
np.random.seed(123)
df2=pd.DataFrame(np.random.rand(3,2),columns=['y1','y2'])
繪製長條圖
df2.plot.bar()
plt.show()
改成繪製堆疊長條圖
df2.plot.bar(stacked=True)
plt.show()