ڈیٹا کے ساتھ کام کرنے کے لیے کونسی زبان کا انتخاب کرنا ہے - R یا Python؟ دونوں! پانڈا سے tidyverse اور data.table اور پیچھے کی طرف ہجرت کرنا

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

ڈیٹا کے ساتھ کام کرنے کے لیے کونسی زبان کا انتخاب کرنا ہے - R یا Python؟ دونوں! پانڈا سے tidyverse اور data.table اور پیچھے کی طرف ہجرت کرنا

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

مضمون کے دوران ہم R میں مقبول ترین پیکجز کے نحو کا تجزیہ کریں گے۔ یہ وہ پیکیجز ہیں جو لائبریری میں شامل ہیں۔ tidyverseاور پیکج بھی data.table. اور ان کے نحو کا موازنہ کریں۔ pandas، Python میں سب سے زیادہ مقبول ڈیٹا تجزیہ پیکج۔

ہم قدم بہ قدم ڈیٹا کے تجزیے کے پورے راستے پر جائیں گے اسے لوڈ کرنے سے لے کر Python اور R کا استعمال کرتے ہوئے تجزیاتی ونڈو کے افعال انجام دینے تک۔

مواد

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

ڈیٹا کے ساتھ کام کرنے کے لیے کونسی زبان کا انتخاب کرنا ہے - R یا Python؟ دونوں! پانڈا سے tidyverse اور data.table اور پیچھے کی طرف ہجرت کرنا

  1. R اور Python کے درمیان بنیادی نحوی فرق
    1.1. پیکیج کے افعال تک رسائی
    1.2. تفویض
    1.3. اشاریہ کاری۔
    1.4. طریقے اور او او پی
    1.5. پائپ لائنز
    1.6. ڈیٹا ڈھانچے
  2. پیکجوں کے بارے میں چند الفاظ جو ہم استعمال کریں گے۔
    2.1. صاف ستھرا
    2.2. ڈیٹا ٹیبل
    2.3. pandas
  3. پیکجز کی تنصیب
  4. ڈیٹا لوڈ ہو رہا ہے۔
  5. ڈیٹا فریم بنانا
  6. آپ کو مطلوبہ کالم منتخب کرنا
  7. قطاروں کو فلٹر کرنا
  8. گروپ بندی اور جمع
  9. میزوں کا عمودی اتحاد (UNION)
  10. میزوں کا افقی جوڑ (JOIN)
  11. ونڈو کے بنیادی افعال اور حسابی کالم
  12. R اور Python میں ڈیٹا پروسیسنگ کے طریقوں کے درمیان خط و کتابت کی میز
  13. حاصل يہ ہوا
  14. آپ کون سا پیکیج استعمال کرتے ہیں اس کے بارے میں ایک مختصر سروے

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

R اور Python کے درمیان بنیادی نحوی فرق

آپ کے لیے Python سے R، یا اس کے برعکس تبدیل کرنا آسان بنانے کے لیے، میں چند اہم نکات دوں گا جن پر آپ کو توجہ دینے کی ضرورت ہے۔

پیکیج کے افعال تک رسائی

ایک بار جب ایک پیکج R میں لوڈ ہو جاتا ہے، تو آپ کو اس کے افعال تک رسائی کے لیے پیکیج کا نام بتانے کی ضرورت نہیں ہوتی ہے۔ زیادہ تر معاملات میں یہ R میں عام نہیں ہے، لیکن یہ قابل قبول ہے۔ اگر آپ کو اپنے کوڈ میں اس کے کسی فنکشن کی ضرورت ہو تو آپ کو پیکیج درآمد کرنے کی ضرورت نہیں ہے، لیکن صرف پیکیج کا نام اور فنکشن کا نام بتا کر اسے کال کریں۔ R میں پیکیج اور فنکشن کے ناموں کے درمیان الگ کرنے والا ایک ڈبل بڑی آنت ہے۔ package_name::function_name().

Python میں، اس کے برعکس، یہ کلاسک سمجھا جاتا ہے کہ کسی پیکج کے افعال کو واضح طور پر اس کا نام بتا کر کال کریں۔ جب ایک پیکج ڈاؤن لوڈ کیا جاتا ہے، تو اسے عام طور پر ایک مختصر نام دیا جاتا ہے، جیسے pandas عام طور پر تخلص استعمال کیا جاتا ہے۔ pd. ایک پیکج فنکشن تک رسائی ڈاٹ کے ذریعے کی جاتی ہے۔ package_name.function_name().

تفویض

R میں، کسی شے کو قدر تفویض کرنے کے لیے تیر کا استعمال عام ہے۔ obj_name <- valueاگرچہ سنگل مساوی نشان کی اجازت ہے، R میں سنگل مساوی نشان بنیادی طور پر اقدار کو فنکشن آرگیومنٹس میں منتقل کرنے کے لیے استعمال کیا جاتا ہے۔

Python میں، تفویض خصوصی طور پر سنگل مساوی نشان کے ساتھ کیا جاتا ہے۔ obj_name = value.

اشاریہ کاری۔

یہاں بھی کافی اہم اختلافات ہیں۔ R میں، اشاریہ سازی ایک سے شروع ہوتی ہے اور نتیجے کی حد میں تمام مخصوص عناصر کو شامل کرتی ہے،

Python میں، انڈیکسنگ صفر سے شروع ہوتی ہے اور منتخب کردہ رینج میں انڈیکس میں بیان کردہ آخری عنصر شامل نہیں ہوتا ہے۔ تو ڈیزائن x[i:j] Python میں j عنصر شامل نہیں ہوگا۔

R اشارے میں منفی اشاریہ سازی میں بھی اختلافات ہیں۔ x[-1] آخری کے علاوہ ویکٹر کے تمام عناصر کو واپس کر دے گا۔ Python میں، اسی طرح کا اشارہ صرف آخری عنصر کو لوٹائے گا۔

طریقے اور او او پی

R اپنے طریقے سے OOP کو نافذ کرتا ہے، میں نے اس کے بارے میں مضمون میں لکھا ہے۔ "R زبان میں OOP (حصہ 1): S3 کلاسز". عام طور پر، R ایک فنکشنل لینگویج ہے، اور اس میں موجود ہر چیز فنکشن پر بنی ہے۔ لہذا، مثال کے طور پر، ایکسل صارفین کے لیے، پر جائیں۔ tydiverse اس سے زیادہ آسان ہو جائے گا pandas. اگرچہ یہ میری موضوعی رائے ہو سکتی ہے۔

