測試環境為 CentOS 8 (虛擬機)
參考資料 – https://ithelp.ithome.com.tw/articles/10251663
Pandas 二維陣列 (資料類似 Excel 或是 RDBMS 關聯式資料庫) 常用的資料存取與 iloc, loc , ix 函數
安裝所需模組
[root@localhost ~]# pip install pandas
匯入模組
[root@localhost ~]# python3 Python 3.6.8 (default, Sep 10 2021, 09:13:53) [GCC 8.5.0 20210514 (Red Hat 8.5.0-3)] on linux Type "help", "copyright", "credits" or "license" for more information. >>> import pandas as pd
從網路抓的資料大多是 JSON 格式,下面就以此為範例.
>>> data = pd.DataFrame({ "Chinese": { "Ben": 68, "Alex": 86, "Jeff": 57 }, "English": { "Ben": 63, "Alex": 92, "Jeff": 83 }, "Math": { "Ben": 65, "Alex": 89, "Jeff": 77 } })
>>> data Chinese English Math Ben 68 63 65 Alex 86 92 89 Jeff 57 83 77
常用的資料存取
以下是常用取得 DataFrame 資料的方式.
- 使用欄位名稱取值
DataFrame[“欄位名稱”]>>> data["Chinese"] Ben 68 Alex 86 Jeff 57
或是
>>> data.Chinese Ben 68 Alex 86 Jeff 57 Name: Chinese, dtype: int64
DataFrame[[“欄位名稱1″,”欄位名稱2”]] , 須注意傳入值須為陣列 [] .
>>> data[["Chinese","English"]] Chinese English Ben 68 63 Alex 86 92 Jeff 57 83
- 條件式搜尋
DataFrame[“欄位名稱”] 條件式>>> data["Chinese"] > 60 Ben True Alex True Jeff False Name: Chinese, dtype: bool
>>> data[data["Chinese"] > 60] Chinese English Math Ben 68 63 65 Alex 86 92 89
或是
>>> data[data.Chinese > 60] Chinese English Math Ben 68 63 65 Alex 86 92 89
多條件時
>>> data[(data.Chinese > 60) & (data.English>80)] Chinese English Math Alex 86 92 89
如果要找出空值時,需使用 isnull() 函數(回傳 True 為 NULL , False 則非)
>>> data["Chinese"].isnull() Ben False Alex False Jeff False
可以找出是 null 的資料,我的資料是沒有 null.
>>> data[data["Chinese"].isnull()] Empty DataFrame Columns: [Chinese, English, Math] Index: []
- DataFrame[“欄位名稱”].values
DataFrame[“欄位名稱”].values , 回傳值為陣列.>>> data["Chinese"].values array([68, 86, 57])
DataFrame.values[索引位置]
>>> data.values[1] array([86, 92, 89]) >>> data.values[2] array([57, 83, 77]) >>> data.values[0] array([68, 63, 65])
- DataFrame.columns
DataFrame.columns 看欄位名稱>>> data.columns Index(['Chinese', 'English', 'Math'], dtype='object')
- DataFrame.index
DataFrame.index 看 index>>> data.index Index(['Ben', 'Alex', 'Jeff'], dtype='object')
iloc, loc , ix 函數
- loc 使用名稱取值
DataFrame.loc[“索引名稱”, “欄位名稱”]
只指定 索引名稱
>>> data.loc["Ben"] Chinese 68 English 63 Math 65 Name: Ben, dtype: int64
指定 索引名稱+欄位名稱
>>> data.loc["Ben","Chinese"] 68
可用 : 表示全部.
>>> data.loc[:,:] Chinese English Math Ben 68 63 65 Alex 86 92 89 Jeff 57 83 77
指定條件式
>>> data.loc[data.Chinese > 60, ["Chinese"]] Chinese Ben 68 Alex 86
>>> data.loc[data.Chinese > 60, :] Chinese English Math Ben 68 63 65 Alex 86 92 89
- iloc使用數值取值
使用數字為 index 來取值. DataFrame.loc[“索引數字”, “欄位數字”]
索引,欄位數字都是從 0 開始.
指定索引數字
>>> data.iloc[0] Chinese 68 English 63 Math 65 Name: Ben, dtype: int64
>>> data.iloc[:2] Chinese English Math Ben 68 63 65 Alex 86 92 89
指定索引與 欄位數字
>>> data.iloc[:,0] Ben 68 Alex 86 Jeff 57 Name: Chinese, dtype: int64
>>> data.iloc[:,:2] Chinese English Ben 68 63 Alex 86 92 Jeff 57 83
>>> data.iloc[1,1] 92
沒有解決問題,試試搜尋本站其他內容