ڊيٽا سان ڪم ڪرڻ لاءِ ڪهڙي ٻولي چونڊيو وڃي - R يا Python؟ ٻئي! pandas کان tidyverse ۽ ​​data.table ۽ واپس ڏانهن لڏپلاڻ

انٽرنيٽ تي R يا Python ڳولهڻ سان، توهان کي لکن جا مضمون ملندا ۽ بحثن جا ڪلوميٽر ان موضوع تي، جن مان هڪ بهتر، تيز ۽ وڌيڪ آسان آهي ڊيٽا سان ڪم ڪرڻ لاءِ. پر بدقسمتيءَ سان اهي سڀئي مقالا ۽ تڪرار خاص مفيد نه آهن.

ڊيٽا سان ڪم ڪرڻ لاءِ ڪهڙي ٻولي چونڊيو وڃي - R يا Python؟ ٻئي! pandas کان tidyverse ۽ ​​data.table ۽ واپس ڏانهن لڏپلاڻ

هن آرٽيڪل جو مقصد ٻنهي ٻولين جي مشهور پيڪيجز ۾ بنيادي ڊيٽا پروسيسنگ ٽيڪنالاجي جو مقابلو ڪرڻ آهي. ۽ پڙهندڙن کي جلدي ڪجهه حاصل ڪرڻ ۾ مدد ڪريو جيڪي اهي اڃا تائين نٿا ڄاڻن. انهن لاءِ جيڪي پٿون ۾ لکن ٿا، معلوم ڪريو ته ساڳيو ڪم آر ۾ ڪيئن ڪجي، ۽ ان جي برعڪس.

آرٽيڪل دوران اسين آر ۾ سڀ کان وڌيڪ مشهور پيڪيجز جي نحو جو تجزيو ڪنداسين. اهي اهي پيڪيجز آهن جيڪي لائبريري ۾ شامل آهن. tidyverse۽ پڻ پيڪيج data.table. ۽ انهن جي نحو جي ڀيٽ ڪريو pandas, Python ۾ سڀ کان وڌيڪ مشهور ڊيٽا تجزيو پيڪيج.

اسان قدم سان قدم کڻنداسين ڊيٽا جي تجزيي جي پوري رستي ذريعي ان کي لوڊ ڪرڻ کان وٺي پٿون ۽ آر استعمال ڪندي تجزياتي ونڊو افعال انجام ڏيڻ تائين.

Contents

هي آرٽيڪل هڪ چيٽ شيٽ جي طور تي استعمال ڪري سگهجي ٿو جيڪڏهن توهان وساري ڇڏيو آهي ته ڪيئن ڪجهه ڊيٽا پروسيسنگ آپريشن کي انجام ڏيو انهن مان هڪ پيڪيجز ۾ غور هيٺ.

ڊيٽا سان ڪم ڪرڻ لاءِ ڪهڙي ٻولي چونڊيو وڃي - R يا Python؟ ٻئي! pandas کان tidyverse ۽ ​​data.table ۽ واپس ڏانهن لڏپلاڻ

  1. R ۽ Python جي وچ ۾ مکيه نحوي فرق
    1.1. رسائي پيڪيج افعال
    1.2. تفويض
    1.3. انڊيڪسنگ
    1.4. طريقا ۽ OOP
    1.5. پائپ لائنون
    1.6. ڊيٽا جي جوڙجڪ
  2. پيڪيجز بابت ڪجھ لفظ جيڪي اسان استعمال ڪنداسين
    2.1. صاف سٿرو
    2.2. ڊيٽا. ٽيبل
    2.3. پاندا
  3. پيڪيجز کي انسٽال ڪرڻ
  4. ڊيٽا لوڊ ڪندي
  5. ڊيٽا فريم ٺاهڻ
  6. ڪالمن کي چونڊيو جيڪو توهان جي ضرورت آهي
  7. فلٽرنگ قطار
  8. گروپنگ ۽ ايگريگيشن
  9. جدولن جو عمودي اتحاد (يونين)
  10. افقي جدولن جو شامل ٿيڻ (JOIN)
  11. بنيادي ونڊو افعال ۽ حساب ڪيل ڪالمن
  12. R ۽ Python ۾ ڊيٽا پروسيسنگ طريقن جي وچ ۾ رابطي واري جدول
  13. ٿڪل
  14. هڪ مختصر سروي جنهن جي باري ۾ توهان پيڪيج استعمال ڪندا آهيو

جيڪڏهن توهان ڊيٽا جي تجزيي ۾ دلچسپي رکو ٿا، توهان ڳولي سگهو ٿا منهنجو ٽيليگرام и يوٽيوب چينلز. گهڻو ڪري مواد آر ٻولي لاء وقف آهي.

R ۽ Python جي وچ ۾ مکيه نحوي فرق

توھان لاءِ آسان بڻائڻ لاءِ پٿون کان R ڏانھن سوئچ ڪرڻ، يا ان جي برعڪس، مان ڪجھ مکيه نقطا ڏيندس جن تي توھان کي ڌيان ڏيڻ جي ضرورت آھي.

