د ډیټا سره کار کولو لپاره کومه ژبه غوره کړئ - R یا Python؟ دواړه! له پانډا څخه tidyverse او data.table او شاته مهاجرت

په انټرنیټ کې د R یا Python په لټون کولو سره ، تاسو به په ملیونونو مقالې او کیلومتره بحثونه ومومئ چې پدې موضوع کې کوم یو غوره ، ګړندی او د ډیټا سره کار کولو لپاره خورا اسانه دی. خو له بده مرغه دا ټولې مادې او لانجې په ځانګړې توګه ګټورې نه دي.

د ډیټا سره کار کولو لپاره کومه ژبه غوره کړئ - R یا Python؟ دواړه! له پانډا څخه tidyverse او data.table او شاته مهاجرت

د دې مقالې هدف د دواړو ژبو خورا مشهور کڅوړو کې د لومړني معلوماتو پروسس کولو تخنیکونو پرتله کول دي. او له لوستونکو سره مرسته وکړئ په چټکۍ سره هغه څه ماسټر کړئ چې دوی لاهم نه پوهیږي. د هغو کسانو لپاره چې په پیتون کې لیکي، ومومئ چې څنګه ورته کار په R کې ترسره کړئ، او برعکس.

د مقالې په جریان کې به موږ په R کې د خورا مشهور کڅوړو ترکیب تحلیل کړو. دا هغه کڅوړې دي چې په کتابتون کې شاملې دي. tidyverseاو همدارنګه بسته data.table. او د دوی نحو سره پرتله کړئ pandas، په پایتون کې د ډیټا تحلیل خورا مشهور کڅوړه.

موږ به د پیتون او R په کارولو سره د تحلیلي کړکۍ افعال ترسره کولو پورې د ډیټا تحلیل ټولې لارې ته ګام په ګام لاړ شو.

منځپانګې

دا مقاله د چټ شیټ په توګه کارول کیدی شي که تاسو هیر شوي یاست چې څنګه په پام کې نیول شوي کڅوړو کې د ډیټا پروسس کولو ځینې عملیات ترسره کړئ.

د ډیټا سره کار کولو لپاره کومه ژبه غوره کړئ - R یا Python؟ دواړه! له پانډا څخه tidyverse او data.table او شاته مهاجرت

  1. د R او Python ترمنځ اصلي ترکیب توپیرونه
    1.1. د بسته بندۍ دندو ته لاسرسی
    1.2. دنده
    1.3. شاخص کول
    1.4. میتودونه او OOP
    1.5. پایپ لاینونه
    1.6. د معلوماتو جوړښتونه
  2. د کڅوړو په اړه یو څو ټکي چې موږ به یې کاروو
    2.1. منظم
    2.2. data.table
    2.3. پانډا
  3. د کڅوړو نصب کول
  4. د معلوماتو بارول
  5. د ډیټا چوکاټونو رامینځته کول
  6. د هغه کالمونو غوره کول چې تاسو ورته اړتیا لرئ
  7. د قطارونو فلټر کول
  8. ګروپي کول او جمع کول
  9. د میزونو عمودی اتحاد (UNION)
  10. د میزونو افقی یوځای کیدل (JOIN)
  11. د کړکۍ بنسټیز فعالیتونه او حساب شوي کالمونه
  12. په R او Python کې د معلوماتو پروسس کولو میتودونو تر مینځ د ارتباط جدول
  13. پایلې
  14. یوه لنډه سروې چې تاسو کوم بسته کاروئ

که تاسو د معلوماتو تحلیل سره علاقه لرئ ، تاسو ممکن ومومئ زما telegram и یوتیوب چینلونه ډیری مینځپانګه د 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 کې، ورته اشاره به یوازې وروستی عنصر بیرته راولي.

میتودونه او OOP

R په خپله طریقه OOP پلي کوي، ما پدې مقاله کې لیکلي "OOP په R ژبه کې (1 برخه): S3 ټولګي". په عموم کې، R یوه فعاله ژبه ده، او په دې کې هر څه په دندو باندې جوړ شوي. نو، د مثال په توګه، د Excel کاروونکو لپاره، لاړ شئ tydiverse دا به په پرتله اسانه وي pandas. که څه هم دا ممکن زما موضوعي نظر وي.

په لنډه توګه، په R کې شیان میتودونه نلري (که موږ د S3 ټولګیو په اړه وغږیږو، مګر د OOP نور تطبیقونه شتون لري چې خورا لږ عام دي). یوازې عمومي شوي دندې شتون لري چې د اعتراض ټولګي پورې اړه لري په مختلف ډول پروسس کوي.

