pandas的數據結構之Series

pandas有兩個很重要的的數據結構:Series和DataFrame,今天先學習Series的用法。

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

例如:

從結果可以看出Series的字元串表現形式為:索引在左邊,值在右邊。在上面的例子中我並沒有為數據指定具體索引,它會自動創建一個0到N-1(N為數據的長度)的整數型索引。

還可以通過Series的values和index屬性獲取數組的表示形式和索引對象:

創建Series帶有一個可以對各個數據點進行標記的索引:

通過索引的方式選取Series中的單個或一組值:

NumPy數組運算(如根據布爾型數組進行過濾、標量乘法、應用數學函數等)都會保留索引和值之間的鏈接:

可以把Series看成一個有定長的有序字典,因為它是索引值到數據值的一個映射。

如果數據被存放在一個Python字典中,可以直接通過這個字典來創建Series。下面以2016年年末四個省常住人口(萬)為例:

如果只傳入一個字典,則結果Series中的索引就是原字典的鍵(有序排列):

在上面的例子中,province中與provinces索引相匹配的3個值會被找出來並放到相對應的位置上,但是我給的"Hainan"在province中找不到,所以其結果為NaN(即「非數字」(not a number),在pandas中,它用於表示缺失或NA值)。

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

Series也有類似的實例方法:

Series最重要的一個功能是:它在算術運算中會自動對齊不同索引的數據。

例如:

Series對象本身及其索引都有一個name屬性:

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

附源碼:

# coding: utf-8

# In[1]:

import pandas as pd

from pandas import Series,DataFrame

obj = Series([5,9,2,-8])

print obj

# In[2]:

print obj.values

# In[3]:

print obj.index

# In[4]:

obj2 = Series([6,-1,7,3],index=[a,b,c,d])

print obj2

# In[5]:

# 通過索引查找具體值

print obj2[b]

# In[6]:

# 替換值

obj2[a] = -5

print obj2

# In[7]:

# 通過索引查找一組值

print obj2[[a,b,c]]

# In[8]:

print obj2

# In[9]:

# 查找大於0的值

print obj2[obj2 > 0]

# In[10]:

# 數組標量乘法

print obj2 * 2

# In[11]:

# 返回 e(自然對數的底)的冪次方

import numpy as np

e = np.exp(obj2)

print e

# In[12]:

d in obj2

# In[13]:

e in obj2

# In[14]:

# Series與字典的用法

province = {Guangdong:10999,Shandong:9946.64,Sichuan:8262,Henan:9532.42}

obj3 = Series(province)

print obj3

# In[15]:

provinces = [Hainan,Guangdong,Shandong,Sichuan]

obj4 = Series(province,index=provinces)

print obj4

# In[16]:

# 檢測缺失數據

pd.isnull(obj4)

# In[17]:

# 檢測不缺失的數據

pd.notnull(obj4)

# In[18]:

# Series檢測缺失數據

obj4.isnull()

# In[19]:

print obj3

# In[20]:

print obj4

# In[21]:

# Series自動對齊不同索引數據

print (obj3 + obj4)

# In[22]:

# Series對象本身及其索引的name屬性

obj4.name = population

obj4.index.name = province

print obj4

# In[23]:

print obj

# In[24]:

# 通過賦值修改Series的索引

obj.index = [Bob,Steve,Jeff,Ryan]

print obj


推薦閱讀:

基於bs4庫的HTML內容查找方法
哈哈哈 -- 哈?10分鐘入門pandas!
新學python,編寫helloword.py提示無效語法。?
Python的靜態方法和類成員方法

TAG:Python | numpy | 数据分析 |