Python - KDnuggets میں ڈیٹا کلیننگ کے فن میں مہارت حاصل کرنا

Python - KDnuggets میں ڈیٹا کلیننگ کے فن میں مہارت حاصل کرنا

ماخذ نوڈ: 2939047

Python میں ڈیٹا کلیننگ کے فن میں مہارت حاصل کرنا
مصنف کی طرف سے تصویر
 

ڈیٹا کی صفائی کسی بھی ڈیٹا کے تجزیہ کے عمل کا ایک اہم حصہ ہے۔ یہ وہ مرحلہ ہے جہاں آپ غلطیوں کو دور کرتے ہیں، گمشدہ ڈیٹا کو سنبھالتے ہیں، اور اس بات کو یقینی بناتے ہیں کہ آپ کا ڈیٹا اس فارمیٹ میں ہے جس کے ساتھ آپ کام کر سکتے ہیں۔ اچھی طرح سے صاف کیے گئے ڈیٹاسیٹ کے بغیر، بعد کے کسی بھی تجزیے کو ترچھا یا غلط کیا جا سکتا ہے۔

یہ مضمون آپ کو Python میں ڈیٹا صاف کرنے کی کئی کلیدی تکنیکوں سے متعارف کرائے گا، جس میں طاقتور لائبریریوں جیسے پانڈاس، numpy، seaborn، اور matplotlib کا استعمال کیا گیا ہے۔

ڈیٹا کی صفائی کے میکانکس میں غوطہ لگانے سے پہلے، آئیے اس کی اہمیت کو سمجھیں۔ حقیقی دنیا کا ڈیٹا اکثر گندا ہوتا ہے۔ اس میں ڈپلیکیٹ اندراجات، غلط یا متضاد ڈیٹا کی قسمیں، گمشدہ اقدار، غیر متعلقہ خصوصیات اور آؤٹ لیرز شامل ہو سکتے ہیں۔ اعداد و شمار کا تجزیہ کرتے وقت یہ تمام عوامل گمراہ کن نتائج کا باعث بن سکتے ہیں۔ یہ ڈیٹا کی صفائی کو ڈیٹا سائنس لائف سائیکل کا ایک ناگزیر حصہ بناتا ہے۔

ہم درج ذیل ڈیٹا صاف کرنے کے کاموں کا احاطہ کریں گے۔
 

Python میں ڈیٹا کلیننگ کے فن میں مہارت حاصل کرنا
مصنف کی طرف سے تصویر

شروع کرنے سے پہلے، آئیے ضروری لائبریریوں کو درآمد کریں۔ ہم ڈیٹا میں ہیرا پھیری کے لیے پانڈا اور تصورات کے لیے سیبورن اور میٹپلوٹلیب استعمال کریں گے۔

ہم تاریخوں میں ہیرا پھیری کے لیے ڈیٹ ٹائم پائتھون ماڈیول بھی درآمد کریں گے۔

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)

ڈیٹا سیٹ کیسا دکھتا ہے یہ یہاں ہے۔

 

Python میں ڈیٹا کلیننگ کے فن میں مہارت حاصل کرنا
 

آپ فوری طور پر دیکھ سکتے ہیں کہ کچھ لاپتہ اقدار ہیں۔ نیز، تاریخ کی شکلیں متضاد ہیں۔

اب، info() طریقہ استعمال کرتے ہوئے ڈیٹا فریم کے خلاصے پر ایک نظر ڈالتے ہیں۔

# Get a concise summary of the dataframe
print(df.info())

یہاں کوڈ آؤٹ پٹ ہے۔

 

Python میں ڈیٹا کلیننگ کے فن میں مہارت حاصل کرنا
 

ہم دیکھ سکتے ہیں کہ صرف کالم مربع فٹ میں کوئی 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)

دونوں نقطہ نظر درج ذیل ڈیٹا فریم کو واپس کرتے ہیں۔

 

Python میں ڈیٹا کلیننگ کے فن میں مہارت حاصل کرنا

ڈپلیکیٹ ڈیٹا آپ کے ڈیٹاسیٹ میں مختلف وجوہات کی بنا پر ہو سکتا ہے اور آپ کے تجزیہ کو متزلزل کر سکتا ہے۔

آئیے اپنے ڈیٹا سیٹ میں ڈپلیکیٹس کا پتہ لگائیں۔ اسے کرنے کا طریقہ یہاں ہے۔

