Numpy,Pandas基本用法
阿新 • • 發佈:2021-06-18
Numpy使用
1. 陣列建立
1.1. 建立新陣列
numpy.empty(shape,dtype = float, order = 'C', like = None)
建立一個空陣列
shape:int或int元組
dtype:資料輸出的型別,預設為numpy.float64,
order:順序,預設為'C'行優先,或可為'F'列優先
like:引用物件允許建立非NumPy陣列的陣列
2. numpy的四則運算
# 向量與向量之間 # 加法 np.add(a,b) a + b # 減法 np.subtract(a,b) a - b # 乘法(X乘) np.multiply(a,b) a * b # 點乘 np.dot(a,b) # 除法 np.divide(a,b) a / b # 向量與標量之間 # 加法 a + 1 # 減法 a - 1 # 乘法 a * 2 # 除法 a / 2 # 求餘 a % 2 # 矩陣轉置 a.T # 矩陣的逆(矩陣滿秩) import numpy.linalg as lg lg.inv(a)
3. Numpy陣列的切片與索引
a[3:7] # 提取a[3]-a[6]的值
a[:7:2] # 提取a[0]-a[6]每次遞增2
a[::-1] # 反轉陣列
a[1,:2] # 獲取第一維前兩個數
4. Numpy陣列的堆疊
# 改變陣列形狀 # reshape() b = np.arange(24),reshape(2,3,4) # 三重陣列 # ravel() # 將多維陣列拆解為一維陣列 b.ravel() # flatten() # 拉直,功能與ravel()相同,不過flatten()返回的是真實的陣列,需要分配新的記憶體空間,ravel()僅改變檢視。 b.flatten() # shape() # 使用元組改變陣列形狀 b.shape = (6,4) # transpose() # 轉置 b.transpose() # (6,4)變為(4,6) # 陣列的堆疊 a = np.arange(9).reshape(3,3) b = a * 2 # hstack() # 水平疊加 np.hstack((a,b)) # (3,3)變為(3,6) # vstack() # 垂直疊加 np.vstack((a,b)) # (3,3)變為(6,3) # 深度疊加 np.dstack((a,b)) # (3,3)變為(3,3,2)
5. Numpy的拆分
a = np.arange(9).reshape(3,3)
# 拆分陣列
# hsplit()
# 橫向拆分
np.hsplit(a,3)
# vsplit()
# 縱向拆分
np.vsplit(a,3)
# dsplit()
# 深度拆分
# 深度拆分要求陣列的秩大於等於3
np.dsplit(a,3)
6. Numpy比較運算
比較運算子在numpy中也是通過通用函式來實現,具體如下:
比較運算子 | 通用函式 |
---|---|
== | np.equal |
!= | np.not_equal |
< | np.less |
<= | np.less_equal |
> | np.greater |
>= | np.greater_equal |
布林邏輯
邏輯運算子 | 通用函式 |
---|---|
& | np.bitwise_and |
| | np.bitwise_or |
^ | np.bitwise_xor |
~ | np.bitwise_not |
data=np.array([('Alice', 4, 40), ('Bob', 11, 85.5) ,('Cathy', 7, 68.0),('Doug', 9, 60)],dtype=[("name","S10"),("age","int"),("score","float")])
print(data)
'''
輸出:[(b'Alice', 4, 40. )
(b'Bob', 11, 85.5)
(b'Cathy', 7, 68. )
(b'Doug', 9, 60. )]
'''
print(data["score"]>60) #使用比較運算得的一個布林陣列
'''
輸出:[False True True False]
'''
print(data[data["score"]>60]) #進行簡單的索引,即掩碼操作將值為True的選出
'''
輸出:[(b'Bob', 11, 85.5) (b'Cathy', 7, 68. )]
'''
Pandas使用
1. Pandas包的匯入
from pandas import Series,DataFrame
import pandas as pd
1.1. Pandas中的資料結構
- Series:一維陣列,類似於Python中的基本資料結構list,區別是Series只允許儲存相同的資料型別,這樣可以更有效的使用記憶體,提高運算效率。就像資料庫中的列資料;
- DataFrame:二維的表格型資料結構。很多功能與R中的data.frame類似。可以將DataFrame理解為Series的容器。
- Panel:三位的陣列,可以理解為DataFrame的容器。
2. Series
# 自動建立索引
In [1]:obj=Series([4,7,-5,3])
In [2]:obj
Out[2]:
0 4
1 7
2 -5
3 3
# 手動設定索引
In [5]:obj2=Series([4,7,-5,3],index=['d','b','a','c'])
In [6]:obj2
Out[6]:
d 4
b 7
a -5
c 3
# 字典方式建立
In [7]:sdata={'Ohio':35000,'Texas':71000,'Oregon':16000,'Utah':5000}
In [8]:obj3=Series(sdata)
In [9]:obj3
Out[9]:
Ohio 35000
Texas 71000
Oregon 16000
Utah 5000
3. DataFrame
DataFrame
是一個表格型的資料結構,是以一個或多個二維塊存放的資料表格(層次化索引),DataFrame
既有行索引還有列索引,它有一組有序的列,每列既可以是不同型別(數值、字串、布林型)的資料,或者可以看做由Series
組成的字典。
# 建立DataFrame
dictionary = {'state':['0hio','0hio','0hio','Nevada','Nevada'],
'year':[2000,2001,2002,2001,2002],
'pop':[1.5,1.7,3.6,2.4,2.9]}
frame = DataFrame(dictionary)
# 修改行索引
frame = DataFrame(dictionary,index=["one","two","three","four","five"])
# 新增新列
frame["add"] = [0,0,0,0,0]
# 新增Series型別
value = Series([1,3,1,4,8,10],index=[0,1,2,3,4,5])
frame["add1"] = value