《練習專案三:資料科學家的工具箱(二)》
中的 kaggle_survey.db
為基礎,並在後續分析過程中,根據實際需求逐步進行調整與清理,例如:正規化題目與選項、修正錯誤資訊、建立群組等。參考資料:資料分析的七個練習專案:累積個人作品集 由於程式碼較為複雜,此處不提供程式碼,有興趣的讀者可前往我的 GitHub 下載。
age
、salary
、ml_algo
),可作為資料欄位名稱對應的主鍵。這張表是我在準備分析時所建立的基礎對照表,幫助我統整不同年份的問卷題目。
分析完題目後,接下來需進一步清理資料並規劃分析用資料表,以提升後續分析效率與一致性。這樣能避免重複資料造成空間浪費,並透過正規化提升資料的一致性與可維護性。
欄位名稱標準化:將不同年份中命名不一致的欄位,統一修改為一致的名稱。
例如:「年齡」在 2022 年題號為
Q2
,2021 與 2020 年則為Q1
,最終統一命名為age
。
建立主鍵(Primary Key):重新編排 id,作為唯一識別資料表中每一筆紀錄的主鍵。
回覆資料標準化:統一處理不同年份在描述方式、選項數量或順序上的差異。這部分是我在整體清理流程中花費最多時間的階段。
drop_duplicates
對每道題目的回覆進行比對與清查,最後統一為一致的格式。例如:「使用的 IDE」中,發現有的年份選項為
Jupyter (JupyterLab, etc.)
,有的則為Jupyter Notebook
,實際意義相同,因此將前者統一修改為Jupyter Notebook
。
# 資料標準化函式。
def safe_replace(df, mask, column, mapping):
df.loc[mask, column] = df.loc[mask, column].replace(mapping)
return df
# 查看修改前的唯一值
response_df.loc[response_df['question_index'] == 'country', 'response'].drop_duplicates().tolist()
# 進行標準化
mapping = {'United States of America':'USA',
'United Kingdom of Great Britain and Northern Ireland':'UK',
'Hong Kong (S.A.R.)':'Hong Kong',
'Iran, Islamic Republic of...':'Iran',
'Viet Nam':'Vietnam',
'Republic of Korea':'South Korea'
}
response_df = safe_replace(response_df, response_df['question_index']=='country', 'response', mapping)
# 查看修改後的唯一值(驗證修改結果)
response_df.loc[response_df['question_index'] == 'country', 'response'].drop_duplicates().tolist()
salary
為文字,需要建立平均數和排序salary_rank、salary_mean。job_title
2022年,學生變成單獨一題 Q5
,發現並無學生是在職人員,因此決定直接將 2022 年的 Q5 合併到 job_title。job_title_group
、salary_group
count
、Python_SQL_group
、R_SQL_group
、Python_R_SQL_group
。0-999
→ 499.5
),便於進行統計或圖表排序。rank
、salary_mean
。這個表是花費最長時間處理的。
gpd_group
(GDP_年分)、area
ddf--datapoints--gdp_pcap--by--country--time.csv
ddf--entities--geo--country.csv
annual_salary
(最低薪資年收入)
EAR_4MMN_CUR_NB_A-20250529T0752.csv
coding_exp_years
作為多變量分析的替代指標。1-3 years
→ 2
)。