نیچے کا کوڈ طریقہ استعمال کرتا ہے۔ نقل شدہ() پورے ڈیٹاسیٹ میں ڈپلیکیٹس پر غور کرنا۔ اس کی ڈیفالٹ ترتیب کسی قدر کی پہلی موجودگی کو منفرد اور بعد میں آنے والے واقعات کو نقل کے طور پر سمجھنا ہے۔ آپ کا استعمال کرتے ہوئے اس طرز عمل میں ترمیم کرسکتے ہیں۔ رکھنا پیرامیٹر مثال کے طور پر، df.duplicated(keep=False) تمام ڈپلیکیٹس کو True کے بطور نشان زد کرے گا، بشمول پہلی موجودگی۔

# Detecting duplicates
duplicates = df[df.duplicated()]
duplicates

یہاں آؤٹ پٹ ہے۔

 

Python میں ڈیٹا کلیننگ کے فن میں مہارت حاصل کرنا
 

انڈیکس 3 والی قطار کو ڈپلیکیٹ کے طور پر نشان زد کیا گیا ہے کیونکہ ایک ہی اقدار کے ساتھ قطار 2 اس کا پہلا واقعہ ہے۔

اب ہمیں ڈپلیکیٹس کو ہٹانے کی ضرورت ہے، جو ہم درج ذیل کوڈ کے ساتھ کرتے ہیں۔

# Detecting duplicates
duplicates = df[df.duplicated()]
duplicates

۔ drop_duplicates() فنکشن ڈپلیکیٹس کی شناخت کرتے وقت تمام کالموں پر غور کرتا ہے۔ اگر آپ صرف مخصوص کالموں پر غور کرنا چاہتے ہیں، تو آپ انہیں فہرست کے طور پر اس فنکشن میں اس طرح منتقل کر سکتے ہیں: df.drop_duplicates(subset=['column1', 'column2'])۔

 

Python میں ڈیٹا کلیننگ کے فن میں مہارت حاصل کرنا
 

جیسا کہ آپ دیکھ سکتے ہیں، ڈپلیکیٹ قطار کو چھوڑ دیا گیا ہے۔ تاہم، اشاریہ سازی وہی رہی، انڈیکس 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)

دونوں نقطہ نظر آپ کو ایک ہی نتیجہ دیتے ہیں۔

 

Python میں ڈیٹا کلیننگ کے فن میں مہارت حاصل کرنا
 

اب تاریخیں ایک مستقل شکل میں ہیں۔ ہم دیکھتے ہیں کہ تمام ڈیٹا کو تبدیل نہیں کیا گیا ہے۔ اشتہار کی_تاریخ میں ایک NaT قدر ہے اور سیل_تاریخ میں دو۔ اس کا مطلب ہے کہ تاریخ غائب ہے۔

آئیے چیک کریں کہ آیا کالم کو استعمال کرکے تاریخوں میں تبدیل کیا گیا ہے۔ معلومات () طریقہ.

# Get a concise summary of the dataframe
print(df.info())

 

Python میں ڈیٹا کلیننگ کے فن میں مہارت حاصل کرنا
 

جیسا کہ آپ دیکھ سکتے ہیں، دونوں کالم datetime64[ns] فارمیٹ میں نہیں ہیں۔

اب اس میں ڈیٹا کو TEXT سے NUMERIC میں تبدیل کرنے کی کوشش کریں۔ ایئر بی این بی ڈیٹاسیٹ.

حقیقی دنیا کے ڈیٹاسیٹس میں اکثر قدریں غائب ہوتی ہیں۔ گمشدہ ڈیٹا کو ہینڈل کرنا بہت ضروری ہے، کیونکہ کچھ الگورتھم ایسی قدروں کو سنبھال نہیں سکتے۔

ہماری مثال میں کچھ گمشدہ اقدار بھی ہیں، لہذا آئیے گمشدہ ڈیٹا کو سنبھالنے کے لیے دو سب سے زیادہ معمول کے طریقوں پر ایک نظر ڈالیں۔

غائب اقدار کے ساتھ قطاروں کو حذف کرنا

اگر غائب ڈیٹا والی قطاروں کی تعداد مشاہدات کی کل تعداد کے مقابلے میں معمولی ہے، تو آپ ان قطاروں کو حذف کرنے پر غور کر سکتے ہیں۔

ہماری مثال میں، آخری قطار میں مربع فٹ اور اشتہار کی تاریخ کے علاوہ کوئی قدر نہیں ہے۔ ہم ایسا ڈیٹا استعمال نہیں کر سکتے، تو آئیے اس قطار کو ہٹا دیں۔

یہ وہ کوڈ ہے جہاں ہم قطار کے اشاریہ کی نشاندہی کرتے ہیں۔

df = df.drop(8)

