深入理解NumPy與Pandas【numpy模塊及Pandas模型使用】

二、numpy模塊及Pandas模型使用

numpy模塊

1.ndarray的創建

import numpy as np
a=np.array([1,2,3,4])
b=np.array([[1,2,3,4],[5,6,7,8]])
print(a) #[1 2 3 4]
print(b) #[[1 2 3 4][5 6 7 8]]

1.1使用array()函數創建

numpy.array(object, dtype = None, copy = True, order = None, subok = False, ndmin = 0)

名稱描述
object數組或嵌套的數列
dtype數組元素的數據類型,可選
copy對象是否需要復制,可選
order創建數組的樣式,C為行方向,F為列方向,A為任意方向(默認)
subok默認返回一個與基類類型一致的數組
ndmin指定生成數組的最小維度

1.2使用arange()函數

根據 start 與 stop 指定的范圍以及 step 設定的步長,生成一個 ndarray。

numpy.arange(start, stop, step, dtype)

1.3使用linespace()函數

用于創建一個一維數組,一個等差數列構成的

根據 start 與 stop 指定的范圍以及 step 設定的步長,生成一個 ndarray。

和range類似

注意:np.linspace形成的數組一定包括范圍的首位兩個元素,則步長為(end - start) / (length - 1)。而np.arange是自己指定的步長(默認為1)也就意味著形成的數組不一定包括末尾數

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

參數說明:

start: 開始值

stop: 結束值

num=50: 等差數列中默認有50個數

endpoint=True: 是否包含結束值

retstep=False: 是否返回等差值(步長)

dtype=None: 元素類型

1.4使用logspace()函數

用于創建一個一維數組,一個等比數列構成的,等間隔的一維數組

數據為對數函數log的值

參數說明:

start: 開始值

stop: 結束值

num=50: 數列中默認有50個數

endpoint=True: 是否包含結束值

base: log函數的底數,默認為10

dtype=None: 元素類型

1.5使用empty()函數創建

作用創建一個指定形狀的未初始化的數組,由于未初始化,所以輸出是隨機值

numpy.empty(shape, dtype = none, order = 'C')

1.6使用zeros(),ones(),full(),eye()函數

三個函數類似于empty(),創建指定形狀的數組,

不過zeros是以0來初始化,ones是以1來初始化,其中的1和0 默認為浮點數,

full函數()可以以自己指定的值來填充,所以會多一個參數fill_value原型,

np.eye(N, M=None, k=0, dtype=float):對角線為1其他的位置為0的二維數組,

其中N:行數,M:列數,k=0:向右偏移0個位置

