1. 程式人生 > >pandas資料結構介紹

pandas資料結構介紹

pandas是基於NumPy構建的,它以NumPy為中心的應用變得更加簡單。
pandas的資料結構介紹
Series

Series是一種類似於一維陣列的物件,它由一組資料(各種Numpy的資料型別)以及一組與之相關的資料標籤(即索引)組成。僅由一組資料即可產生最簡單的Series
obj=Series([4,7,-5,3])
Series的字串表現形式為:索引在左邊,值在右邊。由於我們沒有為資料指定索引,於是會自動建立一個從0到N-1的整數型索引。
values和index屬性獲取其陣列表示形式和索引物件。
obj.values
array([4,7,-5,3])
obj.index
Int64Index([0,1,2,3])
建立一個帶有可以對Series可以對各個資料點進行標記的索引:
obj2=Series([4,7,-5,3],index=['d','b','a','c'])
obj2
d 4
b 7
a -5
c 3
與Numpy陣列相比,可以通過索引的方式選取Series中的單個或一組值:
obj['a']的值是-5,obj2[['c','a','d']] c 3 a -5 d 6
Numpy陣列運算都會保留索引和值之間的連結:
可以將Series看成是一個定長的有序字典,因為它是索引值到資料值的一個對映。
‘b’ in obj2 True
如果資料存放在一個Python字典中,也可以直接通過這個字典來建立Series:
sdata={'Ohio':35000,'Texas':71000,'Oregon':16000,'Utah':5000}
obj3=Series(sdata)
如果只傳入一個字典,則結果Series中的索引就是原字典的鍵(有序排列)
states=['California','Ohio','Oregon','Texas']
obj4=Series(sdata,index=states)
sdata中跟states索引相匹配的那3個值會被找出來並放到相應的位置上,但由於'California'所對應的sdata值找不到,所以其結果就為NaN。pandas的isnull和notnull函式可用於檢測缺失資料。Series也有類似的例項方法。


Series最重要的一個功能是:它在算術運算中會自動對齊不同索引的資料。
Series物件及其索引都有一個name屬性,該屬性跟pandas其他的關鍵功能關係非常密切


Series的索引可以通過賦值的方式就地修改:


DataFrame

DataFrame是一個表格型的資料結構,它含有一組有序的列,每列可以是不同的值型別(數值、字串、布林值等)。DataFrame既有行索引也有列索引,它可以被看做有Series組成的字典(共用同一個索引)。跟其他類似的資料結構相比(如R的data,frame),DataFrame中面向行和列的操作基本上是平衡的。其實,DataFrame中面向行和列的操作基本上是平衡的。其實,DataFrame中的資料是以一個或多個二維塊存放的。
構建DataFrame的方法有很多,最常用的一種是直接傳入一個由等長列表或NumPy陣列組成的字典:
data={'state':['Ohio','Ohio','Nevada','Nevada'],'year:[2000,2001,2002,2001,2002]','pop':[1.5,1.7,3.6,2.4,2.9]}
frame=DataFrame(data)
DataFrame會自動加上索引(跟Series一樣),且全部列會被有序排列


跟Series一樣,如果傳入的列在資料中找不到,就會產生NA值:
frame2=DataFrame(data,columns=['year','state','pop','debt'],index=['one','two','three','four','five'])


通過類似字典標記的方式或屬性的方式,可以將DataFrame的列獲取為一個Series:
frame2['state']
frame2.year


注意:返回的Series擁有原DataFrame相同的索引,且其name屬性也已經相應地設定好了。行也可以通過位置或名稱的方式進行獲取,比如索引欄位ix:
frame2.ix['three']
列可以通過賦值的方式進行修改。例如,我們可以給那個空的'debt'列附上一個標量值或一組值:
frame2['debt']=16.5
frame2['debt']=np.arange(5.)


