python數據處理:pandas基礎

本文資料來源:html

  Python for Data Anylysis: Chapter 5python

  10 mintues to pandas: http://pandas.pydata.org/pandas-docs/stable/10min.html#mingit

 文中實例查看地址:http://nbviewer.jupyter.org/github/RZAmber/for_blog/blob/master/learn_numpy.ipynbgithub

 

1. Pandas簡介數據庫

通過數年的發展,pandas已經成爲python處理數據中最常被使用的package。如下是開發pandas最開始的目的,也是如今pandas最經常使用的功能數據結構

  a: Data structures with labeled axes supporting automatic or explicit data alignment(數據調整). This prevents common errors resulting from misaligned data and working with differently-indexed data coming from differernt sources.函數

  b: Integrated time series functionalityoop

  c: The same data structures handle both time series data and non-time series data.spa

  d: Arithmetic operations and reductions (like summing across an axis) would pass on the metadata(axis labels,元數據)。3d

  e: Flexible handling of missing data

  f: Merge and other relational operations found in popular database databases(SQL-based, for example)

有一篇文章「Don't use Hadoop when your data isn't that big 」指出:只有在超過5TB數據量的規模下,Hadoop纔是一個合理的技術選擇。因此通常處理<5TB的數據量的時候,python pandas已經足夠能夠應付。

2. pandas data structure

2.1 Series

Series是一個一維的array-like對象,由兩部分組成:1. 任意numpy數據類型的array 2. 數據標籤,稱之爲index。

所以一個series有兩個主要參數:values和index

示例爲建立一個series,得到其value和index的過程

經過傳遞一個可以被轉換成相似序列結構的字典對象來建立一個Series:

字典的key做爲index表示。在Series中還能夠加入index參數來規定index的順序,其value會自動根據key來匹配數值。

Series有一個重要的特徵就是:在進行數學運算時,它的對齊特徵(Data alignment features)能夠自動調整不一樣index的數據,以便同一種數據進行數學運算。

並且Series對象自己和index參數都有一個參量爲name,好比obj.name='population', obj.index.name = 'state'

2.2 DataFrame

DataFrame能夠用來表達圖表類型、數據庫關係類型的數據,它包含數個順序排列的columns,每一個col中的數據類型一致,可是col彼此間數據類型能夠不一致。

DataFrame有兩個index:row和column

create  dataframe的方法:經過同等長度的list或者array或者tuples的dictionary,經過nested dict of dicts, 經過dicts of seires等等,詳見書本table5.1

 

提取列:經過obj3['state']或者obj3.year獲取列的信息,返回類型爲Series,與DataFrame有一樣的index

提取row:用ix函數以及row的位置信息或者名字

 

 

經常使用函數:

del:刪除列  del obj['year']

常見參數:index和 columns都有name參數,value

 

2.3 index ojbect和reindexing

pandas index的做用:for holding the axis labels and other metadata(like the axis name or names)

Index對象是不變的,意思就是沒法被用戶修改,因此下列code沒法經過,這個對應了咱們簡介中所說的a這一條

 

 

reindex()方法能夠對指定軸上的索引(index)進行改變/增長/刪除操做,這將返回原始數據的一個拷貝

 

 

reindex()中參數介紹:

    index:新的index,代替原來的,原來的index不會copy。pandas的處理通常都會自動copy原始value,這點與ndarry不一樣

    method:有ffill和bfill

    fill_value:填補NAN value

    copy等等

 

 

3.查看數據

   3.1 sorting:返回一個排序好的object

    a:按照軸(行列)進行排序

      sort_Index()

      參數介紹:默認按照row排序,axis=1即按照列

           默認升序,降序ascedning=False

    b:按照value排序

      order():缺值排在末尾

  3.2 ranking

    rank():按照值出現的順序賦值,返回一個新的obj。有一樣的值的時候,默認返回排序的mean

    

  3.3 unique

    is_unique: tell you whether its values are unique or not,返回true or false

    unique:返回不重複的值,返回一個array

  3.4 value_count:計算序列中各個值出現的次數

    

  3.5 describe() 對於數據快速統計彙總

 

4.選擇數據

  4.1 drop

  drop行:

  pandas的處理通常都會自動copy原始value,這點與ndarry不一樣,舉例以下,drop一行以後調用原始對象,發現沒有改變

    

  drop列:obj4.drop('Nevada',axis=1)

      在python不少函數的參數中,默認都是考慮row的,因此有axis(軸)這個參數      

      axis=1 爲垂直的,即列    

      axis=0 爲水平的,即行

  4.2 選擇selection,切片slicing,索引index 

  a 選擇一個單獨的列,這將會返回一個Series,df['A'] 和 df.A一個意思

  b:  經過[]進行選擇,這將會對行進行切片

  c:  經過標籤選擇:endpoint is inclusive 即obj['b':'c']包含‘c'行

  d:  選擇row和columns的子集:ix

  f:  經過標籤進行索引: loc

      

  e:  經過位置進行索引: iloc

     ` 

  4.3 使用isin()方法來過濾:

    用於過濾數據

    

5.缺失值處理

  5.1 missing value

    pandas用NaN(floating point value)來表示missing data

   5.2 去掉包含缺失值的行或者列

    dropna

    參數說明:how='all' only drop row that all NA

           axis=1, drop column

          thresh=3, 只保留還有3個obseration的行

  5.3 對缺失值進行填充

    fillna

  5.4 isnull:返回like-type對象,包含boolean values指明value是否爲缺失值

    notnull: isnull的副作用

 

6.計算函數

  a:對於不一樣index的兩個df對象相加「+」,其結果與數據庫中union相似,缺失值爲NaN

  b:具體的加減用add()或者sub(),缺失值能夠用fill_value代替

  c:sum,count,min,max等等,包含一些method

  d:correlation and covariance

     .corr()

     .cov()

7.合併 reshape

8.分組

  對於」group by」操做,咱們一般是指如下一個或多個操做步驟:

  (Splitting)按照一些規則將數據分爲不一樣的組;

  (Applying)對於每組數據分別執行一個函數;

  (Combining)將結果組合到一個數據結構中;

 

注:本文並不全面,僅僅總結了目前我所須要的部分。

相關文章
相關標籤/搜索