【Python教學】1.Pandas基礎

Neptune Li
Li-NInja
Published in
7 min readDec 18, 2019

--

🚩 Pandas基礎

Pandas提供兩種主要的資料結構SeriesDataFrame

Series是建立索引的一維陣列。

DataFrame是用來接收從資料庫讀取的資料,有列索引與欄標籤,由數個Series組合而成。

🚩【Series】

① 資料為 array

1. 首先要先引用pandas。

import pandas as pd

2. 並宣告一個list。

animals = [“dog”, “cat”, “horse”, “rabbit”, “dragon”]

3. 將list轉成pandas的series。

select = pd.Series(animals)

② 程式碼範例

③ 輸出結果

① 資料為 dictionary

1. 宣告一個字典,填入key以及值。

dict = { 
“animal1”: “dog”,
“animal2”: “cat”,
“animal3”: “horse”,
“animal4”: “rabbit”,
“animal5”: “dragon”
}

2. 將dict放入pandas的series,index使用dict的keys。

select = pd.Series(dict, index = dict.keys())

3. select[0]是抓取animals array當中,第一筆資料,輸出結果為dog。

select[0]

4. 在括弧內指定index ‘animal4’,會輸出其值rabbit。

select[‘animal4’]

5. 在括弧內指定第1、3、5筆資料,輸出資料。

select[[0 ,2 ,4]]

6. 在括弧內指定index name,輸出資料。

select[[‘animal1’ ,’animal3' ,’animal5']]

② 程式碼範例

③ 輸出結果

宣告單一資料

在index的地方,只要range填入數量,就可以產生相對應數量的list。

animals = “dog” 
select = pd.Series(animals, index = range(3))

② 程式碼範例

③ 輸出結果

🚩【DataFrame】

① 資料為array

宣告一個list,將list轉成DataFrame,並指定column名字。

sports = [ ["Baseball", 46]
,["TableTennis", 81]
,["Tennis", 12]
,["Archery",31]
,["Swimming",58]
,["Badminton",24]]
df = pd.DataFrame(sports, columns = ["sportName", "nums"])

② 程式碼範例

③ 輸出結果

① 資料為 dictionary

1. 先宣告兩個list,並將list放進字典裡面。

sports = [“Baseball”, “TableTennis”, “Tennis”, “Archery”, “Swimming”, “Badminton”] 
nums = [46 ,81 ,12 ,31 ,58 ,24]
dict = {
“sports”: sports
,”nums”: nums
}

2. 將dict轉成pandas的DataFrame。

select_df = pd.DataFrame(dict)

② 程式碼範例

③ 輸出結果

① DataFrame 的一些運算語法

運用iloc或是指定欄位名稱,得到該欄位的數字。

1. 回傳[列數,欄數]。

select_df.shape

2. 回傳此資料的統計。

select_df.describe()

3. 回傳資料內容。

select_df.info

4. 回傳前三筆資料。

select_df.head(3)

5. 回傳後三筆資料。

select_df.tail(3)

6. 回傳欄位名稱。

select_df.columns

7. 回傳index。

select_df.index

② 程式碼範例

③ 輸出結果

① 資料選擇與篩選的運用

運用iloc或是指定欄位名稱,得到該欄位的數字。

1. 選擇第三列第二欄,數量。

select_df.iloc[2 ,1]

2. 選擇第二列,運動名稱與數量。

select_df.iloc[0:1 ,:]

3. 各運動的數量。

select_df.iloc[: ,1]select_df[“nums”]select_df.nums

② 程式碼範例

③ 輸出結果

① 使用布林作資料篩選

運用loc、iloc拿出需要的資料作布林運算或是資料篩選。

1. 使用loc,先列出運動的數量。

select_df.loc[: ,”nums”]

2. 使用布林運算,列出數量>45的運動名稱、數量。

select_df[ select_df.loc[: ,”nums”]> 45]

3. 使用.iloc[: ,0],列出數量>45的運動名稱。

select_df[select_df.loc[: ,”nums”] > 45].iloc[: ,0]

4. 使用.iloc[: ,1]列出數量>45的數量。

select_df[select_df.loc[: ,”nums”] > 45].iloc[0 ,:]

② 程式碼範例

③ 輸出結果

① 排序

axis = 0是對row header做排序, axis = 1是對column header做排序。
ascending = True升冪,False降冪。

對index做排序:

select_df.sort_index(axis = 0 ,ascending = True)

指定欄位排序:

select_df.sort_values(by = ‘nums’ ,ascending = False)

② 程式碼範例

③ 輸出結果

① 缺少資料的處理

若是從資料庫或excel匯入的資料有殘缺,可以使用下列兩個方法來確認資料是否正確。

1. 如果值是nan,則為True

select_df.isnull()

2. 如果值不是nan,則為True

select_df.notnull()

若要對nan的資料進行更動,可以選擇將該筆資料刪除,或是補上資料。

  1. 將有該column有nan的資料刪除
select_df.dropna()

2. 將nan補0

select_df.fillna(0)

② 程式碼範例

③ 輸出結果

--

--