مختصراً، R میں موجود اشیاء کے پاس طریقے نہیں ہوتے ہیں (اگر ہم S3 کلاسز کے بارے میں بات کرتے ہیں، لیکن OOP کے دیگر نفاذ ہیں جو بہت کم عام ہیں)۔ صرف عمومی افعال ہیں جو آبجیکٹ کی کلاس کے لحاظ سے ان پر مختلف طریقے سے عمل کرتے ہیں۔

پائپ لائنز

شاید اس کا نام ہے۔ pandas یہ مکمل طور پر درست نہیں ہوگا، لیکن میں مطلب سمجھانے کی کوشش کروں گا۔

انٹرمیڈیٹ حسابات کو بچانے اور کام کرنے والے ماحول میں غیر ضروری اشیاء پیدا نہ کرنے کے لیے، آپ ایک قسم کی پائپ لائن استعمال کر سکتے ہیں۔ وہ. حساب کا نتیجہ ایک فنکشن سے دوسرے فنکشن میں منتقل کریں، اور انٹرمیڈیٹ کے نتائج کو محفوظ نہ کریں۔

آئیے درج ذیل کوڈ کی مثال لیں، جہاں ہم درمیانی حسابات کو الگ الگ اشیاء میں محفوظ کرتے ہیں۔

temp_object <- func1()
temp_object2 <- func2(temp_object )
obj <- func3(temp_object2 )

ہم نے ترتیب وار 3 آپریشن کیے، اور ہر ایک کا نتیجہ الگ الگ شے میں محفوظ کر لیا گیا۔ لیکن حقیقت میں، ہمیں ان درمیانی اشیاء کی ضرورت نہیں ہے۔

یا اس سے بھی بدتر، لیکن ایکسل صارفین سے زیادہ واقف۔

obj  <- func3(func2(func1()))

اس صورت میں، ہم نے حساب کے درمیانی نتائج کو محفوظ نہیں کیا، لیکن نیسٹڈ فنکشنز کے ساتھ کوڈ پڑھنا انتہائی تکلیف دہ ہے۔

ہم R میں ڈیٹا پروسیسنگ کے کئی طریقوں کو دیکھیں گے، اور وہ مختلف طریقوں سے اسی طرح کی کارروائیاں کرتے ہیں۔

لائبریری میں پائپ لائنز tidyverse آپریٹر کی طرف سے لاگو کیا جاتا ہے %>%.

obj <- func1() %>% 
            func2() %>%
            func3()

اس طرح ہم کام کا نتیجہ لیتے ہیں۔ func1() اور اسے پہلی دلیل کے طور پر منتقل کریں۔ func2()، پھر ہم اس حساب کے نتیجے کو پہلی دلیل کے طور پر پاس کرتے ہیں۔ func3(). اور آخر میں، ہم اعتراض میں کئے گئے تمام حسابات لکھتے ہیں۔ obj <-.

مذکورہ بالا سبھی کو اس میم کے الفاظ سے بہتر طور پر بیان کیا گیا ہے:
ڈیٹا کے ساتھ کام کرنے کے لیے کونسی زبان کا انتخاب کرنا ہے - R یا Python؟ دونوں! پانڈا سے tidyverse اور data.table اور پیچھے کی طرف ہجرت کرنا

В data.table زنجیریں اسی طرح استعمال ہوتی ہیں۔

newDT <- DT[where, select|update|do, by][where, select|update|do, by][where, select|update|do, by]

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

В pandas اس طرح کی کارروائیوں کو ایک نقطے سے الگ کیا جاتا ہے۔

obj = df.fun1().fun2().fun3()

وہ. ہم اپنی میز لیتے ہیں df اور اس کا طریقہ استعمال کریں۔ fun1()، پھر ہم حاصل شدہ نتیجہ پر طریقہ کا اطلاق کرتے ہیں۔ fun2()کے بعد fun3(). نتیجے کا نتیجہ ایک آبجیکٹ میں محفوظ کیا جاتا ہے۔ obj .

ڈیٹا ڈھانچے

R اور Python میں ڈیٹا ڈھانچے ایک جیسے ہیں، لیکن ان کے مختلف نام ہیں۔

تفصیل
آر میں نام
Python/pandas میں نام

ٹیبل کا ڈھانچہ
ڈیٹا فریم، ڈیٹا ٹیبل، ٹیبل
ڈیٹا فریم

اقدار کی ایک جہتی فہرست
ویکٹر
پانڈا میں سیریز یا خالص ازگر میں فہرست

ملٹی لیول نان ٹیبلر ڈھانچہ
فہرست
ڈکشنری (dict)

ہم ذیل میں نحو میں کچھ دیگر خصوصیات اور اختلافات کو دیکھیں گے۔

پیکجوں کے بارے میں چند الفاظ جو ہم استعمال کریں گے۔

سب سے پہلے، میں آپ کو ان پیکجز کے بارے میں کچھ بتاؤں گا جن سے آپ اس مضمون کے دوران واقف ہوں گے۔

صاف ستھرا

سرکاری ویب سائٹ: tidyverse.org
ڈیٹا کے ساتھ کام کرنے کے لیے کونسی زبان کا انتخاب کرنا ہے - R یا Python؟ دونوں! پانڈا سے tidyverse اور data.table اور پیچھے کی طرف ہجرت کرنا
لائبریری tidyverse آر اسٹوڈیو کے سینئر ریسرچ سائنٹسٹ ہیڈلی وکھم نے لکھا ہے۔ tidyverse پیکجز کے ایک متاثر کن سیٹ پر مشتمل ہے جو ڈیٹا پروسیسنگ کو آسان بناتا ہے، جن میں سے 5 CRAN ریپوزٹری سے ٹاپ 10 ڈاؤن لوڈز میں شامل ہیں۔

لائبریری کا بنیادی حصہ درج ذیل پیکجوں پر مشتمل ہے: ggplot2, dplyr, tidyr, readr, purrr, tibble, stringr, forcats. ان پیکجوں میں سے ہر ایک کا مقصد ایک مخصوص مسئلہ کو حل کرنا ہے۔ مثال کے طور پر dplyr ڈیٹا ہیرا پھیری کے لیے بنایا گیا، tidyr ڈیٹا کو صاف ستھرا شکل میں لانے کے لیے، stringr تاروں کے ساتھ کام کرنا آسان بناتا ہے، اور ggplot2 ڈیٹا ویژولائزیشن کے سب سے مشہور ٹولز میں سے ایک ہے۔

