玩轉Pandas,讓數據處理更easy系列2

01

回顧

上一篇總結了Pandas中最重要的兩個數據結構:Series和DataFrame,前者相當於更加強大的一維數組,是數組和字典的組合,因為既可以按照位置,也能通過鍵獲取訪問元素;而DataFrame是Series的容器,二維的數組,有行、列標籤。正是通過這兩個強大的數據結構和基於它們建立的各種操作,才使得Pandas稱霸數據處理領域工具庫,關於這篇請參考:

玩轉Pandas,讓數據處理更easy系列1

02

DataFrame結構剖析

因為DataFrame本質上是二維數組,其中values是Numpy,行索引是index,列索引是 columns的組合。接下來,創建一個pd_data,分別作如下操作:

#創建pd_data,values是二維list,index默認(0,1,2,...),columns: [A,B,C]

pd_data = pd.DataFrame([ [4, 9, 1], [3, 5, 2] ], columns = list(ABC) )

獲取values,可以看出是ndarray的Numpy數組,因此可以使用ndarray實例的一切API:

pd.values

獲取index,可以看到返回RangeIndex實例,是默認的行索引,查源碼可以看出繼承關係如下:

Index

|

NumericIndex

|

Int64Index

|

RangeIndex

pd_data.index

獲取columns,直接返回Index實例,可以看到pd_data的列索引:

pd_data.columns

以上,可以看出pd_data的基本組成結構,以及如何拆分出所需要的values和索引(index,columns)結構。

03

DataFrame索引

DataFrame的索引可以按照一維索引方式,或二維索引方式。

一維索引方式,類似於numpy等的冒號直接索引,但是這種方法只能通過列索引標籤獲取,如下,返回的是一個Series實例,name是索引的列標籤名稱。

pd_data[B]

二維索引常用的 loc 介面,提供二維的訪問方法,用法如下:

pd_data.loc[1,B]

得到是元素5,即行索引標籤為1,列標籤為『B』的元素

插播:

  • loc的作用不是僅僅用作訪問某個已存在的元素。
  • 因為說過,columns, index的作用類似於字典,言外之意,如果訪問的標籤不存在,它會自動添加進去,如下:

pd_data.loc[:,D] = 10 #增加一列,列標籤是D

pd_data[D] = 10 # 直接這樣寫更精簡,但是默認必須為添加列標籤

pd_data.loc[-1,:] = 0 #增加一行,行標籤是 -1

pd_data[-1] = -11 # No! 這樣寫不是添加一行

04

DataFrame刪除某列或某行

刪除DataFrame的某行或某列,調用drop(),參數是標籤值,如下:

現在的pd_data:

刪除E列,ok, 調用 drop(E,axis=1),axis參數必須給出!

pd_data = pd_data.drop(E,axis=1) #注意必須賦值給pd_data,因為這不是in-place drop

刪除標籤為-1的行:

pd_data = pd_data.drop(-1,axis=0)

測試如果標籤為-1的行有多個,刪除會發生,再構造標籤為-1的行:

pd_data = pd_data.append(pd.Series([1]*5, index=[A,B,C,D,-1], name=1))

pd_data

刪除標籤為1的行,可以看到同時刪除了兩行。

pd_data = pd_data.drop(1,axis=0)

pd_data

以上總結了,DataFrame的結構,索引,增加,刪除操作,如有問題,請指針。

下載源碼,請在公眾號後台回復: pandas

更多文章:

深度學習|大師之作,必是精品

演算法channel關鍵詞和文章索引

演算法優化|說說哨兵(sentinel value)

Numpy|需要信手拈來的功能

機器學習|快速排序思想求topk

機器學習|支持向量機參數求解

微信群: gz113097485

QQ交流群:646901659

演算法channel ∣原創乾貨分享

weixin.qq.com/r/cjhGXpj (二維碼自動識別)

長按,識別二維碼,加關注

推薦閱讀:

Python的函數是第一類對象(函數特性總結)
Python 3.7 將引入 dataclass 裝飾器
廢話少說:Python 這麼牛逼的 6 個原因是?
解答初學者對for i,j 的疑惑
Scrapy連接到各類資料庫(SQLite,Mysql,Mongodb,Redis)

TAG:數據挖掘 | Python | 數據分析 |