pandas學習——pandas的基本使用方式(未完成)
一、為什麼要學習pandas
在numpy中,numpy只能處理數值型的資料,但是當遇到字元型,列表型甚至更多型別的資料時,numpy還是遠遠不夠的,需要更強大的功能來提供幫助。
尤其是在時間序列方面,pandas也提供了更有力的幫助。
所以,pandas能夠幫助我們處理數值型別之外的資料。
pandas的官方文件點選此處
當遇到解決不了的問題或者未知方法時,可以參考官方文件的介紹,尋找更多幫助
二、如何安裝pandas
1.pip安裝
可以通過使用pip install pandas
命令安裝,當然在安裝時容易出現環境不適配的問題,可以通過下載whl檔案安裝。
whl可以從pypi上下載,也可以通過網站
2.anaconda
強烈推薦的是ananconda安裝,集合了幾百個常用庫,方便快捷,擴充套件起來第三方庫也是直接使用命令conda install
package,用起來也非常方便。
三、pandas常用的使用方法
1.Series建立
Series是pandas中常用的一維、帶標籤的陣列。
什麼是帶標籤?
即每個資料都有對應的識別標籤,可以理解為ID
舉個栗子:
import numpy as np import pandas as pd t = pd.Series(np.arange(10)) print(t)0 0 >>>1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 dtype: int32 #得到輸出的結果
由此可以看到,每個數都對應了一個序號。
如何指定索引?
在Series中,建立Series可以通過新增index引數來指定索引,例:
#注意,索引的數量需要和資料的數量一致,但並沒有要求不同
t = pd.Series(np.arange(10),index=list(string.ascii_uppercase[:10]))
print(t)
>>>A 0
B 1
C 2
D 3
E 4
F 5
G 6
H 7
I 8
J 9
dtype: int32
通過字典建立Series
在pandas中,是可以通過匯入字典來建立Series的,如下例:
dict_test = {"name":"xiaohong",
"age":100,
"tel":110,
"class":"No.1"}
t = pd.Series(dict_test)
print(t)
>>>age 100
class No.1
name xiaohong
tel 110
dtype: object
#說明一下,使用字典建立時Series會根據ASCII自動將key排序,因此就可以通過數字索引來取到對應的值
Series的切片及索引
與其他資料類似,Series是同樣具有切片和索引功能的
索引使用方法
Series中,既可以通過"key":“value”的方式獲取資料,又可以通過t[n]的方式獲取資料,例如:
dict_test = {"name":"xiaohong",
"age":100,
"tel":110,
"class":"No.1"}
t = pd.Series(dict_test)
>>>t[0]
>100
>>>t["name"]
>xiaohong
Series的index和value屬性
Series同樣具有index屬性,因為在生成式自動排序了,因此index屬性也是會有的
value屬性對應於index屬性,可以根據index查詢到value,也可以將value全部顯示出來
dict_test = {"name":"xiaohong",
"age":100,
"tel":110,
"class":"No.1"}
t = pd.Series(dict_test)
print(a.index)
print(a.values)
>>>Index(['age', 'class', 'name', 'tel'], dtype='object')
[100 'No.1' 'xiaohong' 110]
#通過此種方式獲取了index和value,當然,這種取value的方法是單獨排序的,沒有按照index的順序
2.pandas讀取csv檔案
在pandas中,有專門讀取csv檔案的方法,為read_csv
使用方法pd.read_csv(csv檔案路徑)
但是在pandas中,不僅僅只提供了csv的讀取方法,同時提供了相對來說比較強大的檔案讀取方法,在這裡就不過多贅述
具體有哪些可以通過pd的read來檢視(可以用來直接讀資料庫的內容哦,需要傳SQL語句和連結兩個引數)
3.DataFrame資料型別
在pandas中,還有一種常用的資料型別DataFrame,其主要功能是針對二維資料的處理,同時也是Series的容器。
同樣,舉個栗子:
a = pd.DataFrame(np.arange(20).reshape(4,5))
print(a)
>>>
0 1 2 3 4
0 0 1 2 3 4
1 5 6 7 8 9
2 10 11 12 13 14
3 15 16 17 18 19
#我們可以看到,在陣列生成以後,使用DataFrame格式化資料,可以使橫向和縱向同時有了索引
如何給DataFrame的資料設定索引
在建立DataFrame時,可以通過增加兩個引數,分別是index和columns,實質上使類似與資料庫中的表結構的,方法與設定Series時相同,只是多了一個引數。
通過傳入dict資料生成DataFrmae
#使用dict資料傳入,key就成為了columns,value的list中的index就會按照順序變為DataFrame的index
dict_use = {"name":["xiaohong","xiaoming"],
"age":[15,16],
"tel":[110,120],}
t = pd.DataFrame(dict_use)
print(t)
>>>
age name tel
0 15 xiaohong 110
1 16 xiaoming 120
通過傳入list資料生成DataFrame
#使用list資料傳入,在list中的每個值都使用dict
list_use = [{"name":"xiaohong","age":15,"tel":110},{"name":"xiaoming","age":16,"tel":120}]
t = pd.DataFrame(list_use)
print(t)
>>>
age name tel
0 15 xiaohong 110
1 16 xiaoming 120
#得到了相同的效果