numpy.zeros(shape, dtype = float, order = 'C’)
numpy.ones(shape, dtype = float, order = 'C’)
numpy.full(shape, fill_value,dtype = float, order = 'C’)
numpy.eye(N, M=None, k=0, dtype=float)

1.7生成隨機數:使用random.random(),random.randint(),random.rand(),random.randn(),random.choice()函數

random([size]):生成size個[0.0,1.0)的隨機數

randint(low,[high,size,dtype]):生成指定范圍的任意維度的隨機整數,數組元素的范圍[low, high)區間

rand(d0,d1,…,dn):[0,1)之間隨機數,具有均勻分布

randn(d0,d1,…,dn):返回具有標準正態分布(均值為0,方差為1)Choice(a,size=None,replace=True):從指定的一維數組中生成隨機數

1.8使用asarray()函數

從已有的數組創建數組

a1=np.zeros([3,2])
a2=np.asarray(a1)
print(a1)
print(a2)
tup=(1,2,3,4)
a3=np.asarray(tup)
print(a3)
x=((1,2,3),(4,5,6),(7,8,9))
a=np.asarray(x)
print(a)
'''
[[0. 0.][0. 0.][0. 0.]]
[[0. 0.][0. 0.][0. 0.]]
[1 2 3 4]
[[1 2 3][4 5 6][7 8 9]]
'''

1.9使用frombuffer()函數

實現動態數組

numpy.frombuffer 接受 buffer 輸入參數,以流的形式讀入轉化成 ndarray 對象。

Pandas模塊

1.DataFrame對象創建

二維帶行標簽和列標簽的數組

df = pd.DataFrame(data, index=index, columns=columns)

其中 index是行標簽, columns是列標簽,data可以是下面的數據

由一維 numpy數組,list, Series構成的字典

二維 numpy數組

一個 Series

另外的 DataFrame對象

屬性名含義
len(x)表示對象值的長度。
size表示對象值的長度。
index表示列索引數。
columns表示行索引數。
dtypes表示列的數據類型。
shape表示有多少行列.
values表示對象值,即二維數組。
info表示對象的基本信息:索引情況、各列的名稱、數據數量、數據類型等。
head(num)從頭部開始顯示幾行,參數um表示顯示的行數,默認為5行。
tail(num)從末尾開始顯示幾行,參數num表示顯示的行數,默認為5行。

數據選取

DataFrame.loc[行索引名稱或條件,列索引名稱] 【基于索引名稱】

DataFrame.iloc[行索引位置, 列索引位置] 【完全基于位置】(只接收int)

2.分組統計函數——groupby函數

DataFrame.groupby(by=None, axis=0, level=None, as_index=True, sort=True, group_keys=True, squeeze=False, **kwargs)

功能: 根據給定的條件將數據拆分成組

????????每個組否可以獨立應用函數(sum,mean,min)

????????將結果合并到一個數據結構中

3.面向列的聚合函數——agg函數

DataFrame.agg(func=None, axis=0, *args, **kwargs)

1.簡單的列或行統計

默認對列統計(axis=0)

2.對每一個列數據應用同一個函數————func參數傳入一個函數

3.對某列數據應用不同函數————func參數傳入多個函數

元組(name,function):自定義name替換function名

4.對不同列數據應用不同函數————func參數傳入字典{‘列名’:’函數名’}

4.transform() 函數:用于保持原始 DataFrame 結構的元素級轉換

總是返回一個與原始 DataFrame 或 Series 相同形狀的 DataFrame 或 Series。

即使只對一列或一行應用函數,transform() 也會返回一個完整的 DataFrame 或 Series。

DataFrame.transform(func=None, *args, **kwargs)

返回結果有兩種:1.可以廣播的標量值(np.mean) ?2.可以是與分組大小相同結果的數組。

df=pd.DataFrame(np.arange(36).reshape(6,6),columns=list('abcdef'))
df['key']=pd.Series(list('aaabbb'),name='key')
print(df)
group1=df.groupby(['key']).agg('mean')
print(group1)
group2=df.groupby(['key']).transform('mean')
print(group2)
'''a  b  c  d  e  f  key
0  0  1  2  3  4  5    a
1  6  7  8  9 10 11    a
2 12 13 14 15 16 17    a
3 18 19 20 21 22 23    b
4 24 25 26 27 28 29    b
5 30 31 32 33 34 35    ba  b  c  d  e  f
key                
a  3  4  5  6  7  8
b 24 25 26 27 28 29a     b     c     d     e     f
0   6.0   7.0   8.0   9.0  10.0  11.0
1   6.0   7.0   8.0   9.0  10.0  11.0
2   6.0   7.0   8.0   9.0  10.0  11.0
3  24.0  25.0  26.0  27.0  28.0  29.0
4  24.0  25.0  26.0  27.0  28.0  29.0
5  24.0  25.0  26.0  27.0  28.0  29.0
'''

5.apply() 函數:最通用的函數

DataFrame.apply(func=None, axis=0,raw=False,result_type=None,*args, **kwds)

func:要應用的函數。它可以是一個 Python 函數,也可以是一個字符串(例如 'sum'、'mean' 等)。

axis:應用函數的軸。如果 axis=0(默認值),則函數將沿著列方向應用;如果 axis=1,則函數將沿著行方向應用。

raw:是否將底層數據傳遞給函數。如果 raw=True,則傳遞底層 NumPy 數組;否則傳遞 Series 對象。

result_type:結果類型。可以是 'expand'、'reduce' 或 'broadcast'。

args:要傳遞給函數的額外參數。 *kwds:要傳遞給函數的額外關鍵字參數。

data={'A':[1,2,3],'B':[4,5,6],'C':[7,8,9]
}
df=pd.DataFrame(data)
print(df)
result=df.apply(lambda x:x.mean())
result1=df.apply('mean')
print(result,result1,sep='\n')
result=df.apply(lambda x:x+1)
print(result)
'''
A    2.0
B    5.0
C    8.0
dtype: float64
A    2.0
B    5.0
C    8.0
dtype: float64A  B  C
0  2  5  8
1  3  6  9
2  4  7  10
'''

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/15230.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/15230.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/15230.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

vue2和vue3區別

Vue 3是Vue.js框架的下一代主要版本,它在2020年9月正式發布。Vue 3帶來了一系列的新特性和改進,包括性能提升、更小的打包尺寸、更好的TypeScript支持、新的組合式API等。以下是Vue 2和Vue 3之間的一些主要區別: 1. 性能提升: …

計算機存儲單位

目錄 是什么 存儲單位的劃分 存儲單位轉換關系表 相關疑問 存儲單位轉換除了位之外的存儲單位轉換規則是什么 為什么在編碼中最小的操作單位不是位 是什么 用來度量數據存儲容量的單位。 存儲單位的劃分 存儲單位有 位(bit,也稱為比特&#xff…

光伏項目怎么做預算?

隨著可再生能源行業的蓬勃發展,光伏行業也得到了擴張。許多想要加入光伏項目投資的人,都在為怎樣為項目做預算而苦惱,今天我就來跟大家分析下可以怎么做。 一、了解市場需求,確定預算目標 在制定光伏項目預算方案之前&#xff0c…

《SpringBoot》系列文章目錄

SpringBoot是由Pivotal團隊提供的全新框架,旨在簡化新Spring應用的初始搭建以及開發過程。以下是一些關于SpringBoot的詳細介紹: 設計目的:SpringBoot通過特定的方式來進行配置,使得開發人員不再需要定義樣板化的配置&#xff0c…

「貪心算法」將數組和減半的最少操作次數

力扣原題鏈接,點擊跳轉。 給你一個數組,每次可以把其中一個數減半,可以對同一個數多次減半。至少操作多少次,才能讓數組的和整體減少至少一半呢? 我們每次都選擇當前數組中最大的那個數減半,就能減少最多…

鏈路初始化和訓練

一、總覽 鏈路初始化和訓練,由物理層進行控制,是一個基于硬件的過程。初始化設備的鏈路和端口,使得設備能夠收發報文,在鏈路上正常通信。 在reset后由硬件自動啟動完整的訓練過程,并由LTSSM管理。 1 位鎖定 訓練開始…

【Vue】diff 算法

diff的時機 當組件創建時,以及依賴的屬性或數據變化時,會運行一個函數,該函數會做兩件事: 運行_render生成一棵新的虛擬dom樹(vnode tree),返回根節點運行_update,傳入虛擬dom樹的根節點,對新舊…

typedef定義結構體包含函數指針的巨坑

起因 嘗試在c中模仿c的類,把成員函數放置到結構體中。顯然只能放置一個結構體指針。 于是準備這么做。 錯誤示范 typedef struct {int id;void(*show)(Person p); }Person;void showPerson(Person p){ //.... }void init(Person * p){p->show showPerson; …

犀牛8 for Mac/Win:重塑三維建模的新標桿

在數字創意的浪潮中,犀牛8(Rhinoceros 8)作為一款卓越的三維建模軟件,以其強大的功能和出色的性能,在Mac和Windows平臺上都贏得了廣大設計師和工程師的青睞。 犀牛8不僅繼承了前代產品的優秀基因,更在細節…

基于python+Django+opencv的疲勞檢測系統設計與實現

博主介紹: 大家好,本人精通Java、Python、C#、C、C編程語言,同時也熟練掌握微信小程序、Php和Android等技術,能夠為大家提供全方位的技術支持和交流。 我有豐富的成品Java、Python、C#畢設項目經驗,能夠為學生提供各類…

Nginx的集群負載均衡(nginx構建tomcat集群案例)

一 .Nginx的集群負載均衡 1.nginx 集群負載均衡示意圖 2.四層負載均衡和7層負載均衡 LVS 四層負載均衡(常用); Haproxy四層負載均衡;Nginx 四層負載均衡; Haproxy七層負載均衡;Nginx 七層負載均衡(常用); 3.nginx構建tomcat集群 步驟1:安裝tomcat 步驟2:nginx配置tom…

夸夸生肖屬鼠的女性朋友

屬鼠人一生的命運受到許多因素的影響,包括性格、家庭、教育、環境等。屬鼠人性格外向、求知欲強、善解人意、善于結交各種各樣的朋友,有豐富的人脈,容易得到他人的幫助和支持。 屬鼠的人聰明、機智,他們善于觀察,富有…

MySQL(七) 表的內連和外連

表的連接分為內連和外連 9.1 內連接 內連接實際上就是利用where子句對兩種表形成的笛卡兒積進行篩選,我們前面學習的查詢都是內連接,也是在開發過程中使用的最多的連接查詢。 語法: select 字段 from 表1 inner join 表2 on 連接條件 and …

【代碼隨想錄】面試常考類型之動態規劃基礎題目

前言 更詳細的在大佬的代碼隨想錄 (programmercarl.com) 本系列僅是簡潔版筆記,為了之后方便觀看 做題步驟 含義公式初始化順序檢查 確定dp數組以及下標的含義遞推公式dp數組如何初始化遍歷順序打印dp數組(看哪里有問題) 斐波那契數 …

MFC:CFileFind類使用方法介紹

這是一個介紹MFC中CFileFind類的小程序。編寫這個程序使用的編輯軟件是VS2022&#xff0c;基于C空項目。在C空項目下要調用MFC類需要&#xff1a;首先&#xff0c;頭文件要包含<afx.h>&#xff0c;這個頭文件包含了絕大部分使用MFC所需頭文件&#xff1b;其次&#xff0c…

在線改圖片怎么做更簡單?快速修改圖片尺寸的方法

現在一般拍攝出的圖片尺寸都會比較大&#xff0c;想要上傳大網上的一些平臺展示時&#xff0c;經常會受到平臺的限制&#xff0c;無法將圖片正常上傳到平臺&#xff0c;那么如何將圖片尺寸快速調整呢&#xff1f;比較簡單的一種方式&#xff0c;可以通過在線改圖片的工具來實現…

一個開源的個人主頁模板,可以通過 Github Actions 來進行自動構建。

無名の主頁 簡單的小主頁&#xff0c;原來的看夠了&#xff0c;重新弄了一個 主頁的 Logo 字體已經過壓縮&#xff0c;若用本站 Logo 以外的字母會變回默認字體&#xff0c;這里是 完整字體&#xff0c;若無法下載&#xff0c;可將字體目錄下的 Pacifico-Regular-all.ttf 進行替…

Linux程序開發(十一):進程與進程間通信設計之趣味貓咪抓老鼠游戲

Tips&#xff1a;"分享是快樂的源泉&#x1f4a7;&#xff0c;在我的博客里&#xff0c;不僅有知識的海洋&#x1f30a;&#xff0c;還有滿滿的正能量加持&#x1f4aa;&#xff0c;快來和我一起分享這份快樂吧&#x1f60a;&#xff01; 喜歡我的博客的話&#xff0c;記得…

他用AI,抄襲了我的AI作品

《大話西游》里面有一句經典臺詞&#xff1a;每個人都有一個媽&#xff0c;但是“你媽就一定是你媽嗎&#xff1f;” 用AI創作的藝術作品&#xff0c;也走進類似的困境&#xff1a;如何證明你用AI生成的作品&#xff0c;就是你的作品&#xff1f; 近日&#xff0c;騰訊科技獨…

Google手機連接wifi后提示“無法連接互聯網“解決方法

1.原因分析 谷歌手機聯網前會先訪問谷歌的服務器:http://clients3.google.com/generate_204來探測網絡是否連通&#xff0c;由于國內網絡防火墻的原因訪問不了&#xff0c;所以就提示"無網絡連接"。 2.解決方法 可以通過adb命令修改驗證網絡是否連通的服務器地址&…