Python數據分析中 Numpy和pandas包使用簡介

Numpy 是Python科學計算的基礎庫,主要提供N維數組的實現,以及數學算法

1:Numpy 數組的創建和訪問:

創建一維數組,二維數組。這裏的一維數組類似數學中的向量,二維數組類似數學中的矩陣。

import numpy as np

''' 常見的利用numpy 創建數組的方法'''

print("創建一個5行6列的二維數組")
a1=np.array([[1,2,2,2,3,3],[1,2,2,2,2,2,],[1,2,3,4,5,6],[1,2,3,4,4,5],[1,2,3,4,5,6]]) # .array() 創建數組函數
print(a1)
dim=a1.ndim # 數組.ndim 返回值是維數組的維數 二維數組返回值就是2,
print(dim)
size=a1.shape # 數組.shape 返回數組的大小,即行數和列數 注意返回值的類型爲元組
print(size,'\n')

a2=np.arange(5) #.arrange() 創建1維數組 用法類似於range([start,]end[,step])
print(a2,'\n')

a3=np.linspace(0,3,5) #.linspace() 創建1維數組
print(a3,'\n')

a4=np.zeros((3,5)) # .zeros(shape=(row,col)) 創建row*col 的二維數組(零矩陣) 
print(a4,'\n')

a5=np.ones((3,3)) # .ones(shape=(row,col)) 創建row*col 的二維數組(單位矩陣)
print(a5,'\n')

a6=np.eye(4) # .eye(num) 創建num*num 的二維數組(對角矩陣,對角線元素爲1) 
print(a6,'\n')

a7=np.random.randn(5,3)  # .random.randn(row,col) 創建row*col 的隨機二維數組 這裏不再額外的導入 import random
print(a7,'\n')

''' 常見的利用numpy 數組元素訪問機制'''
'''熟悉matlab的同學注意,其訪問機制與matlab中向量和矩陣的訪問機制相似,不同在python用中括號[],且索引從0開始'''
b1=a1[3,4] # 訪問形式:數組名[x,y] ,其中x,y 爲二維數組行和列的索引,索引值從0開始,一維數組的訪問與列表元素的訪問機制類似,[索引]和切片形式
b2=a1[:,4] # :表示所有元素
print(b1,'\n',b2,'\n')

2:Numpy 運算:

數組標量數值之間進行計算,計算過程是數組裏的元素和標量逐個計算。

數組的維度變化數組.reshape(row,col)  eg: a=np.random.randint(1,5,20).reshape(4,5) 將1維數組變爲4*5的二維數組。

數組.ravel() 將多維數組展開爲1維數組  

數組數組之間進行計算,計算過程是:如果數組的維度相同且行數和列數相同,數組裏的元素對應位置進行運算計算。注意這裏的a*b只是對應元素相乘,並不是矩陣乘法(內積)矩陣的內積使用 np.dot()

 

數組的內置函數計算:注意命名空間問題 np.

np.cos(a)     np.sqrt(a)  #開根號

np.sin(a)

np.exp(a) #e指數

np.sort(a,axis=1)  # 排序,axis=1,每行元素的排序 ; axis=0,每列元素的排序

 

數組的統計方法: a必須爲numpy創建的數組,注意下面不在需要np. ,因爲這個不是內置函數,而是對象的方法

a.sum() 求和 ,a.mean()求均值 ,a.std()標準差 ,a.min()最小值,a.max()最大值,a.argmin() 返回最小值的索引,a.argmx()

返回最大值的索引

 

二維或高維數組的統計方法:以行或列來計算 a.sum(axis=0) a.std(axis=0) #按計算  a.std(axis=1) a.mean(axis=1) #按計算

 

Numpy 的常見的高級功能:例如:數據擬合

import numpy as np
points_num=20
equation_order=3
input_x=np.linspace(1,10,points_num) #輸入數據
output_y=np.sqrt(input_x)+0.177*np.random.rand(points_num)#輸出數據
coffecient=np.polyfit(input_x,output_y,equation_order) #數據擬合,返回值爲擬合的equation_order階多項式係數 列表形式
result=np.poly1d(coffecient) #返回值爲擬合後的多項式 一個函數關係

t=np.linspace(1,10,200)
print(result(t))

 

到此對於Numpy 的一些簡單用法就到這裏,詳細的用法參考Numpy 官網 www.numpy.org

 

Pandas 是時間序列數據處理工具包,在利用python進行數據分析中也被廣泛應用。

'''Pandas的基本數據結構'''

a1=pd.Series([1,2,3,4]) 

#.Series() 表示創建一行數據,類似創建一個一維數組。 類似numpy。 注意所有的一維數組都是數學中的行向量,並不是列向量。應爲是一個列表結構

a2=pd.DataFrame(np.random.randn(3,4),columns=list('ABCD'))
# .DataFrame()表示創建二維數組 columns=list('ABCD')表示的是每一列的名稱.

對pandas 創建的數據進行訪問 ,注意一下的a2是DataFrame對象                                             

a2.iloc[0] #對第一行元素進行訪問

a2.A #對A列元素進行訪問

a2.shape() #返回數據的行數和列數

a2.haed(num) #訪問前num行數據

a2.tail(num) #訪問後num行數據 

 

 

 

 

 

 

 

 

 


 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章