此为历史版本和 IPFS 入口查阅区,回到作品页
coletangsy
IPFS 指纹 这是什么

作品指纹

【學習記錄 | 本週總結】 Week 23 - 練習練習再練習、數據清洗

coletangsy
·
·
Numpy, Pandas, and now, is time to Data Cleaning!

封面圖片還是來自我很喜歡的 Visual Artist @ evieshaffer


本週總結

  1. Python pandas exercises (完成)
  2. Python numpy exercises (進行中)
  3. 需要了解更多 Web scraping, regex




內容及反思

Python exercises 

按著上一週的計畫,在寫本篇前算是完成了整份Pandas exercises,說是「算是完成」,是因為練習的確做完,但我還沒把重點單獨整理出來。如果沒有把重點整理出來,學習到的內容最後也很容易隨著完成了的練習,被放到一邊然後忘掉。所以明天得抽出時間,先暫停其他,把這項放到最優先的次序。

在完成 Pandas 的練習後,我又在 github上找了兩套關於Numpy 的練習來做,分別是 rougier/numpy-100Kyubyong/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

亦參考了馬特市另一位居民 @為自己CodingRegex 詳細教學,獲益良多。



統計知識補充中

雖然之前在Coursera 上旁聽了 Data Science Math Skills 這個課程,但還是感覺自己的統計方面知識還很不足。在同學的推薦下,現在每天完成幾段 StatQuest with Josh Starmer - YouTube 的統計有關影片,這個系列的影片例子講解挺詳盡,節奏亦很好,可以一邊聽一邊記筆記。下一步是將這部分的知識應用到實際分析中。只有多練習,實際運用過,才不會忘記這些知識。




新一週目標 (Week 24)

  1. 完成 Python Numpy Exercise (剩下 部分)
  2. 完成 Web-scraping Project
  3. Google Capstone Project (in R) 完成 R coding 部分 (之前的未完成任務)
    (有時間的話,同一份用 Python 再做一次。)




題外話

  1. 以前習慣開蓍 Spotify 播著Lo-Fi Beats 學習,最近喜歡上開蓍 Twitch ,播著實況主玩AmongUs 討論聲音做練習。然後其實都沒在聽AmongUs 的內容。
  2. 這次我提早一天,把本篇的大概勾畫出來,所以沒像上週一樣,完成記錄就累到崩潰 (嗎?)
  3. 我很喜歡這位 Visual Artist ,以前用過她其中一張作品作為素材,在一份我個人很滿意的(算是)設計上。啊,我好像要多學習一點 PhotoshopFigma(已經收藏了好幾份教學)。
  4. 最近算是「重操舊業」,翻譯了一些網友評論,「重操舊業」這件事本身很有趣,但是實際上沒甚麼意義。
CC BY-NC-ND 2.0 授权