日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

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

系統 2074 0

Python數據科學入門

Dmitry Zinoviev著
熊子源 譯


第6章 使用Series和frame

Pandas模塊的初中時為了給Python添加Series和frame兩個抽象的數據結構,它們其實是Python的競爭對手、最早的數據科學語言——R語言的核心。

Pandas的frame本質是一個“智能”電子表格:具有標簽、列(變量)、行(觀測記錄),以及大量內置操作的表。(Series是一個只有一列的frame)表的數據部分(單元格)以numpy數組的方式實現。

第31單元 pandas數據結構

Series
Series是一維的數據矢量。是同構的:Series中左右數據項必須是相同的數據類型。
Series中的函數:

  • head() 返回Series中前五行數據(默認5行)
  • tail() 返回Series中后五行數據(默認5行)

Frame
Frame是一個行和列都具有標簽的表??梢酝ㄟ^二維numpy數組、元組列表、Python字典或一個frame構造出一個新的frame。

第32單元 數據重塑

索引:
Frame的索引是一組分配給frame行的標簽集合。

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

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

分層索引:
也稱為多級索引或多重索引。由以下三個列表組成:

  • 級別名稱
  • 每個級別可能存在的所有標簽
  • Frame或Series中每一項的實際值的列表。

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

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

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

第33單元 處理缺失數據

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

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

插補缺失數據:
兩種常見的插補技術是使用常數(0,1)和“干凈”值得平均數替換缺失值。
isnull()和notnull() 是互補的。當某個值是nan時,isnull()返回True;當某個值不是nan時,notnull()返回True。
根據IEEE 754的浮點數標準,表達式 np.nan==np.nan為False ,這使得直接比較是不可能的!

替換數據:
replace(val_or_list,new_val)函數 將一個值或值列表替換成一個新的值或值列表,列表的長度必須一樣。除非傳遞inplace=True參數(表示在原始表中修改),負責該函數會返回一個新的frame或series。

第34單元 組合數據

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

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

            
          

如果要在索引列而不是一般的列上合并,使用可選參數left_index=True和right_index=True實現。

join()和merge() 這兩個函數使用同一個可選參數how,它的可接受參數為“left”(join()的默認值),“right”,“inner”,“outer”(merge()的默認值)

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

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

            
          

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

刪除重復行:

            
              duplicated([subset],keep=””)

            
          

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

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

            
          

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

第35單元 數據的排序和描述

排序和分級:
sort_index()返回按照索引排序的frame。相關參數說明如下:

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

描述性統計量:

argmax() 找出最大值首次出現的索引位置(針對series)
idxmax() 找出最大值首次出現的索引位置(針對frame)
cumsum() 累積和
cumprod() 累計乘積
cummin() 累積最小值
cummax() 累積最大值
diff() 計算連續的列或Series項之間的滑動值

唯一性、計數、會員資格:

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

第36單元 數據轉換

數據聚合:

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

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

離散化:

離散化是指將連續變量轉化為離散(分類)變量,通常用于直方圖和機器學習。
qcuts() 與cuts()類似,不同的是qucts()使用分位數而不是區間寬度進行分割??梢杂盟鼇碛嬎惴治粩?。
qet_dummies() 將數組、series或frame轉換為與原始對象擁有相同索引的另一個frame,每個列對應一個虛擬變量。

映射:

map() 將任意的單參數函數應用于選中列中的每一個元素。(非常低效)

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

Pandas支持:

  • 自動索引和列名提取
  • 數據類型推斷、數據轉換和缺失值的檢測
  • 日期時間解析
  • 消除“不干凈”的數據
  • 數據分塊

讀取CSV和表格文件:

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

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

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


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

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

【本文對您有幫助就好】

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

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 汉寿县| 深圳市| 云安县| 洛隆县| 淮阳县| 海南省| 郯城县| 宝山区| 乐陵市| 鄂托克前旗| 巧家县| 辰溪县| 家居| 洪江市| 融水| 谷城县| 新闻| 武义县| 永靖县| 开化县| 高唐县| 湛江市| 鲁山县| 仁怀市| 固原市| 三门峡市| 资阳市| 永登县| 子长县| 沧源| 观塘区| 西青区| 西和县| 松潘县| 弥勒县| 通许县| 和平区| 政和县| 广宗县| 福建省| 玛纳斯县|