اس مضمون کے ایک حصے کے طور پر شائع کیا گیا تھا۔ ڈیٹا سائنس بلاگتھون
تعارف
ٹھیک ہے، آپ کر سکتے ہیں ایک اچھا امکان ہے!
ڈیٹا سائنسدانوں کے لیے جو Python کو اپنی بنیادی پروگرامنگ زبان کے طور پر استعمال کرتے ہیں، پانڈاس پیکج ڈیٹا کا تجزیہ کرنے کا ایک لازمی ٹول ہے۔ پانڈاس پیکج میں وہ سب کچھ ہے جس کی ایک ڈیٹا سائنسدان کی ضرورت ہے، اور ہر کورس نے ہمیں یہ سکھایا کہ اسے پہلے کیسے استعمال کیا جائے۔ یہ اتنا بڑا، طاقتور ہے اور تقریباً ہر ٹیبلر ہیرا پھیری کرتا ہے جس کا آپ تصور کر سکتے ہیں۔ تاہم، یہ وسعت بعض اوقات نقصان کا باعث بن سکتی ہے۔
اس میں بہت سی خوبصورت خصوصیات ہیں جو نایاب ایج کیسز، مختلف منظرناموں کو حل کرتی ہیں۔
پانڈا کی اہم خرابیوں میں سے ایک یہ ہے کہ یہ بڑے ڈیٹا سیٹس کے ساتھ جدوجہد کرتا ہے کیونکہ پانڈے اپنے ڈیٹا ڈھانچے کو RAM میں محفوظ کرتے ہیں، جو کہ ڈیٹا کے سائز میں اضافے کے ساتھ ناکافی ہو سکتے ہیں۔ اس کے لیے PySpark یا Dask استعمال کریں۔
اگرچہ پانڈاس پیکج بڑے پیمانے پر استعمال کیا جاتا ہے، اب بھی بہت سے فنکشنز ہیں جنہیں لوگ نظر انداز کر سکتے ہیں، چاہے اس کا استعمال کم ہو یا اس وجہ سے کہ وہ اس کے وجود سے لاعلم ہیں۔ یہ پوسٹ آپ کو ان خصوصیات سے دوبارہ متعارف کرانے اور یہ ظاہر کرنے کا ارادہ رکھتی ہے کہ پانڈاس اس سے کہیں زیادہ قابل ہیں جتنا آپ پہلے جانتے تھے۔
پائپ
پانڈا میں ایک مختصر، کمپیکٹ انداز میں ڈیٹا کی صفائی کرنے کے لیے، کوئی پائپ فنکشنز استعمال کر سکتا ہے، جو آپ کو ایک آپریشن میں متعدد فنکشنز کو یکجا کرنے کی اجازت دیتا ہے۔
مثال کے طور پر، اگر آپ فنکشنز کو لاگو کرنا چاہتے ہیں جیسے کہ drop_duplicates، encode_categoricals، remove_outliers جو اس کے دلائل کو قبول کرتے ہیں۔
df_cleaned = (diamonds.pipe(drop_duplicates) پائپ(remove_outliers, ['price', 'carat', 'depth'])). پائپ(encode_categoricals, ['cut', 'color', 'clarity']))
فیکٹرائز
یہ فنکشن Sklearns Label Encoder کا متبادل ہے۔
# مائنڈ the [0] at the end diamonds["cut_enc"] = pd.factorize(diamonds["cut"])[0] >>> diamonds["cut_enc"].sample(5) 52103 2 39813 0 31843 0 10675 0 6634 0 نام: cut_enc، dtype: int64
نتائج کو فیکٹرائز کریں قدروں کا ایک بڑا حصہ: انکوڈ شدہ قدر اور منفرد زمروں کی فہرست۔
اقدار، منفرد = pd.factorize(diamonds["cut"], sort=True) >>> قدریں[:10] array([0, 1, 3, 1, 3, 2, 2, 2, 4, 2] , dtype=int64) >>> منفرد ['Ideal', 'Premium', 'Very Good', 'Good', 'fair']
دھماکے
کی طرف سے تصویر ایڈیوا فوسٹر on Unsplash سے
ایکسپلوڈ ایک دلچسپ نام والا فنکشن ہے۔ آئیے ایک مثال کے ساتھ شروع کریں اور پھر ایک وضاحت:
df = pd.Series([1, 6, 7, [46, 56, 49], 45, [15, 10, 12]]).to_frame("dirty") >>> df
فیچر کالم میں فہرستوں کے ساتھ دو قطاریں ہیں۔ اس قسم کا ڈیٹا سروے میں دستیاب ہے جہاں چند سوالات متعدد انتخاب کو قبول کرتے ہیں۔
>>> df.explode("گندی"، ignore_index=True)
یہ فنکشن اقدار کی ایک صف کے ساتھ سیل لیتا ہے اور متعدد قطاروں میں پھٹ جاتا ہے۔ عددی انڈیکس کی ترتیب کو برقرار رکھنے کے لیے، ignore_index کو True کے طور پر استعمال کریں۔
کے درمیان
ایک رینج کے اندر بولین انڈیکسنگ عددی خصوصیات کے لیے، یہاں ایک آسان فنکشن ہے:
# ایسے ہیرے حاصل کریں جن کی قیمت 3500 سے 3700 ڈالر کے درمیان ہے ہیرے[ہیرے["قیمت"] کے درمیان۔
T
ڈیٹا فریم میں ایک سادہ T وصف ہے، جسے ٹرانسپوز کہا جاتا ہے۔ ہو سکتا ہے کہ ہم اسے اکثر استعمال نہ کریں، ڈیٹا فریم دیکھنے کے دوران بیان کا طریقہ کارآمد ہے۔
>>> boston.describe().T.head(10)
پانڈوں کے اختیارات
کوئی پانڈوں کی عالمی ترتیبات استعمال کرسکتا ہے جو پہلے سے طے شدہ طرز عمل کو موافقت اور تبدیل کرنے میں مدد کرتا ہے۔
>>> dir(pd.options) ['compute', 'display', 'io', 'mode', 'plotting']
یہ 5 ماڈیولز پر مشتمل ہے۔ آئیے ڈسپلے کے نیچے دستیاب آپشنز دیکھتے ہیں۔ بہت سے اختیارات دستیاب ہیں، لیکن میں زیادہ تر max_columns استعمال کرتا ہوں۔
>>> dir(pd.options.display) ['chop_threshold', 'max_columns', 'max_colwidth', 'max_info_columns', 'max_info_rows', 'max_rows', ... 'precision', 'show_dimensions', 'unicode' , 'چوڑائی']
زیادہ تر لوگ max_columns اور precision استعمال کرتے ہیں۔
# کالز کی تعداد ظاہر کرنے کی حد کو ہٹا دیں pd.options.display.max_columns = کوئی نہیں # اعشاریہ pd.options.display.precision = 5 کے بعد صرف 5 نمبر دکھائیں
کنورٹ_ڈی ٹائپس
ہم سب جانتے ہیں کہ پانڈوں کو کچھ کالموں کو آبجیکٹ ڈیٹا کی اقسام کے بطور نشان زد کرنے کی پریشان کن عادت ہے۔ ان کی اقسام کی براہ راست وضاحت کرنے کے بجائے، آپ کنورٹ dtypes طریقہ استعمال کر سکتے ہیں، جو ڈیٹا کی بہترین قسم کا اندازہ لگانے کی کوشش کرتا ہے:
نمونہ = pd.read_csv("data/station_day.csv",usecols=["StationId", "CO", "O3", "AQI_Bucket"]) >>> sample.dtypes StationId آبجیکٹ CO float64 O3 float64 AQI_Bucket آبجیکٹ dtype: آبجیکٹ >>> sample.convert_dtypes().dtypes StationId سٹرنگ CO float64 O3 float64 AQI_Bucket سٹرنگ dtype: آبجیکٹ
منتخب_dtypes
نام سے، مجھے یقین ہے کہ یہ واضح ہے کہ فنکشن کیا کرتا ہے۔ آپ ان کالموں کی وضاحت کرنے کے لیے شامل اور خارج کرنے کے اختیارات استعمال کر سکتے ہیں جن میں ڈیٹا کی مخصوص قسمیں شامل ہوں یا اسے چھوڑ دیں۔
np.number کے ساتھ صرف عددی کالم منتخب کریں، مثال کے طور پر:
# صرف عددی کالم منتخب کریں diamonds.select_dtypes(include=np.number).head()
ماسک
یہ فنکشن اقدار کو تبدیل کرنے میں مدد کرتا ہے جہاں حسب ضرورت حالت مطمئن نہیں ہوتی ہے۔
# نمونہ ڈیٹا ایجز = pd.Series([55, 52, 50, 66, 57, 59, 49, 60]).to_frame("عمر") عمر بنائیں
مندرجہ بالا آپریشن کرنے کے بعد.
کم سے کم اور زیادہ سے زیادہ
اگرچہ min اور max اچھی طرح سے جانا جاتا ہے، اس میں کچھ کنارے کے معاملات کے لیے کچھ بہتر خصوصیات ہیں۔
index = ["ہیرے"، "ٹائٹینک"، "آئرس"، "دل کی بیماری"، "لون ڈیفالٹ"] لائبریریاں = ["XGBoost"، "CatBoost"، "LightGBM" "Sklearn GB"] df = pd.DataFrame ({lib: np.random.uniform(90, 100, 5) لائبریریوں میں lib کے لیے}, index=index ) >>> df
اوپر کا افسانوی ڈیٹا فریم پانچ ڈیٹا سیٹس پر چار مختلف گریڈینٹ بوسٹنگ لائبریریوں کے نتائج دکھاتا ہے۔ ہم اس پیکیج کی تلاش کر رہے ہیں جس نے ہر ڈیٹاسیٹ پر بہترین کارکردگی کا مظاہرہ کیا۔ اسے بہترین انداز میں میکس کے ساتھ پورا کرنے کا طریقہ یہاں ہے:
>>> df.max(axis=1) Diamonds 99.52684 Titanic 99.63650 Iris 99.10989 Heart Disease 99.31627 Loan Default 97.96728 dtype: float64
سب سے بڑا اور سب سے چھوٹا
سب سے بڑا اور nsmallest ایک متغیر کی ٹاپ N یا ~(top N) قدروں کو دیکھنے کے لیے مددگار ہے۔
diamonds.nlargest(5, "قیمت")
diamonds.nsmallest(5، "قیمت")
Idxmax اور Idxmin
جب آپ کالم پر زیادہ سے زیادہ یا کم سے کم کال کرتے ہیں تو پانڈے سب سے بڑا/سب سے چھوٹا نمبر واپس کرتے ہیں۔ تاہم، ایسے حالات ہوتے ہیں جب آپ کو کم سے کم/زیادہ سے زیادہ کی پوزیشن کی ضرورت ہوتی ہے، جو یہ افعال فراہم نہیں کرتے ہیں۔
اس کے بجائے، آپ idxmax/idxmin استعمال کر سکتے ہیں:
>>> diamonds.price.idxmax() 27749 >>> diamonds.carat.idxmin() 14
ویلیو_کاؤنٹس
گم شدہ اقدار کا فیصد معلوم کرنے کا ایک عام طریقہ isnull اور sum کو یکجا کرنا اور ارے کے سائز سے تقسیم کرنا ہے۔
لیکن، متعلقہ دلائل کے ساتھ value_counts ایک ہی کام کرتا ہے:
ہاؤسنگ = pd.read_csv("train.csv") >>> ہاؤسنگ["FireplaceQu"].value_counts(dropna=False, normalize=True) NaN 0.47260 Gd 0.26027 TA 0.21438 Fa 0.02260 Po, 0.01644 Fa 0.01370 Po., 64 EX. XNUMX فائر پلیس قسم: floatXNUMX
کلپ
کلپ فنکشن ایک رینج سے باہر آؤٹ لیرز کو تلاش کرنے اور انہیں سخت حدود سے بدلنے میں مدد کرتا ہے۔
>>> ages.clip(50, 60)
وقت_وقت اور درمیان_وقت
یہ فنکشنز ہائی گرینولریٹی کی ٹائم سیریز کے ساتھ کام کرتے وقت مددگار ہوتے ہیں۔
at_time ایک مخصوص تاریخ یا وقت پر اقدار حاصل کرنے میں مدد کرتا ہے۔
index = pd.date_range("2021-08-01", periods=100, freq="H") df = pd.DataFrame({"col": list(range(100))}, index=index) >> > df.head()
>>> df.at_time("15:00")
درمیان_وقت ایک حسب ضرورت رینج کے اندر قطاریں لانے کے لیے استعمال ہوتا ہے۔
ڈیٹ ٹائم سے درآمد ڈیٹ ٹائم >>> df.between_time("09:45", "12:00")
Bdate_range
یہ فنکشن کاروباری دن کی فریکوئنسی کے ساتھ ٹائم سیریز انڈیکس بنانے میں مدد کرتا ہے۔ مالیاتی دنیا میں اس قسم کی تعدد ہوتی ہے۔ لہذا، یہ فنکشن ری انڈیکس فنکشن کے ساتھ ٹائم سیریز کو دوبارہ ترتیب دینے کے وقت مددگار ثابت ہوسکتا ہے۔
سیریز = pd.bdate_range("2021-01-01", "2021-01-31") # ایک ماہ کی مدت >>> len(سیریز) 21
At اور Iat
یہ دونوں ایکسیسرز loc اور iloc سے کافی تیز ہیں۔ تاہم، ان میں ایک خرابی ہے. وہ آپ کو ایک وقت میں صرف ایک قدر منتخب کرنے یا تبدیل کرنے کی اجازت دیتے ہیں:
# [انڈیکس، لیبل] >>> diamonds.at[234, "cut"] 'Ideal' # [index, index] >>> diamonds.iat[1564, 4] 61.2 # قیمت کے کالم کی 16541ویں قطار کو تبدیل کریں >> > diamonds.at[16541, "قیمت"] = 10000
آرگسورٹ
یہ فنکشن انڈیکس نکالنے میں مدد کرتا ہے جو خصوصیات کی ایک صف کو ترتیب دے گا۔
tips.reset_index(inplace=True, drop=True) sort_idx = tips["total_bill"].argsort(kind="mergesort") # اب، کل_بل tips.iloc[sort_idx].head() کی بنیاد پر `ٹپس` کو ترتیب دیں۔
بلی کا رسائی کنندہ
پانڈا str یا dt جیسے آلات کا استعمال کرتے ہوئے تاریخوں اور تاروں پر ازگر کے بلٹ ان فنکشنز کی اجازت دیتے ہیں۔
>>> diamonds.dtypes کیرٹ float64 کٹ زمرہ رنگ زمرہ واضح قسم کی گہرائی float64 ٹیبل float64 قیمت int64 x float64 y float64 z float64 cut_enc int64 dtype: آبجیکٹ
زمرہ دار کالموں پر کیٹ ایکسر کا استعمال کرتے ہوئے کوئی بہت سے خصوصی فنکشن استعمال کر سکتا ہے۔ اس میں فنکشنز ہیں جیسے منفرد تلاش کرنے کے لیے زمرہ جات، فیچرز کا نام بدلنے کے لیے نام تبدیل کریں۔
diamonds["new_cuts"] = diamonds["cut"].cat.rename_categories(list("ABCDE")) >>> ہیرے["new_cuts"].cat.categories Index(['A', 'B',' C', 'D', 'E'], dtype='object')
ذیل میں افعال کی مزید فہرست کے لیے اسے چیک کریں۔ بلی تک رسائی حاصل کرنے والا.
سکوڑیں
Squeeze ایک فنکشن ہے جو نایاب لیکن بڑھتے ہوئے کنارے کے حالات میں استعمال ہوتا ہے۔
جب ڈیٹا فریم کو سب سیٹ کرنے کے لیے استعمال ہونے والی شرط سے ایک ہی قدر واپس کی جاتی ہے، تو یہ ان صورتوں میں سے ایک ہے۔ درج ذیل منظر نامے پر غور کریں:
سب سیٹ = diamonds.loc[diamonds.index >> سب سیٹ
یہاں تک کہ اگر صرف ایک سیل ہے، ڈیٹا فریم واپس کریں. یہ تکلیف دہ ہے کیونکہ قیمت حاصل کرنے کے لیے اب آپ کو کالم کے نام اور انڈیکس دونوں کے ساتھ.loc استعمال کرنا چاہیے۔
اگر آپ نچوڑنا جانتے ہیں تو آپ کو اس کی ضرورت نہیں ہے۔ اس فنکشن کا استعمال کرتے ہوئے سنگل سیل ڈیٹا فریم یا سیریز سے ایک محور کو ہٹایا جا سکتا ہے۔ مندرجہ ذیل منظر نامے پر غور کریں:
>>> subset.squeeze() 326
ہٹانے کے لیے محور کی وضاحت کرنا ممکن ہے۔ یہ اب صرف اسکیلر واپس آیا تھا۔
>>> subset.squeeze("کالم") # یا "قطاریں" 0 326 نام: قیمت، dtype: int64
نوٹ کریں کہ یہ فنکشن صرف واحد اقدار کے ساتھ سیریز یا ڈیٹا فریم کے لیے کام کرتا ہے۔
Excel_writer
یہ ایکسل فائلیں بنانے اور اس میں ڈیٹا فریم لکھنے کے لیے ایک عام کلاس ہے۔ غور کریں، ہمارے پاس یہ دو ڈیٹاسیٹس ہیں۔
# دو ڈیٹا سیٹ لوڈ کریں diamonds = sns.load_dataset("diamonds") tips = sns.load_dataset("tips") # اسی ایکسل فائل میں pd.ExcelWriter("data/data.xlsx") کے ساتھ بطور مصنف لکھیں: diamonds.to_excel (writer, sheet_name="diamonds") tips.to_excel(writer, sheet_name="tips")
اس میں استعمال کرنے کے لیے ڈیٹ ٹائم فارمیٹ کی وضاحت کرنے کی خصوصیات ہیں، چاہے آپ کو نئی فائل کی ضرورت ہو یا موجودہ فائل میں ترمیم کریں، اگر شیٹ موجود ہو تو کیا ہوتا ہے۔ یہ دیکھو دستاویزات مزید تفصیلات کے لئے.
نتیجہ
یہ پانڈوں کا ایک مکمل جائزہ نہیں ہے، اور دستاویزات کوڈ اور خصوصیات کے بارے میں مزید معلومات پر مشتمل ہے۔ میں تجویز کرتا ہوں کہ آپ یہاں فراہم کردہ کوڈ کے ٹکڑوں کے ساتھ ساتھ مختلف پیرامیٹرز کے مختلف تغیرات کے ساتھ تجربہ کریں۔ ایسا کرنے سے کوئی بھی پانڈوں کی طاقت کو پوری طرح سمجھ سکتا ہے۔
Dask اور ڈیٹا ٹیبل جیسی لائبریریاں بڑے ڈیٹا سیٹس کو سنبھالنے کے لیے اپنی چمکدار نئی خصوصیات کے ساتھ آہستہ آہستہ پانڈوں کو بے گھر کر رہی ہیں، پانڈا Python ڈیٹا سائنس کمیونٹی میں ڈیٹا ہیرا پھیری کا سب سے زیادہ استعمال ہونے والا ٹول ہے۔ موجودہ SciPy اسٹیک میں یہ کتنی اچھی طرح سے فٹ بیٹھتا ہے اس کی وجہ سے، لائبریری دوسرے پیکجوں کی پیروی اور تعمیر کے لیے ایک نمونہ کے طور پر کام کرتی ہے۔
مجھے امید ہے کہ آپ کو یہ پوسٹ بصیرت مند لگی ہوگی اور پڑھنے کے لیے آپ کا شکریہ۔
اس مضمون میں دکھایا گیا میڈیا Analytics ودھیا کی ملکیت نہیں ہے اور مصنف کی صوابدید پر استعمال کیا جاتا ہے۔
متعلقہ
- "
- 100
- 7
- تمام
- تجزیہ
- تجزیاتی
- دلائل
- مضمون
- BEST
- اضافے کا باعث
- بوسٹن
- تعمیر
- فون
- مقدمات
- تبدیل
- صفائی
- کوڈ
- کالم
- کامن
- کمیونٹی
- کمپیوٹنگ
- تخلیق
- اعداد و شمار
- ڈیٹا تجزیہ
- ڈیٹا سائنس
- ڈیٹا سائنسدان
- تواریخ
- DID
- بیماری
- ڈالر
- ایج
- ایکسل
- تجربہ
- منصفانہ
- نمایاں کریں
- خصوصیات
- مالی
- پہلا
- پر عمل کریں
- فارمیٹ
- تقریب
- گلوبل
- اچھا
- بڑھائیں
- ہینڈلنگ
- موبائل
- یہاں
- ہائی
- کس طرح
- کیسے
- HTTPS
- انڈکس
- معلومات
- IT
- کلیدی
- زبان
- بڑے
- سیکھنے
- لائبریری
- لسٹ
- فہرستیں
- لوڈ
- قرض
- مشین لرننگ
- ہیرا پھیری
- ماسک
- میڈیا
- نئی خصوصیات
- تعداد
- آپشنز کے بھی
- دیگر
- پیرا میٹر
- لوگ
- پائپ
- طاقت
- صحت سے متعلق
- پریمیم
- حال (-)
- قیمت
- پروگرامنگ
- ازگر
- RAM
- رینج
- پڑھنا
- نتائج کی نمائش
- سائنس
- سائنسدانوں
- سیریز
- سادہ
- سائز
- So
- حل
- شروع کریں
- پردہ
- وقت
- تجاویز
- سب سے اوپر
- یونیکوڈ
- us
- قیمت
- لنک
- ڈبلیو
- کے اندر
- کام کرتا ہے
- دنیا
- مصنف
- تحریری طور پر
- X