1. 程式人生 > >知識點-numpy,pandas和matplotlib

知識點-numpy,pandas和matplotlib

參考筆記:

一、numpy

1、建立ndarray(可以是多維的但是資料型別必須一致):np.array()
#舉例
np.array(range(100))

*T 轉置
*dtype 型別
*size 大小
*ndim 維數
*shape 維度大小(返回元組)

#reshape 改變排列
#arange 相當於列表的range,並可以支援步長且可以是小數步長
#zeros 建立多維需要傳入一個元組(3,5)
在這裡插入圖片描述
*多維陣列切片,比如[1:3][1:3],聯絡兩個切片不是先橫切再後切,這是相當於兩個橫切,所以建議多寫在一起[1:3,1:3]
在這裡插入圖片描述
#判斷和、或、非,這裡是用& | ~
在這裡插入圖片描述


#花式索引切片裡面再加個[]包起來表示
在這裡插入圖片描述
#abs絕對值,sqrt開根號,ceil向上取整,floor向下取整,round四捨五入,trunc向0取整,modf小數返回兩個值一個小數點前整數,一個是小數點後的數的兩個陣列,nan表示缺失不是個數(另外0/0值也是nan),inf表示無窮大的數(除以0)
#maximum 取兩個陣列對應位置的最大數形成陣列
舉例:不是nan的取出,結合布林型索引 a[~np.isnan(a)]
在這裡插入圖片描述
#cumsum返回的還是一個數組,各位置值對應前面位置的累積和
在這裡插入圖片描述
另例子:import random
random.randint(1,10) 表示隨機整數, random.choice([1,5,7,10]) 隨機取值, random.uniform(1.0,10.0) 隨機小數, random.random() 返回0-1間隨意數, random.shuffle([1,5,7,10]) 隨機打亂列表,
#numpy結合random一樣,np.random.randint(1,10,3)表示隨機產生3個各1-10的陣列, np.random.randint(1,10,(3,5))表示隨機產生3行5列各1-10的二維陣列,rand==random
還有randn這是返回一個隨機浮點數,大概-1.96~+1.96之間
在這裡插入圖片描述

二、pandas

1、Series
#建立可以列表,字典和陣列進行建立 pd.Series(np.arange(10))
#pd.Series([3,5,6,2],index=list(“abcd”)) 注意Series 大寫第一位,另外index索引是個列表
#Series取值 a=pd.Series([3,5,6,2],index=list(“abcd”)) a.index 和 a.values
#Series像列表與字典的結合體,可以兩種索引字典取值和切片取值 a=pd.Series([3,5,6,2],index=list(“abcd”)) a[‘b’]=a[1]
在這裡插入圖片描述
在這裡插入圖片描述

#拿標籤做切片是包括末尾標籤的 a=pd.Series([3,5,6,2],index=list(“abcd”)) a[‘a’:‘c’]
在這裡插入圖片描述


#因為不確定你這是標籤還是下標所以亂,這可以用iloc和loc(Series切片索引是以標籤進行解釋,可以用iloc改下標解釋)
在這裡插入圖片描述
#如果兩個標籤不完全相同,則運算沒有相同標籤的運算值為NaN,然後避免結果值為nan可以採用fill_value=0方法
在這裡插入圖片描述
#缺失值處理也很重要
在這裡插入圖片描述

2、DataFrame
#dataframe每一列資料型別相同就行
在這裡插入圖片描述

#dataframe表格屬性 df.index 行索引, df.columns 列索引, df.values 值。
#df.T 倒置 df.describe() 描述
#行索引起名 df.index.name 列索引改名 df.rename(columns{舊名:新名})
#df.shift() 向上下移動行傳-1或1,填充nan
#df.rolling() 整體視窗多少依次向下滾動,df.rolling(5) .mean() 依次向下5各依次滾動再求平均值
df.groupby().get_group() 分組
df.merge() 多數組合並
在這裡插入圖片描述
#困惑點,dataframe直接進行取值df[0]這樣不行行索引,必須先有列df[“aaa”][0],但是切片選取就可以先用行df[0:2,“aaa”]
$還有df[“aaa”]取一列出來相當於是一個series,所以後面再切相當於只能是標籤,所以取下標對應值要結合iloc再切
在這裡插入圖片描述
#布林型索引與series布林型不一樣,series布林型是直接丟掉flase值,而dataframe每行每列可能多個true,這邊是吧flase變成nan
另外dataframe各列資料型別不一樣,所以用df[df<10]可能出錯,因為假如裡面也有str報錯,需要切掉str才能使用賦值
在這裡插入圖片描述
#兩dataframe運算也是講究行索引列索引對其
#axis=1表示對列操作 ,how=“any” 表示行有任意一個nan, how=“all” 表示行都是nan
在這裡插入圖片描述
#排序,可以按照索引和列兩張排序,sort_index(ascending=Ture或者Flase)一個升序一個降序
在這裡插入圖片描述
多重索引
在這裡插入圖片描述
#header=None就是不把第一行當成列索引,names是自己單獨給列索引起名
index_col 制定某列作為行索引,parse_dates 轉化為時間格式,一般可以用於行索引傳列

在這裡插入圖片描述

在這裡插入圖片描述

在這裡插入圖片描述

在這裡插入圖片描述

三、matplotlib
在這裡插入圖片描述

#plt.plot([3,6,8,11],“ro”) 一個列表時候x軸值是0,1,2,3…
plt.plot([2,4,5,7],[3,6,8,11],“r*”) 或多個一起寫plt.plot([2,4,5,7],[3,6,8,11],“r*”,[2,4,5,7],[3,6,8,11],“gx-”) 這個畫圖 “gx-” 第一個顏色第二個圖示形狀第三個串聯線型別
在這裡插入圖片描述
#dataframe也支援畫圖 df[“aaa”].plot() plt.show() 某列畫圖
在這裡插入圖片描述
#一個畫布畫多圖

在這裡插入圖片描述