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,DataFrameobj = Series([5,9,2,-8])print obj# In[2]:print obj.values# In[3]:# 通過索引查找具體值
print obj2[b]# In[6]:# 替換值obj2[a] = -5print obj2# In[7]:# 查找大於0的值
print obj2[obj2 > 0]# In[10]:# 數組標量乘法print obj2 * 2# In[11]:# 返回 e(自然對數的底)的冪次方
import numpy as npe = 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 = populationobj4.index.name = provinceprint obj4# In[23]:print obj# In[24]:# 通過賦值修改Series的索引obj.index = [Bob,Steve,Jeff,Ryan]print obj推薦閱讀:
※基於bs4庫的HTML內容查找方法
※哈哈哈 -- 哈?10分鐘入門pandas!
※新學python,編寫helloword.py提示無效語法。?
※Python的靜態方法和類成員方法