فائدہ tidyverse سادگی اور پڑھنے میں آسان نحو ہے، جو بہت سے طریقوں سے SQL استفسار کی زبان سے ملتا جلتا ہے۔

ڈیٹا ٹیبل

ڈیٹا کے ساتھ کام کرنے کے لیے کونسی زبان کا انتخاب کرنا ہے - R یا Python؟ دونوں! پانڈا سے tidyverse اور data.table اور پیچھے کی طرف ہجرت کرناسرکاری ویب سائٹ: r-datatable.com

کی طرف سے data.table H2O.ai کا میٹ ڈول ہے۔

لائبریری کی پہلی ریلیز 2006 میں ہوئی تھی۔

پیکیج نحو اتنا آسان نہیں ہے جتنا میں tidyverse اور R میں کلاسک ڈیٹا فریموں کی زیادہ یاد دلاتا ہے، لیکن اس کے ساتھ ہی فعالیت میں نمایاں طور پر توسیع کی گئی ہے۔

اس پیکیج میں ٹیبل کے ساتھ تمام ہیرا پھیری کو مربع بریکٹ میں بیان کیا گیا ہے، اور اگر آپ نحو کا ترجمہ کرتے ہیں data.table ایس کیو ایل میں، آپ کو کچھ اس طرح ملتا ہے: data.table[ WHERE, SELECT, GROUP BY ]

اس پیکیج کی طاقت بڑی مقدار میں ڈیٹا پر کارروائی کرنے کی رفتار ہے۔

pandas

سرکاری ویب سائٹ: pandas.pydata.org ڈیٹا کے ساتھ کام کرنے کے لیے کونسی زبان کا انتخاب کرنا ہے - R یا Python؟ دونوں! پانڈا سے tidyverse اور data.table اور پیچھے کی طرف ہجرت کرنا

لائبریری کا نام اکانومیٹرک اصطلاح "پینل ڈیٹا" سے آیا ہے، جو معلومات کے کثیر جہتی ساختی سیٹوں کو بیان کرنے کے لیے استعمال ہوتا ہے۔

کی طرف سے pandas امریکی ویس میک کینی ہے۔

جب بات Python میں ڈیٹا کے تجزیہ کی ہو تو برابر pandas نہیں. ایک بہت ہی ملٹی فنکشنل، اعلیٰ سطح کا پیکیج جو آپ کو کسی بھی ذرائع سے ڈیٹا لوڈ کرنے سے لے کر اسے دیکھنے تک ڈیٹا کے ساتھ کوئی بھی ہیرا پھیری کرنے کی اجازت دیتا ہے۔

اضافی پیکجوں کو انسٹال کرنا

اس مضمون میں زیر بحث پیکیجز بنیادی R اور Python کی تقسیم میں شامل نہیں ہیں۔ اگرچہ ایک چھوٹی سی انتباہ ہے، اگر آپ نے ایناکونڈا ڈسٹری بیوشن انسٹال کیا ہے، تو اضافی انسٹال کریں۔ pandas ضرورت نہیں ہے۔

آر میں پیکجز کی تنصیب

اگر آپ نے RStudio ڈیولپمنٹ ماحول کو کم از کم ایک بار کھولا ہے، تو آپ شاید پہلے سے ہی جانتے ہوں گے کہ R میں مطلوبہ پیکج کیسے انسٹال کرنا ہے۔ پیکیجز کو انسٹال کرنے کے لیے، معیاری کمانڈ استعمال کریں۔ install.packages() اسے براہ راست R میں چلا کر۔

# установка пакетов
install.packages("vroom")
install.packages("readr")
install.packages("dplyr")
install.packages("data.table")

تنصیب کے بعد، پیکجوں کو منسلک کرنے کی ضرورت ہے، جس کے لئے زیادہ تر معاملات میں کمانڈ استعمال کیا جاتا ہے library().

# подключение или импорт пакетов в рабочее окружение
library(vroom)
library(readr)
library(dplyr)
library(data.table)

Python میں پیکیجز انسٹال کرنا

لہذا، اگر آپ کے پاس خالص ازگر انسٹال ہے، تو pandas آپ کو اسے دستی طور پر انسٹال کرنے کی ضرورت ہے۔ اپنے آپریٹنگ سسٹم کے لحاظ سے کمانڈ لائن، یا ٹرمینل کھولیں اور درج ذیل کمانڈ درج کریں۔

pip install pandas

پھر ہم Python پر واپس آتے ہیں اور کمانڈ کے ساتھ انسٹال شدہ پیکج درآمد کرتے ہیں۔ import.

import pandas as pd

ڈیٹا لوڈ ہو رہا ہے۔

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

ڈیٹا کے ساتھ کام کرنے کے لیے کونسی زبان کا انتخاب کرنا ہے - R یا Python؟ دونوں! پانڈا سے tidyverse اور data.table اور پیچھے کی طرف ہجرت کرنا

پورے مضمون میں ہم کئی ڈیٹاسیٹس استعمال کریں گے:

  1. گوگل تجزیات سے دو ڈاؤن لوڈ۔
  2. ٹائٹینک مسافر ڈیٹاسیٹ۔

تمام ڈیٹا میرے پاس ہے۔ GitHub کے csv اور tsv فائلوں کی شکل میں۔ ہم ان سے کہاں درخواست کریں گے؟

ڈیٹا کو R میں لوڈ کرنا: tidyverse، vroom، readr

لائبریری میں ڈیٹا لوڈ کرنے کے لیے tidyverse دو پیکجز ہیں: vroom, readr. vroom زیادہ جدید، لیکن مستقبل میں پیکجوں کو ملایا جا سکتا ہے۔

سے اقتباس سرکاری دستاویزات vroom.

ویروم بمقابلہ ریڈر
کی رہائی کیا کرتا ہے vroom کے لئے مطلب readr? فی الحال ہم دونوں پیکجوں کو الگ الگ تیار کرنے کا ارادہ رکھتے ہیں، لیکن امکان ہے کہ ہم مستقبل میں پیکجوں کو متحد کریں گے۔ وروم کی سست پڑھنے کا ایک نقصان یہ ہے کہ ڈیٹا کے کچھ مسائل سامنے نہیں لائے جاسکتے ہیں، لہذا ان کو یکجا کرنے کے لیے کچھ سوچنے کی ضرورت ہے۔

