日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Series和DataFrame、相关性及NaN处理

發布時間:2023/12/20 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Series和DataFrame、相关性及NaN处理 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

pandas核心數據結構

pandas是以numpy為基礎的,還提供了一些額外的方法

Series

series用來表示一維數據結構,與python內部的數組類似,但多了一些額外的功能。

series內部由兩個相互關聯的數組組成:主數組用來存放數組,可以是numpy中的任意數據類型;另一個數組用來存放索引,索引默認從0開始。朱數組中每個元素又有一個與之關聯的索引。

創建series對象

1、通過series的構造方法,參數為數組

通過參數index也可以指定索引

2、也可以通過傳入ndarray創建series

注意:此時修改series中元素會對原ndarray有影響

3、還可以傳入一個series對象,會返回一個新的series對象但仍指向同一地址

注意:此時修改series中的對象會對原series產生影響

4、可以傳入空類型np.NaN對象

5、傳入字典

在series的構造函數中傳入一個字典,那么字典的key則為index,value為series的values元素

series對象的屬性與方法

1、查看series的索引和值

2、series的長度

3、獲取不重復的series

通過調用series對象的unique()方法返回一個無重復元素的series

4、統計重復元素出現的次數

series對象的value_counts()會返回一個統計了元素-次數的series

5、判斷是否包含某些元素

isin()方法傳入一個條件可以判斷series是否包含某些元素,返回的是一個series

返回的布爾類型series傳給原series可以進行篩選滿足條件的元素

6、判斷元素是否為null或非null

isnull()返回一個布爾類型的series

非空即調用notnull()方法

通過isnull()方法

7、獲取最小最大值的索引

通過調用idxmin()與idxmax()

獲取內部元素

支持使用從0開始的索引訪問元素或指定索引值

同樣series也支持切片

篩選元素

可以對series對象直接進行邏輯運算,但回返回一個布爾類型的series

通過傳遞布爾類型的series可以進行篩選元素

series的運算

1、series的運算是針對values中的每一個元素的

numpy提供了許多運算方法,都可以將series傳入

2、多個series進行運算時,具有相同index的value會進行運算,若無相同idex,則該value的運算結果為NaN

DataFrame

DataFrame數據結構與關系型表格類似,是多維的series,它的"values"為colunms,即多列,每一列的數據類型可以不相同

創建DataFrame對象

1、傳遞一個字典對象給DataFrame的構造函數,dict的key為每一列的列名,value作為列元素

還可以指定字典中的部分kv對裝載到dataframe中

自然也可以自定義行標簽index

2、傳入元素數組、index數組和列名數組

獲取元素

1、通過columns屬性查看列名

2、通過index屬性查看行名

3、通過values屬性獲取元素

4、獲取某一列的內容

用列名檢索

若列名為字符串類型,可以直接通過以列名為屬性獲取

5、獲取某一行的內容

通過DataFrame.icon[index]實現

?

還可以通過行名進行索引

?

索引多行在icon后傳入列表即可

?

6、切分

同樣dataframe底層為ndarray

7、獲取某一值

需要指定兩個維度,注意列名在前

dataframe為行列起名

index和columns默認名為空

dataframe相關操作

1、添加一列

一列即為一個series,所以可以直接傳入一個series。注意series中的index需要與dataframe中的行名相同

2、判斷是否包含某元素

與series相同,可以使用isin()方法,并獲取符合條件的元素

3、刪除某列

通過del()方法

4、支持邏輯運算符進行篩選

與series相同

5、行列交換

底層為二維ndarray,即矩陣,可轉置。通過T屬性

?

Index對象

index對象在series和dataframe中都十分重要,很多操作都是針對index對象進行優化

判斷index是否唯一

通過index對象的is_unique屬性判斷

更換索引

通過series的reindex()方法可以交換原先索引位置,對于未出現過的索引名對應的元素為NaN

填充索引

若series對象中索引缺失了很多項,也可以通過reindex()來填充索引

1、method為ffill(forward fill),即向前填充。缺失的索引對應的元素為之前的第一個出現索引的值

2、bfill即backward fill,向后填充。缺失的索引對應的元素為之后的第一個出現索引的值

3、對于dataframe的reindex

