numpy、pandas常用函式功能

寧靜深遠發表於2020-10-11

numpy和pandas常用函式功能

一、Numpy

  • python科學計算的基礎模組
  • 資料格式:ndarray
  • 安裝:sudo apt-get install python-numpy、pip install numpy

1.1 常用功能

陣列建立
np.array()、np.zeros()、np.ones()、np.empty()、np.arrange()
屬性:dtype、shape

索引
arr[][]、 arr[:, :]

條件判斷
np.where(condition, arr1, arr2)

布林陣列
any(): 用於測試陣列(向量)中是否存在True
all(): 用於確定陣列中是否全是True

改變陣列形狀
reshape()、flatten()

連線和切分

  • 水平方向
    numpy.hstack((a,b))
    numpy.concatenate((a,b),axis=1)
  • 垂直方向
    numpy.vstack(a,b)
    numpy.concartenate((a,b),axis=0)
  • 深度方向
    numpy.dstack()

  • row_stack

  • column_stack

結構化陣列
平鋪函式: numpy.tile(a, repeats)
元素複製函式:numpy.repeat(a, repeats, axis=None)
新增元素: numpy.append(arr, values, axis=None)
刪除元素:numpy.delete(arr,obj,axis=None)

矩陣操作
轉置: .T、transpose()

統計操作

函式功能
sum對陣列中全部或某軸向的元素求和。零長度的陣列的sum為0
mean算數平均數。零長度的陣列的mean為NaN
std、var分別為標準差和方差,自由度可調(預設為n)
min、max最大值和最小值
argmin、argmax分別為最大和最小元素的索引
cumsum所有元素的累計和
cumprod所有元素的累計積

檔案讀寫
savetxt(fileName,data)
loadtxt:讀取csv檔案
np.loadtxt(filepath,delimiter,usecols,unpack)

與list的轉換
轉為list:arr.tolist()
list轉為array:np.array(list1)

二、pandas

  • pandas基於numpy構建
  • 安裝: sudo apt-get install python-pandas、pip install pandas

2.1 series物件

  • 基本資料結構:Series和DataFrame。
  • Series是一種類似於一維陣列的物件
  • Series由一組資料以及一組與之相關的資料標籤(即索引)組。

series的使用

from pandas import Series
obj = Series([1,3,5])
print(obj)
# 0 1
# 1 3
# 2 5

print(obj.values)
print(obj.index)
# 自定義索引
obj = Series(['aa','bb','cc'], index=['a1','a2','a3'])

# 字典轉為series
salarydata = {'a':5000, 'b':8000, 'c':7500}
obj = Series(salarydata)

#判斷是否有缺失值
print(pd.isnull(obj2))
print(pd.notnull(obj2))

2.2 DataFrame

  • DataFrame是一個表格型的資料結構,它含有一組有序的列
  • 既有行索引,也有列索引

DataFrame的使用

from pandas import DataFrame

data = {'Number':[1,2,3,4,5],
'Name':['Alvin','Teresa','Elly','James','Nancy'],
'Scores':[98.5, 100.0, 93.0,98.5,90.5]}

frame = DataFrame(data)
print(frame)

# 建立指定序列順序的DataFrame
frame2 = DataFrame(data, columns=['Number','Name','Scores']) 
print(frame2)

#指定index
frame3 = DataFrame(data, columns['Number','Name','Scores','Age'],index=['No.01','No.02','No.03','No.04','No.05'])

#訪問操作
dataframe物件[ 列名稱 ] 或 dataframe物件.列名稱

#行列索引名
frame.index.name
frame.columns.name
frame.values

#head和tail的方法
Head獲取開頭若干行資料
tail獲取結尾若干行資料

#info方法
獲取資料資訊,包括索引型別和列型別、非空值和記憶體使用

DataFrame支援構造

型別說明
二維 ndarray資料矩陣,還可以傳入行標和列標
由陣列、列表或元組組成的字典每個序列會變成DataFrame的一列。所有序列的長度必須相同。
NumPy的鋼結構化/記錄陣列類似於“由陣列組成的字典”
由Series組成的字典每個Series會成為一列。如果沒有顯示指定索引,則個Series的索引會被合併成結果餓行索引
由字典組成的字典各內層字典會成為一列。鍵會被合併成結果的行索引,跟“由Series組成的字典”的情況一樣
字典或Series的列表各項將會成為DataFrame的一行。字典鍵或Series索引的並集將會成為DataFrame的列標
由列表或元組組成的列表類似於“二維ndarry”
另一個DataFrame該DataFrame的索引將會被沿用,除非顯式指定了其他索引
NumPy的MaskedArray類似於“二維ndarry”的情況,只是掩碼值在結果DataFrame會變成NA/缺失值

2.3 基本資料分析

索引
series同numpy類似,但索引值可以不為整數。
切片
與numpy不同,其末端是包含的。
算數運算

  • 它可以對不同索引的物件進行算數運算。

  • 在將物件相加時,如果存在不同索引對,則結果的索引就是該索引對的並集。

  • 對於DataFrame物件而言,對齊操作同時發生在行和列上。有對應的值則相加,沒有則用NAN填充

  • add(加)、sub(減)、mul(乘)、div(除),可以加入fill_value
    df1.add(df2, fill_value=0)

  • 刪除
    df1 = df.drop([‘No3’,‘No1’] , axis=0)

  • 排序
    s.sort_index(ascending=?, axis=?):axis=0 行索引、axis=1 列索引
    s.sort_values(by=)by指定列排序

  • 改變索引
    Pandas物件的一個重要方法是 reindex(),其作用是建立一個適應新索引的新物件(如果某個索引值當前不存在,就引入缺失值NAN)。可用fill_value、
    也可引入method填充:

引數說明
ffill 或 pad前向填充(或搬運)值
dfill 或 backfill後向填充(或搬運)值。

columns = new_columns

  • ix的標籤索引
    frame.ix[[‘a’,‘b’,‘c’,‘d’], new_columns]
    reindex的引數
型別說明
index用作索引的新序列。既可以是Index例項,也可以是其他序列型的Python資料結構。Index 會被完全使用,就像沒有任何複製一樣。
method插值(填充)方式。
fill_value在重新索引的過程中,需要引入缺失值時使用的替代值。
limit前向或後向填充時的最大填充量。
level在MultiIndex的指定級別上匹配簡單索引,否則選取其子集。
copy預設為True,無論如何都複製;如果為False,則新舊相等就不復制。

相關文章