最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

二文快速入門pandas

2023-07-31 16:20 作者:Echo_Wish  | 我要投稿

描述(概況)

對pandas的series和dataframe 類型有基本概念的了解,這一部分對使用pandas 進(jìn)行簡單的數(shù)據(jù)清洗 進(jìn)行學(xué)習(xí),填充刪除替換空值,刪除處理重復(fù)數(shù)據(jù) 這些簡單的數(shù)據(jù)預(yù)處理操作 通過pandas 來非常簡便。學(xué)習(xí)使用pandas 主要是為了更好更快的數(shù)據(jù)解析 得到數(shù)據(jù)可視化 所需的數(shù)據(jù),但根據(jù)國賽的賽項規(guī)程 數(shù)據(jù)采集部分還需要數(shù)據(jù)預(yù)處理 這正好可以借助pandas實現(xiàn)。


pandas 數(shù)據(jù)清洗


1. 去除 NaN 值


在Pandas的各類數(shù)據(jù)Series和DataFrame里字段值為NaN的為缺失數(shù)據(jù),不代表0而是說沒有賦值數(shù)據(jù),類似于python中的None值。數(shù)據(jù)的缺失有很多原因,缺失不是錯誤、無效,需要對缺失的數(shù)據(jù)進(jìn)行必要的技術(shù)處理,以便后續(xù)的計算、統(tǒng)計。

可以通過numpy 模塊的 nan 得到NaN 值。

首先,可以通過isnull 和 notnull 方法查看有哪些NaN值,這兩個方法返回的布爾值,指示該值是否是NaN值,結(jié)合sum 方法可以獲取每列空值的數(shù)目以及總數(shù)。也可以通過 count 方法得到每列不為NaN值的數(shù)目。

dropna()

刪除NaN 值 可以通過 dropna 方法,默認(rèn)按行掃描(操作),會將每一行有NaN 值的那一行刪除,同時默認(rèn)是對原對象的副本操作,不會對原對象產(chǎn)生影響,也可以通過inplace 指示是否直接在原對象上操作。

示例:



dropna 方法可以選擇刪除



通過布爾判斷,也是可以實現(xiàn)刪除 NaN 的功能。




2. 填充NaN 值


一般情況下直接將NaN刪除或許并不是最好的選擇因此可以通過將NaN值進(jìn)行填充。


fillna()

fillna 方法可以將df 中的nan 值按需求填充成某值



復(fù)雜的 使用向前 或 向后 填充數(shù)據(jù),依舊使用fillna 方法,所謂向前 是指 取出現(xiàn)NaN值的前一列或前一行的數(shù)據(jù)來填充NaN值,向后同理



也可以通過重新賦值的賦值來填充NaN值,即將一個series 賦值給df 的某一列 來達(dá)到刪除NaN值的目的。


interpolate()

利用插值函數(shù)interpolate()對列向的數(shù)據(jù)進(jìn)行填值。實現(xiàn)插值填充數(shù)據(jù),那么要求這列上必須得有一些數(shù)據(jù)才可以,至少2個,會對起點和終點間的NaN進(jìn)行插值。

示例:



可以看出,當(dāng)待填充的列或行符合條件時,會從最近的那個非NaN值開始將之后的位置全部填充,填充的數(shù)值為列上保留數(shù)據(jù)的最大值最小值之間的浮點數(shù)值。


3. 刪除重復(fù)數(shù)據(jù)


對于數(shù)據(jù)源中的重復(fù)數(shù)據(jù),一般來講沒有什么意義,所以一般情況下都會進(jìn)行刪除操作。


duplicated()

duplicated 方法可以返回重復(fù)數(shù)據(jù)的分布情況,以布爾值顯示。



drop_duplicated()

刪除重復(fù)值,可以指定inplace 是否在原對象上直接操作,keep= last first false 等 默認(rèn)first保留第一次出現(xiàn)的重復(fù)數(shù)據(jù),last同時保留最后一次出現(xiàn)的重復(fù)數(shù)據(jù),false 不保留


使用如上。



4. 數(shù)據(jù)匹配替換


簡單數(shù)據(jù)刪除填充有時并不能滿足需求,因此需要數(shù)據(jù)進(jìn)行匹配替換滿足更進(jìn)一步的需求。


map()

map函數(shù)可以將某列數(shù)據(jù)映射成其它數(shù)據(jù)



map 一般對index 和 series 等使用。


replace()

將數(shù)據(jù)替換成其他數(shù)據(jù),可以一對一的替換也可一堆多的替換數(shù)據(jù)。




5. apply() 方法使用

replace、dropna、fillna函數(shù)要么針對NaN的某行或某列或某個,這些函數(shù)的作用有限,本章介紹的apply等函數(shù)可以針對整個Series或DataFrame的各個值進(jìn)行相應(yīng)的數(shù)據(jù)的處理

對series 使用apply



對dataframe 使用apply



df 中的applymap()

df 中使用applymap 可以對df 中的每一個元素進(jìn)行操作




