مصنف کی طرف سے تصویر
ڈیٹا کی صفائی کسی بھی ڈیٹا کے تجزیہ کے عمل کا ایک اہم حصہ ہے۔ یہ وہ مرحلہ ہے جہاں آپ غلطیوں کو دور کرتے ہیں، گمشدہ ڈیٹا کو سنبھالتے ہیں، اور اس بات کو یقینی بناتے ہیں کہ آپ کا ڈیٹا اس فارمیٹ میں ہے جس کے ساتھ آپ کام کر سکتے ہیں۔ اچھی طرح سے صاف کیے گئے ڈیٹاسیٹ کے بغیر، بعد کے کسی بھی تجزیے کو ترچھا یا غلط کیا جا سکتا ہے۔
یہ مضمون آپ کو Python میں ڈیٹا صاف کرنے کی کئی کلیدی تکنیکوں سے متعارف کرائے گا، جس میں طاقتور لائبریریوں جیسے پانڈاس، numpy، seaborn، اور matplotlib کا استعمال کیا گیا ہے۔
ڈیٹا کی صفائی کے میکانکس میں غوطہ لگانے سے پہلے، آئیے اس کی اہمیت کو سمجھیں۔ حقیقی دنیا کا ڈیٹا اکثر گندا ہوتا ہے۔ اس میں ڈپلیکیٹ اندراجات، غلط یا متضاد ڈیٹا کی قسمیں، گمشدہ اقدار، غیر متعلقہ خصوصیات اور آؤٹ لیرز شامل ہو سکتے ہیں۔ اعداد و شمار کا تجزیہ کرتے وقت یہ تمام عوامل گمراہ کن نتائج کا باعث بن سکتے ہیں۔ یہ ڈیٹا کی صفائی کو ڈیٹا سائنس لائف سائیکل کا ایک ناگزیر حصہ بناتا ہے۔
ہم درج ذیل ڈیٹا صاف کرنے کے کاموں کا احاطہ کریں گے۔
مصنف کی طرف سے تصویر
شروع کرنے سے پہلے، آئیے ضروری لائبریریوں کو درآمد کریں۔ ہم ڈیٹا میں ہیرا پھیری کے لیے پانڈا اور تصورات کے لیے سیبورن اور میٹپلوٹلیب استعمال کریں گے۔
ہم تاریخوں میں ہیرا پھیری کے لیے ڈیٹ ٹائم پائتھون ماڈیول بھی درآمد کریں گے۔
import pandas as pd
import seaborn as sns
import datetime as dt
import matplotlib.pyplot as plt
import matplotlib.ticker as ticker
سب سے پہلے، ہمیں اپنا ڈیٹا لوڈ کرنے کی ضرورت ہوگی۔ اس مثال میں، ہم پانڈوں کا استعمال کرتے ہوئے ایک CSV فائل لوڈ کرنے جا رہے ہیں۔ ہم حد بندی دلیل بھی شامل کرتے ہیں۔
df = pd.read_csv('F:KDNuggetsKDN Mastering the Art of Data Cleaning in Pythonproperty.csv', delimiter= ';')
اس کے بعد، ڈیٹا کی ساخت کو سمجھنے کے لیے اس کا معائنہ کرنا ضروری ہے، ہم کس قسم کے متغیرات کے ساتھ کام کر رہے ہیں، اور آیا کوئی قدر غائب ہے۔ چونکہ ہم نے جو ڈیٹا درآمد کیا ہے وہ بہت بڑا نہیں ہے، آئیے پورے ڈیٹاسیٹ پر ایک نظر ڈالیں۔
# Look at all the rows of the dataframe
display(df)
ڈیٹا سیٹ کیسا دکھتا ہے یہ یہاں ہے۔
آپ فوری طور پر دیکھ سکتے ہیں کہ کچھ لاپتہ اقدار ہیں۔ نیز، تاریخ کی شکلیں متضاد ہیں۔
اب، info() طریقہ استعمال کرتے ہوئے ڈیٹا فریم کے خلاصے پر ایک نظر ڈالتے ہیں۔
# Get a concise summary of the dataframe
print(df.info())
یہاں کوڈ آؤٹ پٹ ہے۔
ہم دیکھ سکتے ہیں کہ صرف کالم مربع فٹ میں کوئی NULL قدر نہیں ہے، لہذا ہمیں کسی نہ کسی طرح اسے سنبھالنا پڑے گا۔ نیز، کالم اشتہار_تاریخ، اور سیل_تاریخ آبجیکٹ ڈیٹا کی قسم ہیں، حالانکہ یہ تاریخ ہونی چاہیے۔
کالم کا مقام بالکل خالی ہے۔ کیا ہمیں اس کی ضرورت ہے؟
ہم آپ کو ان مسائل سے نمٹنے کا طریقہ دکھائیں گے۔ ہم غیر ضروری کالموں کو حذف کرنے کا طریقہ سیکھ کر شروع کریں گے۔
ڈیٹا سیٹ میں دو کالم ہیں جن کی ہمیں اپنے ڈیٹا کے تجزیہ میں ضرورت نہیں ہے، لہذا ہم انہیں ہٹا دیں گے۔
پہلا کالم خریدار ہے۔ ہمیں اس کی ضرورت نہیں ہے، کیونکہ خریدار کا نام تجزیہ پر اثر انداز نہیں ہوتا ہے۔
ہم مخصوص کالم کے نام کے ساتھ ڈراپ() طریقہ استعمال کر رہے ہیں۔ یہ بتانے کے لیے کہ ہم کالم کو حذف کرنا چاہتے ہیں، ہم محور کو 1 پر سیٹ کرتے ہیں۔ نیز، inplace argument کو True پر سیٹ کیا گیا ہے تاکہ ہم موجودہ ڈیٹا فریم میں ترمیم کریں، اور ہٹائے گئے کالم کے بغیر نیا ڈیٹا فریم نہ بنائیں۔
df.drop('buyer', axis = 1, inplace = True)
دوسرا کالم جسے ہم ہٹانا چاہتے ہیں وہ مقام ہے۔ اگرچہ اس معلومات کا ہونا مفید ہو سکتا ہے، لیکن یہ مکمل طور پر خالی کالم ہے، تو آئیے اسے ہٹا دیں۔
ہم پہلے کالم کے ساتھ وہی طریقہ اختیار کرتے ہیں۔
df.drop('location', axis = 1, inplace = True)
یقینا، آپ ان دونوں کالموں کو ایک ساتھ ہٹا سکتے ہیں۔
df = df.drop(['buyer', 'location'], axis=1)
دونوں نقطہ نظر درج ذیل ڈیٹا فریم کو واپس کرتے ہیں۔
ڈپلیکیٹ ڈیٹا آپ کے ڈیٹاسیٹ میں مختلف وجوہات کی بنا پر ہو سکتا ہے اور آپ کے تجزیہ کو متزلزل کر سکتا ہے۔
آئیے اپنے ڈیٹا سیٹ میں ڈپلیکیٹس کا پتہ لگائیں۔ اسے کرنے کا طریقہ یہاں ہے۔
نیچے کا کوڈ طریقہ استعمال کرتا ہے۔ نقل شدہ() پورے ڈیٹاسیٹ میں ڈپلیکیٹس پر غور کرنا۔ اس کی ڈیفالٹ ترتیب کسی قدر کی پہلی موجودگی کو منفرد اور بعد میں آنے والے واقعات کو نقل کے طور پر سمجھنا ہے۔ آپ کا استعمال کرتے ہوئے اس طرز عمل میں ترمیم کرسکتے ہیں۔ رکھنا پیرامیٹر مثال کے طور پر، df.duplicated(keep=False) تمام ڈپلیکیٹس کو True کے بطور نشان زد کرے گا، بشمول پہلی موجودگی۔
# Detecting duplicates
duplicates = df[df.duplicated()]
duplicates
یہاں آؤٹ پٹ ہے۔
انڈیکس 3 والی قطار کو ڈپلیکیٹ کے طور پر نشان زد کیا گیا ہے کیونکہ ایک ہی اقدار کے ساتھ قطار 2 اس کا پہلا واقعہ ہے۔
اب ہمیں ڈپلیکیٹس کو ہٹانے کی ضرورت ہے، جو ہم درج ذیل کوڈ کے ساتھ کرتے ہیں۔
# Detecting duplicates
duplicates = df[df.duplicated()]
duplicates
۔ drop_duplicates() فنکشن ڈپلیکیٹس کی شناخت کرتے وقت تمام کالموں پر غور کرتا ہے۔ اگر آپ صرف مخصوص کالموں پر غور کرنا چاہتے ہیں، تو آپ انہیں فہرست کے طور پر اس فنکشن میں اس طرح منتقل کر سکتے ہیں: df.drop_duplicates(subset=['column1', 'column2'])۔
جیسا کہ آپ دیکھ سکتے ہیں، ڈپلیکیٹ قطار کو چھوڑ دیا گیا ہے۔ تاہم، اشاریہ سازی وہی رہی، انڈیکس 3 غائب ہے۔ ہم اشاریہ جات کو دوبارہ ترتیب دے کر اسے صاف کریں گے۔
df = df.reset_index(drop=True)
یہ کام استعمال کرکے انجام دیا جاتا ہے۔ reset_index() فنکشن ڈراپ = سچی دلیل اصل انڈیکس کو ضائع کرنے کے لیے استعمال ہوتی ہے۔ اگر آپ اس دلیل کو شامل نہیں کرتے ہیں، تو پرانا انڈیکس آپ کے ڈیٹا فریم میں ایک نئے کالم کے طور پر شامل کر دیا جائے گا۔ drop=True ترتیب دے کر، آپ پانڈوں سے کہہ رہے ہیں کہ پرانے انڈیکس کو بھول جائیں اور اسے ڈیفالٹ انٹیجر انڈیکس پر دوبارہ ترتیب دیں۔
مشق کے لیے، کوشش کریں۔ اس مائیکروسافٹ ڈیٹاسیٹ سے ڈپلیکیٹس کو ہٹا دیں۔.
بعض اوقات، ڈیٹا کی قسمیں غلط طریقے سے سیٹ ہو سکتی ہیں۔ مثال کے طور پر، تاریخ کے کالم کو تاروں سے تعبیر کیا جا سکتا ہے۔ آپ کو ان کو ان کی مناسب اقسام میں تبدیل کرنے کی ضرورت ہے۔
ہمارے ڈیٹاسیٹ میں، ہم کالم اشتہار_تاریخ اور سیل_تاریخ کے لیے ایسا کریں گے، جیسا کہ وہ آبجیکٹ ڈیٹا کی قسم کے طور پر دکھائے جاتے ہیں۔ نیز، تاریخ کی تاریخیں قطاروں میں مختلف طریقے سے فارمیٹ کی جاتی ہیں۔ ہمیں اسے تاریخ میں تبدیل کرنے کے ساتھ ساتھ اسے مسلسل بنانے کی ضرورت ہے۔
سب سے آسان طریقہ استعمال کرنا ہے۔ to_datetime() طریقہ ایک بار پھر، آپ اس کالم کو کالم کے لحاظ سے کر سکتے ہیں، جیسا کہ ذیل میں دکھایا گیا ہے۔
ایسا کرتے وقت، ہم نے دن کی پہلی دلیل کو سچ پر سیٹ کیا کیونکہ کچھ تاریخیں پہلے دن سے شروع ہوتی ہیں۔
# Converting advertisement_date column to datetime
df['advertisement_date'] = pd.to_datetime(df['advertisement_date'], dayfirst = True) # Converting sale_date column to datetime
df['sale_date'] = pd.to_datetime(df['sale_date'], dayfirst = True)
آپ استعمال کرکے ایک ہی وقت میں دونوں کالموں کو بھی تبدیل کرسکتے ہیں۔ درخواست دیں() طریقہ کے ساتھ to_datetime().
# Converting advertisement_date and sale_date columns to datetime
df[['advertisement_date', 'sale_date']] = df[['advertisement_date', 'sale_date']].apply(pd.to_datetime, dayfirst = True)
دونوں نقطہ نظر آپ کو ایک ہی نتیجہ دیتے ہیں۔
اب تاریخیں ایک مستقل شکل میں ہیں۔ ہم دیکھتے ہیں کہ تمام ڈیٹا کو تبدیل نہیں کیا گیا ہے۔ اشتہار کی_تاریخ میں ایک NaT قدر ہے اور سیل_تاریخ میں دو۔ اس کا مطلب ہے کہ تاریخ غائب ہے۔
آئیے چیک کریں کہ آیا کالم کو استعمال کرکے تاریخوں میں تبدیل کیا گیا ہے۔ معلومات () طریقہ.
# Get a concise summary of the dataframe
print(df.info())
جیسا کہ آپ دیکھ سکتے ہیں، دونوں کالم datetime64[ns] فارمیٹ میں نہیں ہیں۔
اب اس میں ڈیٹا کو TEXT سے NUMERIC میں تبدیل کرنے کی کوشش کریں۔ ایئر بی این بی ڈیٹاسیٹ.
حقیقی دنیا کے ڈیٹاسیٹس میں اکثر قدریں غائب ہوتی ہیں۔ گمشدہ ڈیٹا کو ہینڈل کرنا بہت ضروری ہے، کیونکہ کچھ الگورتھم ایسی قدروں کو سنبھال نہیں سکتے۔
ہماری مثال میں کچھ گمشدہ اقدار بھی ہیں، لہذا آئیے گمشدہ ڈیٹا کو سنبھالنے کے لیے دو سب سے زیادہ معمول کے طریقوں پر ایک نظر ڈالیں۔
غائب اقدار کے ساتھ قطاروں کو حذف کرنا
اگر غائب ڈیٹا والی قطاروں کی تعداد مشاہدات کی کل تعداد کے مقابلے میں معمولی ہے، تو آپ ان قطاروں کو حذف کرنے پر غور کر سکتے ہیں۔
ہماری مثال میں، آخری قطار میں مربع فٹ اور اشتہار کی تاریخ کے علاوہ کوئی قدر نہیں ہے۔ ہم ایسا ڈیٹا استعمال نہیں کر سکتے، تو آئیے اس قطار کو ہٹا دیں۔
یہ وہ کوڈ ہے جہاں ہم قطار کے اشاریہ کی نشاندہی کرتے ہیں۔
df = df.drop(8)
ڈیٹا فریم اب اس طرح لگتا ہے۔
آخری قطار کو حذف کر دیا گیا ہے، اور ہمارا ڈیٹا فریم اب بہتر نظر آ رہا ہے۔ تاہم، ابھی بھی کچھ گمشدہ ڈیٹا موجود ہے جسے ہم ایک اور طریقہ استعمال کرتے ہوئے سنبھال لیں گے۔
گمشدہ اقدار کا تعین کرنا
اگر آپ کے پاس اہم ڈیٹا غائب ہے تو، حذف کرنے سے بہتر حکمت عملی مواخذہ ہوسکتی ہے۔ اس عمل میں دیگر ڈیٹا کی بنیاد پر گمشدہ اقدار کو بھرنا شامل ہے۔ عددی اعداد و شمار کے لیے، عام تقلید کے طریقوں میں مرکزی رجحان کی پیمائش کا استعمال شامل ہے (مطلب، میڈین، موڈ)۔
ہمارے پہلے سے تبدیل شدہ ڈیٹا فریم میں، ہمارے پاس کالم اشتہار_تاریخ اور سیل_تاریخ میں NaT (Not a Time) اقدار ہیں۔ ہم استعمال کرتے ہوئے ان گمشدہ اقدار کو لاگو کریں گے۔ مطلب() طریقہ.
کوڈ استعمال کرتا ہے۔ بھرنا() اوسط قدر کے ساتھ کالعدم اقدار کو تلاش کرنے اور بھرنے کا طریقہ۔
# Imputing values for numerical columns
df['advertisement_date'] = df['advertisement_date'].fillna(df['advertisement_date'].mean())
df['sale_date'] = df['sale_date'].fillna(df['sale_date'].mean())
آپ کوڈ کی ایک لائن میں بھی یہی کام کر سکتے ہیں۔ ہم استعمال کرتے ہیں درخواست دیں() استعمال کرتے ہوئے بیان کردہ فنکشن کو لاگو کرنے کے لیے لامڈا. اوپر کی طرح، یہ فنکشن استعمال کرتا ہے بھرنا() اور مطلب() گمشدہ اقدار کو پُر کرنے کے طریقے۔
# Imputing values for multiple numerical columns
df[['advertisement_date', 'sale_date']] = df[['advertisement_date', 'sale_date']].apply(lambda x: x.fillna(x.mean()))
دونوں صورتوں میں آؤٹ پٹ اس طرح لگتا ہے۔
ہمارے sale_date کالم میں اب ایسے اوقات ہیں جن کی ہمیں ضرورت نہیں ہے۔ آئیے ان کو ہٹا دیں۔
ہم استعمال کریں گے strftime() طریقہ، جو تاریخوں کو ان کی تار کی نمائندگی اور ایک مخصوص شکل میں تبدیل کرتا ہے۔
df['sale_date'] = df['sale_date'].dt.strftime('%Y-%m-%d')
تاریخیں اب بالکل صاف نظر آتی ہیں۔
اگر آپ کو استعمال کرنے کی ضرورت ہے۔ strftime() متعدد کالموں پر، آپ دوبارہ استعمال کر سکتے ہیں۔ لامڈا مندرجہ ذیل طریقہ.
df[['date1_formatted', 'date2_formatted']] = df[['date1', 'date2']].apply(lambda x: x.dt.strftime('%Y-%m-%d'))
اب، آئیے دیکھتے ہیں کہ ہم گمشدہ کلیدی اقدار کو کس طرح قرار دے سکتے ہیں۔
زمرہ دار ڈیٹا ڈیٹا کی ایک قسم ہے جو اسی طرح کی خصوصیات والی معلومات کو گروپ کرنے کے لیے استعمال ہوتی ہے۔ ان گروپوں میں سے ہر ایک کیٹیگری ہے۔ زمرہ دار ڈیٹا عددی اقدار کو لے سکتا ہے (جیسے "1" "مرد" اور "2" جو "عورت" کو ظاہر کرتا ہے)، لیکن ان نمبروں کا ریاضیاتی معنی نہیں ہوتا ہے۔ مثال کے طور پر، آپ انہیں ایک ساتھ شامل نہیں کر سکتے۔
زمرہ کے اعداد و شمار کو عام طور پر دو اقسام میں تقسیم کیا جاتا ہے:
- برائے نام ڈیٹا: یہ تب ہوتا ہے جب زمرے صرف لیبل لگائے جاتے ہیں اور انہیں کسی خاص ترتیب میں ترتیب نہیں دیا جاسکتا۔ مثالوں میں جنس (مرد، عورت)، خون کی قسم (A، B، AB، O) یا رنگ (سرخ، سبز، نیلا) شامل ہیں۔
- عام ڈیٹا: یہ تب ہوتا ہے جب زمرہ جات کو ترتیب دیا جا سکتا ہے یا درجہ بندی کیا جا سکتا ہے۔ اگرچہ زمرہ جات کے درمیان وقفہ مساوی نہیں ہے، زمرہ جات کی ترتیب ایک معنی رکھتی ہے۔ مثالوں میں درجہ بندی کے پیمانے (ایک فلم کی 1 سے 5 درجہ بندی)، تعلیمی سطح (ہائی اسکول، انڈرگریجویٹ، گریجویٹ) یا کینسر کے مراحل (مرحلہ I، مرحلہ II، مرحلہ III) شامل ہیں۔
گمشدہ دوٹوک اعداد و شمار کے لیے، موڈ عام طور پر استعمال کیا جاتا ہے۔ ہماری مثال میں، کالم پراپرٹی_زمرہ زمرہ (نامزد) ڈیٹا ہے، اور دو قطاروں میں ڈیٹا غائب ہے۔
آئیے گمشدہ اقدار کو موڈ سے بدل دیں۔
# For categorical columns
df['property_category'] = df['property_category'].fillna(df['property_category'].mode()[0])
یہ کوڈ استعمال کرتا ہے۔ بھرنا() پراپرٹی_کیٹیگری کالم میں تمام NaN اقدار کو تبدیل کرنے کے لیے فنکشن۔ یہ اسے موڈ سے بدل دیتا ہے۔
مزید برآں، [0] حصہ اس سیریز سے پہلی قدر نکالنے کے لیے استعمال ہوتا ہے۔ اگر متعدد موڈز ہیں، تو یہ پہلا کو منتخب کرے گا۔ اگر صرف ایک موڈ ہے، تو یہ اب بھی ٹھیک کام کرتا ہے۔
یہاں آؤٹ پٹ ہے۔
ڈیٹا اب بہت اچھا لگتا ہے۔ صرف ایک چیز جو باقی ہے وہ یہ دیکھنا ہے کہ آیا باہر والے ہیں۔
آپ اس پر null سے نمٹنے کی مشق کر سکتے ہیں۔ میٹا انٹرویو سوال، جہاں آپ کو NULLs کو صفر سے تبدیل کرنا پڑے گا۔
آؤٹ لیرز ڈیٹاسیٹ میں ڈیٹا پوائنٹس ہوتے ہیں جو دوسرے مشاہدات سے واضح طور پر مختلف ہوتے ہیں۔ وہ ڈیٹا سیٹ میں موجود دیگر اقدار سے غیر معمولی طور پر بہت دور رہ سکتے ہیں، مجموعی پیٹرن سے باہر رہتے ہیں۔ باقی ڈیٹا کے مقابلے ان کی قدریں نمایاں طور پر زیادہ یا کم ہونے کی وجہ سے انہیں غیر معمولی سمجھا جاتا ہے۔
باہر جانے والے مختلف وجوہات کی وجہ سے پیدا ہوسکتے ہیں جیسے:
- پیمائش یا ان پٹ کی غلطیاں
- ڈیٹا کرپشن۔
- حقیقی شماریاتی بے ضابطگیاں
آؤٹ لیرز آپ کے ڈیٹا کے تجزیہ اور شماریاتی ماڈلنگ کے نتائج کو نمایاں طور پر متاثر کر سکتے ہیں۔ وہ ایک ترچھی تقسیم، تعصب کا باعث بن سکتے ہیں، یا بنیادی شماریاتی مفروضوں کو باطل کر سکتے ہیں، تخمینہ شدہ ماڈل فٹ کو مسخ کر سکتے ہیں، پیشین گوئی کرنے والے ماڈلز کی پیشن گوئی کی درستگی کو کم کر سکتے ہیں، اور غلط نتائج کی طرف لے جا سکتے ہیں۔
آؤٹ لیرز کا پتہ لگانے کے لیے عام طور پر استعمال ہونے والے کچھ طریقے Z-score، IQR (Interquartile Range)، باکس پلاٹ، سکیٹر پلاٹ، اور ڈیٹا ویژولائزیشن کی تکنیک ہیں۔ کچھ جدید صورتوں میں، مشین لرننگ کے طریقے بھی استعمال کیے جاتے ہیں۔
اعداد و شمار کو دیکھنے سے باہر جانے والوں کی شناخت میں مدد مل سکتی ہے۔ سیبورن کا باکس پلاٹ اس کے لیے کارآمد ہے۔
plt.figure(figsize=(10, 6))
sns.boxplot(data=df[['advertised_price', 'sale_price']])
ہم plt.figure() کا استعمال کرتے ہوئے فگر کی چوڑائی اور اونچائی کو انچ میں سیٹ کرتے ہیں۔
پھر ہم اشتہاری_قیمت اور فروخت_قیمت کے کالموں کے لیے باکس پلاٹ بناتے ہیں، جو اس طرح لگتا ہے۔
اسے اوپر والے کوڈ میں شامل کر کے آسان استعمال کے لیے پلاٹ کو بہتر بنایا جا سکتا ہے۔
plt.xlabel('Prices')
plt.ylabel('USD')
plt.ticklabel_format(style='plain', axis='y')
formatter = ticker.FuncFormatter(lambda x, p: format(x, ',.2f'))
plt.gca().yaxis.set_major_formatter(formatter)
ہم دونوں محوروں کے لیبل سیٹ کرنے کے لیے مذکورہ کوڈ کا استعمال کرتے ہیں۔ ہم یہ بھی دیکھتے ہیں کہ y-axis پر موجود اقدار سائنسی اشارے میں ہیں، اور ہم اسے قیمت کی اقدار کے لیے استعمال نہیں کر سکتے۔ لہذا ہم plt.ticklabel_format() فنکشن کا استعمال کرتے ہوئے اسے سادہ انداز میں تبدیل کرتے ہیں۔
پھر ہم وہ فارمیٹر بناتے ہیں جو y-axis پر کوما کے ساتھ ہزار الگ کرنے والے اور اعشاریہ نقطوں کے طور پر دکھائے گا۔ آخری کوڈ لائن اس کا اطلاق محور پر کرتی ہے۔
آؤٹ پٹ اب اس طرح لگتا ہے۔
اب، ہم کس طرح باہر کی شناخت اور ہٹا دیں؟
طریقوں میں سے ایک IQR طریقہ استعمال کرنا ہے۔
IQR، یا انٹرکوارٹائل رینج، ایک شماریاتی طریقہ ہے جو ڈیٹا سیٹ کو کوارٹائل میں تقسیم کر کے تغیر کی پیمائش کے لیے استعمال کیا جاتا ہے۔ کوارٹائل ایک درجہ ترتیب والے ڈیٹا کو چار مساوی حصوں میں تقسیم کرتے ہیں، اور پہلے کوارٹائل (25ویں پرسنٹائل) اور تیسرے کوارٹائل (75ویں پرسنٹائل) کی رینج کے اندر موجود اقدار انٹرکوارٹائل رینج بناتے ہیں۔
انٹرکوارٹائل رینج ڈیٹا میں آؤٹ لیرز کی شناخت کے لیے استعمال ہوتی ہے۔ یہاں یہ ہے کہ یہ کیسے کام کرتا ہے:
- پہلے، پہلے چوتھائی (Q1)، تیسرے چوتھائی (Q3) کا حساب لگائیں، اور پھر IQR کا تعین کریں۔ IQR کا شمار Q3 - Q1 کے طور پر کیا جاتا ہے۔
- Q1 - 1.5IQR سے کم یا Q3 + 1.5IQR سے اوپر کی کوئی بھی قدر کو آؤٹ لیئر سمجھا جاتا ہے۔
ہمارے باکس پلاٹ پر، باکس دراصل IQR کی نمائندگی کرتا ہے۔ باکس کے اندر لائن میڈین (یا دوسرا چوتھائی) ہے۔ باکس پلاٹ کی 'سرگوشیاں' Q1.5 اور Q1 سے 3*IQR کے اندر رینج کی نمائندگی کرتی ہیں۔
ان سرگوشیوں سے باہر کسی بھی ڈیٹا پوائنٹس کو آؤٹ لیئر سمجھا جا سکتا ہے۔ ہمارے معاملے میں، یہ $12,000,000 کی قیمت ہے۔ اگر آپ باکس پلاٹ کو دیکھیں گے، تو آپ دیکھیں گے کہ اس کی کتنی واضح طور پر نمائندگی کی گئی ہے، جس سے ظاہر ہوتا ہے کہ آؤٹ لیرز کا پتہ لگانے میں ڈیٹا ویژولائزیشن کیوں اہم ہے۔
اب، آئیے پائتھون کوڈ میں آئی کیو آر طریقہ استعمال کرکے آؤٹ لیرز کو ہٹاتے ہیں۔ سب سے پہلے، ہم مشتہر قیمتوں کو ہٹا دیں گے۔
Q1 = df['advertised_price'].quantile(0.25)
Q3 = df['advertised_price'].quantile(0.75)
IQR = Q3 - Q1
df = df[~((df['advertised_price'] (Q1 - 1.5 * IQR)) |(df['advertised_price'] > (Q3 + 1.5 * IQR)))]
ہم سب سے پہلے کا استعمال کرتے ہوئے پہلے چوتھائی (یا 25ویں پرسنٹائل) کا حساب لگاتے ہیں۔ مقدار () فنکشن ہم تیسرے کوارٹائل یا 75ویں پرسنٹائل کے لیے بھی ایسا ہی کرتے ہیں۔
وہ ان اقدار کو ظاہر کرتے ہیں جن کے نیچے بالترتیب 25% اور 75% ڈیٹا گرتا ہے۔
پھر ہم کوارٹائل کے درمیان فرق کا حساب لگاتے ہیں۔ اب تک کی ہر چیز صرف IQR مراحل کو Python کوڈ میں ترجمہ کر رہی ہے۔
ایک آخری قدم کے طور پر، ہم آؤٹ لیرز کو ہٹاتے ہیں۔ دوسرے الفاظ میں، تمام ڈیٹا Q1 - 1.5 * IQR سے کم یا Q3 + 1.5 * IQR سے زیادہ۔
'~' آپریٹر شرط کی نفی کرتا ہے، اس لیے ہمارے پاس صرف وہ ڈیٹا رہ جاتا ہے جو باہر نہیں ہوتے۔
پھر ہم فروخت کی قیمت کے ساتھ بھی ایسا ہی کر سکتے ہیں۔
Q1 = df['sale_price'].quantile(0.25)
Q3 = df['sale_price'].quantile(0.75)
IQR = Q3 - Q1
df = df[~((df['sale_price'] (Q1 - 1.5 * IQR)) |(df['sale_price'] > (Q3 + 1.5 * IQR)))]
بلاشبہ، آپ اسے استعمال کرتے ہوئے زیادہ مختصر طریقے سے کر سکتے ہیں۔ لوپ کے لئے.
for column in ['advertised_price', 'sale_price']: Q1 = df[column].quantile(0.25) Q3 = df[column].quantile(0.75) IQR = Q3 - Q1 df = df[~((df[column] (Q1 - 1.5 * IQR)) |(df[column] > (Q3 + 1.5 * IQR)))]
دو کالموں کا لوپ اعادہ کرتا ہے۔ ہر کالم کے لیے، یہ IQR کا حساب لگاتا ہے اور پھر DataFrame میں قطاروں کو ہٹاتا ہے۔
براہ کرم نوٹ کریں کہ یہ عمل ترتیب وار کیا جاتا ہے، پہلے اشتہاری_قیمت کے لیے اور پھر فروخت_قیمت کے لیے۔ نتیجے کے طور پر، ڈیٹا فریم میں ہر کالم کے لیے جگہ جگہ ترمیم کی جاتی ہے، اور کسی بھی کالم میں آؤٹ لیئر ہونے کی وجہ سے قطاروں کو ہٹایا جا سکتا ہے۔ اس لیے، اس آپریشن کے نتیجے میں اس سے کم قطاریں نکل سکتی ہیں اگر اشتہاری_قیمت اور فروخت_قیمت کے لیے باہر نکلنے والوں کو آزادانہ طور پر ہٹا دیا جائے اور بعد میں نتائج کو یکجا کر دیا جائے۔
ہماری مثال میں، آؤٹ پٹ دونوں صورتوں میں ایک جیسا ہوگا۔ یہ دیکھنے کے لیے کہ باکس پلاٹ کیسے بدلا، ہمیں پہلے کی طرح اسی کوڈ کا استعمال کرتے ہوئے اسے دوبارہ پلاٹ کرنے کی ضرورت ہے۔
plt.figure(figsize=(10, 6))
sns.boxplot(data=df[['advertised_price', 'sale_price']])
plt.xlabel('Prices')
plt.ylabel('USD')
plt.ticklabel_format(style='plain', axis='y')
formatter = ticker.FuncFormatter(lambda x, p: format(x, ',.2f'))
plt.gca().yaxis.set_major_formatter(formatter)
یہاں آؤٹ پٹ ہے۔
آپ Python میں پرسنٹائل کا حساب لگانے کی مشق کر سکتے ہیں۔ جنرل اسمبلی انٹرویو سوال.
ڈیٹا کی صفائی ڈیٹا کے تجزیہ کے عمل میں ایک اہم مرحلہ ہے۔ اگرچہ اس میں وقت لگ سکتا ہے، لیکن آپ کے نتائج کی درستگی کو یقینی بنانا ضروری ہے۔
خوش قسمتی سے، Python کی لائبریریوں کا بھرپور ماحولیاتی نظام اس عمل کو مزید قابل انتظام بناتا ہے۔ ہم نے غیر ضروری قطاروں اور کالموں کو ہٹانے، ڈیٹا کو دوبارہ فارمیٹ کرنے اور گمشدہ اقدار اور آؤٹ لیرز سے نمٹنے کا طریقہ سیکھا۔ یہ معمول کے اقدامات ہیں جو زیادہ تر کسی بھی ڈیٹا پر انجام دینے پڑتے ہیں۔ تاہم، آپ کو بھی کبھی کبھی ضرورت پڑے گی۔ دو کالموں کو ایک میں جوڑیں۔, موجودہ ڈیٹا کی تصدیق کریں۔, اس کو لیبل تفویض کریں۔، یا سفید خالی جگہوں سے چھٹکارا حاصل کریں.
یہ سب ڈیٹا کی صفائی ہے، کیونکہ یہ آپ کو گندے، حقیقی دنیا کے ڈیٹا کو ایک اچھی ساخت والے ڈیٹاسیٹ میں تبدیل کرنے کی اجازت دیتا ہے جس کا آپ اعتماد کے ساتھ تجزیہ کر سکتے ہیں۔ بس اس ڈیٹاسیٹ کا موازنہ کریں جس کے ساتھ ہم نے شروع کیا تھا جس کے ساتھ ہم ختم ہوئے تھے۔
اگر آپ کو اس نتیجے میں اطمینان نظر نہیں آتا ہے اور صاف ڈیٹا آپ کو عجیب طور پر پرجوش نہیں کرتا ہے، تو آپ ڈیٹا سائنس میں دنیا میں کیا کر رہے ہیں!؟
نیٹ روزیدی ڈیٹا سائنسدان اور مصنوعات کی حکمت عملی میں ہے۔ وہ تجزیات کی تعلیم دینے والے ایک منسلک پروفیسر بھی ہیں، اور اس کے بانی ہیں۔ StrataScratch، ایک پلیٹ فارم جو ڈیٹا سائنسدانوں کو اعلی کمپنیوں کے حقیقی انٹرویو کے سوالات کے ساتھ ان کے انٹرویوز کی تیاری میں مدد کرتا ہے۔ اس کے ساتھ جڑیں۔ ٹویٹر: StrataScratch or لنکڈ.
- SEO سے چلنے والا مواد اور PR کی تقسیم۔ آج ہی بڑھا دیں۔
- پلیٹو ڈیٹا ڈاٹ نیٹ ورک ورٹیکل جنریٹو اے آئی۔ اپنے آپ کو بااختیار بنائیں۔ یہاں تک رسائی حاصل کریں۔
- پلیٹوآئ اسٹریم۔ ویب 3 انٹیلی جنس۔ علم میں اضافہ۔ یہاں تک رسائی حاصل کریں۔
- پلیٹو ای ایس جی۔ کاربن، کلین ٹیک، توانائی ، ماحولیات، شمسی، ویسٹ مینجمنٹ یہاں تک رسائی حاصل کریں۔
- پلیٹو ہیلتھ۔ بائیوٹیک اینڈ کلینیکل ٹرائلز انٹیلی جنس۔ یہاں تک رسائی حاصل کریں۔
- ماخذ: https://www.kdnuggets.com/mastering-the-art-of-data-cleaning-in-python?utm_source=rss&utm_medium=rss&utm_campaign=mastering-the-art-of-data-cleaning-in-python
- : ہے
- : ہے
- : نہیں
- :کہاں
- ][p
- $UP
- 000
- 1
- 10
- 11
- 12
- 15٪
- 25
- 7
- 75
- 8
- 9
- a
- اوپر
- درستگی
- کے پار
- اصل میں
- شامل کریں
- شامل کیا
- انہوں نے مزید کہا
- ملحق
- اعلی درجے کی
- اشتہار
- پھر
- یلگوردمز
- تمام
- کی اجازت دیتا ہے
- ساتھ
- پہلے ہی
- بھی
- an
- تجزیہ کرتا ہے
- تجزیہ
- تجزیاتی
- تجزیے
- تجزیہ
- اور
- ایک اور
- کوئی بھی
- لاگو ہوتا ہے
- کا اطلاق کریں
- نقطہ نظر
- نقطہ نظر
- مناسب
- کیا
- دلیل
- اٹھتا
- اہتمام
- فن
- مضمون
- AS
- اسمبلی
- مفروضے
- At
- ایکسس
- محور
- b
- کی بنیاد پر
- BE
- کیونکہ
- رہا
- کیا جا رہا ہے
- نیچے
- بہتر
- کے درمیان
- تعصب
- خون
- بلیو
- دونوں
- باکس
- لیکن
- خریدار..
- by
- حساب
- حساب کرتا ہے
- حساب
- کر سکتے ہیں
- کینسر
- نہیں کر سکتے ہیں
- کیس
- مقدمات
- اقسام
- قسم
- مرکزی
- کچھ
- تبدیل
- تبدیل کر دیا گیا
- خصوصیات
- چیک کریں
- صفائی
- واضح طور پر
- کوڈ
- رنگ
- کالم
- کالم
- مل کر
- کامن
- عام طور پر
- کمپنیاں
- موازنہ
- مقابلے میں
- مکمل طور پر
- جامع
- شرط
- آپکا اعتماد
- رابطہ قائم کریں
- غور کریں
- سمجھا
- سمجھتا ہے
- متواتر
- پر مشتمل ہے
- تبدیل
- تبدیل
- تبدیل کرنا
- فساد
- سکتا ہے
- کورس
- احاطہ
- تخلیق
- اہم
- اہم
- اعداد و شمار
- ڈیٹا تجزیہ
- ڈیٹا پوائنٹس
- ڈیٹا سائنس
- ڈیٹا سائنسدان
- ڈیٹا سیٹ
- اعداد و شمار کی تصور
- ڈیٹاسیٹس
- تاریخ
- تواریخ
- تاریخ کے وقت
- دن
- نمٹنے کے
- معاملہ
- پہلے سے طے شدہ
- کی وضاحت
- کا پتہ لگانے کے
- اس بات کا تعین
- فرق
- مختلف
- واضح طور پر
- تقسیم
- تقسیم
- تقسیم
- ڈائیونگ
- do
- نہیں کرتا
- کر
- کیا
- نہیں
- گرا دیا
- دو
- نقل
- ہر ایک
- اس سے قبل
- آسان
- سب سے آسان
- ماحول
- تعلیم
- یا تو
- خالی
- ختم
- کو یقینی بنانے کے
- برابر
- یکساں طور پر
- نقائص
- ضروری
- اندازے کے مطابق
- Ether (ETH)
- بھی
- سب کچھ
- مثال کے طور پر
- مثال کے طور پر
- اس کے علاوہ
- غیر معمولی
- بہت پرجوش
- موجودہ
- نکالنے
- عوامل
- گر
- دور
- خصوصیات
- فٹ
- خواتین
- کم
- اعداد و شمار
- فائل
- بھرنے
- بھرنے
- فائنل
- مل
- نتائج
- آخر
- پہلا
- فٹ
- کے بعد
- کے لئے
- فارمیٹ
- بانی
- چار
- سے
- تقریب
- جنس
- حاصل
- حاصل کرنے
- دے دو
- جا
- اچھا
- چلے
- سبز
- گروپ
- گروپ کا
- ہینڈل
- ہینڈلنگ
- موبائل
- ہے
- he
- اونچائی
- مدد
- مدد
- یہاں
- ہائی
- اعلی
- اسے
- کس طرح
- کیسے
- تاہم
- HTTPS
- بھاری
- i
- شناخت
- کی نشاندہی
- if
- ii
- III
- فوری طور پر
- اثر
- درآمد
- اہمیت
- اہم
- بہتر
- in
- دیگر میں
- انچ
- شامل
- سمیت
- غلط طریقے سے
- آزادانہ طور پر
- انڈکس
- اشارہ کرتے ہیں
- اشارہ کرتے ہیں
- Indices
- معلومات
- ان پٹ
- کے اندر
- مثال کے طور پر
- انٹرویو
- انٹرویو کے سوالات
- انٹرویوز
- میں
- متعارف کرواتا ہے
- شامل
- شامل ہے
- مسائل
- IT
- میں
- فوٹو
- صرف
- KDnuggets
- کلیدی
- بچے
- لیبل
- آخری
- قیادت
- سیکھا ہے
- سیکھنے
- چھوڑ دیا
- کم
- دو
- سطح
- لائبریریوں
- جھوٹ
- زندگی کا دورانیہ
- کی طرح
- لائن
- لنکڈ
- لسٹ
- ll
- لوڈ
- محل وقوع
- دیکھو
- دیکھنا
- کم
- مشین
- مشین لرننگ
- بنا
- بناتا ہے
- جوڑ توڑ
- ہیرا پھیری
- نشان
- نشان لگا دیا گیا
- ماسٹرنگ
- ریاضیاتی
- matplotlib
- مئی..
- مطلب
- مطلب
- کا مطلب ہے کہ
- پیمائش
- میکینکس
- طریقہ
- طریقوں
- مائیکروسافٹ
- شاید
- گمراہ کرنا
- لاپتہ
- موڈ
- ماڈل
- ماڈلنگ
- ماڈل
- طریقوں
- نظر ثانی کی
- نظر ثانی کرنے
- ماڈیول
- زیادہ
- سب سے زیادہ
- فلم
- ایک سے زیادہ
- نام
- ضروری
- ضرورت ہے
- نئی
- نہیں
- براہ مہربانی نوٹ کریں
- نوٹس..
- اب
- تعداد
- تعداد
- عجیب
- اعتراض
- مشاہدے
- واقع
- واقعہ
- of
- اکثر
- پرانا
- on
- ایک
- صرف
- آپریشن
- آپریٹر
- or
- حکم
- اصل
- دیگر
- ہمارے
- آؤٹ لیٹر
- پیداوار
- باہر
- مجموعی طور پر
- pandas
- پیرامیٹر
- حصہ
- خاص طور پر
- حصے
- منظور
- پاٹرن
- کارکردگی
- سادہ
- پلیٹ فارم
- پلاٹا
- افلاطون ڈیٹا انٹیلی جنس
- پلیٹو ڈیٹا
- پوائنٹس
- طاقتور
- پریکٹس
- پیشن گوئی
- تیار
- خوبصورت
- قیمت
- قیمتیں
- عمل
- مصنوعات
- ٹیچر
- ازگر
- Q1
- Q3
- سوالات
- رینج
- رینکنگ
- درجہ بندی
- RE
- اصلی
- حقیقی دنیا
- وجوہات
- ریڈ
- کو کم
- باقی
- ہٹا
- ہٹا دیا گیا
- کی جگہ
- کی نمائندگی
- نمائندگی
- نمائندگی
- کی نمائندگی کرتا ہے
- بالترتیب
- باقی
- نتیجہ
- نتائج کی نمائش
- واپسی
- امیر
- چھٹکارا
- ROW
- s
- فروخت
- اسی
- کی اطمینان
- ترازو
- سکول
- سائنس
- سائنسی
- سائنسدان
- سائنسدانوں
- سمندری
- دوسری
- دیکھنا
- سیریز
- مقرر
- قائم کرنے
- کئی
- ہونا چاہئے
- دکھائیں
- دکھایا گیا
- شوز
- اہم
- نمایاں طور پر
- اسی طرح
- بیک وقت
- بعد
- نچوڑنا
- So
- اب تک
- حل کرنا۔
- کچھ
- کسی طرح سے
- کبھی کبھی
- مخصوص
- مخصوص
- چوک میں
- اسٹیج
- مراحل
- شروع کریں
- شروع
- شماریات
- ٹھہرے رہے
- مرحلہ
- مراحل
- ابھی تک
- حکمت عملی
- سلک
- ساخت
- سٹائل
- بعد میں
- اس طرح
- خلاصہ
- اس بات کا یقین
- T
- لے لو
- ٹاسک
- کاموں
- پڑھانا
- تکنیک
- کہہ
- متن
- سے
- کہ
- ۔
- دنیا
- ان
- ان
- تو
- وہاں.
- لہذا
- یہ
- وہ
- بات
- تھرڈ
- اس
- ان
- اگرچہ؟
- ہزار
- ٹکر
- وقت
- وقت لگتا
- اوقات
- کرنے کے لئے
- مل کر
- سب سے اوپر
- کل
- سچ
- کوشش
- ٹرن
- دو
- قسم
- اقسام
- عام طور پر
- بنیادی
- سمجھ
- منفرد
- غیر معمولی
- امریکی ڈالر
- استعمال کی شرائط
- استعمال کیا جاتا ہے
- استعمال
- کا استعمال کرتے ہوئے
- ہمیشہ کی طرح
- قیمت
- اقدار
- مختلف
- تصور
- اہم
- چاہتے ہیں
- راستہ..
- طریقوں
- we
- اچھا ہے
- تھے
- کیا
- جب
- چاہے
- جس
- جبکہ
- سفید
- پوری
- کیوں
- گے
- ساتھ
- کے اندر
- بغیر
- الفاظ
- کام
- کام کر
- کام کرتا ہے
- دنیا
- گا
- X
- آپ
- اور
- زیفیرنیٹ