# ဒေတာနှင့်အလုပ်လုပ်ခြင်း: ဒေတာပြင်ဆင်မှု |![ Sketchnote by [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/08-DataPreparation.png)| |:---:| |ဒေတာပြင်ဆင်မှု - _Sketchnote by [@nitya](https://twitter.com/nitya)_ | ## [Pre-Lecture Quiz](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/14) ဒေတာရင်းမြစ်ပေါ်မူတည်ပြီး၊ မူလဒေတာတွင် မညီညွတ်မှုများပါဝင်နိုင်ပြီး၊ ဒါက အနုဇာတနှင့် မော်ဒယ်ဖွဲ့စည်းမှုတွင် အခက်အခဲများဖြစ်စေပါသည်။ အခြားစကားဖြင့်၊ ဒီဒေတာကို "ညစ်ပတ်" ဟုခေါ်နိုင်ပြီး၊ သန့်ရှင်းရေးလုပ်ရန်လိုအပ်ပါသည်။ ဒီသင်ခန်းစာမှာ မရှိသော၊ မမှန်ကန်သော၊ သို့မဟုတ် မပြည့်စုံသော ဒေတာများကို ကိုင်တွယ်ရန် သန့်ရှင်းရေးနှင့် ပြောင်းလဲမှုနည်းလမ်းများကို အဓိကထားပါသည်။ ဒီသင်ခန်းစာတွင် Python နှင့် Pandas library ကို အသုံးပြုပြီး [ဒီ directory ထဲရှိ notebook](notebook.ipynb) တွင် ပြသမည်ဖြစ်သည်။ ## ဒေတာသန့်ရှင်းရေး၏ အရေးပါမှု - **အသုံးပြုရလွယ်ကူမှုနှင့် ပြန်လည်အသုံးချနိုင်မှု**: ဒေတာကို မှန်ကန်စွာ စီစဉ်ပြီး ပုံမှန်အခြေအနေဖြင့် ပြင်ဆင်ထားပါက ရှာဖွေရန်၊ အသုံးပြုရန်နှင့် အခြားသူများနှင့် မျှဝေရန် ပိုမိုလွယ်ကူပါသည်။ - **ညီညွတ်မှု**: ဒေတာသိပ္ပံသည် မကြာခဏ ဒေတာအစုများစွာနှင့် အလုပ်လုပ်ရန် လိုအပ်ပါသည်။ ဒေတာအစုများကို ပေါင်းစည်းရာတွင်၊ တစ်ခုချင်းစီကို ပုံမှန်စံချိန်စံညွှန်းများနှင့် ညီညွတ်စေရန် လိုအပ်ပါသည်။ - **မော်ဒယ်တိကျမှု**: သန့်ရှင်းထားသော ဒေတာသည် မော်ဒယ်များ၏ တိကျမှုကို တိုးတက်စေပါသည်။ ## သန့်ရှင်းရေးရည်မှန်းချက်များနှင့် များသောအားဖြင့်အသုံးပြုသောနည်းလမ်းများ - **ဒေတာအစုကို စူးစမ်းခြင်း**: [နောက်ထပ်သင်ခန်းစာ](https://github.com/microsoft/Data-Science-For-Beginners/tree/main/4-Data-Science-Lifecycle/15-analyzing) တွင် ဖော်ပြထားသည့် ဒေတာစူးစမ်းမှုသည် သန့်ရှင်းရေးလိုအပ်သော ဒေတာများကို ရှာဖွေစေပါသည်။ ဒေတာအစုတစ်ခု၏ တန်ဖိုးများကို မြင်ကွင်းဖြင့် ကြည့်ရှုခြင်းက အခြားတန်ဖိုးများအပေါ် မျှော်လင့်ချက်များကို ဖော်ထုတ်စေပါသည်။ - **ပုံစံပြင်ဆင်မှု**: ဒေတာရင်းမြစ်ပေါ်မူတည်၍ ပုံစံမညီညွတ်မှုများရှိနိုင်ပါသည်။ ဒါက ရှာဖွေရန်နှင့် တန်ဖိုးကို ကိုယ်စားပြုရန် အခက်အခဲဖြစ်စေပါသည်။ ပုံမှန်ပြဿနာများတွင် whitespace, ရက်စွဲများနှင့် ဒေတာအမျိုးအစားများကို ဖြေရှင်းခြင်းပါဝင်သည်။ - **အကြိမ်ရောထပ်မှုများ**: တူညီသော ဒေတာများသည် မမှန်ကန်သောရလဒ်များကို ဖြစ်စေပြီး၊ များသောအားဖြင့် ဖယ်ရှားရန်လိုအပ်ပါသည်။ - **မရှိသောဒေတာ**: မရှိသောဒေတာသည် မမှန်ကန်မှုများနှင့် အားနည်းသော သို့မဟုတ် မျှတမှုမရှိသောရလဒ်များကို ဖြစ်စေပါသည်။ ## DataFrame အချက်အလက်များကို စူးစမ်းခြင်း > **သင်ယူရည်မှန်းချက်**: ဒီအပိုင်းအဆုံးတွင် pandas DataFrame တွင် သိမ်းဆည်းထားသော ဒေတာအကြောင်း အထွေထွေသိရှိမှုကို ရရှိနိုင်ရန် သင်ကျွမ်းကျင်ဖြစ်မည်။ pandas တွင် ဒေတာကို DataFrame အဖြစ် သိမ်းဆည်းထားပြီး၊ ဒေတာအစုတွင် 60,000 rows နှင့် 400 columns ရှိပါက ဘယ်လိုစတင်ကြည့်ရှုရမလဲ? pandas သည် DataFrame အကြောင်း အထွေထွေသတင်းအချက်အလက်များကို မြန်ဆန်စွာကြည့်ရှုရန် အဆင်ပြေသောကိရိယာများကို ပံ့ပိုးပေးပါသည်။ ဒီ functionality ကို စမ်းသပ်ရန် Python scikit-learn library ကို import ပြုလုပ်ပြီး **Iris data set** ကို အသုံးပြုပါမည်။ ```python import pandas as pd from sklearn.datasets import load_iris iris = load_iris() iris_df = pd.DataFrame(data=iris['data'], columns=iris['feature_names']) ``` | |sepal length (cm)|sepal width (cm)|petal length (cm)|petal width (cm)| |----------------------------------------|-----------------|----------------|-----------------|----------------| |0 |5.1 |3.5 |1.4 |0.2 | |1 |4.9 |3.0 |1.4 |0.2 | |2 |4.7 |3.2 |1.3 |0.2 | |3 |4.6 |3.1 |1.5 |0.2 | |4 |5.0 |3.6 |1.4 |0.2 | - **DataFrame.info**: `info()` method သည် DataFrame တွင်ပါဝင်သော အကြောင်းအရာများကို အကျဉ်းချုပ်ပုံစံဖြင့် ပြသရန် အသုံးပြုသည်။ ```python iris_df.info() ``` ``` RangeIndex: 150 entries, 0 to 149 Data columns (total 4 columns): # Column Non-Null Count Dtype --- ------ -------------- ----- 0 sepal length (cm) 150 non-null float64 1 sepal width (cm) 150 non-null float64 2 petal length (cm) 150 non-null float64 3 petal width (cm) 150 non-null float64 dtypes: float64(4) memory usage: 4.8 KB ``` ဒီမှာ *Iris* dataset တွင် 150 entries ရှိပြီး၊ 4 columns ပါဝင်ကြောင်း သိရှိရပါသည်။ Null entries မရှိဘဲ၊ 64-bit floating-point numbers အဖြစ် သိမ်းဆည်းထားသည်။ - **DataFrame.head()**: `head()` method သည် DataFrame ၏ ပထမဆုံး rows များကို ကြည့်ရန် အသုံးပြုသည်။ ```python iris_df.head() ``` ``` sepal length (cm) sepal width (cm) petal length (cm) petal width (cm) 0 5.1 3.5 1.4 0.2 1 4.9 3.0 1.4 0.2 2 4.7 3.2 1.3 0.2 3 4.6 3.1 1.5 0.2 4 5.0 3.6 1.4 0.2 ``` - **DataFrame.tail()**: `tail()` method သည် DataFrame ၏ နောက်ဆုံး rows များကို ကြည့်ရန် အသုံးပြုသည်။ ```python iris_df.tail() ``` ``` sepal length (cm) sepal width (cm) petal length (cm) petal width (cm) 145 6.7 3.0 5.2 2.3 146 6.3 2.5 5.0 1.9 147 6.5 3.0 5.2 2.0 148 6.2 3.4 5.4 2.3 149 5.9 3.0 5.1 1.8 ``` > **Takeaway**: DataFrame ၏ metadata သို့မဟုတ် ပထမနှင့် နောက်ဆုံး rows များကို ကြည့်ခြင်းဖြင့်၊ ဒေတာ၏ အရွယ်အစား၊ ပုံသဏ္ဌာန်နှင့် အကြောင်းအရာကို ချက်ချင်း သိနိုင်သည်။ ## မရှိသောဒေတာကို ကိုင်တွယ်ခြင်း > **သင်ယူရည်မှန်းချက်**: ဒီအပိုင်းအဆုံးတွင် DataFrame များမှ null values များကို အစားထိုးခြင်း သို့မဟုတ် ဖယ်ရှားခြင်းကို သင်သိရှိမည်။ အများအားဖြင့် သင်အသုံးပြုလိုသော ဒေတာများတွင် မရှိသောတန်ဖိုးများပါဝင်လေ့ရှိသည်။ Pandas သည် missing values များကို `NaN` (Not a Number) နှင့် Python `None` object တို့ဖြင့် ကိုင်တွယ်သည်။ - **Null values ရှာဖွေခြင်း**: `isnull()` နှင့် `notnull()` methods သည် null data ကို ရှာဖွေရန် အသုံးပြုသည်။ ```python import numpy as np example1 = pd.Series([0, np.nan, '', None]) example1.isnull() ``` ``` 0 False 1 True 2 False 3 True dtype: bool ``` - **Null values ဖယ်ရှားခြင်း**: `dropna()` သည် null values များကို ဖယ်ရှားရန် အသုံးပြုသည်။ ```python example1 = example1.dropna() example1 ``` ``` 0 0 2 dtype: object ``` - **Null values ဖြည့်ခြင်း**: `fillna()` သည် null values များကို သင့်ရွေးချယ်မှုအတိုင်း ဖြည့်ရန် အသုံးပြုသည်။ ```python example3 = pd.Series([1, np.nan, 2, None, 3], index=list('abcde')) example3 ``` ``` a 1.0 b NaN c 2.0 d NaN e 3.0 dtype: float64 ``` > **Takeaway**: Null values များကို ဖြည့်ခြင်း သို့မဟုတ် ဖယ်ရှားခြင်းသည် ဒေတာသန့်ရှင်းရေးတွင် အရေးကြီးသော အဆင့်ဖြစ်သည်။ > **အဓိကအချက်:** သင့်ဒေတာအစုအဖွဲ့များတွင် ပျောက်ဆုံးနေသောတန်ဖိုးများကို ကိုင်တွယ်ရန် နည်းလမ်းများစွာရှိသည်။ သင့်အသုံးပြုမည့် အထူးနည်းလမ်း (ပျောက်ဆုံးနေသောတန်ဖိုးများကို ဖယ်ရှားခြင်း၊ အစားထိုးခြင်း၊ သို့မဟုတ် အစားထိုးနည်းလမ်း) သည် ဒေတာ၏ အထူးသတ်မှတ်ချက်များအပေါ် မူတည်ရမည်။ ဒေတာအစုအဖွဲ့များကို ပိုမိုကိုင်တွယ်ပြီး အတွေ့အကြုံရလာသည့်အခါ ပျောက်ဆုံးနေသောတန်ဖိုးများကို ဘယ်လိုကိုင်တွယ်ရမည်ဆိုတာ ပိုမိုနားလည်လာမည်။ ## အတူတူဖြစ်နေသော ဒေတာများကို ဖယ်ရှားခြင်း > **သင်ယူရမည့်ရည်မှန်းချက်:** ဤအပိုင်းအဆုံးတွင် သင်သည် DataFrames မှ အတူတူဖြစ်နေသောတန်ဖိုးများကို ဖော်ထုတ်ခြင်းနှင့် ဖယ်ရှားခြင်းတွင် ကျွမ်းကျင်လာရမည်။ ပျောက်ဆုံးနေသောဒေတာများအပြင်၊ အမှန်တကယ်ရှိသော ဒေတာအစုအဖွဲ့များတွင် အတူတူဖြစ်နေသော ဒေတာများကိုလည်း မကြာခဏတွေ့ရမည်။ ကံကောင်းစွာ၊ `pandas` သည် အတူတူဖြစ်နေသော အချက်အလက်များကို ရှာဖွေပြီး ဖယ်ရှားရန် လွယ်ကူသော နည်းလမ်းကို ပံ့ပိုးပေးသည်။ - **အတူတူဖြစ်နေမှုများကို ဖော်ထုတ်ခြင်း: `duplicated`**: pandas တွင် `duplicated` method ကို အသုံးပြု၍ အတူတူဖြစ်နေသောတန်ဖိုးများကို လွယ်ကူစွာ ရှာဖွေနိုင်သည်။ ဤနည်းလမ်းသည် `DataFrame` တွင် ရှိသော အချက်အလက်တစ်ခုသည် ယခင်တစ်ခုနှင့် အတူတူဖြစ်နေသည်ဟုတ်မဟုတ်ကို ပြသသည့် Boolean mask ကို ပြန်ပေးသည်။ ဤကို လက်တွေ့လုပ်ဆောင်ရန် နောက်ထပ် `DataFrame` ကို ဖန်တီးကြည့်ပါ။ ```python example4 = pd.DataFrame({'letters': ['A','B'] * 2 + ['B'], 'numbers': [1, 2, 1, 3, 3]}) example4 ``` | |letters|numbers| |------|-------|-------| |0 |A |1 | |1 |B |2 | |2 |A |1 | |3 |B |3 | |4 |B |3 | ```python example4.duplicated() ``` ``` 0 False 1 False 2 True 3 False 4 True dtype: bool ``` - **အတူတူဖြစ်နေမှုများကို ဖယ်ရှားခြင်း: `drop_duplicates`:** `duplicated` values များကို `False` ဟု သတ်မှတ်ထားသော ဒေတာ၏ မိတ္တူကို ပြန်ပေးသည်: ```python example4.drop_duplicates() ``` ``` letters numbers 0 A 1 1 B 2 3 B 3 ``` `duplicated` နှင့် `drop_duplicates` နှစ်ခုစလုံးသည် default အနေဖြင့် column အားလုံးကို စဉ်းစားသော်လည်း သင့် `DataFrame` တွင် column အချို့ကိုသာ စစ်ဆေးရန် သတ်မှတ်နိုင်သည်: ```python example4.drop_duplicates(['letters']) ``` ``` letters numbers 0 A 1 1 B 2 ``` > **အဓိကအချက်:** အတူတူဖြစ်နေသော ဒေတာများကို ဖယ်ရှားခြင်းသည် ဒေတာသိပ္ပံစီမံကိန်းတိုင်းတွင် မရှိမဖြစ်လိုအပ်သော အစိတ်အပိုင်းတစ်ခုဖြစ်သည်။ အတူတူဖြစ်နေသော ဒေတာများသည် သင့်စစ်တမ်းရလဒ်များကို ပြောင်းလဲစေနိုင်ပြီး မမှန်ကန်သောရလဒ်များကို ပေးနိုင်သည်။ ## 🚀 စိန်ခေါ်မှု ဆွေးနွေးခဲ့သည့် အကြောင်းအရာအားလုံးကို [Jupyter Notebook](https://github.com/microsoft/Data-Science-For-Beginners/blob/main/2-Working-With-Data/08-data-preparation/notebook.ipynb) အနေဖြင့် ပံ့ပိုးပေးထားသည်။ ထို့အပြင်၊ အပိုင်းတိုင်း၏ နောက်တွင် လေ့ကျင့်ခန်းများပါရှိပြီး၊ ၎င်းတို့ကို စမ်းကြည့်ပါ။ ## [Post-Lecture Quiz](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/15) ## ပြန်လည်သုံးသပ်ခြင်းနှင့် ကိုယ်တိုင်လေ့လာခြင်း သင့်ဒေတာကို စစ်ဆေးခြင်းနှင့် မော်ဒယ်ဖွံ့ဖြိုးတိုးတက်မှုအတွက် ပြင်ဆင်ခြင်းကို ရှာဖွေပြီး လုပ်ဆောင်ရန် နည်းလမ်းများစွာရှိသည်။ ဒေတာကို သန့်ရှင်းရေးလုပ်ခြင်းသည် "လက်တွေ့လုပ်ဆောင်မှု" အတွေ့အကြုံတစ်ခုဖြစ်သည်။ ဤသင်ခန်းစာတွင် မဖော်ပြထားသည့် နည်းလမ်းများကို စမ်းသပ်ရန် Kaggle မှ စိန်ခေါ်မှုများကို စမ်းကြည့်ပါ။ - [Data Cleaning Challenge: Parsing Dates](https://www.kaggle.com/rtatman/data-cleaning-challenge-parsing-dates/) - [Data Cleaning Challenge: Scale and Normalize Data](https://www.kaggle.com/rtatman/data-cleaning-challenge-scale-and-normalize-data) ## အိမ်စာ [Evaluating Data from a Form](assignment.md) --- **ဝက်ဘ်ဆိုက်မှတ်ချက်**: ဤစာရွက်စာတမ်းကို AI ဘာသာပြန်ဝန်ဆောင်မှု [Co-op Translator](https://github.com/Azure/co-op-translator) ကို အသုံးပြု၍ ဘာသာပြန်ထားပါသည်။ ကျွန်ုပ်တို့သည် တိကျမှန်ကန်မှုအတွက် ကြိုးစားနေသော်လည်း၊ အလိုအလျောက်ဘာသာပြန်ခြင်းတွင် အမှားများ သို့မဟုတ် မမှန်ကန်မှုများ ပါဝင်နိုင်ကြောင်း သတိပြုပါ။ မူလဘာသာစကားဖြင့် ရေးသားထားသော စာရွက်စာတမ်းကို အာဏာတည်သော ရင်းမြစ်အဖြစ် သတ်မှတ်သင့်ပါသည်။ အရေးကြီးသော အချက်အလက်များအတွက် လူ့ဘာသာပြန်ပညာရှင်များကို အသုံးပြုရန် အကြံပြုပါသည်။ ဤဘာသာပြန်ကို အသုံးပြုခြင်းမှ ဖြစ်ပေါ်လာသော နားလည်မှုမှားများ သို့မဟုတ် အဓိပ္ပါယ်မှားများအတွက် ကျွန်ုပ်တို့သည် တာဝန်မယူပါ။