1、numpy模塊
1.1 numpy 簡介
numpy是python的一種開源的數值計算擴展庫,這種庫可用來存儲和處理大型numpy數組。python
numpy庫有兩個做用:json
一、區別於list列表,提供了數組操做、數組運算、以及統計分佈和簡單的數學模型數組
二、計算速度快,甚至要優於python內置的簡單運算,使得其成爲pandas、sklearn等模塊的依賴包。高級的框架如TensorFlow、PyTorch等,其數組操做也和numpy很是類似。app
1.2 建立numpy數組
numpy數組即numpy的ndarray對象,建立numpy數組就是把一個列表傳入np.array()方法框架
import numpy as np # 建立一維的ndarray對象 arr =np.array([1,2,3]) print(arr,type(arr)) # [1 2 3] <class 'numpy.ndarray' # 建立二維的ndarray對象 print(np.array([[1,2,3],[4,5,6]])) -------------------------------------------------------------------------------- [[1 2 3] [4 5 6]]
1.3 numpy數組的經常使用屬性
屬性 | 解釋 |
---|---|
T | 數組的轉置(對高維數組而言) |
dtype | 數組元素的數據類型 |
size | 數組元素的個數 |
ndim | 數組的維數 |
shape | 數組的維度大小(以元組形式) |
astype | 類型轉換 |
arr = np.array([[1,2,3],[4,5,6]]) print(arr.T) # 行與列互換 -------------------------------------------------------------------------------- [[1 4] [2 5] [3 6]]
1.4 切片
arr = np .array([[1,2,3],[4,5,6]]) print(arr[:]) # 取出數組全部元素 print(arr[:,:]) # 取出數組全部元素 print(arr[0,:]) # 取出第0行到第一行的數組 print(arr[0:1,:]) # 取出第0行到第一行的數組,顧頭不顧尾 print(arr[0:1,0:1]) # 取出第0行到第一行,第0列到第一列的數組,顧頭不顧尾 print(arr[0, 0],type(arr[0, 0])) #取出第0行到第一行,第0列到第一列的數,輸出數組類型 print(arr[0, [0,2]]) #取出第0行第0個元素和第2個元素 [1 3] print(arr[0, 0] + 1) #取出第0行第0列的元素加1 2
1.5 取值
arr = np.array([[1, 2, 3], [4, 5, 6]]) arr[0, :] = 0 #將第0行的元素所有變爲0 print(arr) -------------------------------------------- [[0 0 0] [4 5 6]] arr[1, 1] = 1 #將第一行第一列的數字改成1 print(arr) -------------------------------------------------------------------------------- [[0 0 0] [4 1 6]] arr[arr < 3] = 3 # 布爾取值 將小於3的數字所有變爲3 print(arr) -------------------------------------------------------------------------------- [[3 3 3] [4 3 6]]
1.6 合併
arr1 = np.array([[1, 2, 3], [4, 5, 6]]) # 可變數據類型 arr2 = np.array([[7, 8, 9], [10, 11, 12]]) # 可變數據類型 ------------------------------------------------------- [[1 2 3] [4 5 6]] [[ 7 8 9] [10 11 12]] print(np.hstack((arr1,arr2))) # 行合併 ------------------------------------------------------------ [[ 1 2 3 7 8 9] [ 4 5 6 10 11 12]] print(np.vstack((arr1,arr2))) # 列合併 ------------------------------------------------ [[ 1 2 3] [ 4 5 6] [ 7 8 9] [10 11 12]] print(np.concatenate((arr1, arr2))) # 默認列合併 print(np.concatenate((arr1, arr2),axis=1)) # 1表示行;0表示列 ----------------------------------------------------------- [[ 1 2 3] [ 4 5 6] [ 7 8 9] [10 11 12]] [[ 1 2 3 7 8 9] [ 4 5 6 10 11 12]]
1.7 經過函數建立numpy數組
方法 | 詳解 |
---|---|
array() | 將列表轉換爲數組,可選擇顯式指定dtype |
arange() | range的numpy版,支持浮點數 |
linspace() | 相似arange(),第三個參數爲數組長度 |
zeros() | 根據指定形狀和dtype建立全0數組 np.zeros((5, 5)) |
ones() | 根據指定形狀和dtype建立全1數組 np.ones((5, 5)) |
eye() | 建立單位矩陣(對角線上的 數字爲1) |
empty() | 建立一個元素全隨機的數組 |
reshape() | 重塑形狀 |
1.7 numpy數組運算
運算符 | 說明 |
---|---|
+ | 兩個numpy數組對應元素相加 |
- | 兩個numpy數組對應元素相減 |
* | 兩個numpy數組對應元素相乘 |
/ | 兩個numpy數組對應元素相除,若是都是整數則取商 |
% | 兩個numpy數組對應元素相除後取餘數 |
**n | 單個numpy數組每一個元素都取n次方,如**2:每一個元素都取平方 |
1.9 額外瞭解
numpy隨機數dom
print(np.random.rand(3,4)) #隨機生成一個3*4的數組 print(np.random.randint(1,10,(3,4))) # 最小值1,最大值10,3*4 print(np.random.choice([1,2,3,4,5],3)) #隨機生成一個元素爲3個的數組,數組元素在[1,2,3,4,5]內
重點函數
隨機數種子:全部的隨機數是按照隨機數種子生成的spa
時間短則不變,時間長就變excel
np.random.seed(int(time.time())) np.random.seed(1) #若是固定了就不會變 arr1 = np.random.rand(3,4) # 可變數據類型 print(arr1) rs = np.random.RandomState(1) #產生一個隨機狀態種子,seed爲1 print(rs.rand(3,4)) --------------------------------------------------------- [[4.17022005e-01 7.20324493e-01 1.14374817e-04 3.02332573e-01] [1.46755891e-01 9.23385948e-02 1.86260211e-01 3.45560727e-01] [3.96767474e-01 5.38816734e-01 4.19194514e-01 6.85219500e-01]]
2、pandas模塊
一、導入方式
import pandas as pd
二、做用
用於文件處理,更多地是給excel文件作處理,對numpy+xlrd模塊作了一層封裝code
三、pandas模塊的數據類型
3.1 series()
如今通常不使用(一維)
df = pd.series(np.array([1,2,3,4])) print(df)
3.2 DataFrame() (多維)
3.2.1
dates = pd.date_range('20190101', periods=6, freq='M') print(dates) # periods=6, freq='M'表明前六個月
start | 開始時間 |
---|---|
end | 結束時間 |
periods | 時間長度 |
freq | 時間頻率,默認爲'D',可選H(our),W(eek),B(usiness),S(emi-)M(onth),(min)T(es), S(econd), A(year),… |
3.2.2 屬性
屬性 | 詳解 |
---|---|
dtype是 | 查看數據類型 |
index | 查看行序列或者索引 |
columns | 查看各列的標籤 |
values | 查看數據框內的數據,也即不含表頭索引的數據 |
describe | 查看數據每一列的極值,均值,中位數,只可用於數值型數據 |
transpose | 轉置,也可用T來操做 |
sort_index | 排序,可按行或列index排序輸出 |
sort_values | 按數據值來排序 |
3.2.3 取值
#構造一個數組 dates = pd.date_range('20190101', periods=6, freq='M') print(dates) values = np.random.rand(6, 4) * 10 print(values) columns = ['c4','c2','c3','c1'] #主要掌握 df.values[1,1] #取出第一行第一列 df.iloc[1,1] = 1 #取出第一行第一列,替換爲1
3.2.4 操做表格
一、缺失值處理
df = df.dropna(axis = 0) #按行刪除缺失值 df df = df.dropna(tresh = 4) #必須得有4個值,寫5就不能夠,由於只有4列 df = df.dropna(axis=0) # 1列,0行 df #按行取缺失值
二、合併處理數據
df1 = pd.DataFrame(np.zeros((2,3))) #用0合併兩行三列 df2 = pd.DataFrame(np.ones((2,3))) #用1合併兩行三列 pd.concat((df1,df2)) #默認按列合併 pd.concat((df1,df2),axis=1) axis=1是行,0是列 df1.append(df2) #日後追加
- 導入數據,讀取json文件菜鳥僅作了解