رسائي پيڪيج افعال

هڪ دفعو هڪ پيڪيج آر ۾ لوڊ ڪيو ويندو آهي، توهان کي ان جي ڪمن تائين رسائي حاصل ڪرڻ لاء پيڪيج جو نالو بيان ڪرڻ جي ضرورت ناهي. اڪثر ڪيسن ۾ اهو آر ۾ عام ناهي، پر اهو قابل قبول آهي. توھان کي ھڪڙو پيڪيج درآمد ڪرڻ جي ضرورت نھ آھي جيڪڏھن توھان کي توھان جي ڪوڊ ۾ ان جي ھڪڙي فنڪشن جي ضرورت آھي، پر صرف ان کي ڪال ڪريو پيڪيج جو نالو ۽ فنڪشن جو نالو بيان ڪندي. R ۾ پيڪيج ۽ فنڪشن نالن جي وچ ۾ الڳ ڪندڙ هڪ ڊبل ڪالون آهي. package_name::function_name().

پٿون ۾، ان جي برعڪس، ان جي نالي کي واضح طور تي بيان ڪندي هڪ پيڪيج جي ڪم کي سڏڻ لاء کلاسک سمجهيو ويندو آهي. جڏهن هڪ پيڪيج ڊائون لوڊ ڪيو ويندو آهي، اهو عام طور تي هڪ مختصر نالو ڏنو ويندو آهي، مثال طور. pandas عام طور تي تخلص استعمال ڪيو ويندو آهي pd. هڪ پيڪيج فنڪشن ڊٽ ذريعي پهچايو ويندو آهي package_name.function_name().

تفويض

آر ۾، اهو عام آهي ته هڪ تير استعمال ڪرڻ لاء هڪ شئي کي قيمت ڏيڻ لاء. obj_name <- value, جيتوڻيڪ هڪ واحد برابر نشاني جي اجازت آهي، R ۾ واحد برابر نشاني بنيادي طور تي استعمال ڪيو ويندو آهي قدرن کي فعل دليلن ڏانهن منتقل ڪرڻ لاء.

پٿون ۾، تفويض خاص طور تي ھڪڙي برابر جي نشاني سان ڪيو ويندو آھي obj_name = value.

انڊيڪسنگ

هتي پڻ ڪافي اهم اختلاف آهن. آر ۾، انڊيڪسنگ ھڪڙي تي شروع ٿئي ٿي ۽ نتيجن جي حد ۾ سڀني مخصوص عناصر شامل آھي،

پٿون ۾، انڊيڪسنگ صفر کان شروع ٿئي ٿي ۽ چونڊيل رينج ۾ انڊيڪس ۾ بيان ڪيل آخري عنصر شامل نه آهي. تنهنڪري ڊزائن x[i:j] Python ۾ j عنصر شامل نه ٿيندو.

ناڪاري انڊيڪسنگ ۾ به اختلاف آهن، آر نوٽيشن ۾ x[-1] ویکٹر جا سڀ عنصر واپس آڻيندو سواءِ آخري جي. پٿون ۾، هڪ ساڳئي نوٽس صرف آخري عنصر واپس آڻيندو.

طريقا ۽ OOP

آر او او پي کي پنهنجي طريقي سان لاڳو ڪري ٿو، مون هن مضمون ۾ لکيو "آر ٻولي ۾ OOP (حصو 1): S3 ڪلاس". عام طور تي، آر هڪ فنڪشنل ٻولي آهي، ۽ ان ۾ هر شيء ڪمن تي ٺهيل آهي. تنهن ڪري، مثال طور، ايڪسل استعمال ڪندڙن لاء، ڏانهن وڃو tydiverse ان کان وڌيڪ آسان ٿيندو pandas. جيتوڻيڪ اهو منهنجو موضوعي خيال ٿي سگهي ٿو.

مختصر ۾، آر ۾ شيون نه آهن طريقا (جيڪڏهن اسان S3 طبقن جي باري ۾ ڳالهايون ٿا، پر ٻيون او او پي لاڳو ڪندڙ آهن جيڪي تمام گهٽ عام آهن). هتي صرف عام ڪم آهن جيڪي انهن کي مختلف طريقي سان عمل ڪن ٿا اعتراض جي طبقي جي لحاظ سان.

پائپ لائنون

شايد هن جو نالو آهي pandas اهو بلڪل صحيح نه هوندو، پر مان ڪوشش ڪندس ته مطلب بيان ڪرڻ جي.

وچولي حساب کي بچائڻ ۽ ڪم ڪندڙ ماحول ۾ غير ضروري شيون پيدا ڪرڻ لاء نه، توهان پائپ لائن جو هڪ قسم استعمال ڪري سگهو ٿا. اهي. ھڪڙي حساب جي نتيجي کي ھڪڙي فنڪشن کان ٻئي ڏانھن منتقل ڪريو، ۽ وچولي نتيجن کي محفوظ نه ڪريو.