同樣可以對dataframe進行填充列

bfill為向后(右)填充,ffill為向左

刪除索引

1、通過drop()方法刪除索引,并返回刪除的索引-值,會返回一個新的series

原series不會發生變化

2、dataframe中刪除索引

同樣返回一個新的dataframe

還可以刪除列,通過指定axis=1

算數和數據對齊

1、相同數據結構之間的運算

兩個series進行運算時,只有相同索引的元素才會進行運算

dataframe也是類似的,只有列名和index相同的元素才會運算

2、series和dataframe之間的與運算

實際上的df中的每一列與serise進行運算

若存在不共有的index,則該index對應的值為NaN

numpy函數應用與自定義函數

pandas是以numpy為基礎的,ufunc就是經過擴展的通用函數,這類函數能夠讀數據結構中的元素進行操作

numpy中的函數

1、例如求平方根

可以直接通過numpy中的sqrt()方法,傳入一個series或dataframe對象

2、統計函數

使用axis=0指定應用于列,axis=1指定應用于行

其他sum,max等函數皆可用

使用describe()函數可以查看所有統計量

自定義函數

自定義函數是對一維數組進行運算的,返回結構是一個數值。使用dataf或seri上的apply()方法應用自定義函數。針對每一行或每一列,使用axis=0指定應用于列,axis=1指定應用于行

1、dataframe上自定義函數求行或列的平方和

關于axis=1還是0:

2、使用lamdba表達式

series上自定義函數求平方可以直接寫lambda表達式

3、自定義函數返回series

apply函數并不一定返回一個標量,也可以是一個series

例如求dataframe中每一行或每一列的最大值和最小值

Series和DataFrame的排序和排位

Series排序

1、按index排序

通過sort_index()方法,ascending為True則為升序。默認升序

2、按元素值排序

通過sort_values()方法。默認升序

dataframe排序

1、按索引排序

同上sort_index()。ascending默認為True,axis默認為0

2、按column排序

sort_index()中聲明axis為1

3、列中按元素值排序

sort_index()中by指定需要排序的列

注意:sort_values()不支持同一行的排序

排位

排位指的是對元素值大小進行排序后返回在序列中的位置,比如從小到大排在第幾位

1、Series的排位

通過rank()

2、DataFrame的排位

為series類似,但需要指明axis,0為每列排位,1位每行排位

?

相關性和協方差

相關性correlation和協方差covariance是兩個重要的統計量,分別用corr()和cov()兩個函數表示,用來度量兩個對象的相關性。相關系數位于-1~1之間

相關系數為1:表示完全正相關

相關系統為0:表示完全不相關

相關系統為-1:表示完全正相關

這連個統計量通常涉及到兩個series對象

相關性

1、series中的相關性

2、dataframe中每一列的相關性

dataframe中的相關性一般用來比較該df中的每一列與其他列之間的相關性

調用corr()方法得到的是一個矩陣

3、dataframe與series之間的相關性

dataframe相當于多維series,通過df對ser的相關性比較,實則是df中的每一列與series的比較

通過corrwith()方法實現

4、dataframe與dataframe之間的相關性

也是通過corrwith()方法,分別比較相同列名中的元素的相關性

可以在dataframe分別取出series互相比較

?

NaN的數據處理

1、創建NaN數據

在構造數據時,可以直接賦值NaN,即調用numpy的nan

構造series過程中為series的值賦值為nan

也可以None來賦值

2、刪除NaN數據

若NaN在整個數據集中占比較小,可考慮直接刪除

通過dropna()實現

在dataframe中需要指明axis,會刪除含有NaN數據的一整行或一整列

還可以設置刪除策略,在dropna()函數中how為'all'是整行或整列全為NaN時才會刪除。默認為'any'

3、判斷為空或非空

但最好在副本上進行刪除,通過notnull()可以返回索引對應值是否為空的布爾類型series

判斷為空則調用isnull(),可以篩選出為NaN的數據

4、填充空值

1、通過fillna()實現,傳入參數表示填的值

2、還可以在fillna()中傳入字典指定列名與填充值

總結

以上是生活随笔為你收集整理的Series和DataFrame、相关性及NaN处理的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。