1. 程式人生 > >Pandas學習筆記(1)

Pandas學習筆記(1)

一、Pandas的資料結構介紹
>>> from pandas import Series,DataFrame
>>> import pandas as pd
>>> import numpy as np
1.Series
Series:類似於一維陣列的物件,由一組資料(各種numpy的資料型別)以及一組與之相關的資料標籤(即索引)組成
>>> obj=Series([1,2,3,4])
#如果不指定索引,會自動生成從0-(N-1)的整數型索引
>>> obj
0    1
1    2
2    3
3    4
dtype: int64
>>> obj.values
array([1, 2, 3, 4])
>>> obj.index
RangeIndex(start=0, stop=4, step=1)
#numpy陣列運算保留索引和值之間的關係
>>> obj[obj>2]
2    3
3    4
dtype: int64
>>> obj*2
0    2
1    4
2    6
3    8
dtype: int64
>>> np.exp(obj)
0     2.718282
1     7.389056
2    20.085537
3    54.598150
dtype: float64
#如果資料被存放在有一個python字典中,也可以直接通過這個字典建立Series
>>> score={"Tom":99,"Lucy":90,"John":80,"Green":58}
>>> score
{'John': 80, 'Green': 58, 'Lucy': 90, 'Tom': 99}
>>> obj_score=Series(score)
>>> obj_score
Green    58
John     80
Lucy     90
Tom      99
dtype: int64
#Series可以被看成是一個定長的有序字典,可以用很多原本需要字典引數的函式
>>> "Green" in obj_score
True
>>> "yaoxq" in obj_score
False
#將一個字典傳入Series的索引,就可以得到匹配的值,“NaN”表示缺失或者NA值。
>>> name={"A","B","C","Tom"}
>>> obj_score_new=Series(obj_score,index=name)
>>> obj_score_new
A       NaN
C       NaN
B       NaN
Tom    99.0
dtype: float64
#我們可以使用isnull和isnotnull來檢測缺失資料
>>> pd.isnull(obj_score)
Green    False
John     False
Lucy     False
Tom      False
dtype: bool
>>> pd.isnull(obj_score_new)
A       True
C       True
B       True
Tom    False
dtype: bool
>>> pd.notnull(obj_score)
Green    True
John     True
Lucy     True
Tom      True
dtype: bool
>>> pd.notnull(obj_score_new)
A      False
C      False
B      False
Tom     True
dtype: bool
#pandas會自動對齊不同索引的資料
>>> obj_score+obj_score_new
A          NaN
B          NaN
C          NaN
Green      NaN
John       NaN
Lucy       NaN
Tom      198.0
dtype: float64
#Series本身和索引都有一個name屬性,該屬性和pandas其他功能關係密切
>>> obj_score.name = "score"
>>> obj_score.index.name = "name"
>>> obj_score
name
Green    58
John     80
Lucy     90
Tom      99
Name: score, dtype: int64
#Series的索引可通過賦值方式修改
>>> obj_score.index=["","","",""]
>>> obj_score
    58
    80
    90
    99
Name: score, dtype: int64


2.DataFrame
DataFrame是一個表格型的資料結構。它含有一組有序的列,每列可以是不同的值型別。DataFrame既有行索引,也有列索引,可以被看做是由Series組成的字典(共用一個索引)。
DataFrame中的資料是以一個或多個二維塊存放的。
建立DataFrame的方法很多,最常用的是直接傳入一個等長列表或numpy陣列組成的字典:
>>> data={'name':['Tom','Tom','Tom','Lucy','Lucy','John'],'year':[2014,2015,2016,2015,2016,2016],'score':[80,85,90,86,88,83]}
>>> frame=DataFrame(data)
>>> frame
   name  score  year
0   Tom     80  2014
1   Tom     85  2015
2   Tom     90  2016
3  Lucy     86  2015
4  Lucy     88  2016
5  John     83  2016
#可以指定列序列
>>> DataFrame(data,columns=['year','score','name'])
   year  score  name
0  2014     80   Tom
1  2015     85   Tom
2  2016     90   Tom
3  2015     86  Lucy
4  2016     88  Lucy
5  2016     83  John
#可以通過獲取屬性或字典標記的方式,來獲取一個特定series(name屬性已經被設定好了)
>>> frame.year
0    2014
1    2015
2    2016
3    2015
4    2016
5    2016
Name: year, dtype: int64
>>> frame['score']
0    80
1    85
2    90
3    86
4    88
5    83
Name: score, dtype: int64
#為不存在的列賦值會建立一個新列,del用於刪除列。
>>> frame['isgirl']= frame.name == 'Lucy'
>>> frame
   name  score  year isgirl
