【學習記錄 | 本週總結】 Week 23 - 練習練習再練習、數據清洗
封面圖片還是來自我很喜歡的 Visual Artist @ evieshaffer
本週總結
- Python pandas exercises (完成)
- Python numpy exercises (進行中)
- 需要了解更多 Web scraping, regex
內容及反思
Python exercises
按著上一週的計畫,在寫本篇前算是完成了整份Pandas exercises,說是「算是完成」,是因為練習的確做完,但我還沒把重點單獨整理出來。如果沒有把重點整理出來,學習到的內容最後也很容易隨著完成了的練習,被放到一邊然後忘掉。所以明天得抽出時間,先暫停其他,把這項放到最優先的次序。
在完成 Pandas 的練習後,我又在 github上找了兩套關於Numpy 的練習來做,分別是 rougier/numpy-100 和 Kyubyong/numpy_exercises ,第一份就是如標題所名,100題Numpy,第二份算是以練習形式,帶你大概走一轉Numpy 的Documentation。
說起來我的次序其實好像沒有很對, Pandas 是建設在Numpy 的基礎上,按正常邏輯應該是先學Numpy 再學 Pandas。不過我已經由Pandas 開始,然後才學習Numpy,我當作是兩個一起學習,反正目前也沒有感受到,這個順序有給我帶來甚麼太大的影響。
Data Cleaning 小整理
這一週也看了一些以Python 進行 Data Cleaning 的步驟及相關的coding,這次想把一些在做練習時,覺得有用的方法稍作整理放在一起,也作為一個檢查清單、步驟,方便以後做Data Cleaning。
# 1. Import libraries
import pandas as pd import numpy as np import re
# 2. Import data (csv as example)
df = pd.read_csv("")
# 3. Check dataset size
df.shape df.head() df.duplicated()
# 4. Drop unnecessary data
# 4-1 drop duplicate rows df.drop_duplicates(inplace=True) # 4-2 drop unnecessary rows to_drop = ['column1','column2']) df.drop(to_drop, inplace=True, axis=1)
# 5. Assign new columns name, index
# 5-1 Assign new columns name from another csv d_new = pd.read_csv("") d_new = header.set_index('Name').to_dict() df.columns = df.columns.to_series().map(d['Label']) # 5-2 Assign new columns name from python dictionary d_new= {"old":"new"} df_df.rename(columns=d_new, inplace=True) # 5-3 Assign column as new index df["column"].is_unique df.set.index("column",inplace=True)
# 6. Clean the data format
# 6-1 Clean data through regex df["columns"].apply(lambda x : (re.search(r"pattern", x)).group()) # 6-2 Clean data through checking boolean values df["columns"] = np.where(df["columns"] == "A","X","Y" ) # 6-3 Convert the column to correct types df = df.astype({"columns1":"float64","columns2":"strings"})
# 7. Calculate statistical data for further plotting
# 7. Calculate statistical info. df.groupby("columns").agg(["mean","median"]) df.sort_values(by=["columns1","columns2"],ascending=False).head() df["columns3"].value_counts()
# 8. Plotting
# 8-1 Import libraries import seaborn as sns import matplotlib.pyplot as plt # set plot style sns.set_style('ticks') # create boxplot plt.figure(figsize=(10,15)) sns.boxplot(x="column1",y="column2",data=df) plt.title("Title of the plot") plt.show()
課外參考資料包括:
Pythonic Data Cleaning With Pandas and NumPy – Real Python
亦參考了馬特市另一位居民 @為自己Coding 的 Regex 詳細教學,獲益良多。
統計知識補充中
雖然之前在Coursera 上旁聽了 Data Science Math Skills 這個課程,但還是感覺自己的統計方面知識還很不足。在同學的推薦下,現在每天完成幾段 StatQuest with Josh Starmer - YouTube 的統計有關影片,這個系列的影片例子講解挺詳盡,節奏亦很好,可以一邊聽一邊記筆記。下一步是將這部分的知識應用到實際分析中。只有多練習,實際運用過,才不會忘記這些知識。
新一週目標 (Week 24)
- 完成 Python Numpy Exercise (剩下 部分)
- 完成 Web-scraping Project
- Google Capstone Project (in R) 完成 R coding 部分 (之前的未完成任務)
(有時間的話,同一份用 Python 再做一次。)
題外話
- 以前習慣開蓍 Spotify 播著Lo-Fi Beats 學習,最近喜歡上開蓍 Twitch ,播著實況主玩AmongUs 討論聲音做練習。然後其實都沒在聽AmongUs 的內容。
- 這次我提早一天,把本篇的大概勾畫出來,所以沒像上週一樣,完成記錄就累到崩潰 (嗎?)
- 我很喜歡這位 Visual Artist ,以前用過她其中一張作品作為素材,在一份我個人很滿意的(算是)設計上。啊,我好像要多學習一點 Photoshop,Figma(已經收藏了好幾份教學)。
- 最近算是「重操舊業」,翻譯了一些網友評論,「重操舊業」這件事本身很有趣,但是實際上沒甚麼意義。