numpy 模塊和 pandas 模塊

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文件菜鳥僅作了解
相關文章
相關標籤/搜索