ڈیٹا فریم اب اس طرح لگتا ہے۔

 

Python میں ڈیٹا کلیننگ کے فن میں مہارت حاصل کرنا
 

آخری قطار کو حذف کر دیا گیا ہے، اور ہمارا ڈیٹا فریم اب بہتر نظر آ رہا ہے۔ تاہم، ابھی بھی کچھ گمشدہ ڈیٹا موجود ہے جسے ہم ایک اور طریقہ استعمال کرتے ہوئے سنبھال لیں گے۔

گمشدہ اقدار کا تعین کرنا

اگر آپ کے پاس اہم ڈیٹا غائب ہے تو، حذف کرنے سے بہتر حکمت عملی مواخذہ ہوسکتی ہے۔ اس عمل میں دیگر ڈیٹا کی بنیاد پر گمشدہ اقدار کو بھرنا شامل ہے۔ عددی اعداد و شمار کے لیے، عام تقلید کے طریقوں میں مرکزی رجحان کی پیمائش کا استعمال شامل ہے (مطلب، میڈین، موڈ)۔

ہمارے پہلے سے تبدیل شدہ ڈیٹا فریم میں، ہمارے پاس کالم اشتہار_تاریخ اور سیل_تاریخ میں 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()))

دونوں صورتوں میں آؤٹ پٹ اس طرح لگتا ہے۔

 

Python میں ڈیٹا کلیننگ کے فن میں مہارت حاصل کرنا
 

ہمارے sale_date کالم میں اب ایسے اوقات ہیں جن کی ہمیں ضرورت نہیں ہے۔ آئیے ان کو ہٹا دیں۔

ہم استعمال کریں گے strftime() طریقہ، جو تاریخوں کو ان کی تار کی نمائندگی اور ایک مخصوص شکل میں تبدیل کرتا ہے۔

df['sale_date'] = df['sale_date'].dt.strftime('%Y-%m-%d')

 

Python میں ڈیٹا کلیننگ کے فن میں مہارت حاصل کرنا
 

تاریخیں اب بالکل صاف نظر آتی ہیں۔

اگر آپ کو استعمال کرنے کی ضرورت ہے۔ strftime() متعدد کالموں پر، آپ دوبارہ استعمال کر سکتے ہیں۔ لامڈا مندرجہ ذیل طریقہ.

df[['date1_formatted', 'date2_formatted']] = df[['date1', 'date2']].apply(lambda x: x.dt.strftime('%Y-%m-%d'))

اب، آئیے دیکھتے ہیں کہ ہم گمشدہ کلیدی اقدار کو کس طرح قرار دے سکتے ہیں۔

زمرہ دار ڈیٹا ڈیٹا کی ایک قسم ہے جو اسی طرح کی خصوصیات والی معلومات کو گروپ کرنے کے لیے استعمال ہوتی ہے۔ ان گروپوں میں سے ہر ایک کیٹیگری ہے۔ زمرہ دار ڈیٹا عددی اقدار کو لے سکتا ہے (جیسے "1" "مرد" اور "2" جو "عورت" کو ظاہر کرتا ہے)، لیکن ان نمبروں کا ریاضیاتی معنی نہیں ہوتا ہے۔ مثال کے طور پر، آپ انہیں ایک ساتھ شامل نہیں کر سکتے۔

زمرہ کے اعداد و شمار کو عام طور پر دو اقسام میں تقسیم کیا جاتا ہے:

  1. برائے نام ڈیٹا: یہ تب ہوتا ہے جب زمرے صرف لیبل لگائے جاتے ہیں اور انہیں کسی خاص ترتیب میں ترتیب نہیں دیا جاسکتا۔ مثالوں میں جنس (مرد، عورت)، خون کی قسم (A، B، AB، O) یا رنگ (سرخ، سبز، نیلا) شامل ہیں۔
  1. عام ڈیٹا: یہ تب ہوتا ہے جب زمرہ جات کو ترتیب دیا جا سکتا ہے یا درجہ بندی کیا جا سکتا ہے۔ اگرچہ زمرہ جات کے درمیان وقفہ مساوی نہیں ہے، زمرہ جات کی ترتیب ایک معنی رکھتی ہے۔ مثالوں میں درجہ بندی کے پیمانے (ایک فلم کی 1 سے 5 درجہ بندی)، تعلیمی سطح (ہائی اسکول، انڈرگریجویٹ، گریجویٹ) یا کینسر کے مراحل (مرحلہ I، مرحلہ II، مرحلہ III) شامل ہیں۔