پایپ لاینونه

شاید دا د دې لپاره نوم دی pandas دا به په بشپړه توګه سمه نه وي، مګر زه به هڅه وکړم چې معنی تشریح کړم.

د دې لپاره چې منځنۍ محاسبې خوندي نه کړئ او په کاري چاپیریال کې غیر ضروري توکي تولید نه کړئ، تاسو کولی شئ یو ډول پایپ لاین وکاروئ. هغوی. د محاسبې پایله له یو فنکشن څخه بل ته انتقال کړئ، او منځنۍ پایلې مه خوندي کوئ.

راځئ چې لاندې کوډ مثال واخلو، چیرې چې موږ په جلا شیانو کې منځمهاله حسابونه ذخیره کوو:

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

موږ په ترتیب سره 3 عملیات ترسره کړل، او د هر یو پایله په جلا څیز کې خوندي شوه. مګر په حقیقت کې، موږ دې منځنیو شیانو ته اړتیا نلرو.

یا حتی بدتر، مګر د Excel کاروونکو ته ډیر پیژندل شوی.

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(). پایله پایله په یو شی کې خوندي کیږي اعتراض .

د معلوماتو جوړښتونه

په R او Python کې د معلوماتو جوړښتونه ورته دي، مګر مختلف نومونه لري.

شرح
نوم په آر
نوم په Python/pandas

د میز جوړښت
data.frame, data.table, tibble
ډیټا فریم

د ارزښتونو یو اړخیز لیست
ویکتور
په پانډا کې لړۍ یا په خالص Python کې لیست

د څو سطحې غیر جدول جوړښت
لیست
قاموس

موږ به لاندې په ترکیب کې ځینې نور ځانګړتیاوې او توپیرونه وګورو.

د کڅوړو په اړه یو څو ټکي چې موږ به یې کاروو

لومړی ، زه به تاسو ته د کڅوړو په اړه لږ څه ووایم چې تاسو به د دې مقالې په جریان کې ورسره آشنا شئ.

منظم

رسمي ویب پاڼه: tidyverse.org
د ډیټا سره کار کولو لپاره کومه ژبه غوره کړئ - R یا Python؟ دواړه! له پانډا څخه tidyverse او data.table او شاته مهاجرت
کړی tidyverse د هیډلي ویکم لخوا لیکل شوی ، په RStudio کې د لوړ څیړنیز ساینس پوه. tidyverse د پیکجونو یو اغیزمن سیټ لري چې د ډیټا پروسس کول ساده کوي، چې 5 یې د CRAN ذخیره څخه په غوره 10 ډاونلوډونو کې شامل دي.

د کتابتون اصلي برخه د لاندې کڅوړو څخه جوړه ده: ggplot2, dplyr, tidyr, readr, purrr, tibble, stringr, forcats. د دې کڅوړو هر یو هدف د یوې ځانګړې ستونزې حل کول دي. د مثال په ډول dplyr د معلوماتو د مینځلو لپاره رامینځته شوی ، tidyr د معلوماتو په پاک شکل کې راوړل، stringr د تارونو سره کار کول ساده کوي، او ggplot2 د ډیټا لید لید یو له خورا مشهور وسیلو څخه دی.

ګټه tidyverse ساده او د لوستلو لپاره اسانه ترکیب دی، کوم چې په ډیری لارو کې د SQL پوښتنې ژبې ته ورته دی.

data.table

د ډیټا سره کار کولو لپاره کومه ژبه غوره کړئ - R یا Python؟ دواړه! له پانډا څخه tidyverse او data.table او شاته مهاجرترسمي ویب پاڼه: r-datatable.com

لیکوال data.table د H2O.ai Matt Dole دی.

د کتابتون لومړۍ خپرونه په 2006 کې ترسره شوه.

د کڅوړې ترکیب دومره اسانه ندی لکه څنګه چې په کې دی tidyverse او په R کې د کلاسیک ډیټا فریمونو ډیر یادونه کوي ، مګر په ورته وخت کې په فعالیت کې د پام وړ پراخ شوی.

په دې بسته کې د جدول سره ټولې لاسوهنې په مربع بریکٹ کې بیان شوي، او که تاسو نحو وژباړئ data.table په SQL کې، تاسو داسې یو څه ترلاسه کوئ: data.table[ WHERE, SELECT, GROUP BY ]

د دې کڅوړې ځواک د لوی مقدار ډیټا پروسس کولو سرعت دی.

پانډا

رسمي ویب پاڼه: pandas.pydata.org د ډیټا سره کار کولو لپاره کومه ژبه غوره کړئ - R یا Python؟ دواړه! له پانډا څخه tidyverse او data.table او شاته مهاجرت

