天天看點

資料分析1-1

1.

(1)資料分析:是把隐藏在一些看似雜亂無章的資料背後的資訊提煉出來,總結出所研究對象的内在規律
(2)資料分析三劍客:Numpy,Pandas,Matplotlib
(3)NumPy(Numerical Python) 是 Python 語言的一個擴充程式庫,支援大量的次元數組與矩陣運算,此外也針對數組運算
  提供大量的數學函數庫

numpy中seriel,dataframe重點
matplotlib:直方圖和散點圖等等其他圖
前兩個是資料分析相關的,後邊的這個是繪圖相關的      

一、建立ndarray

2. 使用np.array()建立

例1:一維數組建立

import numpy as np
np.array([1,2,3,4,5])      

結果:

array([1, 2, 3, 4, 5])      

例2:二維資料建立

np.array([[1,2,3.2],[4,5,6]])      

結果:

array([[ 1. ,  2. ,  3.2],
       [ 4. ,  5. ,  6. ]])      
注意:
numpy預設ndarray的所有元素的類型是相同的
如果傳進來的清單中包含不同的類型,則統一為同一類型,優先級:str>float>int      
資料分析1-1

 例3:使用matplotlib.pyplot擷取一個numpy數組,資料來源于一張圖檔

import matplotlib.pyplot as plt
plt.imread('./cat.jpg')      

運作之後,傳回的是一個三維數組,外邊有三層包裹

結果:

資料分析1-1

例4:

import matplotlib.pyplot as plt
#cat_img_arr = plt.imread('./cat.jpg')
cat_img_arr = plt.imread('cat.jpg')
plt.imshow(cat_img_arr)      

運作之後,得到的結果:

資料分析1-1

例5:

import matplotlib.pyplot as plt
#cat_img_arr = plt.imread('./cat.jpg')
cat_img_arr = plt.imread('cat.jpg')
plt.imshow(cat_img_arr)
plt.imshow(cat_img_arr-50)      

運作之後,得到下面的結果:減去50之後的結果

資料分析1-1

例6:

import matplotlib.pyplot as plt
#cat_img_arr = plt.imread('./cat.jpg')
cat_img_arr = plt.imread('cat.jpg')
plt.imshow(cat_img_arr)
plt.imshow(cat_img_arr-50)
cat_img_arr      

運作結果:

列印出了這個數組

資料分析1-1

例7:

import matplotlib.pyplot as plt
#cat_img_arr = plt.imread('./cat.jpg')
cat_img_arr = plt.imread('cat.jpg')
plt.imshow(cat_img_arr)
plt.imshow(cat_img_arr-50)
cat_img_arr.shape        #數組的形狀應該得到的是下面的數組(456,730,3)      

展示元組:也就是數組的形狀

前兩個表示像素,第三個表示顔色

結果:

資料分析1-1

2. 使用np的routines函數建立

(1)包含以下常見建立方法: 

例1:

資料分析1-1

例2:

資料分析1-1

例3:等差數列

用法:

np.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)

傳回20個元素:

資料分析1-1

例4:

資料分析1-1

例5:

資料分析1-1

固定随機數,5行6列,随機因子

#固定時間種子,産生的随機數就固定下來了

資料分析1-1

例6:标準正态分布

資料分析1-1

例7:生成0-1的随機數

資料分析1-1

三.ndarray的屬性

資料分析1-1

例1:

資料分析1-1

得到下面的結果:

資料分析1-1

核心重點:索引和切片的處理

 123

 四.ndarray的基本操作

1. 索引¶
一維與清單完全一緻 多元時同理      

例1:索引查找結果,修改結果

資料分析1-1
資料分析1-1

例2:索引:一維與清單完全一緻 多元時同理

資料分析1-1
資料分析1-1

(1)擷取二維數組前兩行,顧頭不顧尾

資料分析1-1

(2)擷取二維數組前兩列資料,逗号左邊是行資料,逗号右邊是列資料

資料分析1-1

(3)擷取資料前兩行和前兩列資料

資料分析1-1

(4)将資料反轉,例如[1,2,3]==>[3,2,1]

 ::進行切片

資料分析1-1

(5)列倒序

資料分析1-1

(6)全部倒序

arr[::-1,::-1]

 例3:

(1)如何将圖檔進行全置倒序處理之後,需要儲存一下

資料分析1-1

帶顔色的圖檔是三維的,檢視一下形狀

(3)下面是上下倒置的結果:

資料分析1-1

(4)下面是左右倒置的結果

資料分析1-1

(5)下面是顔色倒置的結果:

資料分析1-1

例4:變形

使用arr.reshape()函數,注意參數是一個tuple!
基本使用
1.将一維數組變形成多元數組      
資料分析1-1

将上邊的array轉換成 一維的,7行5列,再轉換成5行7列的

資料分析1-1

擴充:轉化成三維的

資料分析1-1
資料分析1-1

例5:圖檔倒置

資料分析1-1

#對一維數組中所有的元素倒置

資料分析1-1

例5;級聯(numpy中了解成合并就行),

panda中不能這麼了解

資料分析1-1

(1)axis表示的是軸向的意思

 axis=0:軸向     0表示的是豎直的軸向 1水準的軸向

資料分析1-1

看一下arr的形狀

資料分析1-1

concatentate必須對齊才行,否則會報錯

資料分析1-1
資料分析1-1
資料分析1-1

注意上圖,隻有二維和二維的才能合并,行和列一定要對齊才行

資料分析1-1

例6:

(1)合并兩張圖檔

 axis=1表示左右,豎向連接配接,axis=0表示上下,橫向連接配接

資料分析1-1
資料分析1-1
資料分析1-1

(2)水準級聯hstack和豎直級聯vstack

資料分析1-1
資料分析1-1

例7.  切分:

資料分析1-1

下面我們看下是如何切分的?

(1)

資料分析1-1

(2)下面是切分之後的結果

axis==>表示的是橫着切

資料分析1-1

下邊表示的是豎着切

資料分析1-1

(3)

 切分照片?

資料分析1-1
資料分析1-1
資料分析1-1

 (4)

資料分析1-1
資料分析1-1

聚合操作:

資料分析1-1

(1)

資料分析1-1

(2)np.max/np.min

 對所有的求和

資料分析1-1

求方差

資料分析1-1

可以指定軸向,将三維數組中每個軸向的第三個數組進行求方差

資料分析1-1

廣播機制:

資料分析1-1

 (1)

資料分析1-1

通過廣播機制進行相加

資料分析1-1

(2)

資料分析1-1

缺失的資料通過已有的資料進行填充

資料分析1-1

(3)

資料分析1-1
資料分析1-1
資料分析1-1

缺失的次元會自動補齊這個數值

 ndarry的排序

(1)快速排序

資料分析1-1

第一個不改變輸入,第二個改變輸入,第一種是升序

資料分析1-1

 下邊的第一種也是不改變

139得到的結果是:

array([3,5,6,7,8])

資料分析1-1