گمشدہ دوٹوک اعداد و شمار کے لیے، موڈ عام طور پر استعمال کیا جاتا ہے۔ ہماری مثال میں، کالم پراپرٹی_زمرہ زمرہ (نامزد) ڈیٹا ہے، اور دو قطاروں میں ڈیٹا غائب ہے۔

آئیے گمشدہ اقدار کو موڈ سے بدل دیں۔

# For categorical columns
df['property_category'] = df['property_category'].fillna(df['property_category'].mode()[0])

یہ کوڈ استعمال کرتا ہے۔ بھرنا() پراپرٹی_کیٹیگری کالم میں تمام NaN اقدار کو تبدیل کرنے کے لیے فنکشن۔ یہ اسے موڈ سے بدل دیتا ہے۔

مزید برآں، [0] حصہ اس سیریز سے پہلی قدر نکالنے کے لیے استعمال ہوتا ہے۔ اگر متعدد موڈز ہیں، تو یہ پہلا کو منتخب کرے گا۔ اگر صرف ایک موڈ ہے، تو یہ اب بھی ٹھیک کام کرتا ہے۔

یہاں آؤٹ پٹ ہے۔

 

Python میں ڈیٹا کلیننگ کے فن میں مہارت حاصل کرنا
 

ڈیٹا اب بہت اچھا لگتا ہے۔ صرف ایک چیز جو باقی ہے وہ یہ دیکھنا ہے کہ آیا باہر والے ہیں۔

آپ اس پر null سے نمٹنے کی مشق کر سکتے ہیں۔ میٹا انٹرویو سوال، جہاں آپ کو NULLs کو صفر سے تبدیل کرنا پڑے گا۔

آؤٹ لیرز ڈیٹاسیٹ میں ڈیٹا پوائنٹس ہوتے ہیں جو دوسرے مشاہدات سے واضح طور پر مختلف ہوتے ہیں۔ وہ ڈیٹا سیٹ میں موجود دیگر اقدار سے غیر معمولی طور پر بہت دور رہ سکتے ہیں، مجموعی پیٹرن سے باہر رہتے ہیں۔ باقی ڈیٹا کے مقابلے ان کی قدریں نمایاں طور پر زیادہ یا کم ہونے کی وجہ سے انہیں غیر معمولی سمجھا جاتا ہے۔

باہر جانے والے مختلف وجوہات کی وجہ سے پیدا ہوسکتے ہیں جیسے:

  • پیمائش یا ان پٹ کی غلطیاں
  • ڈیٹا کرپشن۔
  • حقیقی شماریاتی بے ضابطگیاں

آؤٹ لیرز آپ کے ڈیٹا کے تجزیہ اور شماریاتی ماڈلنگ کے نتائج کو نمایاں طور پر متاثر کر سکتے ہیں۔ وہ ایک ترچھی تقسیم، تعصب کا باعث بن سکتے ہیں، یا بنیادی شماریاتی مفروضوں کو باطل کر سکتے ہیں، تخمینہ شدہ ماڈل فٹ کو مسخ کر سکتے ہیں، پیشین گوئی کرنے والے ماڈلز کی پیشن گوئی کی درستگی کو کم کر سکتے ہیں، اور غلط نتائج کی طرف لے جا سکتے ہیں۔

آؤٹ لیرز کا پتہ لگانے کے لیے عام طور پر استعمال ہونے والے کچھ طریقے Z-score، IQR (Interquartile Range)، باکس پلاٹ، سکیٹر پلاٹ، اور ڈیٹا ویژولائزیشن کی تکنیک ہیں۔ کچھ جدید صورتوں میں، مشین لرننگ کے طریقے بھی استعمال کیے جاتے ہیں۔

اعداد و شمار کو دیکھنے سے باہر جانے والوں کی شناخت میں مدد مل سکتی ہے۔ سیبورن کا باکس پلاٹ اس کے لیے کارآمد ہے۔

plt.figure(figsize=(10, 6))
sns.boxplot(data=df[['advertised_price', 'sale_price']])

ہم plt.figure() کا استعمال کرتے ہوئے فگر کی چوڑائی اور اونچائی کو انچ میں سیٹ کرتے ہیں۔

پھر ہم اشتہاری_قیمت اور فروخت_قیمت کے کالموں کے لیے باکس پلاٹ بناتے ہیں، جو اس طرح لگتا ہے۔

 

Python میں ڈیٹا کلیننگ کے فن میں مہارت حاصل کرنا
 

اسے اوپر والے کوڈ میں شامل کر کے آسان استعمال کے لیے پلاٹ کو بہتر بنایا جا سکتا ہے۔

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 پر کوما کے ساتھ ہزار الگ کرنے والے اور اعشاریہ نقطوں کے طور پر دکھائے گا۔ آخری کوڈ لائن اس کا اطلاق محور پر کرتی ہے۔