د کتابتون نوم د اقتصادي اصطلاح "پینل ډیټا" څخه راځي، چې د څو اړخیز جوړښت شوي معلوماتو سیټونو تشریح کولو لپاره کارول کیږي.

لیکوال pandas امریکایی ویس مک کینی دی.

کله چې دا په Python کې د معلوماتو تحلیل ته راځي، مساوي pandas نه. یو خورا څو اړخیزه ، د لوړې کچې کڅوړه چې تاسو ته اجازه درکوي د ډیټا سره هر ډول لاسوهنه ترسره کړئ ، له هرې سرچینې څخه د ډیټا له پورته کولو څخه تر لید پورې.

د اضافي کڅوړو نصب کول

په دې مقاله کې بحث شوي کڅوړې په لومړني R او Python توزیع کې ندي شامل شوي. که څه هم یو کوچنی خبرداری شتون لري ، که تاسو د اناکونډا توزیع نصب کړی وي ، نو بیا یې اضافه کړئ pandas اړتیا نشته.

په R کې د کڅوړو نصب کول

که تاسو لږترلږه یو ځل د 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 کې د کڅوړو نصب کول

نو، که تاسو خالص Python نصب کړی وي، بیا pandas تاسو اړتیا لرئ دا په لاسي ډول نصب کړئ. د کمانډ لاین یا ټرمینل خلاص کړئ، ستاسو د عملیاتي سیسټم پورې اړه لري او لاندې کمانډ دننه کړئ.

pip install pandas

بیا موږ پایتون ته راستون شو او نصب شوی بسته د کمانډ سره وارد کړو import.

import pandas as pd

د معلوماتو بارول

د معلوماتو کان کیندنه د معلوماتو تحلیل کې یو له خورا مهم ګامونو څخه دی. Python او R دواړه، که وغواړي، تاسو ته د هرې سرچینې څخه د معلوماتو ترلاسه کولو پراخه فرصتونه چمتو کوي: ځایی فایلونه، د انټرنیټ څخه فایلونه، ویب پاڼې، هر ډول ډیټابیسونه.

د ډیټا سره کار کولو لپاره کومه ژبه غوره کړئ - R یا Python؟ دواړه! له پانډا څخه tidyverse او data.table او شاته مهاجرت

د مقالې په اوږدو کې موږ به ډیری ډیټاسیټونه وکاروو:

  1. د Google Analytics څخه دوه ډاونلوډونه.
  2. د تایټانیک مسافر ډیټاسیټ

ټول معلومات زما په لاس کې دي GitHub د csv او tsv فایلونو په بڼه. موږ به دوی له کوم ځای څخه وغواړو؟

په R کې د معلوماتو بارول: tidyverse, vroom, readr

په کتابتون کې د معلوماتو ډکولو لپاره tidyverse دوه کڅوړې شتون لري: vroom, readr. vroom ډیر عصري، مګر په راتلونکي کې کیدای شي کڅوړې یوځای شي.

څخه اقتباس رسمي اسناد vroom.

vroom vs لوستونکی
خوشې کول څه کوي vroom لپاره معنی readr؟ د اوس لپاره موږ پلان لرو چې اجازه راکړو دوه کڅوړې په جلا توګه رامینځته شي ، مګر احتمال لري چې موږ به په راتلونکي کې کڅوړې سره متحد کړو. د ویروم د سست لوستلو یوه نیمګړتیا دا ده چې د ډیټا ځینې ستونزې مخ په وړاندې راپور نه شي ورکول کیدی، نو د دوی د یوځای کولو لپاره څنګه یو څه فکر ته اړتیا لري.

vroom vs لوستونکی
خوشې کول څه معنی لري؟ 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: لوستونکي کې ډاټا بار کول

# 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().

په 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 کې د معلوماتو بارول: پانډا

که موږ د R کڅوړو سره پرتله کړو، نو پدې حالت کې نحو خورا نږدې دی pandas به وي readrځکه pandas کولی شي له هر ځای څخه د معلوماتو غوښتنه وکړي، او پدې بسته کې د دندو ټوله کورنۍ شتون لري read_*().

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

او ډیری نورې دندې د مختلف فارمیټونو څخه د معلوماتو لوستلو لپاره ډیزاین شوي. مګر زموږ د موخو لپاره دا کافي دي read_table() او یا read_csv() استدلال کارول Sep د کالم جلا کوونکی مشخص کولو لپاره.