اچو ته هيٺ ڏنل ڪوڊ جو مثال وٺون، جتي اسان وچولي حسابن کي الڳ شين ۾ ذخيرو ڪندا آهيون.

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

اسان 3 عملن کي ترتيب سان انجام ڏنو، ۽ هر هڪ جو نتيجو هڪ الڳ اعتراض ۾ محفوظ ڪيو ويو. پر حقيقت ۾، اسان کي انهن وچولي شين جي ضرورت ناهي.

يا اڃا به بدتر، پر ايڪسل استعمال ڪندڙن کان وڌيڪ واقف.

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

انهي صورت ۾، اسان وچولي حساب جي نتيجن کي محفوظ نه ڪيو، پر nested افعال سان ڪوڊ پڙهڻ انتهائي ناگزير آهي.

اسان R ۾ ڊيٽا پروسيسنگ جي ڪيترن ئي طريقن تي نظر ڪنداسين، ۽ اهي ساڳيا عمل مختلف طريقن سان انجام ڏين ٿا.

لائبريري ۾ پائپ لائنون tidyverse آپريٽر پاران لاڳو ڪيل %>%.

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

اهڙيءَ طرح اسان ڪم جو نتيجو ڪڍون ٿا func1() ۽ ان کي پهرين دليل طور منظور ڪريو func2()، پوءِ اسان هن حساب جي نتيجي کي پهرين دليل طور پاس ڪريون ٿا func3(). ۽ آخر ۾، اسان سڀ ڳڻپيوڪر لکون ٿا جيڪي اعتراض ۾ ڪيا ويا آهن obj <-.

مٿين سڀني لفظن کي هن يادگيري جي لفظن کان بهتر بيان ڪيو ويو آهي:
ڊيٽا سان ڪم ڪرڻ لاءِ ڪهڙي ٻولي چونڊيو وڃي - R يا Python؟ ٻئي! pandas کان 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(). نتيجو هڪ اعتراض ۾ محفوظ ڪيو ويو آهي اوج .

ڊيٽا جي جوڙجڪ

R ۽ Python ۾ ڊيٽا جي جوڙجڪ هڪجهڙا آهن، پر مختلف نالا آهن.

بيان
نالو ۾ آر
Python/pandas ۾ نالو

ٽيبل جي جوڙجڪ
data.frame, data.table, tibble
ڊيٽا فريم

قدرن جي ھڪڙي طرفي فهرست
ویکٹر
پنڊن ۾ سيريز يا خالص پٿون ۾ فهرست

گھڻ-سطح غير جدول جوڙجڪ
فهرست
لغت (ڊڪشنري)

اسان هيٺ نحو ۾ ڪجهه ٻين خاصيتن ۽ اختلافن تي نظر ڪنداسين.

پيڪيجز بابت ڪجھ لفظ جيڪي اسان استعمال ڪنداسين

پهرين، مان توهان کي انهن پيڪيجز بابت ٿورڙو ٻڌائيندس جيڪي توهان هن آرٽيڪل دوران واقف ٿي ويندا.

صاف سٿرو

سرڪاري ويب سائيٽ: tidyverse.org
ڊيٽا سان ڪم ڪرڻ لاءِ ڪهڙي ٻولي چونڊيو وڃي - R يا Python؟ ٻئي! pandas کان tidyverse ۽ ​​data.table ۽ واپس ڏانهن لڏپلاڻ
لائبريري tidyverse هيڊلي وکهم پاران لکيل آهي، آر اسٽوڊيو ۾ سينئر ريسرچ سائنسدان. tidyverse پيڪيجز جي هڪ شاندار سيٽ تي مشتمل آهي جيڪا ڊيٽا پروسيسنگ کي آسان بڻائي ٿي، جن مان 5 CRAN مخزن مان مٿين 10 ڊائون لوڊ ۾ شامل آهن.

لائبريري جو بنيادي حصو هيٺين پيڪيجز تي مشتمل آهي: ggplot2, dplyr, tidyr, readr, purrr, tibble, stringr, forcats. انهن پيڪيجز مان هر هڪ جو مقصد هڪ مخصوص مسئلو حل ڪرڻ آهي. مثال طور dplyr ڊيٽا جي ڦيرڦار لاء ٺهيل، tidyr ڊيٽا کي صاف شڪل ۾ آڻڻ لاء، stringr تارن سان ڪم ڪرڻ کي آسان بڻائي ٿو، ۽ ggplot2 سڀ کان وڌيڪ مشهور ڊيٽا بصري اوزار مان هڪ آهي.

فائدو tidyverse سادگي ۽ پڙهڻ ۾ آسان نحو آهي، جيڪو ڪيترن ئي طريقن سان SQL سوال جي ٻولي وانگر آهي.

ڊيٽا. ٽيبل

ڊيٽا سان ڪم ڪرڻ لاءِ ڪهڙي ٻولي چونڊيو وڃي - R يا Python؟ ٻئي! pandas کان tidyverse ۽ ​​data.table ۽ واپس ڏانهن لڏپلاڻسرڪاري ويب سائيٽ: r-datatable.com

