黄色网页视频 I 影音先锋日日狠狠久久 I 秋霞午夜毛片 I 秋霞一二三区 I 国产成人片无码视频 I 国产 精品 自在自线 I av免费观看网站 I 日本精品久久久久中文字幕5 I 91看视频 I 看全色黄大色黄女片18 I 精品不卡一区 I 亚洲最新精品 I 欧美 激情 在线 I 人妻少妇精品久久 I 国产99视频精品免费专区 I 欧美影院 I 欧美精品在欧美一区二区少妇 I av大片网站 I 国产精品黄色片 I 888久久 I 狠狠干最新 I 看看黄色一级片 I 黄色精品久久 I 三级av在线 I 69色综合 I 国产日韩欧美91 I 亚洲精品偷拍 I 激情小说亚洲图片 I 久久国产视频精品 I 国产综合精品一区二区三区 I 色婷婷国产 I 最新成人av在线 I 国产私拍精品 I 日韩成人影音 I 日日夜夜天天综合

《Python數(shù)據(jù)科學(xué)入門》之Series或Frame數(shù)據(jù)類型(第6章)

系統(tǒng) 2278 0

Python數(shù)據(jù)科學(xué)入門

Dmitry Zinoviev著
熊子源 譯


第6章 使用Series和frame

Pandas模塊的初中時(shí)為了給Python添加Series和frame兩個(gè)抽象的數(shù)據(jù)結(jié)構(gòu),它們其實(shí)是Python的競(jìng)爭(zhēng)對(duì)手、最早的數(shù)據(jù)科學(xué)語(yǔ)言——R語(yǔ)言的核心。

Pandas的frame本質(zhì)是一個(gè)“智能”電子表格:具有標(biāo)簽、列(變量)、行(觀測(cè)記錄),以及大量?jī)?nèi)置操作的表。(Series是一個(gè)只有一列的frame)表的數(shù)據(jù)部分(單元格)以numpy數(shù)組的方式實(shí)現(xiàn)。

第31單元 pandas數(shù)據(jù)結(jié)構(gòu)

Series
Series是一維的數(shù)據(jù)矢量。是同構(gòu)的:Series中左右數(shù)據(jù)項(xiàng)必須是相同的數(shù)據(jù)類型。
Series中的函數(shù):

  • head() 返回Series中前五行數(shù)據(jù)(默認(rèn)5行)
  • tail() 返回Series中后五行數(shù)據(jù)(默認(rèn)5行)

Frame
Frame是一個(gè)行和列都具有標(biāo)簽的表。可以通過二維numpy數(shù)組、元組列表、Python字典或一個(gè)frame構(gòu)造出一個(gè)新的frame。

第32單元 數(shù)據(jù)重塑

索引:
Frame的索引是一組分配給frame行的標(biāo)簽集合。

reset_index() 刪除現(xiàn)有索引
set_index() 建立一個(gè)新索引
drop() 返回一個(gè)刪除了一行或若干行的frame的副本。

重建索引:
從現(xiàn)有的frame或series中選擇一定的行排列、列排列或者行和列排列,來創(chuàng)建新的frame或Series。

分層索引:
也稱為多級(jí)索引或多重索引。由以下三個(gè)列表組成:

  • 級(jí)別名稱
  • 每個(gè)級(jí)別可能存在的所有標(biāo)簽
  • Frame或Series中每一項(xiàng)的實(shí)際值的列表。

MultiIndex.from_tuples() 使用帶有標(biāo)簽的元組和可選的級(jí)別名稱列表生成多級(jí)索引。

堆疊和旋轉(zhuǎn):
使用多級(jí)的列名可以將多級(jí)索引完全或部分扁平化,相反,使用多級(jí)索引也可以將多級(jí)的列名完全或部分扁平化。

stack() 增加索引的級(jí)別數(shù),同時(shí)減少列名的級(jí)別數(shù)。
unstack() 增加列名的級(jí)別數(shù),同時(shí)減少索引的級(jí)別數(shù)。
pivot(index,columns,values) 將frame轉(zhuǎn)換為另一個(gè)frame,新的frame使用列索引作為新的索引,columns作為新的列名列表,values作為數(shù)據(jù)。

