# 資料D8~9:Pandas 物件的定義與屬性/建立 https://pandas.pydata.org/ 對於資料的操作調整的Python的函式庫 * 提供了快速高效的 DataFrame 結構( * 廣泛地在學術傑與商業領域中使用 * 對於資料格式有高度的銜接性,包含 CSV、Excel 或資料庫(SQL)皆能提供彈性的讀寫工具 Numpy陣列:數學矩陣角度 Pandas:資料處理角度 import pandas as pd ## 主要架構: Series / DataFrame ![](https://i.imgur.com/Tz7mF5p.png) ### Series及其屬性 Series: 索引+一欄資料(一個欄位) 可直接用欄位內容建立 ``` s = pd.Series([1, 2, 3]) print(type(s)) # <class 'pandas.core.series.Series'> print(s.shape) # (3, ) print(s.size) # 3 print(s.dtype) # int64 ``` ### DataFrame及其屬性 DataFrame: 索引+多欄資料(多個欄位共用同一個索引) (很多共用索引的series構成) (以下為只有一欄的DataFrame) ``` df = pd.DataFrame([1, 2, 3]) print(type(df)) # <class 'pandas.core.frame.DataFrame'> print(df.shape) # (3, 1) print(df.size) # 3 print(df.dtypes) # 0 int64 # dtype: object ``` df.shape (列數,行數) df.size 總資料數 df.values 用list的形式將每列資料列出(list內的有list) df.index 列出index形式但不會直接列出,如RangeIndex(start=0, stop=10, step=1) 或 Index(['A', 'B', 'C'], dtype='object' df.colums 用list形式列出所有欄位名稱但不會直接列出,如 Index(['A', 'B', 'C'], dtype='object' df.dtypes 會列出各欄位的type type(df) <class 'pandas.core.frame.DataFrame'> len(df) 列數 https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.html ![](https://i.imgur.com/57xALvh.png) ### DataFrame的查看 DataFrame名稱.head(n) 列出前n列,不輸入則為5 DataFrame名稱.tail(n) 列出後n列,不輸入則為5 DataFrame名稱.describe() 列出各欄位的基本統計資訊 DataFrame名稱.info() 列出各欄位型態以及記憶體等資訊 ## DataFrame建立 ### Series pd.series([... ... ...]) pd.series(list物件) 若要設定index(每列的名稱)則在後方加入 ,index=[....] 內容的數量必須等於list物件內容的數量 (裡面可以是任何型態的資料) Series無法設定colunm名稱 在jupyter裡面打 series名稱或print(series名稱) 都會得到一樣結果 ![](https://i.imgur.com/1pUvECv.png) ## DataFrame pd.DataFrame(list1,list2....) 則會依著每個list是一列的方式呈現 ,index=[....] 設定索引名稱 ,column=[....] 設定欄位名稱 欄位可以只有一個 在jupyter裡面打 DataFrame名稱與print(DataFrame) 會得到不一樣結果,後者會美化 ![](https://i.imgur.com/eBSBYbf.png) DataFrame名稱["欄位名稱"] 可叫出該series ## 由list/dic混合資料建立 pandas可以彈性轉換,可以直接試試看再調整 ``` import pandas as pd df = pd.DataFrame({ 'Name': ['Alice', 'Bob'], 'Age': [18, 20], }) print(df) # Name Age # 0 Alice 18 # 1 Bob 20 ``` ``` df = pd.DataFrame([ {'Name': 'Alice', 'Age': 18}, {'Name': 'Bob', 'Age': 20} ]) print(df) # Name Age # 0 Alice 18 # 1 Bob 20 ``` ![](https://i.imgur.com/OcVywwc.png) 其餘教學資料 https://oranwind.org/python-pandas-ji-chu-jiao-xue/ https://www.geeksforgeeks.org/creating-a-pandas-dataframe/ ** 若要遍搜某個series的特定值(重複的不管),可用 `for i in set(df[column])` 搭配 df[df[column]==i]表示撈出是i的列 後面再加[column2]叫出另一欄的值 ###### tags: `資料科學馬拉松` `python`