په Python کې د معلوماتو بارول: پانډا

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 د SQL پوښتنې ژبې ته خورا ورته دی، که تاسو له دې سره بلد یاست نو تاسو به ژر تر ژره دا کڅوړه ماسټر کړئ.

د کالمونو غوره کولو لپاره، فنکشن وکاروئ 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.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؟ دواړه! له پانډا څخه 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.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 د فلټر کولو په څیر 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؟ دواړه! له پانډا څخه 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() موږ میز د لومړي دلیل په توګه تیر کړ ټايټانيک، او بیا ساحه په نښه کړه Pclass، د کوم په واسطه به موږ خپل میز ګروپ کړو. د دې عملیاتو پایله د آپریټر په کارولو سره %>% فنکشن ته د لومړي دلیل په توګه تیر شو 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)

په پایتون کې په عمودي توګه د میزونو سره یوځای کول: پانډا

В pandas فنکشن د میزونو سره یوځای کولو لپاره کارول کیږي concat()، په کوم کې چې تاسو اړتیا لرئ د دوی یوځای کولو لپاره د چوکاټونو لیست تیر کړئ.

په Python کې د تارونو فلټر کول: پانډا

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

د میزونو افقی یوځای کول

یو عملیات چې په کې د دوهم څخه کالمونه په لومړي جدول کې د کیلي په واسطه اضافه کیږي. دا ډیری وختونه کارول کیږي کله چې د حقیقت جدول بډایه کول (د مثال په توګه ، د پلور ډیټا سره میز) د ځینې حوالې ډیټا سره (د مثال په توګه ، د محصول لګښت).

د ډیټا سره کار کولو لپاره کومه ژبه غوره کړئ - R یا Python؟ دواړه! له پانډا څخه tidyverse او data.table او شاته مهاجرت

د یوځای کیدو څو ډولونه شتون لري:

د ډیټا سره کار کولو لپاره کومه ژبه غوره کړئ - R یا Python؟ دواړه! له پانډا څخه tidyverse او data.table او شاته مهاجرت

په مخکینۍ بار شوی میز کې ټايټانيک موږ یو کالم لرو د جنس، کوم چې د مسافر د جنډر کوډ سره مطابقت لري:

1-ښځه
۲ – نارینه

همچنان ، موږ یو میز جوړ کړی - د حوالې کتاب جندر. د مسافرینو د جندر په اړه د معلوماتو ډیر اسانه پریزنټشن لپاره، موږ اړتیا لرو د لارښود څخه د جندر نوم اضافه کړو جندر میز ته ټايټانيک.

افقی جدول په 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.x, by.y — د هغو کالمونو نومونه چې باید یوځای شي، که دوی په جدولونو کې مختلف نومونه ولري
  • all, all.x, all.y — د یوځای کیدو ډول، ټول به د دواړو جدولونو ټول قطارونه بیرته راولي، all.x د LEFT JOIN عملیات سره مطابقت لري (د لومړي جدول ټول قطارونه به پریږدي)، all.y — سره مطابقت لري د ښي خوا سره یوځای کیدل (د دویم جدول ټول قطارونه به پریږدي).

په R: data.table کې د جدولونو افقی یوځای کول

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

افقی جدول په Python کې یوځای کیږي: pandas

همدارنګه په کې data.tableپه pandas فنکشن د میزونو سره یوځای کولو لپاره کارول کیږي merge().

په پانډا کې د ادغام () فعالیت دلیلونه

  • څنګه - د پیوستون ډول: کیڼ، ښي، بهر، داخلي
  • on - کالم چې کیلي وي که چیرې دا په دواړو جدولونو کې ورته نوم ولري
  • left_on، right_on — د کلیدي کالمونو نومونه، که دوی په جدولونو کې مختلف نومونه ولري

افقی جدول په Python کې یوځای کیږي: pandas

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

د کړکۍ بنسټیز فعالیتونه او حساب شوي کالمونه

د کړکۍ فعالیتونه د راټولولو دندو ته ورته دي، او ډیری وختونه د معلوماتو تحلیل کې هم کارول کیږي. مګر د راټولولو دندو برعکس، د کړکۍ فعالیتونه د وتلو ډیټا فریم د قطارونو شمیر نه بدلوي.

د ډیټا سره کار کولو لپاره کومه ژبه غوره کړئ - R یا Python؟ دواړه! له پانډا څخه tidyverse او data.table او شاته مهاجرت