ویروم بمقابلہ ریڈر
رہائی کا کیا مطلب ہے؟ vroom لیے readr? اس وقت ہم دونوں پیکجوں کو الگ الگ تیار کرنے کا ارادہ رکھتے ہیں، لیکن ہم شاید مستقبل میں ان کو یکجا کر دیں گے۔ سست پڑھنے کے نقصانات میں سے ایک vroom یہ ہے کہ اعداد و شمار کے ساتھ کچھ مسائل کی پہلے سے اطلاع نہیں دی جاسکتی ہے، لہذا آپ کو اس بارے میں سوچنے کی ضرورت ہے کہ انہیں کس طرح یکجا کیا جائے۔

اس مضمون میں ہم دونوں ڈیٹا لوڈنگ پیکجوں کو دیکھیں گے:

R: vroom پیکیج میں ڈیٹا لوڈ ہو رہا ہے۔

# install.packages("vroom")
library(vroom)

# Чтение данных
## vroom
ga_nov  <- vroom("https://raw.githubusercontent.com/selesnow/publications/master/data_example/r_python_data/ga_nowember.csv")
ga_dec  <- vroom("https://raw.githubusercontent.com/selesnow/publications/master/data_example/r_python_data/ga_december.csv")
titanic <- vroom("https://raw.githubusercontent.com/selesnow/publications/master/data_example/r_python_data/titanic.csv")

R: readr میں ڈیٹا لوڈ ہو رہا ہے۔

# install.packages("readr")
library(readr)

# Чтение данных
## readr
ga_nov  <- read_tsv("https://raw.githubusercontent.com/selesnow/publications/master/data_example/r_python_data/ga_nowember.csv")
ga_dec  <- read_tsv("https://raw.githubusercontent.com/selesnow/publications/master/data_example/r_python_data/ga_december.csv")
titanic <- read_csv("https://raw.githubusercontent.com/selesnow/publications/master/data_example/r_python_data/titanic.csv")

پیکج میں vroomcsv/tsv ڈیٹا فارمیٹ سے قطع نظر، لوڈنگ اسی نام کے فنکشن سے کی جاتی ہے vroom()، پیکیج میں readr ہم ہر فارمیٹ کے لیے ایک مختلف فنکشن استعمال کرتے ہیں۔ read_tsv() и read_csv().

ڈیٹا کو R: data.table میں لوڈ کیا جا رہا ہے۔

В data.table ڈیٹا لوڈ کرنے کے لیے ایک فنکشن موجود ہے۔ fread().

ڈیٹا کو R: data.table پیکیج میں لوڈ کیا جا رہا ہے۔

# install.packages("data.table")
library(data.table)

## data.table
ga_nov  <- fread("https://raw.githubusercontent.com/selesnow/publications/master/data_example/r_python_data/ga_nowember.csv")
ga_dec  <- fread("https://raw.githubusercontent.com/selesnow/publications/master/data_example/r_python_data/ga_december.csv")
titanic <- fread("https://raw.githubusercontent.com/selesnow/publications/master/data_example/r_python_data/titanic.csv")

Python میں ڈیٹا لوڈ ہو رہا ہے: pandas

اگر ہم R پیکجوں سے موازنہ کریں تو اس صورت میں نحو قریب ترین ہے۔ pandas گے readrکیونکہ pandas کہیں سے بھی ڈیٹا کی درخواست کر سکتے ہیں، اور اس پیکج میں فنکشنز کا ایک پورا خاندان موجود ہے۔ read_*().

  • read_csv()
  • read_excel()
  • read_sql()
  • read_json()
  • read_html()

اور بہت سے دوسرے فنکشنز جو مختلف فارمیٹس سے ڈیٹا کو پڑھنے کے لیے بنائے گئے ہیں۔ لیکن ہمارے مقاصد کے لیے یہ کافی ہے۔ read_table() یا read_csv() دلیل کا استعمال کرتے ہوئے ستمبر کالم الگ کرنے والے کی وضاحت کرنے کے لیے۔

Python میں ڈیٹا لوڈ ہو رہا ہے: pandas

import pandas as pd

ga_nov  = pd.read_csv("https://raw.githubusercontent.com/selesnow/publications/master/data_example/russian_text_in_r/ga_nowember.csv", sep = "t")
ga_dec  = pd.read_csv("https://raw.githubusercontent.com/selesnow/publications/master/data_example/russian_text_in_r/ga_december.csv", sep = "t")
titanic = pd.read_csv("https://raw.githubusercontent.com/selesnow/publications/master/data_example/russian_text_in_r/titanic.csv")

ڈیٹا فریم بنانا

ٹیبل ٹائٹینک، جسے ہم نے لوڈ کیا، وہاں ایک فیلڈ ہے۔ جنس، جو مسافر کی جنس شناخت کنندہ کو اسٹور کرتا ہے۔

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

ایسا کرنے کے لیے، ہم ایک چھوٹی ڈائرکٹری بنائیں گے، ایک ٹیبل جس میں بالترتیب صرف 2 کالم (کوڈ اور جنس کا نام) اور 2 قطاریں ہوں گی۔

R میں ڈیٹا فریم بنانا: tidyverse، dplyr

ذیل میں کوڈ کی مثال میں، ہم فنکشن کا استعمال کرتے ہوئے مطلوبہ ڈیٹا فریم بناتے ہیں۔ tibble() .

R: dplyr میں ڈیٹا فریم بنانا

## dplyr
### создаём справочник
gender <- tibble(id = c(1, 2),
                 gender = c("female", "male"))

R: data.table میں ڈیٹا فریم بنانا

R: data.table میں ڈیٹا فریم بنانا

## data.table
### создаём справочник
gender <- data.table(id = c(1, 2),
                    gender = c("female", "male"))

ازگر میں ڈیٹا فریم بنانا: پانڈا۔

В pandas فریموں کی تخلیق کئی مراحل میں کی جاتی ہے، پہلے ہم ایک لغت بناتے ہیں، اور پھر ہم لغت کو ڈیٹا فریم میں تبدیل کرتے ہیں۔

ازگر میں ڈیٹا فریم بنانا: پانڈا۔

# создаём дата фрейм
gender_dict = {'id': [1, 2],
               'gender': ["female", "male"]}
# преобразуем словарь в датафрейм
gender = pd.DataFrame.from_dict(gender_dict)

کالم منتخب کرنا

جن ٹیبلز کے ساتھ آپ کام کرتے ہیں وہ ڈیٹا کے درجنوں یا سینکڑوں کالم پر مشتمل ہو سکتے ہیں۔ لیکن تجزیہ کرنے کے لیے، ایک اصول کے طور پر، آپ کو ان تمام کالموں کی ضرورت نہیں ہے جو سورس ٹیبل میں دستیاب ہیں۔

