|
|
1 year ago | |
|---|---|---|
| .. | ||
| README.md | 1 year ago | |
| assignment.ipynb | 1 year ago | |
| assignment.md | 1 year ago | |
| notebook.ipynb | 1 year ago | |
README.md
ဒေတာနှင့်အလုပ်လုပ်ခြင်း: ဒေတာပြင်ဆင်မှု
![]() |
|---|
| ဒေတာပြင်ဆင်မှု - Sketchnote by @nitya |
Pre-Lecture Quiz
အခြေခံဒေတာသည် မူရင်းရင်းမြစ်ပေါ်မူတည်၍ အချို့မညီညွတ်မှုများပါဝင်နိုင်ပြီး၊ ဒေတာခွဲခြမ်းစိတ်ဖြာခြင်းနှင့် မော်ဒယ်ဖွဲ့စည်းခြင်းတွင် အခက်အခဲများဖြစ်စေပါသည်။ အခြားသောအားဖြင့်၊ ဒီဒေတာကို "ညစ်ပတ်" ဟုခေါ်နိုင်ပြီး သန့်စင်ရန်လိုအပ်ပါသည်။ ဒီသင်ခန်းစာမှာ မရှိသော၊ မမှန်သော၊ မပြည့်စုံသောဒေတာများကို ကိုင်တွယ်ရန် သန့်စင်ခြင်းနှင့် ပြောင်းလဲခြင်းနည်းလမ်းများကို အဓိကထားပြီး Python နှင့် Pandas library ကို အသုံးပြုမည်ဖြစ်သည်။ ဒီ directory ထဲရှိ notebook တွင် သရုပ်ပြထားမည်ဖြစ်သည်။
ဒေတာသန့်စင်ခြင်း၏ အရေးကြီးမှု
-
အသုံးပြုရလွယ်ကူမှုနှင့် ပြန်လည်အသုံးချနိုင်မှု: ဒေတာကို သေချာစွာ စီစဉ်ထားပြီး ပုံမှန်အခြေအနေဖြစ်နေသောအခါ၊ ရှာဖွေခြင်း၊ အသုံးပြုခြင်းနှင့် အခြားသူများနှင့် မျှဝေခြင်းမှာ ပိုမိုလွယ်ကူပါသည်။
-
ညီညွတ်မှု: ဒေတာသိပ္ပံသည် မတူညီသောရင်းမြစ်များမှ ဒေတာစုစည်းမှုများကို ပေါင်းစည်းရန် လိုအပ်သောအခါများရှိသည်။ တစ်ခုချင်းစီကို ပုံမှန်စံနှုန်းများနှင့်အညီထားရှိခြင်းသည် ဒေတာများကို တစ်ခုတည်းသော dataset အဖြစ် ပေါင်းစည်းသောအခါတွင် အသုံးဝင်စေပါသည်။
-
မော်ဒယ်တိကျမှု: သန့်စင်ထားသောဒေတာသည် အပေါ်မူတည်သော မော်ဒယ်များ၏ တိကျမှုကို တိုးတက်စေပါသည်။
သန့်စင်ရေးရည်မှန်းချက်များနှင့် များစွာအသုံးပြုသောနည်းလမ်းများ
-
ဒေတာကို စူးစမ်းခြင်း: နောက်ဆုံးသင်ခန်းစာ တွင် ဖော်ပြထားသော ဒေတာစူးစမ်းခြင်းသည် သန့်စင်ရန်လိုအပ်သောဒေတာကို ရှာဖွေစေပါသည်။ dataset တွင် ပါဝင်သောတန်ဖိုးများကို မြင်သာစွာကြည့်ရှုခြင်းသည် dataset အတစ်ခုလုံး၏ ပုံစံကို ခန့်မှန်းနိုင်စေပြီး၊ ဖြေရှင်းနိုင်သောပြဿနာများကို အကြံပေးနိုင်ပါသည်။ စူးစမ်းခြင်းတွင် အခြေခံ query များ၊ visualization များနှင့် sampling များပါဝင်နိုင်သည်။
-
ပုံစံချိန်ညှိခြင်း: ဒေတာရင်းမြစ်ပေါ်မူတည်၍ ဒေတာကို ဖော်ပြပုံတွင် မညီညွတ်မှုများရှိနိုင်သည်။ ဒါဟာ ဒေတာကို ရှာဖွေခြင်းနှင့် ဖော်ပြခြင်းတွင် ပြဿနာဖြစ်စေပြီး၊ dataset တွင် မြင်ရပေမယ့် visualization သို့မဟုတ် query ရလဒ်များတွင် မှန်ကန်စွာမဖော်ပြနိုင်ပါ။ ပုံစံချိန်ညှိမှုများတွင် whitespace, ရက်စွဲများနှင့် ဒေတာအမျိုးအစားများကို ဖြေရှင်းခြင်းပါဝင်သည်။ ဒေတာကို အသုံးပြုသူများက ပုံစံချိန်ညှိမှုကို ဆောင်ရွက်ရမည်ဖြစ်သည်။ ဥပမာအားဖြင့်၊ ရက်စွဲများနှင့် နံပါတ်များကို ဖော်ပြပုံစံသည် နိုင်ငံအလိုက် ကွဲပြားနိုင်ပါသည်။
-
ထပ်နေသောဒေတာများ: တစ်ခါထပ်နေသောဒေတာများသည် မမှန်ကန်သောရလဒ်များကို ဖြစ်စေနိုင်ပြီး၊ ပုံမှန်အားဖြင့် ဖယ်ရှားရပါမည်။ ဒါဟာ dataset များကို ပေါင်းစည်းသောအခါ တွေ့ရသော အခြေအနေတစ်ခုဖြစ်နိုင်သည်။ သို့သော်၊ dataset များကို ပေါင်းစည်းသောအခါ ထပ်နေသောဒေတာများတွင် အပိုအချက်အလက်များပါဝင်နိုင်ပြီး၊ ထိန်းသိမ်းထားရန်လိုအပ်နိုင်ပါသည်။
-
မရှိသောဒေတာများ: မရှိသောဒေတာများသည် မမှန်ကန်သောရလဒ်များနှင့် အားနည်းသော သို့မဟုတ် bias ရလဒ်များကို ဖြစ်စေနိုင်သည်။ ဒါကို "reload" လုပ်ခြင်း၊ Python ကဲ့သို့သော code နှင့် computation ဖြင့် မရှိသောတန်ဖိုးများကို ဖြည့်ခြင်း သို့မဟုတ် တန်ဖိုးနှင့် ဆက်စပ်သောဒေတာကို ဖယ်ရှားခြင်းဖြင့် ဖြေရှင်းနိုင်ပါသည်။ ဒေတာမရှိသွားရခြင်း၏ အကြောင်းအရင်းများနှင့် ဖြေရှင်းနည်းများသည် ဒေတာမရှိသွားရသောအခြေအနေပေါ်မူတည်နိုင်ပါသည်။
DataFrame အချက်အလက်များကို စူးစမ်းခြင်း
သင်ယူရည်မှန်းချက်: ဒီအပိုင်းအဆုံးတွင် pandas DataFrame တွင် သိမ်းဆည်းထားသောဒေတာအကြောင်း အထွေထွေသတင်းအချက်အလက်များကို ရှာဖွေတတ်ရန်လိုအပ်သည်။
ဒေတာကို pandas တွင် load လုပ်ပြီးနောက်၊ ဒေတာသည် DataFrame အဖြစ်ရှိနေမည်ဖြစ်သည် (DataFrame အကြောင်းအကျဉ်းကို နောက်ဆုံးသင်ခန်းစာ တွင် ဖော်ပြထားသည်)။ သို့သော်၊ DataFrame တွင် 60,000 rows နှင့် 400 columns ရှိနေသောအခါ၊ ကိုင်တွယ်ရန် ဘယ်လိုစတင်ရမလဲ? ကံကောင်းစွာ၊ pandas သည် DataFrame အကြောင်းအကျဉ်းကို မြန်ဆန်စွာကြည့်ရှုရန် အဆင်ပြေသော tools များကို ပေးထားသည်။
ဒီ functionality ကို စူးစမ်းရန်အတွက် Python scikit-learn library ကို import လုပ်ပြီး Iris data set ကို အသုံးပြုမည်ဖြစ်သည်။
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 တွင်ပါဝင်သော content အကြောင်းအကျဉ်းကို print လုပ်နိုင်သည်။ dataset ကို ကြည့်ရှုကြပါစို့:
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():
DataFrameရဲ့ content ကို စစ်ဆေးရန်head()method ကို အသုံးပြုသည်။iris_dfရဲ့ ပထမဆုံး rows များကို ကြည့်ရှုကြပါစို့:
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():
DataFrameရဲ့ နောက်ဆုံး rows များကို စစ်ဆေးရန်tail()method ကို အသုံးပြုသည်:
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 သို့မဟုတ် ပထမဆုံးနှင့် နောက်ဆုံး values များကို ကြည့်ရှုခြင်းဖြင့်၊ ကိုင်တွယ်နေသောဒေတာ၏ အရွယ်အစား၊ ပုံစံနှင့် content အကြောင်းကို ချက်ချင်း သိနိုင်ပါသည်။
မရှိသောဒေတာကို ကိုင်တွယ်ခြင်း
သင်ယူရည်မှန်းချက်: ဒီအပိုင်းအဆုံးတွင် DataFrame များမှ null values များကို အစားထိုးခြင်း သို့မဟုတ် ဖယ်ရှားခြင်းကို သိရှိနိုင်ရန်လိုအပ်သည်။
အများအားဖြင့် သင်အသုံးပြုလိုသော (သို့မဟုတ် အသုံးပြုရမည့်) dataset များတွင် မရှိသောတန်ဖိုးများပါဝင်နေတတ်သည်။ မရှိသောဒေတာကို ကိုင်တွယ်ပုံသည် analysis နှင့် အကောင်အထည်ဖော်မှုအပေါ် subtle tradeoffs များကို ဖြစ်စေနိုင်သည်။
Pandas သည် မရှိသောတန်ဖိုးများကို handle လုပ်ရန် နည်းလမ်းနှစ်ခုကို ပေးထားသည်။ ပထမနည်းလမ်းကို မူလအပိုင်းများတွင် ကြည့်ရှုဖူးပါသည် - NaN သို့မဟုတ် Not a Number။ ဒါဟာ IEEE floating-point specification ရဲ့ အထူးတန်ဖိုးတစ်ခုဖြစ်ပြီး၊ မရှိသော floating-point values ကို ဖော်ပြရန်သာ အသုံးပြုသည်။
Floating-point values မဟုတ်သော မရှိသောတန်ဖိုးများအတွက် pandas သည် Python None object ကို အသုံးပြုသည်။ None နှင့် NaN သည် အတူတူသောအရာကို ဖော်ပြနေသော်လည်း၊ pandas ရဲ့ ဒီဒီဇိုင်းရွေးချယ်မှုသည် အများစုသောအခြေအနေများအတွက် compromise ကောင်းတစ်ခုကို ပေးစွမ်းနိုင်သည်။
NaN နှင့် None အကြောင်းကို notebook မှာ ပိုမိုလေ့လာပါ!
- Null values ရှာဖွေခြင်း:
pandasတွင်isnull()နှင့်notnull()methods သည် null data ကို ရှာဖွေရန် အဓိက methods ဖြစ်သည်။ ```python import numpy as np
example1 = pd.Series([0, np.nan, '', None]) example1.isnull()
0 False 1 True 2 False 3 True dtype: bool
> **Takeaway**: `isnull()` နှင့် `notnull()` methods သည် DataFrame တွင် Boolean masks ကို ပြသပြီး၊ ရလဒ်များနှင့် index ကို ဖော်ပြသည်။
- **Null values ဖယ်ရှားခြင်း**: Null values များကို ဖယ်ရှားရန် pandas သည် `dropna()` method ကို ပေးထားသည်။ ```python
example1 = example1.dropna()
example1
0 0
2
dtype: object
DataFrame တွင် rows သို့မဟုတ် columns တစ်ခုလုံးကို ဖယ်ရှားရမည်ဖြစ်သည်။ ```python example2 = pd.DataFrame([[1, np.nan, 7], [2, 5, 8], [np.nan, 6, 9]]) example2
| | 0 | 1 | 2 |
|------|---|---|---|
|0 |1.0|NaN|7 |
|1 |2.0|5.0|8 |
|2 |NaN|6.0|9 |
```python
example2.dropna()
0 1 2
1 2.0 5.0 8
Columns ကို ဖယ်ရှားရန် axis=1 ကို အသုံးပြုပါ:
example2.dropna(axis='columns')
2
0 7
1 8
2 9
how နှင့် thresh parameters ကို အသုံးပြု၍ null values များကို ထိန်းချုပ်နိုင်သည်:
example2[3] = np.nan
example2
| 0 | 1 | 2 | 3 | |
|---|---|---|---|---|
| 0 | 1.0 | NaN | 7 | NaN |
| 1 | 2.0 | 5.0 | 8 | NaN |
| 2 | NaN | 6.0 | 9 | NaN |
example2.dropna(axis='rows', thresh=3)
0 1 2 3
1 2.0 5.0 8 NaN
- Null values ဖြည့်ခြင်း: Null values များကို valid values များဖြင့် ဖြည့်ရန်
fillnamethod ကို pandas မှ ပေးထားသည်။ ```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
Null values များကို တန်ဖိုးတစ်ခုဖြင့် ဖြည့်နိုင်သည်:
```python
example3.fillna(0)
a 1.0
b 0.0
c 2.0
d 0.0
e 3.0
dtype: float64
Forward-fill ကို အသုံးပြု၍ null values များကို ဖြည့်နိုင်သည်:
example3.fillna(method='ffill')
a 1.0
b 1.0
c 2.0
d 2.0
e 3.0
dtype: float64
Back-fill ကို အသုံးပြု၍ null values များကို ဖြည့်နိုင်သည်:
example3.fillna(method='bfill')
a 1.0
b 2.0
c 2.0
d 3.0
e 3.0
dtype: float64
DataFrame တွင် axis ကို သတ်မှတ်၍ null values များကို ဖြည့်နိုင်သည်:
example2.fillna(method='ffill', axis=1)
0 1 2 3
0 1.0 1.0 7.0 7.0
1 2.0 5.0 8.0 8.0
2 NaN 6.0 9.0 9.0
Forward-fill မရနိုင်သောအခါ null values များကို ထားရှိထားပါသည်။
အရေးကြီးသောအချက်: သင့်ရဲ့ dataset တွေမှာ မရှိတဲ့တန်ဖိုးတွေကို ကိုင်တွယ်ဖို့နည်းလမ်းများစွာရှိပါတယ်။ သင်အသုံးပြုမယ့်နည်းလမ်း (ဖယ်ရှားခြင်း၊ အစားထိုးခြင်း၊ ဒါမှမဟုတ် အစားထိုးပုံစံ) ကို အဆိုပါ data ရဲ့ အထူးသက်ဆိုင်မှုအပေါ်မူတည်ပြီး ရွေးချယ်သင့်ပါတယ်။ Dataset တွေကို ပိုမိုကိုင်တွယ်ပြီး အလုပ်လုပ်သင့်သလောက် မရှိတဲ့တန်ဖိုးတွေကို ကိုင်တွယ်ဖို့ ပိုမိုကောင်းမွန်တဲ့အမြင်တစ်ခုရရှိလာပါလိမ့်မယ်။
အချက်အလက်ထပ်နေမှုကို ဖယ်ရှားခြင်း
သင်ယူရည်မှန်းချက်: ဒီအပိုင်းလေးအဆုံးသတ်ချိန်မှာ DataFrame တွေထဲက အချက်အလက်ထပ်နေမှုတွေကို ရှာဖွေပြီး ဖယ်ရှားနိုင်ဖို့ အဆင်ပြေဖြစ်သင့်ပါတယ်။
မရှိတဲ့အချက်အလက်တွေကို ထပ်မံပြီး အချက်အလက်ထပ်နေမှုတွေကိုလည်း အမှန်တကယ် data set တွေမှာ တွေ့ရလေ့ရှိပါတယ်။ ကံကောင်းစွာ pandas က အချက်အလက်ထပ်နေမှုတွေကို ရှာဖွေပြီး ဖယ်ရှားဖို့ လွယ်ကူတဲ့နည်းလမ်းတစ်ခုကို ပေးထားပါတယ်။
- အချက်အလက်ထပ်နေမှုကို ရှာဖွေခြင်း:
duplicated:pandasရဲ့duplicatedmethod ကို အသုံးပြုပြီး အချက်အလက်ထပ်နေမှုတွေကို လွယ်ကူစွာ ရှာဖွေနိုင်ပါတယ်။ ဒီ method က Boolean mask တစ်ခုကို ပြန်ပေးပြီး DataFrame ထဲမှာ အချက်အလက်တစ်ခုဟာ အရင်တစ်ခုနဲ့ ထပ်နေတဲ့အခြေအနေကို ဖော်ပြပါတယ်။ ဒီကို လက်တွေ့ကြည့်ရှုဖို့ DataFrame တစ်ခုကို ပြန်ဖန်တီးကြည့်ရအောင်။
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 |
example4.duplicated()
0 False
1 False
2 True
3 False
4 True
dtype: bool
- အချက်အလက်ထပ်နေမှုကို ဖယ်ရှားခြင်း:
drop_duplicates:duplicatedvalue တွေဟာFalseဖြစ်တဲ့ data ကိုသာ ပြန်ပေးတဲ့ copy တစ်ခုကို ရရှိစေပါတယ်။
example4.drop_duplicates()
letters numbers
0 A 1
1 B 2
3 B 3
duplicated နဲ့ drop_duplicates ဟာ default အနေဖြင့် column အားလုံးကို စဉ်းစားပေမယ့် သင့်ရဲ့ DataFrame ထဲမှာ column အချို့ကိုသာ စဉ်းစားဖို့ သတ်မှတ်နိုင်ပါတယ်။
example4.drop_duplicates(['letters'])
letters numbers
0 A 1
1 B 2
အရေးကြီးသောအချက်: အချက်အလက်ထပ်နေမှုကို ဖယ်ရှားခြင်းဟာ data-science project တစ်ခုစီမှာ မဖြစ်မနေ လုပ်ဆောင်ရမယ့်အပိုင်းတစ်ခုဖြစ်ပါတယ်။ အချက်အလက်ထပ်နေမှုတွေဟာ သင့်ရဲ့ analysis ရလဒ်တွေကို ပြောင်းလဲစေပြီး မမှန်ကန်တဲ့ရလဒ်တွေကို ရရှိစေနိုင်ပါတယ်။
🚀 စိန်ခေါ်မှု
ဒီသင်ခန်းစာမှာ ဖော်ပြထားတဲ့ အကြောင်းအရာအားလုံးကို Jupyter Notebook အနေနဲ့ ရရှိနိုင်ပါတယ်။ ထို့အပြင် အပိုင်းတိုင်းအပြီးမှာ လေ့ကျင့်ခန်းတွေပါဝင်ပြီး၊ အဲဒီလေ့ကျင့်ခန်းတွေကို စမ်းကြည့်ပါ။
Post-lecture quiz
ပြန်လည်သုံးသပ်ခြင်းနှင့် ကိုယ်တိုင်လေ့လာခြင်း
Data ကို analysis နဲ့ modeling အတွက် ပြင်ဆင်ဖို့နည်းလမ်းတွေကို ရှာဖွေပြီး လုပ်ဆောင်ဖို့ နည်းလမ်းများစွာရှိပါတယ်။ Data ကို သန့်စင်ဖို့ အရေးကြီးတဲ့အဆင့်ဟာ လက်တွေ့လုပ်ဆောင်ရမယ့် အတွေ့အကြုံတစ်ခုဖြစ်ပါတယ်။ Kaggle ရဲ့ စိန်ခေါ်မှုတွေကို စမ်းကြည့်ပြီး ဒီသင်ခန်းစာမှာ မဖော်ပြထားတဲ့ နည်းလမ်းတွေကို လေ့လာပါ။
အိမ်စာ
အကြောင်းကြားချက်:
ဤစာရွက်စာတမ်းကို AI ဘာသာပြန်ဝန်ဆောင်မှု Co-op Translator ကို အသုံးပြု၍ ဘာသာပြန်ထားပါသည်။ ကျွန်ုပ်တို့သည် တိကျမှုအတွက် ကြိုးစားနေသော်လည်း၊ အလိုအလျောက် ဘာသာပြန်ခြင်းတွင် အမှားများ သို့မဟုတ် မတိကျမှုများ ပါရှိနိုင်သည်ကို သတိပြုပါ။ မူရင်းဘာသာစကားဖြင့် ရေးသားထားသော စာရွက်စာတမ်းကို အာဏာရှိသော ရင်းမြစ်အဖြစ် သတ်မှတ်သင့်ပါသည်။ အရေးကြီးသော အချက်အလက်များအတွက် လူ့ဘာသာပြန်ပညာရှင်များမှ ပရော်ဖက်ရှင်နယ် ဘာသာပြန်ခြင်းကို အကြံပြုပါသည်။ ဤဘာသာပြန်ကို အသုံးပြုခြင်းမှ ဖြစ်ပေါ်လာသော အလွဲအလွတ်များ သို့မဟုတ် အနားယူမှားမှုများအတွက် ကျွန်ုပ်တို့သည် တာဝန်မယူပါ။
