###### tags: `NTU Master Thesis` # 資料前處理 以下講述論文中較重要的資料前處理方法,包括 Dataframe、統一時間格式、抓取特定時間區域內的資料等三項。若要看完整的前處理,可以見實驗室雲端資料中的 plot.ipynb 這個程式檔 ## Dataframe Dataframe 是 Pandas 的其中一種資料型態,也是資料處理中相當重要的知識點。將資料 (常常是 CSV ) 轉成 Dataframe 的格式後,有許多相對應的語法,能做增加、減少、刪除、最大最小值運算...等動作,比 Python 自帶的 List 好用許多。以下介紹 Dictionary 資料轉成 dataframe 的語法,pd.DataFrame ```python df = pd.DataFrame(Dictionnary_Type) df = pd.DataFrame({"A":List_Type_1, "B":List_Type_2}) ``` ## 統一時間格式 統一時間格式十分重要,能讓不同 VMSM 和 I2PDM 收到的資料能互相比較。為達成統一時間格式,可以利用 pandas 內建的函數,省下自己撰寫程式的時間。見下方程式碼,首先,要先將 CSV 檔案中的時間字串轉成 datetime 格式。接著,再用 groupby、Grouper 等函數或物件,將時間統一成每十分鐘一筆。值得注意的是,該統一方法是無條件捨去。譬如,10:15 和 10:11 的資料都會被歸類在 10:10 這個時間點。並且,若以 .mean() 來處理的話,最後呈現的資料值會是 10:15 和 10:11 的資料相加後除以二的結果值 ```python df['Time'] = pd.to_datetime(df.Time, format="%Y-%m-%d %H:%M:%S", errors = 'coerce') df.index = df['Time'] df = df.drop(columns=['Time']) df = df.groupby(pd.Grouper(freq='10min')).mean() df = df.asfreq(freq="10min") ``` ## 抓取特定時間區域內的資料 當資料轉成 dataframe 和 datatime 的格式後,能直接用下方程式碼,取得特定時間範圍內的資料 ```python df_new = df["2023-01-01":"2023-01-31"] ```
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up