ليکڪ data.table H2O.ai جو Matt Dole آهي.

لائبريريءَ جو پهريون رليز 2006ع ۾ ٿيو.

پيڪيج نحو ايترو آسان ناهي جيترو اندر tidyverse ۽ آر ۾ کلاسک ڊيٽا فريم جي وڌيڪ ياد ڏياريندو آهي، پر ساڳئي وقت ڪارڪردگي ۾ خاص طور تي وڌايو ويو آهي.

ھن پيڪيج ۾ ٽيبل سان گڏ سڀ ٺاھڻ چورس بریکٹ ۾ بيان ڪيا ويا آھن، ۽ جيڪڏھن توھان نحو جو ترجمو ڪريو data.table SQL ۾، توھان ڪجھھ ھن طرح حاصل ڪيو: data.table[ WHERE, SELECT, GROUP BY ]

هن پيڪيج جي طاقت وڏي مقدار جي ڊيٽا کي پروسيس ڪرڻ جي رفتار آهي.

پاندا

سرڪاري ويب سائيٽ: pandas.pydata.org ڊيٽا سان ڪم ڪرڻ لاءِ ڪهڙي ٻولي چونڊيو وڃي - R يا Python؟ ٻئي! pandas کان tidyverse ۽ ​​data.table ۽ واپس ڏانهن لڏپلاڻ

لائبريري جو نالو اقتصاديات جي اصطلاح ”پينل ڊيٽا“ مان آيو آهي، جنهن کي بيان ڪرڻ لاءِ استعمال ڪيو ويندو آهي معلومات جي گهڻ طرفي ترتيب ڏنل سيٽ.

ليکڪ pandas آمريڪي Wes McKinney آهي.

جڏهن اهو پٿون ۾ ڊيٽا جي تجزيي تي اچي ٿو، برابر pandas نه. هڪ تمام گهڻائي، اعلي سطحي پيڪيج جيڪو توهان کي اجازت ڏئي ٿو ڊيٽا سان ڪنهن به ڦيرڦار کي انجام ڏيڻ، ڪنهن به ذريعن کان ڊيٽا لوڊ ڪرڻ کان وٺي ان کي ڏسڻ تائين.

اضافي پيڪيجز کي انسٽال ڪرڻ

هن آرٽيڪل ۾ بحث ڪيل پيڪيجز بنيادي R ۽ Python جي تقسيم ۾ شامل نه آهن. جيتوڻيڪ اتي ھڪڙو ننڍڙو انتباہ آھي، جيڪڏھن توھان انسٽال ڪيو آھي Anaconda تقسيم، پوء اضافي طور تي انسٽال ڪريو pandas گهربل نه آهي.

آر ۾ پيڪيجز کي نصب ڪرڻ

جيڪڏهن توهان RStudio ڊولپمينٽ ماحول کي گهٽ ۾ گهٽ هڪ ڀيرو کوليو آهي، توهان شايد اڳ ۾ ئي ڄاڻو ٿا ته آر ۾ گهربل پيڪيج ڪيئن انسٽال ڪجي. پيڪيجز کي انسٽال ڪرڻ لاءِ، معياري ڪمانڊ استعمال ڪريو. install.packages() ان کي سڌو سنئون آر ۾ هلائڻ سان.

# установка пакетов
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؟ ٻئي! pandas کان tidyverse ۽ ​​data.table ۽ واپس ڏانهن لڏپلاڻ

سڄي مضمون ۾ اسين ڪيترائي ڊيٽا سيٽ استعمال ڪنداسين:

  1. Google Analytics مان ٻه ڊائون لوڊ.
  2. ٽائيٽينڪ مسافرن جي ڊيٽا سيٽ.

سڀ ڊيٽا منهنجي تي آهي GitHub csv ۽ tsv فائلن جي صورت ۾. اسان انهن کي ڪٿان کان درخواست ڪنداسين؟

ڊيٽا کي آر ۾ لوڊ ڪندي: tidyverse، vroom، readr

لائبريري ۾ ڊيٽا لوڊ ڪرڻ لاء tidyverse اتي ٻه پيڪيجز آهن: vroom, readr. vroom وڌيڪ جديد، پر مستقبل ۾ پيڪيجز کي گڏ ڪري سگهجي ٿو.

کان اقتباس سرڪاري دستاويز vroom.

ويروم بمقابله پڙهندڙ
جي ڇڏڻ ڇا ڪندو آھي vroom لاء مطلب readr؟ هينئر لاءِ اسان پلان ڪريون ٿا ته ٻن پيڪيجز کي الڳ الڳ ترقي ڏيان ، پر امڪان آهي ته اسان مستقبل ۾ پيڪيجز کي متحد ڪنداسين. ويروم جي سست پڙهڻ جو هڪ نقصان اهو آهي ته ڪجهه ڊيٽا جا مسئلا سامهون نه ٿا اچن، تنهنڪري انهن کي ڪيئن متحد ڪرڻ لاءِ ڪجهه سوچڻ جي ضرورت آهي.