ڈیٹا کے ساتھ کام کرنے کے لیے کونسی زبان کا انتخاب کرنا ہے - R یا Python؟ دونوں! پانڈا سے tidyverse اور data.table اور پیچھے کی طرف ہجرت کرنا

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

R میں کالموں کا انتخاب: tidyverse، dplyr

نحو dplyr ایس کیو ایل استفسار کی زبان سے بہت ملتی جلتی ہے، اگر آپ اس سے واقف ہیں تو آپ اس پیکج میں تیزی سے مہارت حاصل کر لیں گے۔

کالم منتخب کرنے کے لیے، فنکشن استعمال کریں۔ select().

ذیل میں کوڈ کی مثالیں ہیں جن کے ساتھ آپ درج ذیل طریقوں سے کالم منتخب کر سکتے ہیں۔

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

R: dplyr میں کالموں کا انتخاب

# Выбор нужных столбцов
## dplyr
### выбрать по названию столбцов
select(ga_nov, date, source, sessions)
### исключь по названию столбцов
select(ga_nov, -medium, -bounces)
### выбрать по регулярному выражению, стобцы имена которых заканчиваются на s
select(ga_nov, matches("s$"))
### выбрать по условию, выбираем только целочисленные столбцы
select_if(ga_nov, is.integer)

R: data.table میں کالم منتخب کرنا

میں وہی آپریشن data.table کچھ مختلف طریقے سے انجام دیا جاتا ہے، مضمون کے شروع میں میں نے وضاحت فراہم کی تھی کہ مربع بریکٹ کے اندر کون سے دلائل ہیں data.table.

DT[i,j,by]

کہاں:
i - کہاں، i.e. قطاروں سے فلٹر کرنا
j - منتخب کریں | اپ ڈیٹ کریں | کریں، یعنی کالموں کو منتخب کرنا اور انہیں تبدیل کرنا
بذریعہ ڈیٹا گروپنگ

R: data.table میں کالم منتخب کرنا

## data.table
### выбрать по названию столбцов
ga_nov[ , .(date, source, sessions) ]
### исключь по названию столбцов
ga_nov[ , .SD, .SDcols = ! names(ga_nov) %like% "medium|bounces" ]
### выбрать по регулярному выражению
ga_nov[, .SD, .SDcols = patterns("s$")]

متغیر .SD آپ کو تمام کالموں تک رسائی کی اجازت دیتا ہے، اور .SDcols آپ کو مطلوبہ کالموں کے ناموں کو فلٹر کرنے کے لیے ریگولر ایکسپریشنز، یا دیگر فنکشنز کا استعمال کرتے ہوئے مطلوبہ کالموں کو فلٹر کریں۔

ازگر، پانڈوں میں کالموں کا انتخاب

میں نام سے کالم منتخب کرنے کے لیے pandas ان کے ناموں کی فہرست فراہم کرنا کافی ہے۔ اور ریگولر ایکسپریشنز کا استعمال کرتے ہوئے نام کے مطابق کالم کو منتخب یا خارج کرنے کے لیے، آپ کو فنکشنز استعمال کرنے کی ضرورت ہے۔ drop() и filter()، اور دلیل محور = 1، جس کے ساتھ آپ اشارہ کرتے ہیں کہ قطاروں کے بجائے کالم پر کارروائی کرنا ضروری ہے۔

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

Python میں کالموں کا انتخاب: pandas

# Выбор полей по названию
ga_nov[['date', 'source', 'sessions']]
# Исключить по названию
ga_nov.drop(['medium', 'bounces'], axis=1)
# Выбрать по регулярному выражению
ga_nov.filter(regex="s$", axis=1)
# Выбрать числовые поля
ga_nov.select_dtypes(include=['number'])
# Выбрать текстовые поля
ga_nov.select_dtypes(include=['object'])

قطاروں کو فلٹر کرنا

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

ڈیٹا کے ساتھ کام کرنے کے لیے کونسی زبان کا انتخاب کرنا ہے - R یا Python؟ دونوں! پانڈا سے tidyverse اور data.table اور پیچھے کی طرف ہجرت کرنا

R میں قطاروں کو فلٹر کرنا: tydyverse، dplyr

В dplyr فنکشن قطاروں کو فلٹر کرنے کے لیے استعمال ہوتا ہے۔ filter(). یہ پہلی دلیل کے طور پر ڈیٹا فریم لیتا ہے، پھر آپ فلٹرنگ کی شرائط درج کرتے ہیں۔

جدول کو فلٹر کرنے کے لیے منطقی تاثرات لکھتے وقت، اس صورت میں، کالم کے نام بغیر اقتباسات کے اور ٹیبل کے نام کا اعلان کیے بغیر بتائیں۔

فلٹر کرنے کے لیے متعدد منطقی تاثرات استعمال کرتے وقت، درج ذیل آپریٹرز استعمال کریں:

  • اور یا کوما - منطقی اور
  • | - منطقی OR

R: dplyr میں قطاروں کو فلٹر کرنا

# фильтрация строк
## dplyr
### фильтрация строк по одному условию
filter(ga_nov, source == "google")
### фильтр по двум условиям соединённым логическим и
filter(ga_nov, source == "google" & sessions >= 10)
### фильтр по двум условиям соединённым логическим или
filter(ga_nov, source == "google" | sessions >= 10)

R: data.table میں قطاروں کو فلٹر کرنا

جیسا کہ میں نے اوپر لکھا ہے، میں data.table ڈیٹا کنورژن نحو مربع بریکٹ میں بند ہے۔

DT[i,j,by]

کہاں:
i - کہاں، i.e. قطاروں سے فلٹر کرنا
j - منتخب کریں | اپ ڈیٹ کریں | کریں، یعنی کالموں کو منتخب کرنا اور انہیں تبدیل کرنا
بذریعہ ڈیٹا گروپنگ

دلیل کو قطاروں کو فلٹر کرنے کے لیے استعمال کیا جاتا ہے۔ i, جس کی مربع بریکٹ میں پہلی پوزیشن ہے۔

کالم تک منطقی اظہار میں بغیر اقتباس کے نشانات اور ٹیبل کا نام بتائے بغیر رسائی حاصل کی جاتی ہے۔

منطقی تاثرات ایک دوسرے سے اسی طرح جڑے ہوئے ہیں جیسے میں dplyr & اور | آپریٹرز کے ذریعے۔

R: data.table میں قطاروں کو فلٹر کرنا

