Thuta Learning
ရှာဖွေရန်
ExercisesData & Databasesintermediate

Exercises: Applied Data Cleaning & Analysis

စိတ်လျှော့ပါ။ ဒီခန်းကို စာအုပ်လိုမဟုတ်ဘဲ စကားပြောသလိုပဲ၊ နားလည်လွယ်အောင် ရှင်းပါမယ်။

ဒီခန်းပြီးရင် ဘာတတ်သွားမလဲ

  • Exercises: Applied Data Cleaning & Analysis ကို ကိုယ်တိုင် လေ့ကျင့်ကြည့်မယ်
  • သင်ခဲ့ပြီးသား skill တွေကို practice လုပ်ပြီး ခိုင်မာအောင်လုပ်မယ်
  • အမှားရှာ၊ ပြင်တတ်၊ ကိုယ်တိုင် check လုပ်တတ်မယ်

ခဏလေး ဒီလိုပဲ စဉ်းစားကြည့်

ဒီ lesson က lesson 1 ထက် တစ်ဆင့်တက်ပြီး၊ condition အများကြီးနဲ့ ဖစ်တာတွေ၊ missing value ရှိတဲ့ real-world data ကို ရှင်းလင်းခြင်း၊ column အသစ်တွေ တွက်ချက်ခြင်း၊ group ခွဲပြီး summarize လုပ်ခြင်း၊ table နှစ်ခု merge လုပ်ခြင်း စတဲ့ skill တွေကို တစ်ခုတည်း data flow ထဲမှာ ပေါင်းစပ် အသုံးချကြည့်ဖို့ ရည်ရွယ်ပါတယ်။ Teaching content အသစ်မဟုတ်ဘဲ conditional-selection, handling-missing, operations, groupby, merging သင်ခန်းစာတွေမှာ ရှင်းပြထားခဲ့တဲ့ concept တွေကိုပဲ ပြန်အသုံးချရမှာ ဖြစ်ပါတယ်။ Task တွေက တစ်ခုပြီးမှ နောက်တစ်ခု အခြေခံ ဖြစ်နေတာမို့ အစီအစဉ်အတိုင်း လိုက်ဖြေဖို့ အကြံပြုပါတယ်။

လေ့ကျင့်ခန်းများ

Task 1: Product, Category, Price, Qty column ပါတဲ့ DataFrame တစ်ခုမှာ Price column ရဲ့ တချို့ value တွေကို NaN အဖြစ် ထားပြီး၊ isna().sum() နဲ့ missing count စစ်ပါ၊ ပြီးရင် fillna() နဲ့ column mean ကိုသုံးပြီး ဖြည့်ပါ။ Task 2: Category == "Drink" ဖြစ်ပြီး Qty > 2 ဖြစ်တဲ့ row တွေကို & operator သုံးပြီး conditional selection ဖြင့် filter လုပ်ပါ။ Task 3: Total column အသစ် (Price * Qty) တစ်ခု ဖန်တီးပြီး groupby("Category") နဲ့ Category တစ်ခုချင်းစီရဲ့ Total sum ကို တွက်ပါ။ Task 4: Category နဲ့ Supplier name ပါတဲ့ table အသစ်တစ်ခု ဆောက်ပြီး merge() သုံးပြီး original DataFrame နဲ့ Category column အပေါ် base ထား ပေါင်းကြည့်ပါ (how="left" သုံးကြည့်ပါ)။

Code နမူနာ

python
import pandas as pd
import numpy as np

data = {
    "Product": ["Tea", "Coffee", "Juice", "Cake", "Water"],
    "Category": ["Drink", "Drink", "Drink", "Food", "Drink"],
    "Price": [1200, 1800, np.nan, 2500, 700],
    "Qty": [3, 2, 5, 1, 4]
}
df = pd.DataFrame(data)

# Task 1: missing data
# TODO: df["Price"].isna().sum()
# TODO: df["Price"] = df["Price"].fillna(df["Price"].mean())


# Task 2: multi-condition filter
# TODO: df[(df["Category"] == "Drink") & (df["Qty"] > 2)]


# Task 3: new column + groupby
# TODO: df["Total"] = df["Price"] * df["Qty"]
# TODO: df.groupby("Category")["Total"].sum()


# Task 4: merge
suppliers = pd.DataFrame({
    "Category": ["Drink", "Food"],
    "Supplier": ["ABC Beverage", "XYZ Bakery"]
})
# TODO: pd.merge(df, suppliers, on="Category", how="left")
You should see
Missing value မရှိတော့တဲ့ clean DataFrame တစ်ခု၊ filter လုပ်ထားတဲ့ Drink row များ၊ Category အလိုက် Total sum နဲ့ Supplier name ပါဝင်တဲ့ merge ပြီးသား table တစ်ခု ရလဒ်ထွက်လာမှာ ဖြစ်ပါတယ်။

၅ မိနစ် စမ်းကြည့်

မိနစ် 5 အတွင်း Task 2 နဲ့ Task 3 ကို ဆက်တိုက် run ကြည့်ပြီး groupby result ထဲမှာ Drink category ရဲ့ Total sum ဘယ်လောက်ရလဲ ကိုယ်တိုင်တွက်ပြီး output နဲ့ ယှဉ်စစ်ကြည့်ပါ။

သတိလေးတစ်ချက်

fillna() နဲ့ mean value ဖြည့်တဲ့အခါ column ရဲ့ data type (numeric ဖြစ်မဖြစ်) ကို အရင်စစ်ပါ - text column ကို mean နဲ့ ဖြည့်ဖို့ကြိုးစားရင် error တက်ပါလိမ့်မယ်။

ဒီနေရာမှာ လူအများမှားတတ်တယ်

  • condition နှစ်ခုကို and/or keyword နဲ့ ရေးမိပြီး & / | operator နဲ့ ပါရင်ဘရိတ်ချ (parentheses) မခတ်ဘဲ error တက်တတ်ကြပါတယ်
  • merge() လုပ်တဲ့အခါ on column ထဲက value spelling/case မတူညီရင် ("Drink" vs "drink") row တွေ match မဖြစ်ဘဲ NaN ထွက်လာတတ်ပါတယ်

အခု ကိုယ်တိုင် စမ်းကြည့်

မိနစ် 5 အတွင်း Task 2 နဲ့ Task 3 ကို ဆက်တိုက် run ကြည့်ပြီး groupby result ထဲမှာ Drink category ရဲ့ Total sum ဘယ်လောက်ရလဲ ကိုယ်တိုင်တွက်ပြီး output နဲ့ ယှဉ်စစ်ကြည့်ပါ။

You'll know it worked when: Missing value မရှိတော့တဲ့ clean DataFrame တစ်ခု၊ filter လုပ်ထားတဲ့ Drink row များ၊ Category အလိုက် Total sum နဲ့ Supplier name ပါဝင်တဲ့ merge ပြီးသား table တစ်ခု ရလဒ်ထွက်လာမှာ ဖြစ်ပါတယ်။

Exercises: Applied Data Cleaning & Analysis | Thuta Learning