ويروم بمقابله پڙهندڙ
مطلب ڇا آھي ڇڏڻ ڇا آھي؟ vroom لاء readr؟ هن وقت اسان ٻنهي پيڪيجز کي الڳ الڳ ترقي ڪرڻ جو منصوبو ٺاهيو، پر اسان شايد مستقبل ۾ انهن کي گڏ ڪنداسين. سست پڙهڻ جي نقصانن مان هڪ vroom اهو آهي ته ڊيٽا سان گڏ ڪجهه مسئلا اڳ ۾ رپورٽ نه ٿي سگهيا آهن، تنهنڪري توهان کي سوچڻ جي ضرورت آهي ته انهن کي ڪيئن گڏ ڪجي.

هن آرٽيڪل ۾ اسان ٻنهي ڊيٽا لوڊ ڪرڻ واري پيڪيجز تي نظر ڪنداسين:

ڊيٽا کي آر ۾ لوڊ ڪندي: 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")

ڊيٽا کي آر ۾ لوڊ ڪندي: 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")

پيڪيج ۾ vroom, قطع نظر csv / tsv ڊيٽا فارميٽ، لوڊنگ ٿي رهي آهي ساڳئي نالي جي فنڪشن ذريعي vroom()، پيڪيج ۾ readr اسان هر فارميٽ لاءِ مختلف فنڪشن استعمال ڪندا آهيون read_tsv() и read_csv().

ڊيٽا کي آر ۾ لوڊ ڪندي: data.table

В data.table ڊيٽا لوڊ ڪرڻ لاء هڪ فنڪشن آهي fread().

ڊيٽا کي آر ۾ لوڊ ڪندي: 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 قطارون هونديون.

آر ۾ ڊيٽا فريم ٺاهڻ: 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؟ ٻئي! pandas کان tidyverse ۽ ​​data.table ۽ واپس ڏانهن لڏپلاڻ

تنهن ڪري، پهرين عملن مان هڪ آهي جيڪو توهان ماخذ ٽيبل سان انجام ڏيندا اهو آهي ان کي غير ضروري معلومات کان صاف ڪرڻ ۽ يادگيري کي آزاد ڪرڻ جيڪا هن معلومات تي قبضو ڪري ٿي.

آر ۾ ڪالمن جي چونڊ: tidyverse، dplyr

نحو dplyr SQL سوالن جي ٻولي سان تمام گهڻي مشابهت رکي ٿي، جيڪڏهن توهان ان سان واقف آهيو ته توهان جلدي هن پيڪيج ۾ مهارت حاصل ڪندا.

ڪالمن کي چونڊڻ لاء، فنڪشن استعمال ڪريو select().

هيٺ ڏنل ڪوڊ جا مثال آهن جن سان توهان هيٺ ڏنل طريقن سان ڪالم چونڊي سگهو ٿا:

  • گهربل ڪالمن جا نالا لسٽ ڪريو
  • ريگولر ايڪسپريس استعمال ڪندي ڪالمن جا نالا ڏسو
  • ڊيٽا جي قسم يا ڪالمن ۾ موجود ڊيٽا جي ڪنهن ٻئي ملڪيت جي ذريعي

آر ۾ ڪالمن کي چونڊيو: 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()، ۽ دليلن ۾ شامل آهن يا شامل ڪريو ڊيٽا جي قسمن جي هڪ فهرست پاس ڪريو جنهن سان لاڳاپيل فيلڊ توهان کي چونڊڻ جي ضرورت آهي.

پٿون ۾ ڪالمن چونڊڻ: پانڊا

# Выбор полей по названию
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'])

فلٽرنگ قطار

مثال طور، ماخذ جدول ۾ ڪيترن سالن جي ڊيٽا شامل ٿي سگھي ٿي، پر توھان کي صرف گذريل مھيني جو تجزيو ڪرڻو پوندو. ٻيهر، اضافي لائينون ڊيٽا پروسيسنگ جي عمل کي سست ڪري ڇڏيندو ۽ پي سي ميموري کي بند ڪري ڇڏيندو.

ڊيٽا سان ڪم ڪرڻ لاءِ ڪهڙي ٻولي چونڊيو وڃي - R يا Python؟ ٻئي! pandas کان tidyverse ۽ ​​data.table ۽ واپس ڏانهن لڏپلاڻ

آر ۾ قطار کي فلٽر ڪرڻ: tydyverse، dplyr

В dplyr فنڪشن قطار کي فلٽر ڪرڻ لاء استعمال ڪيو ويندو آهي filter(). اهو پهريون دليل طور هڪ ڊيٽا فريم وٺندو آهي، پوء توهان فلٽرنگ شرطن کي لسٽ ڪريو.

جڏهن ٽيبل کي فلٽر ڪرڻ لاءِ منطقي اظهار لکو، ان صورت ۾، ڪالمن جا نالا بيان ڪريو بغير اقتباس جي ۽ ٽيبل جي نالي جو اعلان ڪرڻ کان سواءِ.

