第5章 pandas入門

  pandas是專門爲處理表格和混雜數據設計的,NumPy更適合處理統一的數值數組數據。python

  pandas的數據結構:數組

    Series:Series是一種相似於一維數組的對象,它由一組數據(各類NumPy數據類型)以及一組與之相關的數據標籤(即索引)組成。數據結構

      若是隻傳入一個字典,則結果Series中的索引就是原字典的鍵(有序排列)。app

      pandas的isnull和notnull函數可用於檢測缺失數據。函數

    DataFrame:DataFrame是一個表格型的數據結構,它含有一組有序的列,每列能夠是不一樣的值類型(數值、字符串、布爾值等)。spa

      DataFrame既有行索引也有列索引,它能夠被看作由Series組成的字典(共用同一個索引)。設計

      DataFrame中的數據是以一個或多個二維塊存放的(而不是列表、字典或別的一維數據結構)。3d

      建立DataFrame的辦法有不少,最經常使用的一種是直接傳入一個由等長列表或NumPy數組組成的字典。code

      DataFrame會自動加上索引(跟Series同樣),且所有列會被有序排列。對象

      對於特別大的DataFrame,head()方法會選取前五行。

      若是指定了列序列,則DataFrame的列就會按照指定順序進行排列。

      若是傳入的列在數據中找不到,就會在結果中產生缺失值NaN。

      經過相似字典標記的方式或屬性的方式,能夠將DataFrame的列獲取爲一個Series。

      行也能夠經過位置或名稱的方式進行獲取,好比用loc屬性。

      列能夠經過賦值的方式進行修改。

      將列表或數組賦值給某個列時,其長度必須跟DataFrame的長度相匹配。若是賦值的是一個Series,就會精確匹配DataFrame的索引,全部的空位都將被填上缺失值。

      del方法能夠用來刪除列。

      若是嵌套字典傳給DataFrame,pandas就會被解釋爲:外層字典的鍵做爲列,內層鍵則做爲行索引。

      DataFrame構造函數所能接受的各類數據:

      

      跟Series同樣,values屬性也會以二維ndarray的形式返回DataFrame中的數據。

      

    基本功能

      從新索引:

        reindex:其做用是建立一個新對象,它的數據符合新的索引。

        method:能夠作一些插值處理。如:ffill能夠實現向前填充。

        

      丟棄指定軸上的項:

        drop(索引值):返回一個在指定軸上刪除了指定值的新對象。

           經過傳遞axis=1或axis='columns'能夠刪除列的值。

      索引的選取和過濾:

        Series索引(obj[...])的工做方式相似於NumPy數組的索引,只不過Series的索引值不僅是整數。

        利用標籤的切片運算與普通的Python切片運算不一樣,其末端是包含的。

      用loc和iloc進行選取:它們可讓你用相似NumPy的標記,使用軸標籤(loc)或整數索引(iloc),從DataFrame選擇行和列的子集。

        DataFrame的索引選項

        

      整數索引:

        爲了進行統一,若是軸索引含有整數,數據選取總會使用標籤。爲了更準確,請使用loc(標籤)或iloc(整數)

      算數運算和整數對齊:

        pandas最重要的一個功能是,它能夠對不一樣索引的對象進行算術運算。在將對象相加時,若是存在不一樣的索引對,則結果的索引就是該索引對的並集。

        自動的數據對齊操做在不重疊的索引處引入了NA值,缺失值會在算術運算過程當中傳播。  

        對於DataFrame,對齊操做會同時發生在行和列上。

      在算數方法中填充值:

        在一個對象中某個軸標籤在另外一個對象中找不到時填充一個特殊值。

        

      DataFrame和Series之間的運算:

        DataFrame和Series之間算術運算是有明確規定的。

        默認狀況下,DataFrame和Series之間的算術運算會將Series的索引匹配到DataFrame的列,而後沿着行一直向下廣播

        若是某個索引值在DataFrame的列或Series的索引中找不到,則參與運算的兩個對象就會被從新索引以造成並集。

        若是你但願匹配行且在列上廣播,則必須使用算術運算方法。

      函數的應用和映射:

        NumPy的ufuncs(元素級數組方法)也可用於操做pandas對象。

        apply方法:將函數應用到由各列或行所造成的一維數組上。若是傳遞axis='columns'到apply,這個函數會在每行執行。

        假如你想獲得frame中各個浮點值的格式化字符串,使用applymap便可.

      排序和排名:

        sort_index方法:對行或列索引進行排序(按字典順序),返回一個已排序的新對象。

        對於DataFrame,則能夠根據任意一個軸上的索引進行排序,如:frame.sort_index(axis=1)

        數據默認是按升序排序的,但也能夠降序排序,如:frame.sort_index(axis=1, ascending=False)

        若要按值對Series進行排序,可以使用其sort_values方法,如:obj.sort_values()

        在排序時,任何缺失值默認都會被放到Series的末尾。

        當排序一個DataFrame時,你可能但願根據一個或多個列中的值進行排序。將一個或多個列的名字傳遞給sort_values的by選項便可達到該目的,如:frame.sort_values(by='b')

        要根據多個列進行排序,傳入名稱的列表便可,如:frame.sort_values(by=['a', 'b'])

         默認狀況下,rank是經過「爲各組分配一個平均排名」的方式破壞平級關係的,根據值在原數據中出現的順序給出排名:obj.rank(method='first'),按降序進行排名:obj.rank(ascending=False, method='max')

        排名時用於破壞平級關係的方法:

        

      帶有重複標籤的軸索引:

        索引的is_unique屬性能夠判斷它的值是不是惟一的。

        對於帶有重複值的索引,數據選取的行爲將會有些不一樣。若是某個索引對應多個值,則返回一個Series;而對應單個值的,則返回一個標量值。

      彙總和計算描述統計:

        andas對象擁有一組經常使用的數學和統計方法。它們大部分都屬於約簡和彙總統計,用於從Series中提取單個值(如sum或mean)或從DataFrame的行或列中提取一個Series。跟對應的NumPy數組方法相比,它們都是基於沒有缺失數據的假設而構建的。

        調用DataFrame的sum方法將會返回一個含有列的和的Series。

        傳入axis='columns'或axis=1將會按行進行求和運算。

        NA值會自動被排除,除非整個切片(這裏指的是行或列)都是NA。經過skipna選項能夠禁用該功能。

        

        有些方法(如idxmin和idxmax)返回的是間接統計(好比達到最小值或最大值的索引)。

        describe(描述性統計):一次性產生多個彙總統計

         

        相關係數與協方差:

          Series的corr方法用於計算兩個Series中重疊的、非NA的、按索引對齊的值的相關係數。與此相似,cov用於計算協方差。

          DataFrame的corr和cov方法將以DataFrame的形式分別返回完整的相關係數或協方差矩陣。

          利用DataFrame的corrwith方法,你能夠計算其列或行跟另外一個Series或DataFrame之間的相關係數。

        惟一值、值計數以及成員資格:

          unique:它能夠獲得Series中的惟一值數組。uniques.sort()能夠進行排序。

          value_counts:用於計算一個Series中各值出現的頻率。結果Series是按值頻率降序排列的,value_counts仍是一個頂級pandas方法,可用於任何數組或序列。

          isin:用於判斷矢量化集合的成員資格,可用於過濾Series中或DataFrame列中數據的子集。

          Index.get_indexer:它能夠給你一個索引數組,從可能包含重複值的數組到另外一個不一樣值的數組。

          

相關文章
相關標籤/搜索