將列表或陣列賦值給某個列時,其長度必須跟DataFrame的長度相匹配。如果賦值的是一個Series,就會精確匹配DataFrame的索引,所有的空位都將填上缺失值:
val=Series([-1.2,-1.5,-1.7],index=['two','four','five'])
frame2['debt']=val


為不存在的列賦值會創建出一個新列。關鍵字del用於刪除列:
frame2['eastern']=frame2.state=='Ohio'


另一種常見的資料格式是巢狀字典
pop={'Nevada':{2001:2.4,1002:2.9},'Ohio':{2000:1.5,2001:1.7,2002:3.6}}
如果將它傳給DataFrame,它就會被解釋為:外層字典的鍵作為列,內層鍵則作為行索引:
frame3=DataFrame(pop)


由Series組成的字典差不多也是一樣的用法


索引物件
pandas的索引物件負責管理軸標籤和其他元資料(比如軸名稱等)。構建Series或DataFrame時,所用到的任何陣列或其他序列的標籤都會被轉換成一個Index:
obj=Series(range(3),index=['a','b','c'])
index=obj.index
Index物件是不可修改的(immutable),因此使用者不能對其進行修改。不可修改性非常重要,因為這樣才能使Index物件在多個數據結構之間安全共享:
index=pd.index(np.arrange(3))
obj2=Series([1.5,-2.5,0],index=index)
obj2.index is index
True


下表列出了pandas庫中內建的Index類。

pandas中主要的Index物件
說明
Index 最泛化的Index物件,將軸標籤表示為一個由Python物件組成的NumPy陣列
Int64Index 針對整數的特殊Index
MultiIndex "層次化"索引物件,表示單個軸上的多層索引。可以看做由元組組成的陣列
DatatimeIndex 儲存納秒級時間戳
PeriodIndex 針對Period資料(時間間隔)的特殊Index

相關推薦

pandas資料結構介紹

pandas是基於NumPy構建的,它以NumPy為中心的應用變得更加簡單。pandas的資料結構介紹 Series Series是一種類似於一維陣列的物件,它由一組資料(各種Numpy的資料型別)以及一組與之相關的資料標籤(即索引)組成。僅由一組資料即可產生最簡單的Ser

Pandas快速教程-資料結構介紹

Pandas中有三種不同型別的資料,為了便於理解,將numpy的ndarray結構也納入進行對比: 型別 維度(dim) 形狀(shape) 元素型別 說明 ndarray(numpy) 1或2 1×0或者n×m 同構 一

pandas資料結構介紹

本文目錄概要為:Series,DataFrame,索引物件。引用約定:from pandas import Series,DataFrame import pandas as pd因此,只要你在程式碼中看到pd,就得想到這是pandas。因為Series和DataFrame用

《利用Python進行資料分析》第五章-pandas資料結構介紹

pandas的資料結構介紹 要使用pandas,你首先就得熟悉它的兩個主要資料結構:Series和DataFrame。雖然它們並不能解決所有問題,但它們為大多數應用提供了一種可靠的、易於使用的基礎。 In [1]: from pandas import

redis學習(二) redis資料結構介紹以及常用命令

redis資料結構介紹   我們已經知道redis是一個基於key-value資料儲存的資料結構資料庫,這裡的key指的是string型別,而對應的value則可以是多樣的資料結構。其中包括下面五種型別:   1.string 字串    string字串型別是redis最基礎的資料儲存型別。

HashSet資料結構介紹

hashSet無參建構函式 //hashset的預設建構函式,實際是創造一個hashmap物件 public HashSet() { map = new HashMap<>(); } 因為hashmap的擴充套件因子是0.7

pandas資料結構之Dataframe

Dataframe DataFrame是一個【表格型】的資料結構,可以看做是【由Series組成的字典】(多個series共用同一個索引)。DataFrame由按一定順序排列的多列資料組成。設計初衷是將Series的使用場景從一維拓展到多維。DataFrame既有行索引,也有列索引。 行索引:ind

常用的資料結構介紹

