Table of Contents:
- 讀檔: read_csv/json/excel/html/clipboard/sql
- DataFrame繪圖: 折線圖/柱狀圖/直方圖…
- DataFrame特殊技巧: style/sample.set_option…
讀檔
pd.read_csv()
chunksize
: 決定一次要讀進幾列,避免檔案太大encoding
: 編碼nrows
: 讀幾列進來
1 | df = pd.read_csv('本地檔案' or '網路url', chunksize=N ,encoding='utf-8',nrows=4) |
pd.read_json()
pd.read_excel()
pd.read_html()
pd.read_clipboard()
複製Excel、Google Sheet或是網頁上的表格,將剪貼簿內容轉換成DataFrame
1 | step1. 複製Excel、Google Sheet或是網頁上的表格 |
pd.read_sql()
sql
: SQL語法con
: 連接SQL數據庫的engine, 常見有sqlalchemy
或pymysql
或pyodbc
index_col
: 選擇某一列作為indexcoerce_float
: 將數字型態的string以float讀入
<p.s> df.tosql()
1 | df_new.to_sql(tblName, con=engine, if_exists='replace',dtype={col_name: sqlalchemy.types.NVARCHAR for col_name in df_new},index=False) |
dtype在函式裡定義比較不會有編碼問題。
繪圖
Pandas有以下類型的圖可以繪製
1 | 折線圖 df.plot() |
DataFrame特殊技巧
pd.util.testing
隨機建立DataFrame
1 | pd.util.testing.makeDataFrame().head(5) |
1 | pd.util.testing.makeCustomDataframe(5,3) |
DataFrame. info(memory_usage=”deep”)
查看DataFrame的記憶體使用量
<p.s> 將已知分類的欄位資料型態轉為category
較省記憶體空間
1 | dtypes = {"已知分類欄位名稱": "category"} // 轉成catogory較省記憶體 |
pd.set_option()
把某些顯示設定套用到所有DataFrames
1. DataFrame顯示所有欄位
1 | pd.set_option("display.max_columns", None) |
2. 改變DataFrame欄位的寬度
1 | pd.set_option("display.max_colwidth", N) // N = -1 代表全顯示 |
3. 改變浮點數(float)顯示位數
1 | pd.set_option("display.precision", N) |
4. 重設
1 | pd.reset_option("all") |
DataFrame.style
不想改全部的DataFrame, 僅客製化某些欄位
1 | (demo.style |
DataFrame.sample(frac, random_state)
將DataFrame隨機切成兩個子集
常用於機器學習中的train,test切分
1 | df_train = demo.sample(frac=0.8, random_state=5566) |
DataFrame.value_counts(欄位)
預設會把某欄位裡的值依據頻率高到低排列
1 | display(demo['Age'].value_counts().head(5).reset_index()) |
df.describe()
一行描述數值欄位(最小值、最大值、平均和中位數…)
1 | demo.describe() |
tqdm進度條
DataFrame.progress_apply()
1 | from tqdm import tqdm_notebook |
swifter加速數據處理
DataFrame.swifter.apply()
最有效率的方式執行
apply
函式
1 | import swifter |