پرو هوسٽر > بلاگ > انتظاميه > ڊيٽا سان ڪم ڪرڻ لاءِ ڪهڙي ٻولي چونڊيو وڃي - R يا Python؟ ٻئي! pandas کان tidyverse ۽ data.table ۽ واپس ڏانهن لڏپلاڻ
ڊيٽا سان ڪم ڪرڻ لاءِ ڪهڙي ٻولي چونڊيو وڃي - R يا Python؟ ٻئي! pandas کان tidyverse ۽ data.table ۽ واپس ڏانهن لڏپلاڻ
انٽرنيٽ تي R يا Python ڳولهڻ سان، توهان کي لکن جا مضمون ملندا ۽ بحثن جا ڪلوميٽر ان موضوع تي، جن مان هڪ بهتر، تيز ۽ وڌيڪ آسان آهي ڊيٽا سان ڪم ڪرڻ لاءِ. پر بدقسمتيءَ سان اهي سڀئي مقالا ۽ تڪرار خاص مفيد نه آهن.
هن آرٽيڪل جو مقصد ٻنهي ٻولين جي مشهور پيڪيجز ۾ بنيادي ڊيٽا پروسيسنگ ٽيڪنالاجي جو مقابلو ڪرڻ آهي. ۽ پڙهندڙن کي جلدي ڪجهه حاصل ڪرڻ ۾ مدد ڪريو جيڪي اهي اڃا تائين نٿا ڄاڻن. انهن لاءِ جيڪي پٿون ۾ لکن ٿا، معلوم ڪريو ته ساڳيو ڪم آر ۾ ڪيئن ڪجي، ۽ ان جي برعڪس.
آرٽيڪل دوران اسين آر ۾ سڀ کان وڌيڪ مشهور پيڪيجز جي نحو جو تجزيو ڪنداسين. اهي اهي پيڪيجز آهن جيڪي لائبريري ۾ شامل آهن. tidyverse۽ پڻ پيڪيج data.table. ۽ انهن جي نحو جي ڀيٽ ڪريو pandas, Python ۾ سڀ کان وڌيڪ مشهور ڊيٽا تجزيو پيڪيج.
اسان قدم سان قدم کڻنداسين ڊيٽا جي تجزيي جي پوري رستي ذريعي ان کي لوڊ ڪرڻ کان وٺي پٿون ۽ آر استعمال ڪندي تجزياتي ونڊو افعال انجام ڏيڻ تائين.
Contents
هي آرٽيڪل هڪ چيٽ شيٽ جي طور تي استعمال ڪري سگهجي ٿو جيڪڏهن توهان وساري ڇڏيو آهي ته ڪيئن ڪجهه ڊيٽا پروسيسنگ آپريشن کي انجام ڏيو انهن مان هڪ پيڪيجز ۾ غور هيٺ.
جيڪڏهن توهان ڊيٽا جي تجزيي ۾ دلچسپي رکو ٿا، توهان ڳولي سگهو ٿا منهنجو ٽيليگرام и يوٽيوب چينلز. گهڻو ڪري مواد آر ٻولي لاء وقف آهي.
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 اهو بلڪل صحيح نه هوندو، پر مان ڪوشش ڪندس ته مطلب بيان ڪرڻ جي.
وچولي حساب کي بچائڻ ۽ ڪم ڪندڙ ماحول ۾ غير ضروري شيون پيدا ڪرڻ لاء نه، توهان پائپ لائن جو هڪ قسم استعمال ڪري سگهو ٿا. اهي. ھڪڙي حساب جي نتيجي کي ھڪڙي فنڪشن کان ٻئي ڏانھن منتقل ڪريو، ۽ وچولي نتيجن کي محفوظ نه ڪريو.
اچو ته هيٺ ڏنل ڪوڊ جو مثال وٺون، جتي اسان وچولي حسابن کي الڳ شين ۾ ذخيرو ڪندا آهيون.
اهڙيءَ طرح اسان ڪم جو نتيجو ڪڍون ٿا func1() ۽ ان کي پهرين دليل طور منظور ڪريو func2()، پوءِ اسان هن حساب جي نتيجي کي پهرين دليل طور پاس ڪريون ٿا func3(). ۽ آخر ۾، اسان سڀ ڳڻپيوڪر لکون ٿا جيڪي اعتراض ۾ ڪيا ويا آهن obj <-.
مٿين سڀني لفظن کي هن يادگيري جي لفظن کان بهتر بيان ڪيو ويو آهي:
В 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، جيڪڏهن گهربل هجي، توهان کي ڪنهن به ذريعن کان ڊيٽا حاصل ڪرڻ جا وسيع موقعا فراهم ڪن ٿا: مقامي فائلون، انٽرنيٽ تان فائلون، ويب سائيٽون، هر قسم جا ڊيٽابيس.
سڄي مضمون ۾ اسين ڪيترائي ڊيٽا سيٽ استعمال ڪنداسين:
Google Analytics مان ٻه ڊائون لوڊ.
ٽائيٽينڪ مسافرن جي ڊيٽا سيٽ.
سڀ ڊيٽا منهنجي تي آهي GitHub csv ۽ tsv فائلن جي صورت ۾. اسان انهن کي ڪٿان کان درخواست ڪنداسين؟
پيڪيج ۾ vroom, قطع نظر csv / tsv ڊيٽا فارميٽ، لوڊنگ ٿي رهي آهي ساڳئي نالي جي فنڪشن ذريعي vroom()، پيڪيج ۾ readr اسان هر فارميٽ لاءِ مختلف فنڪشن استعمال ڪندا آهيون read_tsv() и read_csv().
ڊيٽا کي آر ۾ لوڊ ڪندي: data.table
В data.table ڊيٽا لوڊ ڪرڻ لاء هڪ فنڪشن آهي fread().
جيڪڏهن اسان R پيڪيجز سان مقابلو ڪندا آهيون، پوء هن صورت ۾ نحو تمام ويجھو آهي pandas ٿيندو readr، ڇاڪاڻ ته pandas ڪٿي به ڊيٽا جي درخواست ڪري سگهي ٿو، ۽ هن پيڪيج ۾ افعال جو پورو خاندان آهي read_*().
read_csv()
read_excel()
read_sql()
read_json()
read_html()
۽ ٻيا ڪيترائي فنڪشن مختلف فارميٽ مان ڊيٽا پڙهڻ لاءِ ٺهيل آهن. پر اسان جي مقصدن لاء اهو ڪافي آهي read_table() يا read_csv() استدلال استعمال ڪندي ڏاهري ڪالمن جدا ڪندڙ کي بيان ڪرڻ لاء.
В pandas فريم ٺاهڻ جو عمل ڪيترن ئي مرحلن ۾ ڪيو ويندو آهي، پهرين اسان هڪ ڊڪشنري ٺاهيندا آهيون، ۽ پوء اسين ڊڪشنري کي ڊيٽا فريم ۾ تبديل ڪندا آهيون.
پٿون ۾ ڊيٽا فريم ٺاهڻ: پانڊاس
# создаём дата фрейм
gender_dict = {'id': [1, 2],
'gender': ["female", "male"]}
# преобразуем словарь в датафрейм
gender = pd.DataFrame.from_dict(gender_dict)
ڪالمن جي چونڊ
جن جدولن سان توھان ڪم ڪندا آھيو ٿي سگھي ٿو درجنين يا سوين ڪالمن جي ڊيٽا. پر تجزيي کي انجام ڏيڻ لاء، ضابطي جي طور تي، توهان کي سڀني ڪالمن جي ضرورت ناهي جيڪي ماخذ جدول ۾ موجود آهن.
تنهن ڪري، پهرين عملن مان هڪ آهي جيڪو توهان ماخذ ٽيبل سان انجام ڏيندا اهو آهي ان کي غير ضروري معلومات کان صاف ڪرڻ ۽ يادگيري کي آزاد ڪرڻ جيڪا هن معلومات تي قبضو ڪري ٿي.
آر ۾ ڪالمن جي چونڊ: 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 - چونڊيو|اپڊيٽ|ڪرو، يعني. ڪالمن کي چونڊڻ ۽ انهن کي تبديل ڪرڻ
پاران - ڊيٽا گروپنگ
متغير .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'])
فلٽرنگ قطار
مثال طور، ماخذ جدول ۾ ڪيترن سالن جي ڊيٽا شامل ٿي سگھي ٿي، پر توھان کي صرف گذريل مھيني جو تجزيو ڪرڻو پوندو. ٻيهر، اضافي لائينون ڊيٽا پروسيسنگ جي عمل کي سست ڪري ڇڏيندو ۽ پي سي ميموري کي بند ڪري ڇڏيندو.
آر ۾ قطار کي فلٽر ڪرڻ: 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]
انهي صورت ۾، ڪالمن تائين رسائي لازمي طور تي ڊيٽا فريم جي نالي کي اشارو ڪندي ڪيو ويندو آهي؛ پوء ڪالمن جو نالو پڻ چورس بریکٹ ۾ اقتباس جي نشانين ۾ اشارو ڪري سگهجي ٿو (مثال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)]
گروپنگ ۽ ڊيٽا گڏ ڪرڻ
ڊيٽا جي تجزيي ۾ سڀ کان وڌيڪ عام طور تي استعمال ٿيل عملن مان هڪ گروپنگ ۽ مجموعي آهي.
انهن عملن کي انجام ڏيڻ لاءِ نحو پکڙيل آهي سڀني پيڪيجز ۾ جيڪي اسان جائزو وٺندا آهيون.
انهي صورت ۾، اسان هڪ مثال طور هڪ ڊيٽا فريم وٺنداسين تنيڪ, ۽ ڪيبن ڪلاس جي لحاظ کان ٽڪيٽن جو تعداد ۽ سراسري قيمت حساب ڪريو.
آر ۾ ڊيٽا جو گروپ ۽ مجموعو: tidyverse، dplyr
В dplyr فنڪشن گروپنگ لاء استعمال ڪيو ويندو آهي group_by()، ۽ گڏ ڪرڻ لاءِ summarise(). حقيقت ۾، dplyr اتي فنڪشن جو هڪ سڄو خاندان آهي summarise_*()، پر هن مضمون جو مقصد بنيادي نحو جو مقابلو ڪرڻ آهي، تنهنڪري اسان اهڙي جهنگ ۾ نه وينداسين.
ڪم ڪرڻ 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. اهي جدولن جي جوڙجڪ ۾ هڪجهڙا آهن، يعني. ساڳيا ڪالم آهن، ۽ انهن ڪالمن ۾ ڊيٽا جا قسم.
هي نومبر ۽ ڊسمبر جي مهيني لاءِ 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])
افقي جدولن جو گڏيل
هڪ آپريشن جنهن ۾ ٻئي کان ڪالمن پهرين ٽيبل ۾ ڪيئي ذريعي شامل ڪيا ويا آهن. اهو عام طور تي استعمال ڪيو ويندو آهي جڏهن حقيقت جي جدول (مثال طور، سيلز ڊيٽا سان گڏ هڪ ٽيبل) ڪجهه حوالن واري ڊيٽا سان (مثال طور، هڪ پيداوار جي قيمت).
انهي سان گڏ، اسان هڪ ٽيبل ٺاهيو آهي - هڪ حوالو ڪتاب جنس. مسافرن جي صنف تي ڊيٽا جي وڌيڪ آسان پيشڪش لاءِ، اسان کي ڊاريڪٽري مان صنف جو نالو شامل ڪرڻو پوندو. جنس ٽيبل ڏانهن تنيڪ.
افقي ٽيبل آر ۾ شامل ٿيو: 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 — سان ملندڙ جلندڙ آهي رائٽ جوائن آپريشن (ٻئي ٽيبل جي سڀني قطارن کي ڇڏي ڏيندو).
left_on، right_on - اهم ڪالمن جا نالا، جيڪڏھن انھن جا نالا جدولن ۾ مختلف آھن
افقي ٽيبل پٿون ۾ شامل ٿيو: پانڊا
# объединяем по ключу
titanic.merge(gender, how = "left", left_on = "Sex", right_on = "id")
بنيادي ونڊو افعال ۽ حساب ڪيل ڪالمن
ونڊو جا افعال ساڳيا آھن معنيٰ ۾ مجموعي ڪمن سان، ۽ پڻ اڪثر ڊيٽا جي تجزيو ۾ استعمال ٿيندا آھن. پر ايگريگيشن افعال جي برعڪس، ونڊو افعال ٻاهر نڪرندڙ ڊيٽا فريم جي قطارن جو تعداد تبديل نه ڪندا آهن.
لازمي طور تي، ونڊو فنڪشن استعمال ڪندي، اسان ايندڙ ڊيٽا فريم کي ڪجهه معيارن جي مطابق حصن ۾ ورهايو، يعني. هڪ فيلڊ جي قيمت، يا ڪيترن ئي شعبن سان. ۽ اسان هر ونڊو تي رياضياتي آپريشن ڪندا آهيون. انهن عملن جو نتيجو هر لڪير ۾ واپس ڪيو ويندو، يعني. جدول ۾ قطارن جي ڪل تعداد کي تبديل ڪرڻ کان سواءِ.
مثال طور، اچو ته ٽيبل وٺو تنيڪ. اسان حساب ڪري سگھون ٿا ته هر ٽڪيٽ جي قيمت ان جي ڪيبن ڪلاس ۾ ڪيترو سيڪڙو هئي.
هن کي ڪرڻ لاءِ، اسان کي هر لڪير ۾ حاصل ڪرڻ جي ضرورت آهي هڪ ٽڪيٽ جي ڪل قيمت موجوده ڪيبن ڪلاس لاءِ جنهن سان هن لائين ۾ ٽڪيٽ تعلق رکي ٿي، پوءِ ورهائي هر ٽڪيٽ جي قيمت کي ساڳئي ڪيبن ڪلاس جي سڀني ٽڪيٽن جي ڪل قيمت سان. .
ونڊو فنڪشن آر ۾: tidyverse، dplyr
نون ڪالمن کي شامل ڪرڻ لاءِ، قطار جي گروهه استعمال ڪرڻ کان سواءِ، ۾ dplyr ڪم ڪندو آهي mutate().
توھان مٿي بيان ڪيل مسئلي کي حل ڪري سگھوٿا ڊيٽا کي فيلڊ ذريعي گروپ ڪندي پي ڪلاس ۽ فيلڊ کي نئين ڪالمن ۾ سمنگ ڀاڻ. اڳيون، ٽيبل کي غير گروپ ڪريو ۽ فيلڊ جي قيمتن کي ورهايو ڀاڻ اڳئين قدم ۾ ڇا ٿيو.
حل الگورتھم ساڳيو ئي رهي ٿو جيئن ۾ 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 ڪالمن.
جدولن جو عمودي اتحاد (يونين) bind_rows() rbind() concat()
افقي جدولن جو شامل ٿيڻ (JOIN) left_join() / *_join() merge() merge()
بنيادي ونڊو افعال ۽ حساب ڪيل ڪالمن کي شامل ڪرڻ group_by() + mutate()
دليل j آپريٽر استعمال ڪندي := + دليل by transform() + assign()
ٿڪل
شايد مضمون ۾ مون بيان ڪيو آهي ته ڊيٽا پروسيسنگ جي سڀ کان وڌيڪ بهتر عملن تي عمل نه ڪيو وڃي، تنهنڪري مون کي خوشي ٿي ويندي جيڪڏهن توهان تبصرن ۾ منهنجي غلطي کي درست ڪريو، يا صرف آرٽيڪل ۾ ڏنل معلومات کي پورو ڪريو R / Python ۾ ڊيٽا سان ڪم ڪرڻ لاء ٻين ٽيڪنالاجي سان.
جيئن مٿي لکيو اٿم ته مضمون جو مقصد اهو نه هو ته ڪنهن جي راءِ کي لاڳو ڪيو وڃي ته ڪهڙي ٻولي بهتر آهي، پر ٻنهي ٻولين کي سکڻ، يا جيڪڏهن ضروري هجي ته انهن جي وچ ۾ لڏپلاڻ جو موقعو آسان ڪرڻ هو.
جيڪڏهن توهان مضمون پسند ڪيو، مون کي خوشي ٿي ويندي ته منهنجي لاء نوان رڪن آهن يوٽيوب и ٽيليگرام چينلز.