CSP-S 2020 T3函式呼叫
阿新 • • 發佈:2020-11-12
目錄
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