ProHoster > blog > Amministrazzjoni > Liema lingwa tagħżel biex taħdem bid-dejta - R jew Python? It-tnejn! Migrazzjoni minn pandas għal tidyverse u data.table u lura
Liema lingwa tagħżel biex taħdem bid-dejta - R jew Python? It-tnejn! Migrazzjoni minn pandas għal tidyverse u data.table u lura
Billi tfittex R jew Python fuq l-Internet, issib miljuni ta 'artikoli u kilometri ta' diskussjonijiet dwar is-suġġett li wieħed huwa aħjar, aktar mgħaġġel u aktar konvenjenti biex taħdem bid-dejta. Iżda sfortunatament, dawn l-artikoli u tilwim kollha mhumiex partikolarment utli.
L-iskop ta 'dan l-artikolu huwa li jqabbel it-tekniki bażiċi tal-ipproċessar tad-dejta fl-aktar pakketti popolari taż-żewġ lingwi. U għin lill-qarrejja malajr jegħlbu xi ħaġa li għadhom ma jafux. Għal dawk li jiktbu f'Python, issir taf kif tagħmel l-istess ħaġa f'R, u viċi versa.
Matul l-artiklu se nanalizzaw is-sintassi tal-pakketti l-aktar popolari f'R. Dawn huma l-pakketti inklużi fil-librerija tidyverseu wkoll il-pakkett data.table. U qabbel is-sintassi tagħhom ma ' pandas, l-aktar pakkett ta 'analiżi tad-dejta popolari f'Python.
Se ngħaddu pass pass fit-triq kollha tal-analiżi tad-dejta mit-tagħbija tagħha sat-twettiq tal-funzjonijiet tat-tieqa analitiċi bl-użu ta 'Python u R.
Kontenut
Dan l-artikolu jista 'jintuża bħala cheat sheet jekk insejt kif twettaq xi operazzjoni ta' pproċessar tad-dejta f'wieħed mill-pakketti taħt konsiderazzjoni.
Jekk inti interessat fl-analiżi tad-dejta, tista' ssib tiegħi telegramma и YouTube kanali. Ħafna mill-kontenut huwa ddedikat għal-lingwa R.
Differenzi ewlenin tas-sintassi bejn R u Python
Biex tagħmilha aktar faċli għalik li taqleb minn Python għal R, jew viċi versa, se nagħti ftit punti ewlenin li trid tagħti attenzjoni għalihom.
Aċċess għall-Funzjonijiet tal-Pakkett
Ladarba pakkett jitgħabba f'R, m'għandekx għalfejn tispeċifika l-isem tal-pakkett biex taċċessa l-funzjonijiet tiegħu. F'ħafna każijiet dan mhux komuni f'R, iżda huwa aċċettabbli. M'għandekx għalfejn timporta pakkett jekk għandek bżonn waħda mill-funzjonijiet tiegħu fil-kodiċi tiegħek, imma sempliċement isejħilha billi tispeċifika l-isem tal-pakkett u l-isem tal-funzjoni. Is-separatur bejn l-ismijiet tal-pakketti u l-funzjonijiet f'R huwa kolon doppju. package_name::function_name().
F'Python, għall-kuntrarju, huwa meqjus klassiku li ssejjaħ il-funzjonijiet ta 'pakkett billi tispeċifika b'mod espliċitu ismu. Meta pakkett jitniżżel, ġeneralment jingħata isem imqassar, eż. pandas normalment jintuża psewdonimu pd. Funzjoni ta' pakkett hija aċċessata permezz ta' tikka package_name.function_name().
Assenjazzjoni
F'R, huwa komuni li tuża vleġġa biex tassenja valur lil oġġett. obj_name <- value, għalkemm huwa permess sinjal wieħed ugwali, is-sinjal wieħed ugwali f'R jintuża primarjament biex jgħaddi valuri għall-argumenti tal-funzjoni.
F'Python, l-assenjazzjoni ssir esklussivament b'sinjal wieħed ugwali obj_name = value.
Indiċjar
Hemm ukoll differenzi pjuttost sinifikanti hawnhekk. F'R, l-indiċjar jibda f'wieħed u jinkludi l-elementi speċifikati kollha fil-medda li tirriżulta,
F'Python, l-indiċjar jibda minn żero u l-firxa magħżula ma tinkludix l-aħħar element speċifikat fl-indiċi. Allura disinn x[i:j] f'Python mhux se jinkludi l-element j.
Hemm ukoll differenzi fl-indiċjar negattiv, fin-notazzjoni R x[-1] se jirritorna l-elementi kollha tal-vettur ħlief l-aħħar wieħed. F'Python, notazzjoni simili tirritorna biss l-aħħar element.
Metodi u OOP
R jimplimenta l-OOP bil-mod tiegħu, ktibt dwar dan fl-artiklu "OOP fil-lingwa R (parti 1): klassijiet S3". B'mod ġenerali, R hija lingwa funzjonali, u kollox fih huwa mibni fuq funzjonijiet. Għalhekk, per eżempju, għall-utenti ta 'Excel, mur tydiverse se jkun aktar faċli milli pandas. Għalkemm din tista' tkun l-opinjoni suġġettiva tiegħi.
Fil-qosor, l-oġġetti f'R m'għandhomx metodi (jekk nitkellmu dwar klassijiet S3, iżda hemm implimentazzjonijiet OOP oħra li huma ħafna inqas komuni). Hemm biss funzjonijiet ġeneralizzati li jipproċessawhom b'mod differenti skont il-klassi tal-oġġett.
Pipelines
Forsi dan huwa l-isem għal pandas Mhux se jkun kompletament korrett, imma ser nipprova nispjega t-tifsira.
Sabiex ma tiffrankax kalkoli intermedji u ma tipproduċix oġġetti mhux meħtieġa fl-ambjent tax-xogħol, tista 'tuża tip ta' pipeline. Dawk. jgħaddi r-riżultat ta 'kalkolu minn funzjoni waħda għall-oħra, u ma tissejvjax riżultati intermedji.
Ejja nieħdu l-eżempju tal-kodiċi li ġej, fejn naħżnu kalkoli intermedji f'oġġetti separati:
Aħna wettaqna 3 operazzjonijiet b'mod sekwenzjali, u r-riżultat ta 'kull wieħed ġie ffrankat f'oġġett separat. Iżda fil-fatt, m'għandniex bżonn dawn l-oġġetti intermedji.
Jew saħansitra agħar, iżda aktar familjari għall-utenti ta 'Excel.
obj <- func3(func2(func1()))
F'dan il-każ, aħna ma ssejvjax ir-riżultati tal-kalkolu intermedji, iżda l-qari tal-kodiċi b'funzjonijiet nested huwa estremament inkonvenjenti.
Se nħarsu lejn diversi approċċi għall-ipproċessar tad-dejta f'R, u jwettqu operazzjonijiet simili b'modi differenti.
B’hekk nieħdu r-riżultat tax-xogħol func1() u jgħaddiha bħala l-ewwel argument lil func2(), imbagħad ngħaddu r-riżultat ta 'dan il-kalkolu bħala l-ewwel argument func3(). U fl-aħħar, niktbu l-kalkoli kollha mwettqa fl-oġġett obj <-.
Dan kollu hawn fuq huwa illustrat aħjar mill-kliem minn dan il-meme:
F'kull waħda mill-parentesi kwadri tista 'tuża r-riżultat tal-operazzjoni preċedenti.
В pandas operazzjonijiet bħal dawn huma separati b'tikka.
obj = df.fun1().fun2().fun3()
Dawk. nieħdu l-mejda tagħna df u uża l-metodu tagħha fun1(), imbagħad napplikaw il-metodu għar-riżultat miksub fun2(), wara fun3(). Ir-riżultat li jirriżulta jiġi ffrankat f'oġġett oġġett .
Strutturi tad-data
L-istrutturi tad-dejta f'R u Python huma simili, iżda għandhom ismijiet differenti.
Deskrizzjoni
Titolu f'R
Isem f'Python/pandas
Struttura tal-mejda
data.frame, data.table, tibble
DataFrame
Lista unidimensjonali ta' valuri
Vettur
Serje f'pandas jew lista f'Python pur
Struttura mhux tabulari f'diversi livelli
Lista
dizzjunarju (dict)
Se nħarsu lejn xi karatteristiċi u differenzi oħra fis-sintassi hawn taħt.
Ftit kelmiet dwar il-pakketti li se nużaw
L-ewwel, ngħidlek ftit dwar il-pakketti li se ssir familjari magħhom matul dan l-artikolu.
tidyverse
Официальный сайт: tidyverse.org
Librerija tidyverse miktub minn Hedley Wickham, Xjentist Anzjan tar-Riċerka f'RStudio. tidyverse jikkonsisti f'sett impressjonanti ta' pakketti li jissimplifikaw l-ipproċessar tad-dejta, li 5 minnhom huma inklużi fl-aqwa 10 downloads mir-repożitorju CRAN.
Il-qalba tal-librerija tikkonsisti fil-pakketti li ġejjin: ggplot2, dplyr, tidyr, readr, purrr, tibble, stringr, forcats. Kull wieħed minn dawn il-pakketti huwa mmirat biex isolvi problema speċifika. Pereżempju dplyr maħluqa għall-manipulazzjoni tad-dejta, tidyr biex iġġib id-data f'forma pulita, stringr tissimplifika l-ħidma ma 'kordi, u ggplot2 hija waħda mill-aktar għodod popolari għall-viżwalizzazzjoni tad-dejta.
vantaġġ tidyverse hija s-sintassi tas-sempliċità u faċli biex tinqara, li f'ħafna modi hija simili għall-lingwa tal-mistoqsija SQL.
Is-sintassi tal-pakkett mhix konvenjenti daqs fi tidyverse u huwa aktar reminixxenti ta 'dataframes klassiċi f'R, iżda fl-istess ħin estiża b'mod sinifikanti fil-funzjonalità.
Il-manipulazzjonijiet kollha bit-tabella f'dan il-pakkett huma deskritti f'parentesi kwadri, u jekk tittraduċi s-sintassi data.table fl-SQL, ikollok xi ħaġa bħal din: data.table[ WHERE, SELECT, GROUP BY ]
Is-saħħa ta 'dan il-pakkett hija l-veloċità tal-ipproċessar ta' ammonti kbar ta 'dejta.
L-isem tal-librerija ġej mit-terminu ekonometriku "data tal-pannelli", użat biex jiddeskrivi settijiet strutturati multidimensjonali ta 'informazzjoni.
Permezz pandas huwa l-Amerikan Wes McKinney.
Meta niġu għall-analiżi tad-dejta f'Python, ugwali pandas Nru. Pakkett multifunzjonali ħafna, ta 'livell għoli li jippermettilek twettaq kwalunkwe manipulazzjoni bid-dejta, mit-tagħbija tad-dejta minn kwalunkwe sors sal-viżwalizzazzjoni tagħha.
Installazzjoni ta 'pakketti addizzjonali
Il-pakketti diskussi f'dan l-artikolu mhumiex inklużi fid-distribuzzjonijiet bażiċi R u Python. Għalkemm hemm twissija żgħira, jekk installajt id-distribuzzjoni Anaconda, imbagħad installa addizzjonalment pandas mhux meħtieġ.
L-installazzjoni ta' pakketti f'R
Jekk ftaħt l-ambjent ta' żvilupp RStudio mill-inqas darba, probabilment diġà taf kif tinstalla l-pakkett meħtieġ f'R. Biex tinstalla pakketti, uża l-kmand standard install.packages() billi tmexxiha direttament f'R innifsu.
# установка пакетов
install.packages("vroom")
install.packages("readr")
install.packages("dplyr")
install.packages("data.table")
Wara l-installazzjoni, il-pakketti jeħtieġ li jiġu konnessi, li fil-biċċa l-kbira tal-każijiet jintuża l-kmand library().
# подключение или импорт пакетов в рабочее окружение
library(vroom)
library(readr)
library(dplyr)
library(data.table)
Installazzjoni ta' Pakketti f'Python
Allura, jekk għandek Python pur installat, allura pandas għandek bżonn tinstallah manwalment. Iftaħ linja ta 'kmand, jew terminal, skond is-sistema operattiva tiegħek u daħħal il-kmand li ġej.
pip install pandas
Imbagħad nerġgħu lura lejn Python u nimportaw il-pakkett installat bil-kmand import.
import pandas as pd
Tagħbija tad-Dejta
It-tħaffir tad-dejta huwa wieħed mill-aktar passi importanti fl-analiżi tad-dejta. Kemm Python kif ukoll R, jekk mixtieq, jagħtuk opportunitajiet estensivi biex tikseb data minn kwalunkwe sors: fajls lokali, fajls mill-Internet, websajts, kull tip ta 'databases.
Matul l-artikolu se nużaw diversi settijiet ta' dejta:
Żewġ downloads minn Google Analytics.
Sett tad-Data tal-Passiġġieri tat-Titanic.
Id-dejta kollha tinsab fuq tiegħi GitHub fil-forma ta' fajls csv u tsv. Minn fejn se nitolbuhom?
Tagħbija tad-dejta f'R: tidyverse, vroom, readr
Biex tagħbija data f'librerija tidyverse Hemm żewġ pakketti: vroom, readr. vroom aktar moderni, iżda fil-futur il-pakketti jistgħu jingħaqdu.
vroom vs qarrej
X'jagħmel ir-rilaxx ta ' vroom tfisser għal readr? Għalissa qed nippjanaw li nħallu ż-żewġ pakketti jevolvu separatament, iżda x'aktarx se ngħaqqdu l-pakketti fil-futur. Żvantaġġ wieħed għall-qari għażżien ta 'vroom huwa ċerti problemi tad-dejta ma jistgħux jiġu rrappurtati bil-quddiem, għalhekk kif l-aħjar biex tgħaqqadhom teħtieġ xi ħsieb.
vroom vs readr
Xi jfisser ir-rilaxx? vroom għall- readr? Bħalissa qed nippjanaw li niżviluppaw iż-żewġ pakketti separatament, iżda probabbilment se ngħaqqduhom fil-futur. Wieħed mill-iżvantaġġi tal-qari għażżien vroom hija li xi problemi bid-dejta ma jistgħux jiġu rrappurtati minn qabel, għalhekk għandek bżonn taħseb dwar kif l-aħjar tgħaqqadhom.
F'dan l-artikolu se nħarsu lejn iż-żewġ pakketti tat-tagħbija tad-dejta:
Fil-pakkett vroom, irrispettivament mill-format tad-dejta csv / tsv, it-tagħbija titwettaq bil-funzjoni tal-istess isem vroom(), fil-pakkett readr nużaw funzjoni differenti għal kull format read_tsv() и read_csv().
Tagħbija tad-dejta f'R: data.table
В data.table hemm funzjoni għat-tagħbija tad-data fread().
Jekk inqabblu ma 'pakketti R, allura f'dan il-każ is-sintassi hija l-eqreb pandas se readr, għax pandas jista 'jitlob data minn kullimkien, u hemm familja sħiħa ta' funzjonijiet f'dan il-pakkett read_*().
read_csv()
read_excel()
read_sql()
read_json()
read_html()
U ħafna funzjonijiet oħra mfassla biex jaqraw data minn diversi formati. Iżda għall-iskopijiet tagħna huwa biżżejjed read_table() jew read_csv() bl-użu tal-argument settembru biex tispeċifika s-separatur tal-kolonna.
В pandas Il-ħolqien ta 'frejms jitwettaq f'diversi stadji, l-ewwel noħolqu dizzjunarju, u mbagħad nikkonverti d-dizzjunarju fi dataframe.
Il-ħolqien ta' dataframe f'Python: pandas
# создаём дата фрейм
gender_dict = {'id': [1, 2],
'gender': ["female", "male"]}
# преобразуем словарь в датафрейм
gender = pd.DataFrame.from_dict(gender_dict)
Għażla tal-Kolonni
It-tabelli li taħdem magħhom jista' jkun fihom għexieren jew saħansitra mijiet ta' kolonni ta' dejta. Iżda biex twettaq analiżi, bħala regola, m'għandekx bżonn il-kolonni kollha li huma disponibbli fit-tabella tas-sors.
Għalhekk, waħda mill-ewwel operazzjonijiet li se twettaq mat-tabella tas-sors hija li tnaddafha minn informazzjoni mhux meħtieġa u tillibera l-memorja li tokkupa din l-informazzjoni.
Għażla ta' kolonni f'R: tidyverse, dplyr
sintassi dplyr huwa simili ħafna għall-lingwa tal-mistoqsija SQL, jekk inti familjari magħha malajr se tikkontrolla dan il-pakkett.
Biex tagħżel kolonni, uża l-funzjoni select().
Hawn taħt hawn eżempji ta 'kodiċi li bihom tista' tagħżel kolonni bil-modi li ġejjin:
Li jelenka l-ismijiet tal-kolonni meħtieġa
Irreferi għall-ismijiet tal-kolonni billi tuża espressjonijiet regolari
Skont it-tip tad-dejta jew kwalunkwe proprjetà oħra tad-dejta li tinsab fil-kolonna
Għażla ta' kolonni f'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)
Għażla ta' kolonni f'R: data.table
L-istess operazzjonijiet fi data.table huma mwettqa kemmxejn differenti, fil-bidu tal-artiklu ipprovdejt deskrizzjoni ta’ liema argumenti hemm ġewwa parentesi kwadri fil- data.table.
DT[i,j,by]
Fejn:
i - fejn, i.e. iffiltrar minn ringieli
j - agħżel|aġġorna|tagħmel, i.e. l-għażla tal-kolonni u l-konverżjoni tagħhom
skond - raggruppament tad-data
Varjabbli .SD jippermettilek li taċċessa l-kolonni kollha, u .SDcols iffiltra l-kolonni meħtieġa billi tuża espressjonijiet regolari, jew funzjonijiet oħra biex tiffiltra l-ismijiet tal-kolonni li għandek bżonn.
Għażla ta' kolonni f'Python, pandas
Biex tagħżel kolonni bl-isem fil pandas huwa biżżejjed li tipprovdi lista ta 'ismijiet tagħhom. U biex tagħżel jew teskludi kolonni bl-isem billi tuża espressjonijiet regolari, trid tuża l-funzjonijiet drop() и filter(), u argument assi=1, li biha tindika li huwa meħtieġ li jiġu pproċessati kolonni aktar milli ringieli.
Biex tagħżel qasam skont it-tip tad-dejta, uża l-funzjoni select_dtypes(), u f'argumenti jinkludu jew jeskludu jgħaddi lista ta’ tipi ta’ data li jikkorrispondu għal liema oqsma trid tagħżel.
Għażla ta' kolonni f'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'])
Filtrar ringieli
Pereżempju, it-tabella tas-sors jista 'jkun fiha diversi snin ta' dejta, iżda għandek bżonn tanalizza biss ix-xahar li għadda. Għal darb'oħra, linji żejda jnaqqsu l-proċess tal-ipproċessar tad-dejta u jxekklu l-memorja tal-PC.
В dplyr il-funzjoni tintuża biex tiffiltra ringieli filter(). Huwa jieħu dataframe bħala l-ewwel argument, imbagħad inti telenka l-kundizzjonijiet tal-filtrazzjoni.
Meta tikteb espressjonijiet loġiċi biex tiffiltra tabella, f'dan il-każ, speċifika l-ismijiet tal-kolonni mingħajr kwotazzjonijiet u mingħajr ma tiddikjara l-isem tat-tabella.
Meta tuża espressjonijiet loġiċi multipli biex tiffiltra, uża l-operaturi li ġejjin:
& jew virgola - loġika U
| - JEW loġiku
Filtrar ta' ringieli f'R: dplyr
# фильтрация строк
## dplyr
### фильтрация строк по одному условию
filter(ga_nov, source == "google")
### фильтр по двум условиям соединённым логическим и
filter(ga_nov, source == "google" & sessions >= 10)
### фильтр по двум условиям соединённым логическим или
filter(ga_nov, source == "google" | sessions >= 10)
Iffiltrar ta 'ringieli f'R: data.table
Kif diġà ktibt hawn fuq, fi data.table sintassi tal-konverżjoni tad-data hija magħluqa f'parentesi kwadri.
DT[i,j,by]
Fejn:
i - fejn, i.e. iffiltrar minn ringieli
j - agħżel|aġġorna|tagħmel, i.e. l-għażla tal-kolonni u l-konverżjoni tagħhom
skond - raggruppament tad-data
L-argument jintuża biex jiffiltra ringieli i, li għandha l-ewwel pożizzjoni fil-parentesi kwadri.
Il-kolonni huma aċċessati f'espressjonijiet loġiċi mingħajr virgoletti u mingħajr ma jiġi speċifikat l-isem tat-tabella.
L-espressjonijiet loġiċi huma relatati ma’ xulxin bl-istess mod bħal fi dplyr permezz tal-operaturi & u |.
Iffiltrar ta 'ringieli f'R: data.table
## data.table
### фильтрация строк по одному условию
ga_nov[source == "google"]
### фильтр по двум условиям соединённым логическим и
ga_nov[source == "google" & sessions >= 10]
### фильтр по двум условиям соединённым логическим или
ga_nov[source == "google" | sessions >= 10]
Iffiltrar ta 'kordi f'Python: pandas
Iffiltra bir-ringieli ġewwa pandas simili għall-filtrazzjoni fil data.table, u jsir fil-parentesi kwadri.
F'dan il-każ, l-aċċess għall-kolonni jitwettaq bilfors billi jiġi indikat l-isem tal-qafas tad-dejta; allura l-isem tal-kolonna jista' jiġi indikat ukoll bil-virgoletti fil-parentesi kwadri (eżempjudf['col_name']), jew mingħajr kwotazzjonijiet wara l-perjodu (eżempjudf.col_name).
Jekk għandek bżonn tiffiltra dataframe b'diversi kundizzjonijiet, kull kundizzjoni trid titqiegħed fil-parentesi. Il-kundizzjonijiet loġiċi huma konnessi ma 'xulxin mill-operaturi & и |.
Iffiltrar ta 'kordi f'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)]
Raggruppament u aggregazzjoni ta' data
Waħda mill-operazzjonijiet l-aktar komunement użati fl-analiżi tad-dejta hija raggruppament u aggregazzjoni.
Is-sintassi għat-twettiq ta' dawn l-operazzjonijiet hija mifruxa mal-pakketti kollha li nirrevedu.
F'dan il-każ, aħna se nieħdu dataframe bħala eżempju titaniku, u kkalkula n-numru u l-ispiża medja tal-biljetti skont il-klassi tal-kabina.
Raggruppament u aggregazzjoni ta' data f'R: tidyverse, dplyr
В dplyr il-funzjoni tintuża għall-grupp group_by(), u għall-aggregazzjoni summarise(). Fil-fatt, dplyr hemm familja sħiħa ta' funzjonijiet summarise_*(), iżda l-iskop ta 'dan l-artikolu huwa li jqabbel is-sintassi bażika, għalhekk mhux se nidħlu f'ġungla bħal din.
Fil-funzjoni group_by() g[addejna t-tabella b[ala l-ewwel argument titaniku, u mbagħad indika l-qasam Pclass, li biha niġbru t-tabella tagħna. Ir-riżultat ta 'din l-operazzjoni bl-użu ta' l-operatur %>% għadda bħala l-ewwel argument għall-funzjoni summarise(), u żiedet 2 oqsma oħra: passiġġieri и prezz_medja. Fl-ewwel, bl-użu tal-funzjoni length() ikkalkulat in-numru ta 'biljetti, u fit-tieni bl-użu tal-funzjoni mean() irċieva l-prezz medju tal-biljett.
Raggruppament u aggregazzjoni ta' data f'R: data.table
В data.table l-argument jintuża għall-aggregazzjoni j li għandha t-tieni pożizzjoni fil-parentesi kwadri, u għall-grupp by jew keyby, li għandhom it-tielet pożizzjoni.
Il-lista ta' funzjonijiet ta' aggregazzjoni f'dan il-każ hija identika għal dik deskritta fi dplyr, għax dawn huma funzjonijiet mis-sintassi R bażika.
Raggruppament u aggregazzjoni f'R: data.table
## data.table
### фильтрация строк по одному условию
titanic[, .(passangers = length(PassengerId),
avg_price = mean(Fare)),
by = Pclass]
Raggruppament u aggregazzjoni ta 'dejta f'Python: pandas
Raggruppament fi pandas simili għal dplyr, iżda l-aggregazzjoni mhix simili għal dplyr mhux fuq data.table.
Biex tiggruppa, uża l-metodu groupby(), li fiha għandek bżonn tgħaddi lista ta 'kolonni li bihom id-dataframe se jiġi raggruppat.
Għall-aggregazzjoni tista' tuża l-metodu agg()li jaċċetta dizzjunarju. Iċ-ċwievet tad-dizzjunarju huma l-kolonni li fuqhom se tapplika l-funzjonijiet ta 'aggregazzjoni, u l-valuri huma l-ismijiet tal-funzjonijiet ta' aggregazzjoni.
Funzjonijiet ta' aggregazzjoni:
sum() — somma
min() / max() – valur minimu u massimu
mean() - medja
median() — medjan
count() - kwantità
Funzjoni reset_index() fl-eżempju hawn taħt huwa użat biex reset indiċijiet nested li pandas default wara l-aggregazzjoni tad-dejta.
Simbolu jippermettilek timxi għal-linja li jmiss.
Raggruppament u aggregazzjoni f'Python: pandas
# группировка и агрегация данных
titanic.groupby(["Pclass"]).
agg({'PassengerId': 'count', 'Fare': 'mean'}).
reset_index()
Jingħaqdu vertikali ta 'tabelli
Operazzjoni li fiha tgħaqqad żewġ tabelli jew aktar tal-istess struttura. Id-dejta li għabbejna fiha tabelli ga_nov и ga_dec. Dawn it-tabelli huma identiċi fl-istruttura, i.e. għandhom l-istess kolonni, u t-tipi tad-dejta f'dawn il-kolonni.
Din hija upload minn Google Analytics għax-xahar ta 'Novembru u Diċembru, f'din it-taqsima se ngħaqqdu din id-dejta f'tabella waħda.
Tabelli li jingħaqdu vertikalment f'R: tidyverse, dplyr
В dplyr Tista 'tgħaqqad 2 tabelli f'waħda billi tuża l-funzjoni bind_rows(), tgħaddi tabelli bħala l-argumenti tagħha.
Filtrar ta' ringieli f'R: dplyr
# Вертикальное объединение таблиц
## dplyr
bind_rows(ga_nov, ga_dec)
Tabelli li jingħaqdu vertikalment f'R: data.table
Huwa wkoll xejn ikkumplikat, ejja nużaw rbind().
Iffiltrar ta 'ringieli f'R: data.table
## data.table
rbind(ga_nov, ga_dec)
Tgħaqqad it-tabelli vertikalment f'Python: pandas
В pandas il-funzjoni tintuża biex tgħaqqad it-tabelli concat(), li fiha għandek bżonn tgħaddi lista ta 'frejms biex tgħaqqadhom.
Iffiltrar ta 'kordi f'Python: pandas
# вертикальное объединение таблиц
pd.concat([ga_nov, ga_dec])
Jingħaqdu orizzontali ta 'tabelli
Operazzjoni li fiha kolonni mit-tieni huma miżjuda mal-ewwel tabella b'ċavetta. Ħafna drabi tintuża meta tarrikkixxi tabella tal-fatti (per eżempju, tabella b'dejta tal-bejgħ) b'xi data ta 'referenza (per eżempju, l-ispiża ta' prodott).
Hemm diversi tipi ta’ tingħaqad:
Fit-tabella mgħobbija qabel titaniku għandna kolonna Sess, li jikkorrispondi għall-kodiċi tal-ġeneru tal-passiġġier:
1 - mara
2 - raġel
Ukoll, ħloqna tabella - ktieb ta 'referenza sess. Għal preżentazzjoni aktar konvenjenti tad-dejta dwar is-sess tal-passiġġieri, irridu nżidu l-isem tas-sess mid-direttorju sess mal-mejda titaniku.
В dplyr Hemm familja sħiħa ta' funzjonijiet għall-għaqda orizzontali:
inner_join()
left_join()
right_join()
full_join()
semi_join()
nest_join()
anti_join()
L-aktar komunement użat fil-prattika tiegħi huwa left_join().
Bħala l-ewwel żewġ argumenti, il-funzjonijiet elenkati hawn fuq jieħdu żewġ tabelli biex jingħaqdu, u bħala t-tielet argument by trid tispeċifika l-kolonni li tingħaqad.
Tabella orizzontali jingħaqdu f'R: dplyr
# объединяем таблицы
left_join(titanic, gender,
by = c("Sex" = "id"))
Għaqda orizzontali tat-tabelli f'R: data.table
В data.table Ikollok bżonn tingħaqad mat-tabelli b'ċavetta billi tuża l-funzjoni merge().
L-argumenti biex jingħaqdu () jiffunzjonaw fid-data.table
x, y — Tabelli biex tgħaqqad
by — Kolonna li hija ċ-ċavetta biex tissieħeb jekk ikollha l-istess isem fiż-żewġ tabelli
by.x, by.y — Ismijiet tal-kolonni li għandhom jingħaqdu, jekk ikollhom ismijiet differenti fit-tabelli
all, all.x, all.y — Tip ta' tingħaqad, kollha se jirritorna r-ringieli kollha miż-żewġ tabelli, all.x jikkorrispondi għall-operazzjoni LEFT JOIN (se jħalli r-ringieli kollha tal-ewwel tabella), all.y — jikkorrispondi għall- Operazzjoni RIGHT JOIN (se tħalli r-ringieli kollha tat-tieni tabella ).
Kif ukoll fil data.tablepulzieri pandas il-funzjoni tintuża biex tgħaqqad it-tabelli merge().
L-argumenti tal-funzjoni merge() fil-pandas
kif — Tip ta' konnessjoni: tax-xellug, tal-lemin, ta' barra, ta' ġewwa
on — Kolonna li hija ċavetta jekk ikollha l-istess isem fiż-żewġ tabelli
left_on, right_on — Ismijiet tal-kolonni ewlenin, jekk ikollhom ismijiet differenti fit-tabelli
Tabella orizzontali jingħaqdu f'Python: pandas
# объединяем по ключу
titanic.merge(gender, how = "left", left_on = "Sex", right_on = "id")
Funzjonijiet bażiċi tat-tieqa u kolonni kkalkulati
Il-funzjonijiet tat-twieqi huma simili fit-tifsira għall-funzjonijiet ta 'aggregazzjoni, u spiss jintużaw ukoll fl-analiżi tad-dejta. Iżda b'differenza mill-funzjonijiet ta' aggregazzjoni, il-funzjonijiet tat-twieqi ma jbiddlux in-numru ta' ringieli tad-dataframe li joħroġ.
Essenzjalment, bl-użu tal-funzjoni tat-tieqa, aħna naqsmu d-dataframe li jkun dieħel f'partijiet skont xi kriterju, i.e. bil-valur ta' qasam, jew diversi oqsma. U nwettqu operazzjonijiet aritmetiċi fuq kull tieqa. Ir-riżultat ta’ dawn l-operazzjonijiet se jintbagħat lura f’kull linja, i.e. mingħajr ma jinbidel in-numru totali ta’ ringieli fit-tabella.
Per eżempju, ejja nieħdu t-tabella titaniku. Nistgħu nikkalkulaw x'perċentwal kienet l-ispiża ta' kull biljett fi ħdan il-klassi tal-kabina tiegħu.
Biex nagħmlu dan, irridu nġibu f'kull linja l-ispiża totali ta 'biljett għall-klassi tal-kabina attwali li għaliha jappartjeni l-biljett f'din il-linja, imbagħad naqsam l-ispiża ta' kull biljett bl-ispiża totali tal-biljetti kollha tal-istess klassi tal-kabina .
Funzjonijiet tat-tieqa f'R: tidyverse, dplyr
Biex iżżid kolonni ġodda, mingħajr ma tuża grupp ta' ringieli, in dplyr jaqdi funzjoni mutate().
Tista' ssolvi l-problema deskritta hawn fuq billi tiġbor id-dejta skont il-qasam Pclass u jinġabru l-qasam f'kolonna ġdida do. Sussegwentement, aqsam it-tabella u jaqsam il-valuri tal-qasam do għal dak li ġara fil-pass preċedenti.
L-algoritmu tas-soluzzjoni jibqa l-istess bħal fi dplyr, għandna bżonn naqsmu t-tabella fi twieqi skont il-qasam Pclass. Output f'kolonna ġdida l-ammont għall-grupp li jikkorrispondi għal kull ringiela, u żid kolonna li fiha nikkalkulaw is-sehem tal-ispiża ta 'kull biljett fil-grupp tiegħu.
Biex iżżid kolonni ġodda data.table operatur preżenti :=. Hawn taħt hemm eżempju ta 'soluzzjoni ta' problema bl-użu tal-pakkett data.table
Funzjonijiet tat-tieqa f'R: data.table
titanic[,c("Pclass_cost","ticket_fare_rate") := .(sum(Fare), Fare / Pclass_cost),
by = Pclass]
Funzjonijiet tat-tieqa f'Python: pandas
Mod wieħed biex iżżid kolonna ġdida pandas - uża l-funzjoni assign(). Biex tiġbor fil-qosor l-ispiża tal-biljetti skont il-klassi tal-kabina, mingħajr ma niġbru r-ringieli, se nużaw il-funzjoni transform().
Hawn taħt hemm eżempju ta 'soluzzjoni li fiha nżidu mat-tabella titaniku l-istess 2 kolonni.
Forsi fl-artiklu ddeskrivejt mhux l-aktar implimentazzjonijiet ottimali tal-ipproċessar tad-dejta, għalhekk inkun ferħan jekk tikkoreġi l-iżbalji tiegħi fil-kummenti, jew sempliċement tissupplimenta l-informazzjoni mogħtija fl-artikolu b'tekniki oħra biex taħdem mad-dejta f'R / Python.
Kif ktibt hawn fuq, l-iskop tal-artiklu ma kienx li jimponi l-opinjoni tiegħu dwar liema lingwa hija aħjar, iżda li tissimplifika l-opportunità li titgħallem iż-żewġ lingwi, jew, jekk meħtieġ, jemigra bejniethom.
Jekk għoġbok l-artiklu, inkun ferħan li jkolli abbonati ġodda għal tiegħi YouTube и telegramma kanali.
Poll
Liema mill-pakketti li ġejjin tuża fix-xogħol tiegħek?