جڏهن فلٽر ڪرڻ لاء ڪيترن ئي منطقي اظهار کي استعمال ڪندي، هيٺيان آپريٽرز استعمال ڪريو:

  • ۽ يا ڪاما - منطقي AND
  • | - منطقي يا

آر ۾ قطار کي فلٽر ڪرڻ: dplyr

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

آر ۾ قطار کي فلٽر ڪرڻ: data.table

جيئن ته مون مٿي لکيو آهي، ۾ data.table ڊيٽا جي تبادلي جي نحو چورس بریکٹ ۾ بند ٿيل آهي.

DT[i,j,by]

ڪٿي
i - ڪٿي، i.e. قطار ذريعي فلٽر ڪرڻ
j - چونڊيو|اپڊيٽ|ڪرو، يعني. ڪالمن کي چونڊڻ ۽ انهن کي تبديل ڪرڻ
پاران - ڊيٽا گروپنگ

دليل قطار کي فلٽر ڪرڻ لاء استعمال ڪيو ويندو آهي i، جنهن کي چورس بریکٹس ۾ پهرين پوزيشن حاصل آهي.

ڪالمن کي اقتباس جي نشانين ۽ ٽيبل جي نالي جي وضاحت ڪرڻ کان سواء منطقي اظهار ۾ رسائي حاصل ڪئي وئي آهي.

منطقي اظهار هڪ ٻئي سان ساڳيء طرح لاڳاپيل آهن جيئن ۾ dplyr ذريعي & ۽ | آپريٽرز.

آر ۾ قطار کي فلٽر ڪرڻ: data.table

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

Python ۾ تارن کي فلٽر ڪرڻ: پانڊاس

قطار ۾ فلٽر ڪريو pandas ۾ فلٽر ڪرڻ وانگر data.table، ۽ چورس بریکٹ ۾ ڪيو ويندو آهي.

انهي صورت ۾، ڪالمن تائين رسائي لازمي طور تي ڊيٽا فريم جي نالي کي اشارو ڪندي ڪيو ويندو آهي؛ پوء ڪالمن جو نالو پڻ چورس بریکٹ ۾ اقتباس جي نشانين ۾ اشارو ڪري سگهجي ٿو (مثال df['col_name'])، يا بغير حوالن جي مدت کان پوء (مثال df.col_name).

جيڪڏھن توھان کي ضرورت آھي ھڪڙي ڊيٽا فريم کي ڪيترن ئي شرطن سان فلٽر ڪريو، ھر شرط کي قوس ۾ رکڻ گھرجي. منطقي حالتون آپريٽرز طرفان هڪ ٻئي سان ڳنڍيل آهن & и |.

Python ۾ تارن کي فلٽر ڪرڻ: پانڊاس

# Фильтрация строк таблицы
### фильтрация строк по одному условию
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؟ ٻئي! pandas کان tidyverse ۽ ​​data.table ۽ واپس ڏانهن لڏپلاڻ

انهن عملن کي انجام ڏيڻ لاءِ نحو پکڙيل آهي سڀني پيڪيجز ۾ جيڪي اسان جائزو وٺندا آهيون.

انهي صورت ۾، اسان هڪ مثال طور هڪ ڊيٽا فريم وٺنداسين تنيڪ, ۽ ڪيبن ڪلاس جي لحاظ کان ٽڪيٽن جو تعداد ۽ سراسري قيمت حساب ڪريو.

آر ۾ ڊيٽا جو گروپ ۽ مجموعو: 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 وڌيڪ شعبا شامل ڪيا ويا: مسافر и avg_قيمت. پهرين ۾، فنڪشن استعمال ڪندي 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]

پٿون ۾ ڊيٽا جو گروپ ۽ مجموعو: پانڊاس

گروپ ۾ شامل ٿيڻ pandas جهڙو dplyr، پر مجموعو ساڳيو نه آهي dplyr بالڪل نه data.table.

گروپ ڪرڻ لاء، طريقو استعمال ڪريو groupby()، جنهن ۾ توهان کي ڪالمن جي هڪ فهرست پاس ڪرڻ جي ضرورت آهي جنهن جي ذريعي ڊيٽا فريم کي گروپ ڪيو ويندو.

گڏ ڪرڻ لاء، توهان جو طريقو استعمال ڪري سگهو ٿا agg()جيڪو لغت قبول ڪري ٿو. ڊڪشنري ڪيز اهي ڪالم آهن جن تي توهان ايگريگريشن فنڪشن لاڳو ڪندا، ۽ ويلز ايگريگيشن افعال جا نالا آهن.

گڏ ڪرڻ جا ڪم:

  • sum() - مجموعو
  • min() / max() - گھٽ ۾ گھٽ ۽ وڌ ۾ وڌ قدر
  • mean() - سراسري
  • median() - وچين
  • count() - مقدار

فعل reset_index() هيٺ ڏنل مثال ۾ اهو استعمال ڪيو ويندو آهي nested indexes کي ري سيٽ ڪرڻ لاءِ pandas ڊيٽا گڏ ڪرڻ کان پوءِ ڊفالٽ.

