1. 程式人生 > >pandas---Series基礎使用

pandas---Series基礎使用

匯入pandas

import numpy as np
import pandas as pd
from pandas import Series,DataFrame

pandas基本資料結構

  1. pandas中主要有兩種資料結構,分別是:Series和DataFrame。
  2. Series:一種類似於一維陣列的物件,是由一組資料(各種NumPy資料型別)以及一組與之相關的資料標籤(即索引)組成。僅有一組資料也可以產生簡單的Series物件。注意:Series中的索引值是可以重複的。
  3. DataFrame:一個表格型的資料結構,包含有一組有序的列,每列可以是不同的值型別(數值,字串,布林型等),DataFrame即有行索引也有列索引,可以被看做是由Series組成的字典。

Series的建立方式

  1. 通過一維陣列去建立

    arr = np.array([1,2,3,4])
    ser1 = Series(arr)
    ser1.values #獲得值組成的一維陣列
    ser1.index #獲得索引值的描述,start,stop,step
    ser1.index=['a', 'b','c','d'] #更改索引值
    ser1['b'] # 索引形式獲取某值
    ser1[1] # 下標形式獲取某值
  2. 直接建立series陣列

    ser2 = Series([99,100,98,10],index=['a', 'b','c','d'])
    ser22 = Series(data=[89
    ,87,86],dtype=np.float64,index=[u'數學',u'語文',u'英語'])
  3. 通過字典形式建立

    dict1 = {'a':1,'b':2,'c':3,'d':4}
    ser3 = Series(dict1) # 字典的鍵對應ser的索引,字典的值對應ser的資料

注意:

     1. 索引可以建立時賦值,也可以後期賦值
     2. 索引可以重複,下標不能重複
     3. 字典本身鍵和值有對應關係,字典的鍵不能重複

Series值的獲取

  1. Series值的獲取主要有以下兩種方式:
    1.通過方括號+索引的方式讀取對應的索引的資料,有可能返回多條資料
    2. 通過方括號+下標
    的方式讀取對應的下標值的資料,下標值取值的範圍為:[0,len(Series.values)];另外下標值也可以是負數,表示從右往左獲取資料
  2. Series獲取多個值的方式樂視NumPy中的ndarray的切片操作,通過方括號+下標值/索引值+冒號(:)的形式來擷取series物件中的一部分資料
    注意:
    在獲取多個值的時候,
    通過下標形式加冒號獲取,和切片一樣是左閉右開區間,
    通過索引值加冒號獲取,是獲取一個完全閉合區間值

Series的運算

  1. NumPy中的陣列運算,在Series中都保留了,均可以使用,並且Series進行陣列運算的時候,索引與值之間的對映關係不會發生改變。
  2. 注意:其實在操作Series的時候,基本上可以把Series看出NumPy中的ndarray陣列來進行操作。ndarray陣列的絕大多數操作都可以應用到Series上。
ser3+1
ser3-100
ser3*100
ser3/100
ser3%100
ser3//100
np.abs(ser3) ## numpy中的通用函式在Series中是支援的

Series缺失值檢測

  1. 定義新的索引值時,對於不存在的索引和存在的索引的預設補齊操作

    ss = Series({'a':1,'b':2,'c':3,'d':4,'e':5})
    ss_index = ['a','bb','cc','d','e','f','g','h','i']
    ss_new = Series(ss,index=ss_index)
    a     1.0
    bb    NaN
    cc    NaN
    d     4.0
    e     5.0
    f     NaN
    g     NaN
    h     NaN
    i     NaN
    dtype: float64
    

    注意:自動對齊:鍵值關係不會發生改變。如果鍵無法對應,返回NaN值填充

  2. 對陣列中的NaN值過濾

    
    ##過濾NaN值
    
    pd.isnull(ss_new) #返回布林值的陣列,NaN 返回True
    pd.notnull(ss_new) #返回布林值的陣列 Not NaN 返回True
    ss_new[pd.notnull(ss_new)]
    注意:pandas中的isnull和notnull兩個函式可以用於在Series中檢測缺失值,這兩個函式的返回值時一個布林型別的Series
    
  3. 兩個預設補齊的陣列相互操作時,按照索引對應關係進行操作

    s1 = Series([1,2,3],index=['a','b','c'])
    s2 = Series([10,20,30],index=['b','a','c','d'])
    s1 + s2

    注意:按照索引的形式找到與之相匹配的資料進行對應操作

Series別名

  1. name屬性
s1.name=u'價格' ## 資料名稱標籤
s1.index.name=u'產品' ## 索引名稱標籤

本文來自北風網的學習總結