## data.table
### фильтрация строк по одному условию
ga_nov[source == "google"]
### фильтр по двум условиям соединённым логическим и
ga_nov[source == "google" & sessions >= 10]
### фильтр по двум условиям соединённым логическим или
ga_nov[source == "google" | sessions >= 10]

Python میں تاروں کو فلٹر کرنا: pandas

قطاروں کے حساب سے فلٹر کریں۔ pandas میں فلٹر کرنے کی طرح data.table، اور مربع بریکٹ میں کیا جاتا ہے۔

اس صورت میں، کالم تک رسائی ضروری طور پر ڈیٹا فریم کے نام کی نشاندہی کرکے کی جاتی ہے؛ پھر کالم کا نام مربع بریکٹ میں کوٹیشن مارکس میں بھی ظاہر کیا جا سکتا ہے (مثال کے طور پر df['col_name'])، یا مدت کے بعد حوالہ جات کے بغیر (مثال کے طور پر df.col_name).

اگر آپ کو ڈیٹا فریم کو کئی شرائط کے مطابق فلٹر کرنے کی ضرورت ہے، تو ہر شرط کو قوسین میں رکھا جانا چاہیے۔ منطقی حالات آپریٹرز کے ذریعہ ایک دوسرے سے جڑے ہوئے ہیں۔ & и |.

Python میں تاروں کو فلٹر کرنا: pandas

# Фильтрация строк таблицы
### фильтрация строк по одному условию
ga_nov[ ga_nov['source'] == "google" ]
### фильтр по двум условиям соединённым логическим и
ga_nov[(ga_nov['source'] == "google") & (ga_nov['sessions'] >= 10)]
### фильтр по двум условиям соединённым логическим или
ga_nov[(ga_nov['source'] == "google") | (ga_nov['sessions'] >= 10)]

ڈیٹا کی گروپ بندی اور جمع

ڈیٹا کے تجزیہ میں سب سے زیادہ استعمال ہونے والی کارروائیوں میں سے ایک گروہ بندی اور جمع ہے۔

ڈیٹا کے ساتھ کام کرنے کے لیے کونسی زبان کا انتخاب کرنا ہے - R یا Python؟ دونوں! پانڈا سے tidyverse اور data.table اور پیچھے کی طرف ہجرت کرنا

ان کارروائیوں کو انجام دینے کا نحو ان تمام پیکجوں میں بکھرا ہوا ہے جن کا ہم جائزہ لیتے ہیں۔

اس صورت میں، ہم مثال کے طور پر ڈیٹا فریم لیں گے۔ ٹائٹینک، اور کیبن کلاس کے لحاظ سے ٹکٹوں کی تعداد اور اوسط قیمت کا حساب لگائیں۔

R میں ڈیٹا کی گروپ بندی اور جمع: tidyverse، dplyr

В dplyr فنکشن گروپنگ کے لیے استعمال ہوتا ہے۔ group_by()، اور جمع کے لیے summarise(). حقیقت میں، dplyr افعال کا ایک پورا خاندان ہے۔ summarise_*()، لیکن اس مضمون کا مقصد بنیادی نحو کا موازنہ کرنا ہے، لہذا ہم ایسے جنگل میں نہیں جائیں گے۔

جمع کرنے کے بنیادی افعال:

  • sum() - خلاصہ
  • min() / max() - کم سے کم اور زیادہ سے زیادہ قیمت
  • mean() - اوسط
  • median() - اوسط
  • length() --.مقدار

R: dplyr میں گروپ بندی اور جمع

## dplyr
### группировка и агрегация строк
group_by(titanic, Pclass) %>%
  summarise(passangers = length(PassengerId),
            avg_price  = mean(Fare))

کام کرنا group_by() ہم نے پہلی دلیل کے طور پر ٹیبل کو پاس کیا۔ ٹائٹینک، اور پھر فیلڈ کا اشارہ کیا۔ پی کلاس، جس کے ذریعہ ہم اپنے ٹیبل کو گروپ کریں گے۔ آپریٹر کا استعمال کرتے ہوئے اس آپریشن کا نتیجہ %>% فنکشن کے لیے پہلی دلیل کے طور پر منظور ہوا۔ summarise()، اور 2 مزید فیلڈز شامل کیے: مسافر и اوسط_قیمت. سب سے پہلے، فنکشن کا استعمال کرتے ہوئے length() ٹکٹوں کی تعداد کا حساب لگایا، اور دوسرے میں فنکشن کا استعمال کرتے ہوئے mean() ٹکٹ کی اوسط قیمت موصول ہوئی ہے۔

R: data.table میں ڈیٹا کی گروپ بندی اور جمع

В data.table دلیل جمع کے لیے استعمال ہوتی ہے۔ j جس کی مربع بریکٹ میں دوسری پوزیشن ہے، اور گروپ بندی کے لیے by یا keybyجس نے تیسری پوزیشن حاصل کی۔

اس معاملے میں جمع کرنے کے افعال کی فہرست اسی طرح کی ہے جس میں بیان کیا گیا ہے۔ dplyrکیونکہ یہ بنیادی R نحو کے افعال ہیں۔

R: data.table میں گروپ بندی اور جمع

## data.table
### фильтрация строк по одному условию
titanic[, .(passangers = length(PassengerId),
            avg_price  = mean(Fare)),
        by = Pclass]

Python میں ڈیٹا کی گروپ بندی اور جمع کرنا: پانڈا۔

گروپ بندی pandas کی طرح dplyr، لیکن جمع کی طرح نہیں ہے dplyr بالکل نہیں data.table.

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

جمع کرنے کے لیے آپ طریقہ استعمال کر سکتے ہیں۔ agg()جو ایک لغت کو قبول کرتا ہے۔ لغت کی کلیدیں وہ کالم ہیں جن پر آپ جمع کرنے کے افعال کو لاگو کریں گے، اور اقدار جمع کرنے کے افعال کے نام ہیں۔

جمع کرنے کے افعال:

  • sum() - خلاصہ
  • min() / max() - کم سے کم اور زیادہ سے زیادہ قیمت
  • mean() - اوسط
  • median() - اوسط
  • count() --.مقدار

فنکشن reset_index() نیچے دی گئی مثال میں اس کا استعمال نیسٹڈ انڈیکس کو ری سیٹ کرنے کے لیے کیا جاتا ہے۔ pandas ڈیٹا جمع کرنے کے بعد ڈیفالٹ۔

تصوراتی، بہترین آپ کو اگلی لائن پر جانے کی اجازت دیتا ہے۔

