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()中傳入字典指定列名與填充值

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

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

相關文章

Hive謂詞解析過程分析

where col1 100 and abs(col2) > 0在Hive中的處理過程 where過濾條件稱為謂詞predicate。 以上where過濾條件在經過Hive的語法解析后,生成如下的語法樹: TOK_WHERE AND TOK_TABLE_OR_C…

算術編碼(Arithmetic Coding)源代碼

Ian H. Witten、Radford M. Neal和John G. Cleary在1987年發表了一篇啟發性的論文。論文中描述了一種基于整數運算的通用算術編碼器,而且還給出了由計算錯誤導致的效率低下的分析。以下源代碼來自于這篇論文:《基于算術編碼的數據壓縮》(Arit…

pandas讀寫各種類型數據

read_X()通常是pandas模塊下的,to_X()是dataframe的方法 CSV 讀取 使用pandas.read_csv()方法,返回的是一個dataframe csv默認是以","分割的 csv文件內容 1、read_csv()默認以第一行數據作為標題 2、調用dataframe的head()方法…

python 類裝飾器

1 裝飾器無參數 class tracer: def __init__(self,func): self.calls 0 self.func func def __call__(self,*args): self.calls 1 print(call %s to %s %(self.calls, self.func.__name__)) self.func(*args) tracer def spam(a, b, c): print(a b c) …

【數據分析】使用pandas和numpy分析美國大選獻金項目

1. 數據載入與總覽 1.1 數據加載 #繪圖工具 import matplotlib.pyplot as plt %matplotlib inline #數據處理工具 import numpy as np import pandas as pd from pandas import Series,DataFrame#數據路徑自己指定,本案例數據路徑就在當前文件夾下面子文件夾usa_e…

《容器技術系列》一1.4 Docker運行案例分析

本節書摘來華章計算機《容器技術系列》一書中的第1章 ,第1.4節,孫宏亮 著, 更多章節內容可以訪問云棲社區“華章計算機”公眾號查看。 1.4 Docker運行案例分析 1.3節著重介紹了Docker架構中各個模塊的功能,學完后我們可以對Docker的架構有一…

算術編碼的原理與分析

轉自:http://kulasuki115.blogcn.com/diary,201492702.shtml 前言 人類已進入信息時代,信息時代的重要特征是信息的數字化,人們越來越依靠計算機獲取和利用信息,這就需要對信息的表示、存儲、傳輸和處理等關鍵技術進行研究。我們…

3月22日AM

看了思維章節精講視頻課,并且總結了部分思維章節內容轉載于:https://www.cnblogs.com/bgd140206102/p/6601440.html

阿里巴巴Dubbo實現的源碼分析

Dubbo概述Dubbo是阿里巴巴開源出來的一個分布式服務框架,致力于提供高性能和透明化的RPC遠程服務調用方案,以及作為SOA服務治理的方案。它的核心功能包括: remoting:遠程通訊基礎,提供對多種NIO框架抽象封裝,包括“同步…

POJ 2106-Boolean Expressions,雙棧運用類似表達式求值!

Boolean Expressions 首先聲明此題后臺可能極水(畢竟這種數據不好造!)。昨天寫了一天卻總是找不到bug,討論區各種數據都過了,甚至懷疑輸入有問題,但看到gets也可以過,難道是思路錯了&#xff1f…

H264 CAVLC 研究

目錄 1 CAVLC概念 2 CAVLC原理 3 CAVLC編碼流程 4 CAVLC解碼流程 展開全部 1 CAVLC概念 2 CAVLC原理 3 CAVLC編碼流程 4 CAVLC解碼流程 收起 摘要糾錯編輯摘要 CAVLC即基于上下文的自適應變長編碼。H.264標準中使用CAVLC對4*4模塊的亮度和色度殘差數據進行編碼。 CAVLC-CAVLC…

【MySQL 】學習筆記千行總結

/* Windows服務 */ -- 啟動MySQLnet start mysql -- 創建Windows服務sc create mysql binPath mysqld_bin_path(注意:等號與值之間有空格)/* 連接與斷開服務器 */ mysql -h 地址 -P 端口 -u 用戶名 -p 密碼SHOW PROCESSLIST -- 顯示哪些線程正在運行 SHOW VARIABLES…

CCCC 連續因子

題意: 一個正整數N的因子中可能存在若干連續的數字。例如630可以分解為3*5*6*7,其中5、6、7就是3個連續的數字。給定任一正整數N,要求編寫程序求出最長連續因子的個數,并輸出最小的連續因子序列。 輸入格式: 輸入在一行…

Mybatis怎么能看是否執行了sql語句

項目需要學習mybatis中&#xff0c;本來mybatis也不是什么新技術&#xff0c;無奈之前沒接觸過。 驗證緩存機制時&#xff0c;需要能看到是否sql被執行了。這就需要增加日志的打印 配置如下 在pom中增加如下依賴&#xff1a; <dependency> <groupId>org.bgee.log4j…

定時備份 MySQL 并上傳到七牛

定時備份 MySQL 并上傳到七牛 多數應用場景下&#xff0c;我們需要對重要數據進行備份、并放置到一個安全的地方&#xff0c;以備不時之需。 常見的 MySQL 數據備份方式有&#xff0c;直接打包復制對應的數據庫或表文件(物理備份)、mysqldump 全量邏輯備份、xtrabackup 增量邏輯…

vue_props div賦值props定義變量 templete獲取

vue_props div賦值props定義變量 templete獲取 <div id"app"> <add v-bind:btn"h"></add> </div> <script> var vm new Vue({ el: #app, data: { h: "hello" }, components: { "add": { …

H.264句法和語法總結 句法元素的分層結構

在 H.264 定義的碼流中&#xff0c;句法元素被組織成有層次的結構&#xff0c;分別描述各個層次的信息&#xff0c;如下圖所示 在H.264 中&#xff0c;句法元素共被組織成 序列、圖像、片、宏塊、子宏塊五個層次。 在這樣的結構中&#xff0c;每一層的頭部和它的數據部分形成管…

instanceof 的運用

2019獨角獸企業重金招聘Python工程師標準>>> Java 中的instanceof 運算符是用來在運行時指出對象是否是特定類的一個實例。instanceof通過返回一個布爾值來指出&#xff0c;這個對象是否是這個特定類或者是它的子類的一個實例。 用法&#xff1a; result object i…

R 腳本讀取匯總 Excel 表格數據

主要用到了 xlsx 和 rJava 包&#xff0c;打開 Excel 文件&#xff0c;讀取各表格數據&#xff0c;再寫入到匯總表。 下圖為處理前的原始數據表格&#xff1a; 下圖為處理后的數據&#xff1a; 代碼實現 安裝&加載包的函數實現。installed.packages() 函數獲取所有已安裝…

[Grid Layout] Place grid items on a grid using grid-column and grid-row

It’s possible to position a grid item anywhere on a grid track. To do this, let’s specify some grid-template-columns and grid-template-rows, and to the grid items, we’ll pass grid-column and grid-row some numeric values. <!DOCTYPE html> <html l…