You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
337 lines
39 KiB
337 lines
39 KiB
# தரவுடன் வேலை செய்வது: தரவு தயாரிப்பு
|
|
|
|
| ](../../sketchnotes/08-DataPreparation.png)|
|
|
|:---:|
|
|
|தரவு தயாரிப்பு - _Sketchnote by [@nitya](https://twitter.com/nitya)_ |
|
|
|
|
## [முன்-வகுப்பு வினாடி வினா](https://ff-quizzes.netlify.app/en/ds/quiz/14)
|
|
|
|
தரவு எங்கு இருந்து வந்தது என்பதைப் பொறுத்து, மூலத் தரவுகளில் சில முரண்பாடுகள் இருக்கலாம், இது பகுப்பாய்வு மற்றும் மாதிரிகள் உருவாக்கத்தில் சவால்களை ஏற்படுத்தும். இதன் பொருள், இந்த தரவுகள் "அழுக்கான"தாக வகைப்படுத்தப்படலாம் மற்றும் சுத்தம் செய்யப்பட வேண்டும். இந்த பாடம், பிழைபட்ட, தவறான அல்லது முழுமையற்ற தரவின் சவால்களை சமாளிக்க சுத்தம் செய்யும் மற்றும் மாற்றும் தொழில்நுட்பங்களை மையமாகக் கொண்டது. இந்த பாடத்தில் Python மற்றும் Pandas நூலகத்தைப் பயன்படுத்தி [குறிப்பேட்டில்](notebook.ipynb) விளக்கப்படும்.
|
|
|
|
## தரவுகளை சுத்தம் செய்யும் முக்கியத்துவம்
|
|
|
|
- **பயன்பாடு மற்றும் மீண்டும் பயன்படுத்துதல்**: தரவுகள் சரியாக ஒழுங்குபடுத்தப்பட்டு, சீரமைக்கப்பட்டால், அதைத் தேடவும், பயன்படுத்தவும், மற்றவர்களுடன் பகிரவும் எளிதாக இருக்கும்.
|
|
|
|
- **முறையான தன்மை**: தரவியல் அறிவியல் பல தரவுத்தொகுப்புகளுடன் வேலை செய்ய வேண்டிய அவசியம் ஏற்படும், அங்கு பல்வேறு மூலங்களிலிருந்து வரும் தரவுத்தொகுப்புகள் ஒன்றாக இணைக்கப்பட வேண்டும். ஒவ்வொரு தனித்த தனித்த தரவுத்தொகுப்பும் பொதுவான சீரமைப்புடன் இருக்க வேண்டும், இது அனைத்தையும் ஒரே தொகுப்பாக இணைக்கும் போது தரவுகள் fortfarande பயனுள்ளதாக இருக்கும்.
|
|
|
|
- **மாதிரி துல்லியம்**: சுத்தம் செய்யப்பட்ட தரவுகள், அதற்கு சார்ந்த மாதிரிகளின் துல்லியத்தை மேம்படுத்தும்.
|
|
|
|
## பொதுவான சுத்தம் செய்யும் இலக்குகள் மற்றும் உத்திகள்
|
|
|
|
- **தரவுத்தொகுப்பை ஆராய்தல்**: [பின்னர் வரும் பாடத்தில்](https://github.com/microsoft/Data-Science-For-Beginners/tree/main/4-Data-Science-Lifecycle/15-analyzing) கற்றுக்கொள்ளப்படும் தரவுத் தேடல், சுத்தம் செய்ய வேண்டிய தரவுகளை கண்டறிய உதவுகிறது. ஒரு தரவுத்தொகுப்பில் உள்ள மதிப்புகளை கண்ணோட்டமாகக் காண்பது, மற்றவை எப்படி இருக்கும் என்பதைப் பற்றிய எதிர்பார்ப்புகளை அமைக்க உதவலாம் அல்லது தீர்க்கக்கூடிய சிக்கல்களைப் பற்றிய ஒரு யோசனையை வழங்கலாம். தேடல் அடிப்படை கேள்விகள், காட்சிப்படுத்தல்கள் மற்றும் மாதிரிகளை உள்ளடக்கலாம்.
|
|
|
|
- **வடிவமைப்பு**: தரவின் மூலத்தைப் பொறுத்து, அது எப்படி வழங்கப்படுகிறது என்பதில் முரண்பாடுகள் இருக்கலாம். இது தேடல் மற்றும் மதிப்பை பிரதிநிதித்துவப்படுத்துவதில் சிக்கல்களை ஏற்படுத்தும், இது தரவுத்தொகுப்பில் காணப்படும் ஆனால் காட்சிப்படுத்தல்களில் அல்லது கேள்வி முடிவுகளில் சரியாக பிரதிநிதித்துவப்படுத்தப்படவில்லை. பொதுவான வடிவமைப்பு சிக்கல்கள் வெற்றிடங்கள், தேதிகள் மற்றும் தரவின் வகைகளை தீர்க்கும். இந்த சிக்கல்களை தீர்ப்பது தரவுகளைப் பயன்படுத்தும் நபர்களின் பொறுப்பாகும். உதாரணமாக, தேதிகள் மற்றும் எண்கள் எப்படி வழங்கப்படுகின்றன என்பதில் நாடுகளின் தரநிலைகள் மாறுபடலாம்.
|
|
|
|
- **மறுபடிகள்**: ஒரே தரவின் பல முறை நிகழ்வுகள் தவறான முடிவுகளை உருவாக்கும், பொதுவாக அவற்றை நீக்க வேண்டும். இது இரண்டு அல்லது அதற்கு மேற்பட்ட தரவுத்தொகுப்புகளை இணைக்கும் போது பொதுவாக ஏற்படும். ஆனால், இணைக்கப்பட்ட தரவுத்தொகுப்புகளில் மறுபடிகள் கூடுதல் தகவல்களை வழங்கக்கூடிய பகுதிகளை கொண்டிருக்கலாம், அவற்றை பாதுகாக்க வேண்டிய அவசியம் இருக்கலாம்.
|
|
|
|
- **காணாமல் போன தரவுகள்**: காணாமல் போன தரவுகள் தவறான முடிவுகளையும், பலவீனமான அல்லது பாகுபட்ட முடிவுகளையும் ஏற்படுத்தும். சில நேரங்களில், இது தரவுகளை மீண்டும் ஏற்றுவதன் மூலம், Python போன்ற கணக்கீடு மற்றும் குறியீட்டுடன் காணாமல் போன மதிப்புகளை நிரப்புவதன் மூலம் அல்லது மதிப்பை மற்றும் தொடர்புடைய தரவுகளை פשוט நீக்குவதன் மூலம் தீர்க்கப்படலாம். தரவுகள் ஏன் காணாமல் போனது மற்றும் அவற்றை தீர்க்க எடுக்கப்படும் நடவடிக்கைகள், அவை எப்படி மற்றும் ஏன் காணாமல் போனது என்பதைப் பொறுத்து மாறுபடலாம்.
|
|
|
|
## DataFrame தகவல்களை ஆராய்தல்
|
|
> **கற்றல் இலக்கு:** இந்த துணைப்பகுதியின் முடிவில், pandas DataFrames-ல் சேமிக்கப்பட்ட தரவின் பொதுவான தகவல்களை கண்டறிய நீங்கள் வசதியாக இருக்க வேண்டும்.
|
|
|
|
தரவை pandas-க்கு ஏற்றிய பிறகு, அது DataFrame-ல் இருக்கும் (முந்தைய [பாடத்தில்](https://github.com/microsoft/Data-Science-For-Beginners/tree/main/2-Working-With-Data/07-python#dataframe) விரிவான கண்ணோட்டத்திற்காக பார்க்கவும்). ஆனால், உங்கள் DataFrame-ல் 60,000 வரிசைகள் மற்றும் 400 நெடுவரிசைகள் இருந்தால், நீங்கள் எதிலிருந்து தொடங்க வேண்டும் என்பதை எப்படி புரிந்துகொள்வது? அதிர்ஷ்டவசமாக, [pandas](https://pandas.pydata.org/) DataFrame பற்றிய மொத்த தகவல்களை விரைவாக பார்க்க சில வசதியான கருவிகளை வழங்குகிறது, மேலும் முதல் சில மற்றும் கடைசி சில வரிசைகளையும் பார்க்க முடியும்.
|
|
|
|
இந்த செயல்பாட்டை ஆராய்வதற்காக, Python scikit-learn நூலகத்தை இறக்குமதி செய்து, ஒரு பிரபலமான தரவுத்தொகுப்பை பயன்படுத்துவோம்: **Iris தரவுத்தொகுப்பு**.
|
|
|
|
```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()` முறை, `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* தரவுத்தொகுப்பில் 150 பதிவுகள் மற்றும் நான்கு நெடுவரிசைகள் உள்ளன, மேலும் எந்த null பதிவுகளும் இல்லை என்பதை அறிகிறோம். அனைத்து தரவுகளும் 64-bit floating-point எண்களாக சேமிக்கப்பட்டுள்ளன.
|
|
|
|
- **DataFrame.head()**: அடுத்ததாக, `DataFrame`-ன் உண்மையான உள்ளடக்கத்தைச் சரிபார்க்க, `head()` முறை பயன்படுத்தப்படுகிறது. `iris_df`-ன் முதல் சில வரிசைகள் எப்படி இருக்கின்றன என்பதைப் பார்ப்போம்:
|
|
```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()**: மாறாக, `DataFrame`-ன் கடைசி சில வரிசைகளைச் சரிபார்க்க, `tail()` முறை பயன்படுத்தப்படுகிறது:
|
|
```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 அல்லது அதில் உள்ள முதல் மற்றும் கடைசி சில மதிப்புகளைப் பார்த்தாலே, நீங்கள் வேலை செய்யும் தரவின் அளவு, வடிவம் மற்றும் உள்ளடக்கத்தை உடனடியாக புரிந்துகொள்ள முடியும்.
|
|
|
|
## காணாமல் போன தரவுகளை சமாளித்தல்
|
|
> **கற்றல் இலக்கு:** இந்த துணைப்பகுதியின் முடிவில், DataFrame-களில் null மதிப்புகளை மாற்ற அல்லது நீக்க நீங்கள் தெரிந்திருக்க வேண்டும்.
|
|
|
|
பொதுவாக, நீங்கள் பயன்படுத்த விரும்பும் (அல்லது பயன்படுத்த வேண்டிய) தரவுத்தொகுப்புகளில் காணாமல் போன மதிப்புகள் இருக்கும். காணாமல் போன தரவுகளை எப்படி கையாள வேண்டும் என்பது நுண்ணிய சமநிலைகளை கொண்டுள்ளது, இது உங்கள் இறுதி பகுப்பாய்வு மற்றும் நிஜ உலக முடிவுகளை பாதிக்கக்கூடும்.
|
|
|
|
Pandas இரண்டு வழிகளில் காணாமல் போன மதிப்புகளை கையாளுகிறது. முதலில், நீங்கள் முந்தைய பகுதிகளில் பார்த்தது: `NaN`, அல்லது Not a Number. இது IEEE floating-point விவரக்குறிப்பின் ஒரு சிறப்பு மதிப்பு, மேலும் இது காணாமல் போன floating-point மதிப்புகளை குறிக்க மட்டுமே பயன்படுத்தப்படுகிறது.
|
|
|
|
Floating-point தவிர மற்ற காணாமல் போன மதிப்புகளுக்கு, pandas Python `None` பொருளைப் பயன்படுத்துகிறது. இரண்டு விதமான மதிப்புகளை சந்திக்க வேண்டிய அவசியம், அவை அடிப்படையில் ஒரே விஷயத்தைச் சொல்கின்றன என்று தோன்றலாம், ஆனால் இந்த வடிவமைப்பு தேர்வுக்கான ஒழுங்கான நிரலாக்க காரணங்கள் உள்ளன, மேலும் நடைமுறையில், இந்த வழியில் செல்ல pandas பெரும்பாலான வழக்குகளுக்கு நல்ல சமநிலையை வழங்க உதவுகிறது. இதைத் தவிர, `None` மற்றும் `NaN` இரண்டும், அவற்றை எப்படி பயன்படுத்த முடியும் என்பதில் நீங்கள் கவனமாக இருக்க வேண்டிய கட்டுப்பாடுகளை கொண்டுள்ளன.
|
|
|
|
`NaN` மற்றும் `None` பற்றிய மேலும் தகவல்களை [குறிப்பேட்டில்](https://github.com/microsoft/Data-Science-For-Beginners/blob/main/4-Data-Science-Lifecycle/15-analyzing/notebook.ipynb) பார்க்கவும்!
|
|
|
|
- **Null மதிப்புகளை கண்டறிதல்**: `pandas`-ல், `isnull()` மற்றும் `notnull()` முறைகள் null தரவுகளை கண்டறிய உங்கள் முதன்மை முறைகளாகும். இரண்டும் உங்கள் தரவின் Boolean masks-ஐ திருப்பும். `NaN` மதிப்புகளுக்கு `numpy`-ஐ பயன்படுத்துவோம்:
|
|
```python
|
|
import numpy as np
|
|
|
|
example1 = pd.Series([0, np.nan, '', None])
|
|
example1.isnull()
|
|
```
|
|
```
|
|
0 False
|
|
1 True
|
|
2 False
|
|
3 True
|
|
dtype: bool
|
|
```
|
|
வெளியீட்டை நன்கு கவனமாகப் பாருங்கள். இதில் ஏதேனும் உங்களை ஆச்சரியப்படுத்துகிறதா? `0` ஒரு arithmetic null, ஆனால் இது ஒரு சரியான integer ஆகும், மேலும் pandas அதை அப்படியே நடத்துகிறது. `''` கொஞ்சம் நுண்ணியமானது. அதைப் பயன்படுத்தியபோது, இது ஒரு காலியான string மதிப்பை பிரதிநிதித்துவப்படுத்துகிறது, ஆனால் pandas-க்கு இது null-ஐ பிரதிநிதித்துவப்படுத்தவில்லை.
|
|
|
|
இப்போது, இதைத் திருப்பி, நீங்கள் நடைமுறையில் பயன்படுத்தும் முறையில் இந்த முறைகளைப் பயன்படுத்துவோம். Boolean masks-ஐ நேரடியாக ``Series`` அல்லது ``DataFrame`` index ஆக பயன்படுத்தலாம், இது தனித்துவமான காணாமல் போன (அல்லது உள்ள) மதிப்புகளுடன் வேலை செய்யும்போது பயனுள்ளதாக இருக்கும்.
|
|
|
|
> **Takeaway**: `isnull()` மற்றும் `notnull()` முறைகள் `DataFrame`-களில் பயன்படுத்தும்போது ஒரே மாதிரியான முடிவுகளை உருவாக்குகின்றன: அவை முடிவுகளை மற்றும் அந்த முடிவுகளின் index-ஐ காட்டுகின்றன, இது உங்கள் தரவுடன் போராடும்போது உங்களுக்கு மிகவும் உதவியாக இருக்கும்.
|
|
|
|
- **Null மதிப்புகளை நீக்குதல்**: காணாமல் போன மதிப்புகளை அடையாளம் காண்பதற்கும் மேலாக, pandas `Series` மற்றும் `DataFrame`-களிலிருந்து null மதிப்புகளை நீக்க ஒரு வசதியான வழியை வழங்குகிறது. (பெரிய தரவுத்தொகுப்புகளில், உங்கள் பகுப்பாய்விலிருந்து காணாமல் போன [NA] மதிப்புகளை פשוט நீக்குவது, அவற்றை வேறு வழிகளில் கையாள்வதை விட அதிகமாக பரிந்துரைக்கப்படுகிறது.) இதை செயல்பாட்டில் காண, `example1`-க்கு திரும்புவோம்:
|
|
```python
|
|
example1 = example1.dropna()
|
|
example1
|
|
```
|
|
```
|
|
0 0
|
|
2
|
|
dtype: object
|
|
```
|
|
இது உங்கள் `example3[example3.notnull()]`-ன் வெளியீட்டைப் போன்றதாக இருக்க வேண்டும். இங்கு வேறுபாடு என்னவென்றால், masked மதிப்புகளின் index-ஐ மட்டும் பயன்படுத்துவதற்குப் பதிலாக, `dropna` அந்த காணாமல் போன மதிப்புகளை `Series` `example1`-லிருந்து நீக்கியுள்ளது.
|
|
|
|
`DataFrame`-களில் இரண்டு பரிமாணங்கள் உள்ளதால், தரவுகளை நீக்குவதற்கு மேலும் விருப்பங்களை வழங்குகின்றன.
|
|
|
|
```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 |
|
|
|
|
(pandas இரண்டு நெடுவரிசைகளை `NaN`-களை accommodate செய்ய floats-ஆக மாற்றியது என்பதை கவனித்தீர்களா?)
|
|
|
|
நீங்கள் `DataFrame`-லிருந்து ஒரு மதிப்பை மட்டும் நீக்க முடியாது, எனவே முழு வரிசைகள் அல்லது நெடுவரிசைகளை நீக்க வேண்டும். நீங்கள் என்ன செய்கிறீர்கள் என்பதைப் பொறுத்து, நீங்கள் ஒன்று அல்லது மற்றொன்றை செய்ய விரும்பலாம், எனவே pandas இரண்டிற்கும் விருப்பங்களை வழங்குகிறது. தரவியல் அறிவியலில், நெடுவரிசைகள் பொதுவாக மாறிகள் மற்றும் வரிசைகள் பார்வைகளை பிரதிநிதித்துவப்படுத்துவதால், நீங்கள் தரவின் வரிசைகளை நீக்க அதிகமாக விரும்புவீர்கள்; `dropna()`-க்கு இயல்புநிலை அமைப்பு null மதிப்புகளை கொண்ட அனைத்து வரிசைகளையும் நீக்குவதற்காக அமைக்கப்பட்டுள்ளது:
|
|
|
|
```python
|
|
example2.dropna()
|
|
```
|
|
```
|
|
0 1 2
|
|
1 2.0 5.0 8
|
|
```
|
|
தேவையானால், நீங்கள் நெடுவரிசைகளிலிருந்து NA மதிப்புகளை நீக்கலாம். அதைச் செய்ய `axis=1`-ஐ பயன்படுத்தவும்:
|
|
```python
|
|
example2.dropna(axis='columns')
|
|
```
|
|
```
|
|
2
|
|
0 7
|
|
1 8
|
|
2 9
|
|
```
|
|
இது சிறிய தரவுத்தொகுப்புகளில் நீங்கள் வைத்திருக்க விரும்பும் தரவுகளை அதிகமாக நீக்கக்கூடும் என்பதை கவனிக்கவும். நீங்கள் null மதிப்புகளை கொண்ட வரிசைகள் அல்லது நெடுவரிசைகளை மட்டும் நீக்க விரும்பினால் என்ன? `dropna`-ல் `how` மற்றும் `thresh` அளவுருக்களை குறிப்பிடலாம்.
|
|
|
|
இயல்புநிலை, `how='any'` (நீங்கள் உங்களுக்கே சரிபார்க்க விரும்பினால் அல்லது முறை மற்ற அளவுருக்களை என்னவென்று பார்க்க விரும்பினால், ஒரு குறியீட்டு செலில் `example4.dropna?`-ஐ இயக்கவும்). நீங்கள் மாற்றாக `how='all'`-ஐ குறிப்பிடலாம், அதனால் null மதிப்புகளை கொண்ட அனைத்து வரிசைகள் அல்லது நெடுவரிசைகளை மட்டும் நீக்கலாம். இதை செயல்பாட்டில் காண, எங்கள் `DataFrame` உதாரணத்தை விரிவாக்குவோம்.
|
|
|
|
```python
|
|
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|
|
|
|
|
`thresh` அளவுரு உங்களுக்கு நுண்ணிய கட்டுப்பாட்டை வழங்குகிறது: ஒரு வரிசை அல்லது நெடுவரிசை வைத்திருக்க *non-null* மதிப்புகளின் எண்ணிக்கையை நீங்கள் அமைக்கலாம்:
|
|
```python
|
|
example2.dropna(axis='rows', thresh=3)
|
|
```
|
|
```
|
|
0 1 2 3
|
|
1 2.0 5.0 8 NaN
|
|
```
|
|
இங்கு, முதல் மற்றும் கடைசி வரிசைகள் நீக்கப்பட்டுள்ளன, ஏனெனில் அவை இரண்டு non-null மதிப்புகளை மட்டுமே கொண்டுள்ளன.
|
|
|
|
- **Null மதிப்புகளை நிரப்புதல்**: உங்கள் தரவுத்தொகுப்பைப் பொறுத்து, null மதிப்புகளை நீக்குவதற்குப் பதிலாக செல்லுபடியாகும் மதிப்புகளுடன் நிரப்புவது சில நேரங்களில் பொருத்தமாக இருக்கலாம். நீங்கள் `isnull`-ஐ பயன்படுத்தி இதை இடத்தில் செய்யலாம், ஆனால் இது சிரமமாக இருக்கலாம், குறிப்பாக நீங்கள் நிரப்ப வேண்டிய மதிப்புகள் அதிகமாக இருந்தால். இது தரவியல் அறிவியலில் ஒரு பொதுவான பணியாக இருப்பதால், pandas `fillna`-ஐ வழங்குகிறது, இது null மதிப்புகளை நீங்கள் தேர்ந்தெடுக்கும் ஒன்றுடன் மாற்றியமைக்கப்பட்ட `Series` அல்லது `DataFrame`-ஐ திருப்புகிறது. இதை நடைமுறையில் எப்படி வேலை செய்கிறது என்பதைப் பார்க்க மற்றொரு `Series` உதாரணத்தை உருவாக்குவோம்.
|
|
```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 பதிவுகளை ஒரு மதிப்புடன், உதாரணமாக `0`-ஐ நிரப்பலாம்:
|
|
```python
|
|
example3.fillna(0)
|
|
```
|
|
```
|
|
a 1.0
|
|
b 0.0
|
|
c 2.0
|
|
d 0.0
|
|
e 3.0
|
|
dtype: float64
|
|
```
|
|
நீங்கள் null மதிப்புகளை **forward-fill** செய்யலாம், இது null-ஐ நிரப்புவதற்கு கடைசி செல்லுபடியாகும் மதிப்பைப் பயன்படுத்துவது:
|
|
```python
|
|
example3.fillna(method='ffill')
|
|
```
|
|
```
|
|
a 1.0
|
|
b 1.0
|
|
c 2.0
|
|
d 2.0
|
|
e 3.0
|
|
dtype: float64
|
|
```
|
|
நீங்கள் null மதிப்புகளை நிரப்ப **back-fill** செய்யலாம், இது null-ஐ நிரப்புவதற்கு அடுத்த செல்லுபடியாகும் மதிப்பைப் பின்வாங்கி பரப்புவது:
|
|
```python
|
|
example3.fillna(method='bfill')
|
|
```
|
|
```
|
|
a 1.0
|
|
b 2.0
|
|
c 2.0
|
|
d 3.0
|
|
e 3.0
|
|
dtype: float64
|
|
```
|
|
நீங்கள் ஊகிக்கலாம், இது `DataFrame`-களுடன் ஒரே மாதிரியானது, ஆனால் null மதிப்புகளை நிரப்ப along ஒரு `axis`-ஐ குறிப்பிடலாம். முந்தைய `example2`-ஐ மீண்டும் எடுத்துக்கொள்ளுங்கள்:
|
|
```python
|
|
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 மதிப்பு அப்படியே இருக்கும் என்பதை கவனிக்கவும்.
|
|
> **முக்கியக் குறிப்புகள்:** உங்கள் தரவுத்தொகுப்புகளில் காணப்படும் பிழைமிகு மதிப்புகளை கையாள பல வழிகள் உள்ளன. நீங்கள் பயன்படுத்தும் குறிப்பிட்ட உத்தி (அவற்றை நீக்குவது, மாற்றுவது அல்லது எப்படி மாற்றுவது) அந்தத் தரவின் தன்மைகளால் தீர்மானிக்கப்படும். நீங்கள் அதிகமாக தரவுத்தொகுப்புகளை கையாளும் போது பிழைமிகு மதிப்புகளை எப்படி கையாள்வது என்பதைப் பற்றிய நல்ல புரிதலை உருவாக்குவீர்கள்.
|
|
|
|
## நகல் தரவுகளை நீக்குதல்
|
|
|
|
> **கற்றல் இலக்கு:** இந்தப் பகுதியின் முடிவில், DataFrames-இல் நகல் மதிப்புகளை அடையாளம் காணவும், அவற்றை நீக்கவும் நீங்கள் வசதியாக இருப்பீர்கள்.
|
|
|
|
பிழைமிகு தரவுகளுக்கு கூடுதலாக, நீங்கள் உண்மையான உலக தரவுத்தொகுப்புகளில் பெரும்பாலும் நகல் தரவுகளை சந்திப்பீர்கள். அதிர்ஷ்டவசமாக, `pandas` நகல் பதிவுகளை கண்டறிந்து நீக்க எளிய வழியை வழங்குகிறது.
|
|
|
|
- **நகல்களை அடையாளம் காணுதல்: `duplicated`**: pandas இல் உள்ள `duplicated` முறை மூலம் நீங்கள் எளிதாக நகல் மதிப்புகளை கண்டறியலாம், இது ஒரு Boolean மாஸ்கை திருப்புகிறது, இது ஒரு `DataFrame`-இல் உள்ள பதிவு முந்தைய ஒன்றின் நகலா என்பதை குறிக்கிறது. இதை செயல்பாட்டில் காண மற்றொரு உதாரண `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` மதிப்புகளும் `False` ஆக இருக்கும் தரவின் ஒரு நகலை திருப்புகிறது:
|
|
```python
|
|
example4.drop_duplicates()
|
|
```
|
|
```
|
|
letters numbers
|
|
0 A 1
|
|
1 B 2
|
|
3 B 3
|
|
```
|
|
`duplicated` மற்றும் `drop_duplicates` இரண்டும் இயல்பாக அனைத்து நெடுக்களையும் கருதுகின்றன, ஆனால் உங்கள் `DataFrame`-இல் சில நெடுக்களை மட்டும் பரிசீலிக்க நீங்கள் குறிப்பிடலாம்:
|
|
```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) ஆக வழங்கப்பட்டுள்ளன. கூடுதலாக, ஒவ்வொரு பிரிவின் முடிவிலும் பயிற்சிகள் உள்ளன, அவற்றை முயற்சிக்கவும்!
|
|
|
|
## [பாடத்திற்குப் பிந்தைய வினாடி வினா](https://ff-quizzes.netlify.app/en/ds/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)
|
|
|
|
---
|
|
|
|
**குறிப்பு**:
|
|
இந்த ஆவணம் [Co-op Translator](https://github.com/Azure/co-op-translator) என்ற AI மொழிபெயர்ப்பு சேவையைப் பயன்படுத்தி மொழிபெயர்க்கப்பட்டுள்ளது. நாங்கள் துல்லியத்திற்காக முயற்சிக்கிறோம், ஆனால் தானியக்க மொழிபெயர்ப்புகளில் பிழைகள் அல்லது தவறான தகவல்கள் இருக்கக்கூடும் என்பதை தயவுசெய்து கவனத்தில் கொள்ளுங்கள். அதன் தாய்மொழியில் உள்ள மூல ஆவணம் அதிகாரப்பூர்வ ஆதாரமாக கருதப்பட வேண்டும். முக்கியமான தகவல்களுக்கு, தொழில்முறை மனித மொழிபெயர்ப்பு பரிந்துரைக்கப்படுகிறது. இந்த மொழிபெயர்ப்பைப் பயன்படுத்துவதால் ஏற்படும் எந்த தவறான புரிதல்கள் அல்லது தவறான விளக்கங்களுக்கு நாங்கள் பொறுப்பல்ல. |