په لازمي ډول ، د کړکۍ فنکشن په کارولو سره ، موږ راتلونکی ډیټا فریم د ځینې معیارونو سره سم برخو ته ویشو ، د بیلګې په توګه. د یوې ساحې، یا څو برخو د ارزښت له مخې. او موږ په هره کړکۍ کې ریاضي عملیات ترسره کوو. د دې عملیاتو پایله به په هره کرښه کې بیرته راستانه شي، i.e. پرته له دې چې په جدول کې د قطارونو ټول شمیر بدل کړي.

د مثال په توګه، راځئ چې میز واخلو ټايټانيک. موږ کولی شو محاسبه کړو چې د هر ټکټ لګښت د هغې د کیبن ټولګي کې څومره سلنه و.

د دې کولو لپاره، موږ اړتیا لرو چې په هره کرښه کې د اوسني کیبن ټولګي لپاره د ټکټ ټول لګښت ترلاسه کړو چې په دې لیکه کې ټیکټ تړاو لري، بیا د هر ټکټ لګښت د ورته کیبن ټولګي د ټولو ټکټونو ټول لګښت سره تقسیم کړئ. .

د کړکۍ دندې په R کې: tidyverse، dplyr

د نوي کالمونو اضافه کولو لپاره، د قطار ګروپ کولو کارولو پرته، دننه dplyr فعالیت کوي mutate().

تاسو کولی شئ د ساحې په واسطه د معلوماتو ګروپ کولو سره پورته ذکر شوې ستونزه حل کړئ Pclass او ساحه په نوي کالم کې خلاصه کړئ کرایه. بیا، میز غیر ګروپ کړئ او د ساحې ارزښتونه وویشئ کرایه هغه څه چې په تیر پړاو کې پیښ شوي.

د کړکۍ دندې په R: dplyr کې

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

د کړکۍ کارونه په R: data.table کې

د حل الګوریتم په ورته ډول پاتې دی dplyr، موږ اړتیا لرو چې میز په کړکیو کې د ساحې له مخې وویشو Pclass. په نوي کالم کې د ګروپ لپاره مقدار چې د هر قطار سره مطابقت لري، او یو کالم اضافه کړئ په کوم کې چې موږ د هغې په ګروپ کې د هر ټکټ لګښت برخه محاسبه کوو.

د نوي کالمونو اضافه کولو لپاره data.table آپریټر حاضر :=. لاندې د بسته بندۍ په کارولو سره د ستونزې حل کولو یوه بیلګه ده data.table

د کړکۍ کارونه په R: data.table کې

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

په Python کې د کړکۍ دندې: ​​پانډا

د نوي کالم اضافه کولو یوه لاره pandas - فنکشن وکاروئ assign(). د کیبن ټولګي لخوا د ټیکټونو لګښت لنډیز کولو لپاره ، پرته له دې چې قطارونه ډله ایز کړئ ، موږ به فنکشن وکاروو transform().

لاندې د حل یوه بیلګه ده چې موږ یې په میز کې اضافه کوو ټايټانيک ورته 2 کالمونه.

په Python کې د کړکۍ دندې: ​​پانډا

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

د دندو او میتودونو د اړیکو جدول

لاندې په کڅوړو کې د ډیټا سره د مختلف عملیاتو ترسره کولو لپاره د میتودونو ترمینځ د ارتباط جدول دی چې موږ یې په پام کې نیولی دی.

شرح
منظم
data.table
پانډا

د معلوماتو بارول
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 کې د ډیټا سره کار کولو لپاره د نورو تخنیکونو سره په مقاله کې ورکړل شوي معلومات ضمیمه کړئ.

لکه څنګه چې ما پورته لیکلي، د مقالې موخه دا نه وه چې د یو چا نظر په دې اړه چې کومه ژبه غوره ده، بلکې د دواړو ژبو د زده کړې فرصت ساده کول، یا که اړتیا وي، د دوی ترمنځ مهاجرت.

که تاسو مقاله خوښ کړه ، زه به خوښ شم چې زما لپاره نوي پیرودونکي لرم یوتیوب и ټیلیګرام چینلونه

رایه

تاسو په خپل کار کې له لاندې کڅوړو څخه کوم یو کاروئ؟

په نظرونو کې تاسو کولی شئ د خپلې خوښې دلیل ولیکئ.

یوازې راجستر شوي کاروونکي کولی شي په سروې کې برخه واخلي. ننوزئمهرباني وکړئ

تاسو د ډیټا پروسس کولو کوم بسته کاروئ (تاسو کولی شئ ډیری اختیارونه وټاکئ)

  • ۸۵٪پاکوالی19

  • ۸۵٪data.table14

  • ۸۵٪پانډا23

42 کاروونکو رایه ورکړه. 9 کاروونکي منع شوي.

سرچینه: www.habr.com

Add a comment