آؤٹ پٹ اب اس طرح لگتا ہے۔

 

Python میں ڈیٹا کلیننگ کے فن میں مہارت حاصل کرنا
 

اب، ہم کس طرح باہر کی شناخت اور ہٹا دیں؟

طریقوں میں سے ایک IQR طریقہ استعمال کرنا ہے۔

IQR، یا انٹرکوارٹائل رینج، ایک شماریاتی طریقہ ہے جو ڈیٹا سیٹ کو کوارٹائل میں تقسیم کر کے تغیر کی پیمائش کے لیے استعمال کیا جاتا ہے۔ کوارٹائل ایک درجہ ترتیب والے ڈیٹا کو چار مساوی حصوں میں تقسیم کرتے ہیں، اور پہلے کوارٹائل (25ویں پرسنٹائل) اور تیسرے کوارٹائل (75ویں پرسنٹائل) کی رینج کے اندر موجود اقدار انٹرکوارٹائل رینج بناتے ہیں۔

انٹرکوارٹائل رینج ڈیٹا میں آؤٹ لیرز کی شناخت کے لیے استعمال ہوتی ہے۔ یہاں یہ ہے کہ یہ کیسے کام کرتا ہے:

  1. پہلے، پہلے چوتھائی (Q1)، تیسرے چوتھائی (Q3) کا حساب لگائیں، اور پھر IQR کا تعین کریں۔ IQR کا شمار Q3 - Q1 کے طور پر کیا جاتا ہے۔
  2. 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 میں پرسنٹائل کا حساب لگانے کی مشق کر سکتے ہیں۔ جنرل اسمبلی انٹرویو سوال.

ڈیٹا کی صفائی ڈیٹا کے تجزیہ کے عمل میں ایک اہم مرحلہ ہے۔ اگرچہ اس میں وقت لگ سکتا ہے، لیکن آپ کے نتائج کی درستگی کو یقینی بنانا ضروری ہے۔

خوش قسمتی سے، Python کی لائبریریوں کا بھرپور ماحولیاتی نظام اس عمل کو مزید قابل انتظام بناتا ہے۔ ہم نے غیر ضروری قطاروں اور کالموں کو ہٹانے، ڈیٹا کو دوبارہ فارمیٹ کرنے اور گمشدہ اقدار اور آؤٹ لیرز سے نمٹنے کا طریقہ سیکھا۔ یہ معمول کے اقدامات ہیں جو زیادہ تر کسی بھی ڈیٹا پر انجام دینے پڑتے ہیں۔ تاہم، آپ کو بھی کبھی کبھی ضرورت پڑے گی۔ دو کالموں کو ایک میں جوڑیں۔, موجودہ ڈیٹا کی تصدیق کریں۔, اس کو لیبل تفویض کریں۔، یا سفید خالی جگہوں سے چھٹکارا حاصل کریں.

یہ سب ڈیٹا کی صفائی ہے، کیونکہ یہ آپ کو گندے، حقیقی دنیا کے ڈیٹا کو ایک اچھی ساخت والے ڈیٹاسیٹ میں تبدیل کرنے کی اجازت دیتا ہے جس کا آپ اعتماد کے ساتھ تجزیہ کر سکتے ہیں۔ بس اس ڈیٹاسیٹ کا موازنہ کریں جس کے ساتھ ہم نے شروع کیا تھا جس کے ساتھ ہم ختم ہوئے تھے۔

اگر آپ کو اس نتیجے میں اطمینان نظر نہیں آتا ہے اور صاف ڈیٹا آپ کو عجیب طور پر پرجوش نہیں کرتا ہے، تو آپ ڈیٹا سائنس میں دنیا میں کیا کر رہے ہیں!؟
 

نیٹ روزیدی ڈیٹا سائنسدان اور مصنوعات کی حکمت عملی میں ہے۔ وہ تجزیات کی تعلیم دینے والے ایک منسلک پروفیسر بھی ہیں، اور اس کے بانی ہیں۔ StrataScratch، ایک پلیٹ فارم جو ڈیٹا سائنسدانوں کو اعلی کمپنیوں کے حقیقی انٹرویو کے سوالات کے ساتھ ان کے انٹرویوز کی تیاری میں مدد کرتا ہے۔ اس کے ساتھ جڑیں۔ ٹویٹر: StrataScratch or لنکڈ.

ٹائم اسٹیمپ:

سے زیادہ KDnuggets