【Python教學】1.Pandas基礎
🚩 Pandas基礎
Pandas提供兩種主要的資料結構Series、DataFrame。
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的資料進行更動,可以選擇將該筆資料刪除,或是補上資料。
- 將有該column有nan的資料刪除
select_df.dropna()
2. 將nan補0
select_df.fillna(0)