ازگر میں گروپ بندی اور جمع: پانڈا۔

# группировка и агрегация данных
titanic.groupby(["Pclass"]).
    agg({'PassengerId': 'count', 'Fare': 'mean'}).
        reset_index()

میزوں کا عمودی جوڑ

ایک آپریشن جس میں آپ ایک ہی ڈھانچے کے دو یا زیادہ ٹیبلز میں شامل ہوتے ہیں۔ ہم نے جو ڈیٹا لوڈ کیا ہے وہ ٹیبلز پر مشتمل ہے۔ ga_nov и ga_dec. یہ میزیں ساخت میں ایک جیسی ہیں، یعنی ایک جیسے کالم ہیں، اور ان کالموں میں ڈیٹا کی اقسام۔

ڈیٹا کے ساتھ کام کرنے کے لیے کونسی زبان کا انتخاب کرنا ہے - R یا Python؟ دونوں! پانڈا سے tidyverse اور data.table اور پیچھے کی طرف ہجرت کرنا

یہ نومبر اور دسمبر کے مہینے کے لیے گوگل تجزیات کی طرف سے اپ لوڈ ہے، اس سیکشن میں ہم اس ڈیٹا کو ایک ٹیبل میں جمع کریں گے۔

ٹیبلز کو عمودی طور پر R میں جوائن کرنا: tidyverse، dplyr

В dplyr آپ فنکشن کا استعمال کرتے ہوئے 2 ٹیبلز کو ایک میں جوڑ سکتے ہیں۔ bind_rows(), اس کے دلائل کے طور پر میزیں پاس کرنا۔

R: dplyr میں قطاروں کو فلٹر کرنا

# Вертикальное объединение таблиц
## dplyr
bind_rows(ga_nov, ga_dec)

R: data.table میں عمودی طور پر جدولوں میں شامل ہونا

یہ بھی کوئی پیچیدہ نہیں ہے، آئیے استعمال کریں۔ rbind().

R: data.table میں قطاروں کو فلٹر کرنا

## data.table
rbind(ga_nov, ga_dec)

Python: pandas میں عمودی طور پر ٹیبلز میں شامل ہونا

В pandas فنکشن ٹیبل میں شامل ہونے کے لیے استعمال ہوتا ہے۔ concat()، جس میں آپ کو فریموں کی ایک فہرست کو جمع کرنے کی ضرورت ہے۔

Python میں تاروں کو فلٹر کرنا: pandas

# вертикальное объединение таблиц
pd.concat([ga_nov, ga_dec])

میزوں کا افقی جوڑ

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

ڈیٹا کے ساتھ کام کرنے کے لیے کونسی زبان کا انتخاب کرنا ہے - R یا Python؟ دونوں! پانڈا سے tidyverse اور data.table اور پیچھے کی طرف ہجرت کرنا

جوڑ کی کئی قسمیں ہیں:

ڈیٹا کے ساتھ کام کرنے کے لیے کونسی زبان کا انتخاب کرنا ہے - R یا Python؟ دونوں! پانڈا سے tidyverse اور data.table اور پیچھے کی طرف ہجرت کرنا

پہلے بھری ہوئی میز میں ٹائٹینک ہمارے پاس ایک کالم ہے۔ جنس، جو مسافر کے صنفی کوڈ سے مطابقت رکھتا ہے:

1 - عورت
2 - مرد

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

افقی جدول R میں جوائن کریں: tidyverse، dplyr

В dplyr افقی شمولیت کے لیے افعال کا ایک پورا خاندان ہے:

  • inner_join()
  • left_join()
  • right_join()
  • full_join()
  • semi_join()
  • nest_join()
  • anti_join()

میری مشق میں سب سے زیادہ استعمال کیا جاتا ہے left_join().

پہلے دو دلائل کے طور پر، اوپر دیے گئے فنکشنز شامل ہونے کے لیے دو جدولیں لیتے ہیں، اور تیسری دلیل کے طور پر by آپ کو شامل ہونے کے لیے کالم کی وضاحت کرنی ہوگی۔

افقی جدول R میں جوائن کریں: dplyr

# объединяем таблицы
left_join(titanic, gender,
          by = c("Sex" = "id"))

R: data.table میں میزوں کا افقی جوڑ

В data.table آپ کو فنکشن کا استعمال کرتے ہوئے کلید کے ذریعہ ٹیبل میں شامل ہونے کی ضرورت ہے۔ merge().

data.table میں فنکشن کو ضم کرنے کے لیے دلائل

  • x, y — شامل ہونے کے لیے میزیں۔
  • by — کالم جو شامل ہونے کی کلید ہے اگر اس کا دونوں جدولوں میں ایک ہی نام ہے۔
  • by.x, by.y — کالم کے نام ضم کیے جائیں، اگر ان کے ٹیبل میں مختلف نام ہوں
  • all, all.x, all.y — جوائن کی قسم، سبھی دونوں ٹیبلز سے تمام قطاریں واپس کر دیں گے، all.x بائیں جوائن آپریشن کے مساوی ہے (پہلے ٹیبل کی تمام قطاروں کو چھوڑ دے گا)، all.y — کے مساوی ہے رائٹ جوائن آپریشن (دوسری ٹیبل کی تمام قطاروں کو چھوڑ دے گا)۔

R: data.table میں میزوں کا افقی جوڑ

# объединяем таблицы
merge(titanic, gender, by.x = "Sex", by.y = "id", all.x = T)

افقی جدول Python میں جوائن کریں: pandas

اس کے ساتھ ساتھ میں data.tableمیں pandas فنکشن ٹیبل میں شامل ہونے کے لیے استعمال ہوتا ہے۔ merge().

پانڈوں میں ضم () فنکشن کے دلائل

  • کیسے - کنکشن کی قسم: بائیں، دائیں، بیرونی، اندرونی
  • on — کالم جو ایک کلید ہے اگر اس کا دونوں جدولوں میں ایک ہی نام ہے۔
  • بائیں_پر، دائیں_پر - کلیدی کالموں کے نام، اگر ان کے ٹیبل میں مختلف نام ہیں۔

افقی جدول Python میں جوائن کریں: pandas

# объединяем по ключу
titanic.merge(gender, how = "left", left_on = "Sex", right_on = "id")

ونڈو کے بنیادی افعال اور حسابی کالم

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

ڈیٹا کے ساتھ کام کرنے کے لیے کونسی زبان کا انتخاب کرنا ہے - R یا Python؟ دونوں! پانڈا سے tidyverse اور data.table اور پیچھے کی طرف ہجرت کرنا

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