1.棧 後進先出 2.佇列 先進先出 3.陣列與連結串列 陣列:順序儲存,隨機訪問 連結串列:連結串列儲存,順序訪問 相關文件參考: https://blog.csdn.net/Yuyh131/article/details/83629642 4.串 ???

官方練習 Pandas 資料結構簡介 Series VS DataFrame

傳遞的索引是軸標籤列表。因此,根據資料的不同,這可分為幾種情況: In [42]: import pandas as pd import numpy as np import matplotlib.pyplot as plt 來自ndarray 如果data是nda

mysql常用資料結構介紹(1)

mem_root mysql層通過mem_root管理記憶體分配,防止頻繁分配和釋放小記憶體。 mem_root的定義見include/my_alloc.h: typedef struct st_mem_root {   USED_MEM *free;  

基礎資料結構介紹

1、資料結構基本概念http://note.youdao.com/noteshare?id=e266dd8529dfaf8ae64b743d1fcde2db 2、線性表http://note.youdao.com/noteshare?id=883919761ef9d4e4495d0d27c205

常用資料結構介紹

  連結串列:連結串列儲存,順序訪問 1.棧 2.佇列 3.串 4.樹 1)二叉樹 2)遍歷二叉樹: 前序(先中間,再左邊,後右邊) 中序(先左邊,再中間,後右邊) 後序(先左邊,再右邊,後中間) 3)線索二叉樹:用二插連結串列實現的二叉樹,將那些沒有使用的左右指標指向前驅和後繼(前驅和後繼就是遍歷後(例如

pandas小記:pandas資料結構和基本操作

pandas的資料 結構:Series、DataFrame、索引物件 pandas基本功能:重新索引,丟棄指定軸上的項,索引、選取和過濾,算術運算和資料對齊,函式應用和對映,排序和排名,帶有重複值的軸索引 Pandas介紹 pandas含有使資料分析工作變得更快更簡單

資料分析之Pandas——資料結構

資料結構介紹 Pandas的資料物件中都包含最基本的屬性,如資料型別,索引,標籤等。 要使用Pandas的資料結構首先需要引入pandas和numpy: In [1]: import numpy as np In [2]: import pandas

pandas資料結構資料讀寫

1.資料結構Series類似python的字典。建立:pandas.Series([1,2,3,4,5], index=['a','b','c','f','e'])    #Index相當於字典的key pandas.Series ( {'a':5} )    #用字典建立物

Pandas資料結構

import pandas as pdimport numpy as np # np.arange(10) np.random.rand np.array([]) zerios  ones empty identity\n",arr = np.arange(10)print(

Redis資料結構介紹

相比於memcache 作為快取服務,redis 提供了更為豐富的資料結構:String, List,Set,SortedSet,

python演算法與資料結構-演算法和資料結構介紹(31)

一、演算法和資料結構 什麼是演算法和資料結構?如果將最終寫好執行的程式比作戰場,我們程式設計師便是指揮作戰的將軍,而我們所寫的程式碼便是士兵和武器。 那麼資料結構和演算法是什麼?答曰:兵法!故,資料結構和演算法是一名程式開發人員的必備基本功,不是一朝一夕就能練成絕世高手的。冰凍三尺非一日之寒,需要我們平時

資料結構 Roaring Bitmaps 介紹

背景:   BitMap 是一種比較常用的資料機構,點陣圖索引被廣泛應用與資料庫和搜尋引擎中,能快速定位一個數值是否在存在,是一種高效的資料壓縮演算法,能顯著加快查詢速度。但是BitMap還是會佔用大量記憶體(線性增長),所以我們一般還需要對BitMap進行壓縮處理。Roaring BitMaps (簡稱R

pandas庫簡介(1)--pandas的三種資料結構

/****************持續更新中**************************/ pandas有三種資料結構形式,分別是Series,DataFrame和索引物件。 1.Series Series和一維陣列很像,只是它的每一個值都有一個索引,輸出顯示時索引在左,值在右。