سمبل توهان کي ايندڙ لائن ڏانهن وڃڻ جي اجازت ڏئي ٿي.

پٿون ۾ گروپنگ ۽ مجموعي: پانڊاس

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

جدولن جو عمودي جوڙ

هڪ آپريشن جنهن ۾ توهان هڪ ئي ڍانچي جي ٻن يا وڌيڪ جدولن ۾ شامل ٿيو. ڊيٽا جيڪو اسان لوڊ ڪيو ان ۾ ٽيبل شامل آهن ga_nov и ga_dec. اهي جدولن جي جوڙجڪ ۾ هڪجهڙا آهن، يعني. ساڳيا ڪالم آهن، ۽ انهن ڪالمن ۾ ڊيٽا جا قسم.

ڊيٽا سان ڪم ڪرڻ لاءِ ڪهڙي ٻولي چونڊيو وڃي - R يا Python؟ ٻئي! pandas کان tidyverse ۽ ​​data.table ۽ واپس ڏانهن لڏپلاڻ

هي نومبر ۽ ڊسمبر جي مهيني لاءِ Google Analytics مان هڪ اپلوڊ آهي، هن حصي ۾ اسين هن ڊيٽا کي هڪ ٽيبل ۾ گڏ ڪنداسين.

عمودي طور تي شامل ٿيندڙ جدولن ۾ R: tidyverse، dplyr

В dplyr توهان فنڪشن استعمال ڪندي 2 ٽيبلن کي هڪ ۾ گڏ ڪري سگهو ٿا bind_rows(), ان جي دليلن جي طور تي ٽيبل پاس ڪرڻ.

آر ۾ قطار کي فلٽر ڪرڻ: dplyr

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

R: data.table ۾ عمودي جدولن ۾ شامل ٿيڻ

اهو پڻ ڪجهه پيچيده ناهي، اچو ته استعمال ڪريو rbind().

آر ۾ قطار کي فلٽر ڪرڻ: data.table

## data.table
rbind(ga_nov, ga_dec)

پٿون ۾ عمودي جدولن ۾ شامل ٿيڻ: پانڊا

В pandas فنڪشن ٽيبل ۾ شامل ٿيڻ لاء استعمال ڪيو ويندو آهي concat()، جنهن ۾ توهان کي انهن کي گڏ ڪرڻ لاءِ فريم جي هڪ فهرست پاس ڪرڻ جي ضرورت آهي.

Python ۾ تارن کي فلٽر ڪرڻ: پانڊاس

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

افقي جدولن جو گڏيل

هڪ آپريشن جنهن ۾ ٻئي کان ڪالمن پهرين ٽيبل ۾ ڪيئي ذريعي شامل ڪيا ويا آهن. اهو عام طور تي استعمال ڪيو ويندو آهي جڏهن حقيقت جي جدول (مثال طور، سيلز ڊيٽا سان گڏ هڪ ٽيبل) ڪجهه حوالن واري ڊيٽا سان (مثال طور، هڪ پيداوار جي قيمت).

ڊيٽا سان ڪم ڪرڻ لاءِ ڪهڙي ٻولي چونڊيو وڃي - R يا Python؟ ٻئي! pandas کان tidyverse ۽ ​​data.table ۽ واپس ڏانهن لڏپلاڻ

شامل ٿيڻ جا ڪيترائي قسم آھن:

ڊيٽا سان ڪم ڪرڻ لاءِ ڪهڙي ٻولي چونڊيو وڃي - R يا Python؟ ٻئي! pandas کان tidyverse ۽ ​​data.table ۽ واپس ڏانهن لڏپلاڻ

اڳ ۾ لوڊ ٿيل ٽيبل ۾ تنيڪ اسان وٽ هڪ ڪالم آهي جنس، جيڪو مسافر جي صنفي ڪوڊ سان ملندو آهي:

1 - عورت
2 - نر

انهي سان گڏ، اسان هڪ ٽيبل ٺاهيو آهي - هڪ حوالو ڪتاب جنس. مسافرن جي صنف تي ڊيٽا جي وڌيڪ آسان پيشڪش لاءِ، اسان کي ڊاريڪٽري مان صنف جو نالو شامل ڪرڻو پوندو. جنس ٽيبل ڏانهن تنيڪ.

افقي ٽيبل آر ۾ شامل ٿيو: 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"))

آر ۾ جدولن جو افقي شامل ٿيڻ: data.table

В data.table توهان کي فنڪشن کي استعمال ڪندي ڪيچ ذريعي جدولن ۾ شامل ٿيڻ جي ضرورت آهي merge().

