Handling Null values
டேட்டாஃப்பிரேமில் Null மதிப்புகளைக் கையாள்வதில் பல்வேறு விதங்கள் உள்ளன. அவைகளைப் பற்றி இப்பகுதியில் காணலாம்.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import pandas as pd | |
import numpy as np | |
l2 = [[90,83,67,83,45],[68,89,75,56,73],[58,88,60,90,100]] | |
df = pd.DataFrame(l2,columns=['Tamil','English','Maths','Science','Social'],index=['Ramesh','Suresh','Kamesh'],dtype='int32') | |
df = df.rolling(window=3).mean() | |
print (df) | |
print (df.isnull()) | |
print (df.notnull()) | |
print (df.dropna()) | |
print (df.fillna(0)) | |
print (df.fillna(method='bfill')) # pad / fill for forward fill; bfill / backfill from backward | |
print (df.fillna(method='bfill',limit=1)) | |
print (df.sum()) | |
print (df.replace({72:100})) |
முதலில் Null மதிப்புகளைப் பெற்றிருக்கும் ஒரு டேட்டாஃப்பிரேமை பின்வருமாறு உருவாக்கிக் கொள்ளவும்.
df = df.rolling(window=3).mean()
print (df)
Tamil English Maths Science Social
Ramesh NaN NaN NaN NaN NaN
Suresh NaN NaN NaN NaN NaN
Kamesh 72.0 86.666667 67.333333 76.333333 72.666667
பின் அதில் Null மதிப்பு உள்ளதா என சோதிக்க isnull () பயன்படும். இது Null மதிப்பு இருக்கும் இடங்களில் மட்டும் True என்பதை வெளிப்படுத்தும்.
print (df.isnull())
Tamil English Maths Science Social
Ramesh True True True True True
Suresh True True True True True
Kamesh False False False False False
Null மதிப்பு இல்லையா என சோதிக்க notnull () பயன்படும். இது Null மதிப்பு இல்லாத இடங்களில் True என்பதை வெளிப்படுத்தும்.
print (df.notnull())
Tamil English Maths Science Social
Ramesh False False False False False
Suresh False False False False False
Kamesh True True True True True
Null மதிப்புகளை டேட்டாஃப்பிரேமில் இருந்து நீக்க dropna () பயன்படும்.
print (df.dropna())
Tamil English Maths Science Social
Kamesh 72.0 86.666667 67.333333 76.333333 72.666667
Null மதிப்புகளை சுழியம் மதிப்பால் இடமாற்றம் செய்ய விரும்பினால் fillna – ஐப் பயன்படுத்தலாம்.
print (df.fillna(0))
Tamil English Maths Science Social
Ramesh 0.0 0.000000 0.000000 0.000000 0.000000
Suresh 0.0 0.000000 0.000000 0.000000 0.000000
Kamesh 72.0 86.666667 67.333333 76.333333 72.666667
Null மதிப்புகளை அதற்கு அடுத்துள்ள row மதிப்புகளால் நிரப்ப விரும்பினால் method=bfill எனக் கொடுக்கலாம். இது backward fill எனப் பொருள்படும். அதேபோல வெறும் fill என்பது ஃபார்வேர்ட் fill- ஐக் குறிக்கும்.
print (df.fillna(method=’bfill’)) # pad / fill for forward fill; bfill / backfill from backward
Tamil English Maths Science Social
Ramesh 72.0 86.666667 67.333333 76.333333 72.666667
Suresh 72.0 86.666667 67.333333 76.333333 72.666667
Kamesh 72.0 86.666667 67.333333 76.333333 72.666667
method=bfill என்பதுடன் limit=1 எனக் கொடுத்தால் கீழிருந்து மேலாக ஒரே ஒரு row-ஐ மட்டும் நிரப்பும்.
print (df.fillna(method=’bfill’,limit=1))
Tamil English Maths Science Social
Ramesh NaN NaN NaN NaN NaN
Suresh 72.0 86.666667 67.333333 76.333333 72.666667
Kamesh 72.0 86.666667 67.333333 76.333333 72.666667
Null மதிப்புகளைக் கொண்ட டேட்டாஃப்பிரேமின் மீது sum() என்பது போன்ற aggregate functions-ஐப் பயன்படுத்தினால், அவை Null மதிப்புகளைத் தவிர்த்து மீதமுள்ள மதிப்புகளை மட்டும் கணக்கில் எடுத்துக் கொண்டு செயல்படுவதைக் காணலாம்.
print (df.sum())
Tamil 72.000000
English 86.666667
Maths 67.333333
Science 76.333333
Social 72.666667
dtype: float64
ஒரு மதிப்பினை மற்றொரு மதிப்பால் இடமாற்றம் செய்ய replace() பயன்படுகிறது.
print (df.replace({72:100}))
Tamil English Maths Science Social
Ramesh NaN NaN NaN NaN NaN
Suresh NaN NaN NaN NaN NaN
Kamesh 100.0 86.666667 67.333333 76.333333 72.666667