pandas 數(shù)據(jù)拼接


1. concat() 拼接方法


對series 操作



對dataframe 操作



當(dāng)然,列標(biāo)和行標(biāo)不一定是對應(yīng)的,這個時候兩DataFrame未匹配上的label或columns下的值為NaN

concat 函數(shù) 同樣的可以指定是按行操作還是按列操作。

指定拼接的軸,默認(rèn)是列方向的拼接數(shù)據(jù),可以指定concat 的形參axis為行上的拼接數(shù)據(jù)。

2. concat 的內(nèi)外連接


concat 的內(nèi)外連接,就是 join 參數(shù)的指定,為 inner 時為內(nèi)連接,為outer 時外連接。





3. merge() 方法

merge函數(shù)可以真正實現(xiàn)數(shù)據(jù)庫的內(nèi)外連接,且外連接還可以有左右連接的特性。

補充:

內(nèi)連接,對兩張有關(guān)聯(lián)的表進(jìn)行內(nèi)連接操作,結(jié)果表會是兩張表的交集,例如A表和B表,如果是A 內(nèi)連接(inner join)B表,結(jié)果表是以A為基準(zhǔn),在B中找尋A匹配的行,不匹配則舍棄,B內(nèi)連接A同理。

外連接,分左外連接,右外連接,全連接,左外連接是左表上的所有行匹配右表,正常能匹配上的取B表的值,不能的取空值,右外連接同理,全連接則是取左并上右表的的所有行,沒能匹配上的用空值填充。


merge 默認(rèn)是內(nèi)連接



merge可以進(jìn)行左外連接,右外連接,全連接。




pandas 數(shù)據(jù)分組


1. groupby 方法

DataFrame數(shù)據(jù)對象經(jīng)groupby()之后有ngroups和groups等屬性,其本質(zhì)是DataFrame類的子類DataFrameGroupBy的實例對象。ngroups反應(yīng)的是分組的個數(shù),而groups類似dict結(jié)構(gòu),key是分組的index或label,value則為index或label所對應(yīng)的分組數(shù)據(jù)。size函數(shù)則是可以返回所有分組的字節(jié)大小。count函數(shù)可以統(tǒng)計分組后各列數(shù)據(jù)項個數(shù)。get_group函數(shù)可以返回指定組的數(shù)據(jù)信息。而discribe函數(shù)可以返回分組后的數(shù)據(jù)的統(tǒng)計數(shù)據(jù)。

簡單的按單列分組




也支持多列分組



2. aggregate 聚合

在使用groupby 分組完成后,借助aggregate函數(shù)可以 經(jīng)過分組后 每組進(jìn)行操作。

agg的形參是一個函數(shù)會對分組后每列都應(yīng)用這個函數(shù)。



也可以應(yīng)用多個函數(shù)



可以對每列數(shù)組進(jìn)行不同的聚合操作




3. transform() 方法

可以作用于groupby之后的每個組的所有數(shù)據(jù),之前的aggregate函數(shù)只能用于分組后組的每列數(shù)據(jù)。




pandas 時間序列


時間序列數(shù)據(jù)在金融、經(jīng)濟(jì)、神經(jīng)科學(xué)、物理學(xué)里都是一種重要的結(jié)構(gòu)化的數(shù)據(jù)表現(xiàn)形式。

pandas 最基本的時間序列類型就是以時間戳(TimeStamp)為 index 元素的 Series 類型。Python和Pandas里提供大量的內(nèi)建工具、模塊可以用來創(chuàng)建時間序列類型的數(shù)據(jù)。

1. datetime 模塊

Python的datetime標(biāo)準(zhǔn)模塊下的

date子類可以創(chuàng)建日期時間序列的數(shù)據(jù)

time子類可創(chuàng)建小時分時間數(shù)據(jù)

datetime子類則可以描述日期小時分?jǐn)?shù)據(jù)



datetime的timedelta模塊給出時間間隔(差)

借助timedelta 可以定義時間時間間隔




用datetime數(shù)據(jù)創(chuàng)建time series時間序列數(shù)據(jù)。意思就是用datetime創(chuàng)建的時間作為index。.




2. TimeStamp

在pandas里可以使用pandas.tslib.Timestamp類來實現(xiàn)時間序列.


二文快速入門pandas的評論 (共 條)

分享到微博請遵守國家法律
霞浦县| 海口市| 黎城县| 靖宇县| 崇信县| 彰化县| 西畴县| 集贤县| 顺义区| 蒙阴县| 上栗县| 襄汾县| 永顺县| 竹溪县| 虹口区| 德江县| 大田县| 军事| 长春市| 临高县| 柘城县| 平遥县| 武义县| 武安市| 新泰市| 子洲县| 丽水市| 门源| 宿迁市| 余庆县| 桐城市| 琼中| 桦甸市| 麻江县| 南通市| 蒙山县| 棋牌| 台安县| 黎川县| 钟山县| 湘乡市|