D03 Numpy排序、篩選、統計
2021-12-27由 全民程式設計 發表于 林業
標準d是前三季為什麼型別欄位
title: D03|Numpy排序、篩選、統計
author: Adolph Lee
categories: 資料探勘基礎
tags:
Python
資料探勘基礎
統計
篩選
排序
在進行資料探勘工作之前,我們常常需要對資料的全貌今昔概覽,利用描述性統計獲取資料的特徵,例如資料的均值,中位數,眾數,離中趨勢,頻數分析,分佈分析以及繪製對應的圖表。在生活中最為常見的資料存放形式是二維表,我們將二維表資料轉換為ndarray之後對應的即為二維陣列,下面以二維陣列為例,講述numpy的排序、篩選、統計。
排序
關於排序,numpy的開發者們一早就為我們準備好了方法函式供我們使用,並且提供了多種不同的排序演算法例如最常用的quicksort以及穩定性最強的mergesort。
numpy。sort
numpy。sort(a, axis, kind, order)
a ⇒array指的是需要排序的陣列
axis ⇒ axis指定按行序排序或按列序排序 axis=0 列序, axis=1 行序 預設為行序
kind ⇒ 排序演算法的種類,例如:kind = ‘mergesort’ 預設值為quicksort
order ⇒ 如果陣列包含欄位名稱,那麼就可以利用order指定欄位
import numpy as nparray_2d = np。array([[1,3,2],[7,4,5],[5,7,9],[5,8,8]])print(array_2d)# 按行序排序print(np。sort(array_2d))print(array_2d)# 按列序排序print(np。sort(array_2d,axis=0))
在演示按欄位排序之前,我們先學習為ndarray新增欄位名稱
利用資料型別物件(dtype)定義欄位名稱及欄位型別
這一過程就像在資料庫中建表
import numpy as npfiled = np。dtype([(‘name’,‘S20’),(‘age’,int)]) # 注意使用小括號 而非中括號array_2d = np。array([(‘Tyrone’,22),(‘Arya’,18),(‘Jon’,36)],dtype=filed)print(array_2d)# 按欄位排序print(np。sort(array_2d,order=‘name’))
篩選
numpy提供了兩個篩選方法一個是where 一個是extract,where返回的符合條件元素所在的索引,extract返回的是符合條件元素本身,二則之間的異同,讓我們用實際輸出結果來比較。
where(condition)
where 返回符合條件元素所在索引
condition ⇒ 篩選條件
import numpy as nparray_2d = np。arange(0,10)。reshape(2,5)where_condition = np。where(array_2d > 5)print(where_condition)# 透過索引獲取元素print(array_2d[where_condition])
extarct(condition,array)
extarct 返回符合條件元素所在索引
condition ⇒ 篩選條件
array 指定陣列
返回一維陣列
import numpy as nparray_2d = np。arange(0,10)。reshape(2,5)extarct_condition = np。extract(array_2d>5,array_2d)print(extarct_condition)
以上內容即為有關numpy的排序與篩選,學習好這一部分的知識,有助於我們更加便捷的理解,另一個數據科學庫pandas,pandas是基於numpy所開發的,下面進入numpy章節的最後一個部分,numpy的描述性統計。
統計
numpy中的統計函式都是相當便捷與簡單的,例如獲取最大最小值獲取中位數,均值,加勸均值,分位數,方差標準差等,下面我們將一一介紹。
amax ⇒ 獲取最大值
amin ⇒ 獲取最小值
ptp ⇒ 獲取最大值最小值之差
percentile ⇒ 獲取分位數,percentile有三個引數(a,q,axis) a⇒指定陣列,q⇒指定百分數(0-100),axis⇒指定行序列序
median ⇒ 獲取中位數
mean ⇒ 獲取均值
average ⇒ 獲取加權平均值
std ⇒ 獲取標準差 標準差計算公式:std = sqrt(mean((x-x。mean)**2))
var ⇒ 獲取方差 方差計算公式:var = std**2
import numpy as nparray_1d = np。arange(0,10)print(array_1d)# 獲取最大值print(np。amax(array_1d))# 獲取最小值print(np。amin(array_1d))# 獲取最大值最小值之差print(np。ptp(array_1d))# 獲取上下四分位數print(np。percentile(array_1d,75),np。percentile(array_1d,25))# 獲取中位數print(np。median(array_1d))# 獲取均值print(np。mean(array_1d))# 獲取加權平均值print(np。average(array_1d))# 獲取標準差print(np。std(array_1d))# 獲取方差print(np。var(array_1d))
至此,Numpy的介紹的就結束了,不難看出利用numpy操作二維陣列還是多有不便,想要操作其如同資料庫或者Excel表格一樣方便,還比較困難,而基於numpy開發的pandas庫的出現解決了這一問題。下一章節我們將開始認識pandas。
轉載請註明出處