0   Tom     80  2014  False
1   Tom     85  2015  False
2   Tom     90  2016  False
3  Lucy     86  2015   True
4  Lucy     88  2016   True
5  John     83  2016  False
>>> del frame['isgirl']
>>> frame.columns
Index([u'name', u'score', u'year'], dtype='object')


另一種方式是巢狀字典:
>>> data={'Tom':{2000:80,2001:85,2002:90},'Lucy':{2001:90,2002:99},'John':{2002:100}}
>>> frame=DataFrame(data)
>>> frame
       John  Lucy  Tom
2000    NaN   NaN   80
2001    NaN  90.0   85
2002  100.0  99.0   90
#使用*.T來對dataframe進行轉置
>>> frame.T
      2000  2001   2002
John   NaN   NaN  100.0
Lucy   NaN  90.0   99.0
Tom   80.0  85.0   90.0
上面例子中,內層字典的鍵會被合併、排序以形成最終的索引。如果顯式指定了索引,pandas則會過濾資料
>>> frame1=DataFrame(data,index=[1999,2000,2001])
>>> frame1
      John  Lucy   Tom
1999   NaN   NaN   NaN
2000   NaN   NaN  80.0
2001   NaN  90.0  85.0


3.索引物件
Pandas的索引物件負責管理軸標籤和其他元資料(比如軸名稱)
構建Series或者DataFrame時,所用到的任何陣列或者序列的標籤都會被轉換成一個index。
Index物件是不可修改的。
>>> frame.index[1]
2001
>>> frame.index[1:]
Int64Index([2001, 2002], dtype='int64')
>>> frame.index[1]=2009
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/pandas/indexes/base.py", line 1245, in __set
    raise TypeError("Index does not support mutable operations")
TypeError: Index does not support mutable operations

#索引的方法和屬性

方法 屬性
append 連結另一個index物件,產生一個新的Index
diff 計算差集,並得到一個Index
intersection 計算交集
union 計算並集
isin 計算一個指示各值是否都包含在引數集合中的布林型陣列
delete 產出索引i出的元素,並得到新的Index
drop 刪除傳入的值,並得到新的Index
insert 將元素插入到索引i處,並得到新的Index
is_monotonic 將各元素均大於等於前一個元素時,返回True
is_unique 將Index沒有重複值時,返回True
unique 返回Index中唯一的陣列


相關推薦

Pandas學習筆記1基本資料型別及屬性

Pandas介紹 Python Data Analysis Library即Pandas是基於NumPy 的一種Python資料分析工具包,包含豐富的資料型別和便捷的操作方式。 基本資料型別 Series 對應Python中的列表和NumPy的一維陣

Pandas學習筆記1

一、Pandas的資料結構介紹 >>> from pandas import Series,DataFrame >>> import pandas as pd >>> import numpy as np 1.Serie

JAVA學習筆記1——a++與++a的區別