第33單元 處理缺失數(shù)據(jù)

Pandas沿用了傳統(tǒng)的numpy.nan(第5章-第25單元)來表示缺失數(shù)據(jù)。Pandas還提供了識(shí)別和插補(bǔ)缺失值的函數(shù)。
缺失值必須被刪除或者插補(bǔ)(將其替換成有意義的值)。

刪除缺失值:
dropna()函數(shù) 可以刪除部分(how=”any”,默認(rèn))或全部(how=”all”)無效的列(axis=0,默認(rèn))或行(axis=1),并返回“干凈的”frame對(duì)象。

插補(bǔ)缺失數(shù)據(jù):
兩種常見的插補(bǔ)技術(shù)是使用常數(shù)(0,1)和“干凈”值得平均數(shù)替換缺失值。
isnull()和notnull() 是互補(bǔ)的。當(dāng)某個(gè)值是nan時(shí),isnull()返回True;當(dāng)某個(gè)值不是nan時(shí),notnull()返回True。
根據(jù)IEEE 754的浮點(diǎn)數(shù)標(biāo)準(zhǔn),表達(dá)式 np.nan==np.nan為False ,這使得直接比較是不可能的!

替換數(shù)據(jù):
replace(val_or_list,new_val)函數(shù) 將一個(gè)值或值列表替換成一個(gè)新的值或值列表,列表的長(zhǎng)度必須一樣。除非傳遞inplace=True參數(shù)(表示在原始表中修改),負(fù)責(zé)該函數(shù)會(huì)返回一個(gè)新的frame或series。

第34單元 組合數(shù)據(jù)

合并:
如果兩個(gè)frame具有一個(gè)相同的列,就可以將該列上的frame合并。即使沒有相同名稱的列,也可以指定其他列作為鍵。

            
              df = pd.merge(df1,df2,on=”key”)
df = pd.merge(df1,df2,left_on=”key1”,right_on=”key2”)

            
          

如果要在索引列而不是一般的列上合并,使用可選參數(shù)left_index=True和right_index=True實(shí)現(xiàn)。

join()和merge() 這兩個(gè)函數(shù)使用同一個(gè)可選參數(shù)how,它的可接受參數(shù)為“l(fā)eft”(join()的默認(rèn)值),“right”,“inner”,“outer”(merge()的默認(rèn)值)

連接:
Concat()函數(shù) 通過一組frame彼此“豎直”(axis=0,默認(rèn)值)或“水平”(axis=1)放置在一起來連接它們,并返回一個(gè)新的frame。

            
              Pd.concat([alco2009,population],axis=0).tail()

            
          

如果frame的維度不匹配,pandas就會(huì)在所謂的“空位”處加入具有缺失值的行或列。

刪除重復(fù)行:

            
              duplicated([subset],keep=””)

            
          

返回一個(gè)布爾型的Series,表示在所有列或subset(是一個(gè)列名稱組成的序列)表示的列中是否有重復(fù)的行。Keep表示控制標(biāo)記的重復(fù)行是第一個(gè)重復(fù)行(“first”)、最后一個(gè)重復(fù)行(“l(fā)ast”)、每個(gè)重復(fù)行(“True”)都標(biāo)記。

            
              drop_duplicates([subset],keep=””,Inpalce=True)

            
          

返回一個(gè)刪除了所有列或subset(是一個(gè)列名稱組成的序列)表示的列中重復(fù)行的frame或Series。Keep表示控制刪除的行是第一個(gè)重復(fù)行(“first”)、最后一個(gè)重復(fù)行(“l(fā)ast”)、每個(gè)重復(fù)行(“True”)都刪除。Inpalce=True可以從原始對(duì)象中刪除重復(fù)項(xiàng)。

第35單元 數(shù)據(jù)的排序和描述

排序和分級(jí):
sort_index()返回按照索引排序的frame。相關(guān)參數(shù)說明如下:

ascending (默認(rèn)值為True(升序))來控制升序或降序;
na_position (取值為“first”或”last“)指定值為nan的單元在排序后的位置,
numeric_only 僅將等級(jí)限制為數(shù)值
na_option (取值為“top”,”bottom”或“keep”)設(shè)定nan的處理方式:將它們轉(zhuǎn)移到新frame的頂部、底部或保留原始位置。

