1. 程式人生 > 實用技巧 >CSP-S 2020 T3函式呼叫

CSP-S 2020 T3函式呼叫

目錄

PANDAS

1. Pandas簡介

為什麼要學習pandas

numpy已經能夠幫助我們處理資料,能夠結合matplotlib解決我們分析資料的問題,那麼學習pandas的目的在什麼地方呢?
numpy 能夠幫助我們處理數值型資料,但是還不夠,很多時候,餓哦們的資料除了數值以外,還有字串,還有時間序列等
比如: 我們通過爬蟲獲取到了儲存在資料庫中的資料
所以,numpy能夠幫助我們處理數值,但是Pandas除了處理數值之外(基於Numpy),還能夠幫助我們處理其他型別的資料

  • pandas常用資料型別有兩種
    • Series一維,帶標籤陣列
    • Dataframe二維,Series容器
1.1 pandas建立Series

pandas之 Series建立 ,pandas建立一維陣列:

In [1]: import pandas as pd 
In [2]: pd.Series([1,2,54,28,99])
Out[2]: 0     1    # 左側是其索引
        1     2
        2    54
        3    28
        4    99
        dtype: int64
# index指定其索引,可以通過list建立
In [3]: pd.Series([1,2,54,28,99],index=list("abcde"))
Out[3]: a     1
        b     2
        c    54
        d    28
        e    99
        dtype: int64
In [8]: a = {string.ascii_uppercase[i]:i for i in range(5)} 
In [9]: a        # 字典式建立 :左右是鍵值
Out[9]: {'A': 0, 'B': 1, 'C': 2, 'D': 3, 'E': 4}
In [10]: pd.Series(a)  #通過字典建立Series,字典鍵值就是Series鍵值
Out[10]: A    0
         B    1
         C    2
         D    3
         E    4
         dtype: int64
In [11]: pd.Series(a,index=list(string.ascii_uppercase[5:15]))
Out[11]: F   NaN       # 建立大寫的A到Z,取5:15封裝為list,將此list作為索引
         G   NaN    # 重新制定其他索引,如果能夠對應上,就取其值,如果不能,就為nan
         H   NaN
         I   NaN
         J   NaN
         K   NaN
         L   NaN
         M   NaN
         N   NaN
         O   NaN
         dtype: float64
In [12]: pd.Series(a,index=list(string.ascii_uppercase[0:5]))
Out[12]: A    0            # 重新制定其他索引,如果能夠對應上,就取其值,如果不能,就為nan
         B    1
         C    2
         D    3
         E    4
         dtype: int64
In [13]: pd.Series(a,index=list(string.ascii_uppercase[2:7]))
Out[13]: C    2.0           # 重新制定其他索引,如果能夠對應上,就取其值,如果不能,就為nan
         D    3.0
         E    4.0
         F    NaN
         G    NaN
         dtype: float64  #這裡為什麼為float型別,因為Numpy中的nan就是float型別
In [5]: temp_dict = {"name":"xiaohong","age":18,"tel":10086} 
In [6]: pd.Series(temp_dict)   # 通過字典建立索引
Out[6]: name    xiaohong
        age           18
        tel        10086
        dtype: object
In [1]: import pandas as pd 
In [2]: import numpy as np
In [3]: import string            # index是設定其索引,將其設定為大寫的string,取10個,A到J
In [4]: t = pd.Series(np.arange(10), index=list(string.ascii_uppercase[:10])) 
In [5]: t                        # string.ascii_upercase是A到Z的字串
Out[5]: A    0
        B    1
        C    2
        D    3
        E    4
        F    5
        G    6
        H    7
        I    8
        J    9
        dtype: int64
In [6]: type(t) 
Out[6]: pandas.core.series.Series

取值

In [13]: t3
Out[13]: name    xiaohong
         age           18
         tel        10086
         dtype: object
In [14]: t3["name"]
Out[14]: 'xiaohong'
In [15]: t3[0]
Out[15]: 'xiaohong'
In [19]: t3[:2] #取前兩行 
Out[19]: name    xiaohong
         age           18
         dtype: object
In [20]: t3[["age","tel"]] #不連續取兩行
Out[20]: age       18
         tel    10086
         dtype: object
In [23]: a = {string.ascii_uppercase[i]:i for i in range(5)} 
In [24]: a = pd.Series(a,index=list(string.ascii_uppercase[0:5])) 
In [25]: a   
Out[25]: A    0
         B    1
         C    2
         D    3
         E    4
         dtype: int64
In [26]: a[a>3] #取a>3的
Out[26]: E    4
         dtype: int64
In [79]: t = pd.Series(np.arange(10),index=list(string.ascii_uppercase[:10]))
In [80]: t                      
Out[80]: A    0                 In [81]: t[2:10:2] # 從2-9每隔兩個取一個數
         B    1                 Out[81]: C   2                
         C    2                          E   4                In [88]: t["F"] 
         D    3                          G   6                Out[88]: 5
         E    4                          I   8                In [89]: t[["A","F","G"]]
         F    5                          dtype: int64         Out[89]: A    0 
         G    6                 In [82]: t[1] --取第一個                 F    5
         H    7                 Out[82]: 1                             G    6  
         I    8                          dtype: int64                  dtype: int64  
         J    9                 In [85]: t[t>4] # 大於4的       
         dtype: int64           Out[85]: F    5                              
In [84]: t[[2,3,6]] --不連續取             G    6                         
Out[84]: C    2                          H    7                                                    
         D    3                          I    8         
         G    6                          J    9  
         dtype: int64                    dtype: int64   
1.2 pandas索引和值

取索引和值

In [31]: t3.index                                                               
Out[31]: Index(['name', 'age', 'tel'], dtype='object')
In [32]: t3.values                                                              
Out[32]: array(['xiaohong', 18, 10086], dtype=object)
In [33]: type(t3.index)                                                         
Out[33]: pandas.core.indexes.base.Index
In [34]: type(t3.values)                                                        
Out[34]: numpy.ndarray
In [35]: list(t3.index) # 轉為list                                              
Out[35]: ['name', 'age', 'tel']
In [47]: t.index
Out[47]: Index(['A','B','C','D','E','F','G','H','I','J'],dtype='object')
In [48]: t.values
Out[48]: array([0,1,2,3,4,5,6,7,8,9])
In [49]: type(t.index)
Out[49]: pandas.core.indexes.base.Index
In [53]: type(t.values)
Out[53]: numpy.ndarray

說明:Series物件本質上石油兩個陣列構成的,一個數組構成物件的鍵(index,索引),一個數組構成物件的值(values),鍵—>值
ndarry的很多方法都可以運用series型別,比如argmax,clip
series具有where方法,但是結果和ndarry不同,可以具體檢視官方文件 https://https