data.table ۾ ضم ڪرڻ () فنڪشن لاءِ دليل

  • x، y - شامل ٿيڻ لاءِ جدول
  • by - ڪالم جيڪو شامل ٿيڻ جي ڪنجي آهي جيڪڏهن ان جو نالو ٻنهي جدولن ۾ ساڳيو آهي
  • by.x, by.y - ڪالمن جا نالا ضم ڪيا وڃن، جيڪڏھن انھن جا جدولن ۾ مختلف نالا آھن
  • all, all.x, all.y — شامل ٿيڻ جو قسم، سڀ واپس آڻيندا سڀئي قطارون ٻنهي جدولن مان، all.x LEFT JOIN آپريشن سان مطابقت رکي ٿو (پهرين ٽيبل جي سڀني قطارن کي ڇڏي ڏيندو)، all.y — سان ملندڙ جلندڙ آهي رائٽ جوائن آپريشن (ٻئي ٽيبل جي سڀني قطارن کي ڇڏي ڏيندو).

آر ۾ جدولن جو افقي شامل ٿيڻ: data.table

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

افقي ٽيبل پٿون ۾ شامل ٿيو: پانڊا

ان سان گڏوگڏ ۾ data.table۾ pandas فنڪشن ٽيبل ۾ شامل ٿيڻ لاء استعمال ڪيو ويندو آهي merge().

پانڊا ۾ ضم () فنڪشن جا دليل

  • ڪيئن - ڪنيڪشن جو قسم: کاٻي، ساڄي، ٻاهرئين، اندروني
  • on - ڪالم جيڪو هڪ اهم آهي جيڪڏهن اهو ساڳيو نالو آهي ٻنهي جدولن ۾
  • left_on، right_on - اهم ڪالمن جا نالا، جيڪڏھن انھن جا نالا جدولن ۾ مختلف آھن

افقي ٽيبل پٿون ۾ شامل ٿيو: پانڊا

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

بنيادي ونڊو افعال ۽ حساب ڪيل ڪالمن

ونڊو جا افعال ساڳيا آھن معنيٰ ۾ مجموعي ڪمن سان، ۽ پڻ اڪثر ڊيٽا جي تجزيو ۾ استعمال ٿيندا آھن. پر ايگريگيشن افعال جي برعڪس، ونڊو افعال ٻاهر نڪرندڙ ڊيٽا فريم جي قطارن جو تعداد تبديل نه ڪندا آهن.

ڊيٽا سان ڪم ڪرڻ لاءِ ڪهڙي ٻولي چونڊيو وڃي - R يا Python؟ ٻئي! pandas کان tidyverse ۽ ​​data.table ۽ واپس ڏانهن لڏپلاڻ

لازمي طور تي، ونڊو فنڪشن استعمال ڪندي، اسان ايندڙ ڊيٽا فريم کي ڪجهه معيارن جي مطابق حصن ۾ ورهايو، يعني. هڪ فيلڊ جي قيمت، يا ڪيترن ئي شعبن سان. ۽ اسان هر ونڊو تي رياضياتي آپريشن ڪندا آهيون. انهن عملن جو نتيجو هر لڪير ۾ واپس ڪيو ويندو، يعني. جدول ۾ قطارن جي ڪل تعداد کي تبديل ڪرڻ کان سواءِ.

مثال طور، اچو ته ٽيبل وٺو تنيڪ. اسان حساب ڪري سگھون ٿا ته هر ٽڪيٽ جي قيمت ان جي ڪيبن ڪلاس ۾ ڪيترو سيڪڙو هئي.

هن کي ڪرڻ لاءِ، اسان کي هر لڪير ۾ حاصل ڪرڻ جي ضرورت آهي هڪ ٽڪيٽ جي ڪل قيمت موجوده ڪيبن ڪلاس لاءِ جنهن سان هن لائين ۾ ٽڪيٽ تعلق رکي ٿي، پوءِ ورهائي هر ٽڪيٽ جي قيمت کي ساڳئي ڪيبن ڪلاس جي سڀني ٽڪيٽن جي ڪل قيمت سان. .

ونڊو فنڪشن آر ۾: 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]

پٿون ۾ ونڊو ڪم: پانڊا

ھڪڙو طريقو ھڪڙو نئون ڪالم شامل ڪرڻ لاء pandas - فنڪشن استعمال ڪريو assign(). ڪيبن ڪلاس طرفان ٽڪيٽن جي قيمت کي اختصار ڪرڻ لاءِ، قطارن کي گروپ ڪرڻ کان سواءِ، اسان فنڪشن کي استعمال ڪنداسين transform().

هيٺ ڏنل حل جو هڪ مثال آهي جنهن ۾ اسان ٽيبل تي شامل ڪيو تنيڪ ساڳيا 2 ڪالمن.

پٿون ۾ ونڊو ڪم: پانڊا

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

ڪم ۽ طريقا خط و ڪتابت جي جدول

هيٺ ڏنل جدولن جي وچ ۾ مختلف عملن کي انجام ڏيڻ جي طريقن جي وچ ۾ ڊيٽا سان گڏ پيڪيجز ۾ اسان غور ڪيو آهي.

بيان
صاف سٿرو
ڊيٽا. ٽيبل
پاندا

ڊيٽا لوڊ ڪندي
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()

جدولن جو عمودي اتحاد (يونين)
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

تبصرو شامل ڪريو