مثال کے طور پر، آئیے ٹیبل لیں۔ ٹائٹینک. ہم حساب لگا سکتے ہیں کہ ہر ٹکٹ کی قیمت اس کی کیبن کلاس میں کتنی فیصد تھی۔

ایسا کرنے کے لیے، ہمیں ہر لائن میں موجودہ کیبن کلاس کے ٹکٹ کی کل قیمت حاصل کرنی ہوگی جس سے اس لائن کا ٹکٹ تعلق رکھتا ہے، پھر ہر ٹکٹ کی قیمت کو اسی کیبن کلاس کے تمام ٹکٹوں کی کل قیمت سے تقسیم کریں۔ .

R میں ونڈو کے افعال: tidyverse، dplyr

قطار گروپ بندی کا استعمال کیے بغیر، نئے کالم شامل کرنے کے لیے، میں dplyr فنکشن کی خدمت کرتا ہے۔ mutate().

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

R: dplyr میں ونڈو کے افعال

group_by(titanic, Pclass) %>%
  mutate(Pclass_cost = sum(Fare)) %>%
  ungroup() %>%
  mutate(ticket_fare_rate = Fare / Pclass_cost)

R: data.table میں ونڈو کے افعال

حل الگورتھم میں جیسا ہی رہتا ہے۔ dplyr، ہمیں فیلڈ کے لحاظ سے ٹیبل کو ونڈوز میں تقسیم کرنے کی ضرورت ہے۔ پی کلاس. ایک نئے کالم میں ہر قطار کے مطابق گروپ کے لیے رقم دکھائیں، اور ایک کالم شامل کریں جس میں ہم اس کے گروپ میں ہر ٹکٹ کی قیمت کے حصہ کا حساب لگاتے ہیں۔

میں نئے کالم شامل کرنے کے لیے data.table آپریٹر موجود :=. ذیل میں پیکیج کا استعمال کرتے ہوئے کسی مسئلے کو حل کرنے کی ایک مثال ہے۔ data.table

R: data.table میں ونڈو کے افعال

titanic[,c("Pclass_cost","ticket_fare_rate") := .(sum(Fare), Fare / Pclass_cost), 
        by = Pclass]

Python میں ونڈو کے افعال: pandas

نیا کالم شامل کرنے کا ایک طریقہ pandas - فنکشن کا استعمال کریں۔ assign(). قطاروں کو گروپ کیے بغیر، کیبن کلاس کے حساب سے ٹکٹوں کی قیمت کا خلاصہ کرنے کے لیے، ہم فنکشن کا استعمال کریں گے۔ transform().

ذیل میں ایک حل کی ایک مثال ہے جس میں ہم ٹیبل میں شامل کرتے ہیں۔ ٹائٹینک وہی 2 کالم۔

Python میں ونڈو کے افعال: pandas

titanic.assign(Pclass_cost      =  titanic.groupby('Pclass').Fare.transform(sum),
               ticket_fare_rate = lambda x: x['Fare'] / x['Pclass_cost'])

افعال اور طریقے خط و کتابت کی میز

ذیل میں ہم نے جن پیکجز پر غور کیا ہے ان میں ڈیٹا کے ساتھ مختلف کارروائیوں کو انجام دینے کے طریقوں کے درمیان خط و کتابت کا ایک جدول ہے۔

تفصیل
صاف ستھرا
ڈیٹا ٹیبل
pandas

ڈیٹا لوڈ ہو رہا ہے۔
vroom()/ readr::read_csv() / readr::read_tsv()
fread()
read_csv()

ڈیٹا فریم بنانا
tibble()
data.table()
dict() + from_dict()

کالم منتخب کرنا
select()
دلیل jمربع بریکٹ میں دوسری پوزیشن
ہم مربع بریکٹ میں مطلوبہ کالموں کی فہرست پاس کرتے ہیں / drop() / filter() / select_dtypes()

قطاروں کو فلٹر کرنا
filter()
دلیل iمربع بریکٹ میں پہلی پوزیشن
ہم فلٹرنگ کی شرائط کو مربع بریکٹ میں درج کرتے ہیں / filter()

گروپ بندی اور جمع
group_by() + summarise()
دلائل j + by
groupby() + agg()

میزوں کا عمودی اتحاد (UNION)
bind_rows()
rbind()
concat()

میزوں کا افقی جوڑ (JOIN)
left_join() / *_join()
merge()
merge()

ونڈو کے بنیادی افعال اور حسابی کالم شامل کرنا
group_by() + mutate()
دلیل j آپریٹر کا استعمال کرتے ہوئے := + دلیل by
transform() + assign()

حاصل يہ ہوا

شاید مضمون میں میں نے ڈیٹا پروسیسنگ کے بہترین نفاذ کے بارے میں نہیں بتایا، لہذا مجھے خوشی ہوگی کہ اگر آپ تبصروں میں میری غلطیوں کو درست کرتے ہیں، یا صرف R/Python میں ڈیٹا کے ساتھ کام کرنے کی دیگر تکنیکوں کے ساتھ مضمون میں دی گئی معلومات کو پورا کرتے ہیں۔

جیسا کہ میں نے اوپر لکھا، مضمون کا مقصد یہ نہیں تھا کہ کون سی زبان بہتر ہے اس پر اپنی رائے مسلط کرنا، بلکہ دونوں زبانوں کو سیکھنے، یا اگر ضروری ہو تو ان کے درمیان ہجرت کرنے کے مواقع کو آسان بنانا تھا۔

اگر آپ کو مضمون پسند آیا تو، مجھے اپنے نئے سبسکرائبرز ملنے پر خوشی ہوگی۔ یو ٹیوب پر и ۔ چینلز

Опрос

مندرجہ ذیل میں سے کون سا پیکج آپ اپنے کام میں استعمال کرتے ہیں؟

کمنٹس میں آپ اپنی پسند کی وجہ لکھ سکتے ہیں۔

سروے میں صرف رجسٹرڈ صارفین ہی حصہ لے سکتے ہیں۔ سائن ان، برائے مہربانی.

آپ کون سا ڈیٹا پروسیسنگ پیکج استعمال کرتے ہیں (آپ کئی اختیارات منتخب کر سکتے ہیں)

  • 45,2٪صاف ستھرا 19

  • 33,3٪data.table14

  • 54,8٪پانڈاس23

42 صارفین نے ووٹ دیا۔ 9 صارفین غیر حاضر رہے۔

ماخذ: www.habr.com

نیا تبصرہ شامل کریں