描述性統(tǒng)計(jì)量:

argmax() 找出最大值首次出現(xiàn)的索引位置(針對(duì)series)
idxmax() 找出最大值首次出現(xiàn)的索引位置(針對(duì)frame)
cumsum() 累積和
cumprod() 累計(jì)乘積
cummin() 累積最小值
cummax() 累積最大值
diff() 計(jì)算連續(xù)的列或Series項(xiàng)之間的滑動(dòng)值

唯一性、計(jì)數(shù)、會(huì)員資格:

unique() 計(jì)算不同值的組成的數(shù)組,并能給出每個(gè)不同值出現(xiàn)的次數(shù)。用在Series中
value_counts() 計(jì)算不同值的組成的數(shù)組,并能給出每個(gè)不同值出現(xiàn)的次數(shù)。用在frame中
isin() 專門為Series和frame定義的。它返回一個(gè)與數(shù)據(jù)大小相同的布爾型的Series或frame,用于確定Series或frame的每一項(xiàng)是否存在于某個(gè)集合中。

第36單元 數(shù)據(jù)轉(zhuǎn)換

數(shù)據(jù)聚合:

groupby() 通過一個(gè)或多個(gè)分類的鍵值將行分到不同的組中,從而實(shí)現(xiàn)對(duì)frame的分割。
聚合函數(shù)包括以下幾種:

count() 返回組中的行數(shù)
sum() 返回組中數(shù)字行的總和
mean() 返回組中所有行相應(yīng)的統(tǒng)計(jì)量度量
median() 返回組中所有行相應(yīng)的統(tǒng)計(jì)量度量
std() 返回組中所有行相應(yīng)的統(tǒng)計(jì)量度量
var() 返回組中所有行相應(yīng)的統(tǒng)計(jì)量度量(沒錯(cuò),這四個(gè)函數(shù)效果一模一樣)
min() 返回組中最小的行
max() 返回組中最大的行
prod() 返回組中數(shù)字行的乘積
first() 返回組中的第一行(用在frame中)
last() 返回組中的最后一行(用在frame中)

離散化:

離散化是指將連續(xù)變量轉(zhuǎn)化為離散(分類)變量,通常用于直方圖和機(jī)器學(xué)習(xí)。
qcuts() 與cuts()類似,不同的是qucts()使用分位數(shù)而不是區(qū)間寬度進(jìn)行分割。可以用它來計(jì)算分位數(shù)。
qet_dummies() 將數(shù)組、series或frame轉(zhuǎn)換為與原始對(duì)象擁有相同索引的另一個(gè)frame,每個(gè)列對(duì)應(yīng)一個(gè)虛擬變量。

映射:

map() 將任意的單參數(shù)函數(shù)應(yīng)用于選中列中的每一個(gè)元素。(非常低效)

第37單元 掌握pandas的文件讀寫功能

Pandas支持:

  • 自動(dòng)索引和列名提取
  • 數(shù)據(jù)類型推斷、數(shù)據(jù)轉(zhuǎn)換和缺失值的檢測(cè)
  • 日期時(shí)間解析
  • 消除“不干凈”的數(shù)據(jù)
  • 數(shù)據(jù)分塊

讀取CSV和表格文件:

read_csv() 根據(jù)文件名或打開的文件句柄,從指定的CSV文件中讀取一個(gè)frame。該函數(shù)具有近50個(gè)可選參數(shù)。
read_csv()函數(shù)中重要參數(shù)說明:

sep/delimiter 列分隔符,可以接受正則表達(dá)式
header 作為列名的行號(hào)(如果有自己的行號(hào),則傳遞None)
index_col 作為索引的列名(False表示默認(rèn)數(shù)字索引)
skiprows 要跳過的文件頭行號(hào)或行號(hào)列表
thousands 表示大數(shù)時(shí)使用的千位分隔符
names 列名列表
na_values 用于處理缺失數(shù)據(jù)的字符串或字符串列表

"What you get is what you get.What you do with what you get, that's more the point."--《City of Ember 》


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論