col int 演示 opera 解析 代碼 數據 ++i div 需求:此博客用於解釋i++與++i的區別。 過程: 1、名稱解釋 ++:自增,即在原有數據基礎上+1,再賦給原有數據。 2、程序演示 (1)代碼: 1 class OperateDemo 2 { 3

vray學習筆記1

com .cn 過程 分組 是把 皮膚 mon image 基本 vray是個什麽東西? 它是個渲染器。 渲染器是個什麽東西? 渲染器就是3d軟件裏面把模型畫成一張圖片的東西,渲染的過程就是把3D物體變成2D畫面的過程。 模型是個什麽東西? 模型就是模型,它由兩部分組成,第

《深入理解C指針》學習筆記1--- 指針之外

結構 def form 學習 編程 stdlib.h struct 一個 char   C語言從誕生之初就非常善於和硬件打交道,經過這麽多年的發展之後,其靈活性和超強的特征是受到幾乎所有程序員的肯定。C語言的這種靈活性很大一部分程度來源與C指針,指針為C語言動態操控內存提供

CS231n 學習筆記1 Image CLassification

eight function 分享 便是 數據驅動 rain 分類問題 很難 特征 圖像分類是計算機視覺中的一項核心任務,那麽什麽是圖像分類? 例如,給你一個標簽集,其中包括(貓、狗、鳥、卡車、飛機...等) 然後給你一張圖片,那麽這張圖片屬於哪個類別呢?這就是一個分類

bootstrap 學習筆記1---介紹bootstrap和柵格系統

優先 cal 圖片 應用 尺寸 文件中 lin png ice   學習前端許久,對於布置框架和響應瀏覽器用html 和javascript 寫的有點繁瑣,無意間看到這個框架,覺得挺好用的就開始學習了,但是這個框架上面有很多知識,不是所有的都要學的,故將學習筆記和覺得重點的

《挑戰程序設計競賽》學習筆記 1

設計 allow 而且 硬幣 ack ket 程序設計 all 不能 2.2 貪心法 貪心法是遵循某種規則,不斷貪心選取當前最優策略的算法設計方法。 貪心法的求解思想是通過叠代地選取當前問題的局部最優解法來達成總體最優解,在叠代的過程中不斷地產生局部最優解和下一個與之前

AngularJs學習筆記1——ng-app

oot you ctrl span fun 代碼 問題 筆記 doctype 眾所周知: ng-app 指令用於告訴 AngularJS 應用當前這個元素是根元素。 所有 AngularJS 應用都必須要要一個根元素。 HTML 文檔中只允許有一個 ng-app 指令,如果

Nordic nRF52832 學習筆記1 介紹,入門,與準備工作

例程 盜版 path pdf 規範 準備 但是 依然 可能   近來,物聯網已成為大勢所趨,VR與AR正方興未艾,各種手環、遙控、智能家居也在粉墨登場。技術前沿的領航者們已經快馬加鞭,各種意誌與暗示也在上傳下達。物聯網,無線通訊,移動互聯,將成為新的目標與寵兒。最近開的電賽

javascript 高級程序設計學習筆記1

元素 新的 logs html light begin 知識 gin nbsp 知識補充: var box = document.querySelector(‘#box‘); //"beforebegin" ,在當前元素之前插入一個緊鄰的同輩元素; box.ins

Postgresql 學習筆記1

sql postgre 一、環境#配置遠程連接 su postgres vim /var/lib/pgsql/9.4/data/postgresql.conf 編輯配置文件 listen_address=’localhost’ 前面的註釋#去掉,並把’localhost’該為’*’;

Hibernate學習筆記1---hibernate快速上手與準備工作

成了 -- 開源 工作 快速 tar ref orm 磁盤 持久層介紹 持久化:將內存中的數據保存在磁盤等存儲設備中。 持久化對象:指已經存儲在數據庫護著磁盤的業務對象 經典的軟件應用體系結構(三層結構) 在三層結構中,由於業務邏輯除了負責業務邏輯以外,還要負責相關的數據

jQuery源碼學習筆記1

ase tolower nodetype apt jquer 元素 bre 技術分享 停止 在慕課網上學習jQuery源碼,做一些筆記小研究。 第1章 節點遍歷 第2章 文檔處理 第3章 元素操作 第4章 樣式操作 第5章 事件體系 第6章 數據交互 第7章

Struts2學習筆記1---相關配置

XML def rec 模塊 定向 -1 開發 oba 合並 Struts 2是Struts的下一代產品,是在 struts 1和WebWork的技術基礎上進行了合並的全新的Struts 2框架。 1創建action對象(三種) 1 創建普通的類,不繼承任何類,也不

linux學習筆記1

1 linux之父是linus Torvalds(李納斯 托沃滋),1991年他在赫爾辛基大學讀書時自己手動寫了一個電腦操作系統,取名linux,並且公布了源代碼。 C語言之父是Dennis M Ritchie(丹尼斯 裏奇)。 JAVA之父是詹姆斯高斯林,出生在加拿大,他編寫了多處理器版本的unix操

Node-學習筆記1

alua 就是 服務器 結果 move save toc pda 通過 什麽是Node.js 1)Node.js是一個基於Chrome V8引擎的JavaScript 運行環境 2)Node.js使用了一個事件驅動、非阻塞式I/O的模型,使其輕量又高效。 ① 事件

Linux第三周學習筆記1

命令 hiho 並且 ron 增加 如果 mkdir strong lin Linux第三周學習筆記(1)2.20 特殊權限stick_bit特殊權限stick_bit:意為防刪除位。文件是否可以被某一個用戶刪除,主要取決於該文件所在目錄是否對該用戶具有寫的權限。如果沒有寫

MATLAB學習筆記1

nike arch 演示 主界面 文件名 anti 包含 按鍵 只需要 工作窗口 應用程序標簽(APPS) 繪圖標簽(PLOTS) 主頁標簽(HOME) 以上三者在最上面一行。所屬各種功能看字面意思即可。 常用操作欄:主界面右上角。 文件夾管理欄:工具欄下方。 命令

adminset學習筆記1

name 鏈接 load 學習筆記 href https hid sre win 源碼 <script> window.onload=init; function init() { showhide(2); } f