1. 程式人生 > >pandas學習——pandas的基本使用方式(未完成)

pandas學習——pandas的基本使用方式(未完成)

一、為什麼要學習pandas

在numpy中,numpy只能處理數值型的資料,但是當遇到字元型,列表型甚至更多型別的資料時,numpy還是遠遠不夠的,需要更強大的功能來提供幫助。
尤其是在時間序列方面,pandas也提供了更有力的幫助。
所以,pandas能夠幫助我們處理數值型別之外的資料。
pandas的官方文件點選此處
當遇到解決不了的問題或者未知方法時,可以參考官方文件的介紹,尋找更多幫助

二、如何安裝pandas

1.pip安裝

可以通過使用pip install pandas 命令安裝,當然在安裝時容易出現環境不適配的問題,可以通過下載whl檔案安裝。
whl可以從pypi上下載,也可以通過網站

點選此處進行下載,並通過pip命令安裝

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
#得到了相同的效果