ProHoster > Blog > administratë > Cila gjuhë të zgjidhni për të punuar me të dhëna - R apo Python? te dyja! Migrimi nga panda në të rregullt dhe të dhëna.tabelë dhe mbrapa
Cila gjuhë të zgjidhni për të punuar me të dhëna - R apo Python? te dyja! Migrimi nga panda në të rregullt dhe të dhëna.tabelë dhe mbrapa
Duke kërkuar për R ose Python në internet, do të gjeni miliona artikuj dhe kilometra diskutime mbi temën se cili është më i mirë, më i shpejtë dhe më i përshtatshëm për të punuar me të dhëna. Por për fat të keq, të gjithë këta artikuj dhe mosmarrëveshje nuk janë veçanërisht të dobishme.
Qëllimi i këtij artikulli është të krahasojë teknikat bazë të përpunimit të të dhënave në paketat më të njohura të të dy gjuhëve. Dhe ndihmoni lexuesit të zotërojnë shpejt diçka që nuk e dinë ende. Për ata që shkruajnë në Python, zbuloni se si të bëni të njëjtën gjë në R dhe anasjelltas.
Gjatë artikullit do të analizojmë sintaksën e paketave më të njohura në R. Këto janë paketat e përfshira në bibliotekë tidyversedhe gjithashtu paketën data.table. Dhe krahasoni sintaksën e tyre me pandas, paketa më e njohur e analizës së të dhënave në Python.
Ne do të kalojmë hap pas hapi në të gjithë rrugën e analizës së të dhënave nga ngarkimi i tyre deri te kryerja e funksioneve analitike të dritares duke përdorur Python dhe R.
Përmbajtje
Ky artikull mund të përdoret si një fletë mashtrimi nëse keni harruar se si të kryeni disa operacione të përpunimit të të dhënave në një nga paketat në shqyrtim.
Nëse jeni të interesuar për analizën e të dhënave, mund të gjeni timin telegram и youtube kanalet. Pjesa më e madhe e përmbajtjes i kushtohet gjuhës R.
Dallimet kryesore sintaksore midis R dhe Python
Për ta bërë më të lehtë për ju kalimin nga Python në R, ose anasjelltas, unë do të jap disa pika kryesore që duhet t'i kushtoni vëmendje.
Qasja në funksionet e paketës
Pasi një paketë ngarkohet në R, nuk keni nevojë të specifikoni emrin e paketës për të hyrë në funksionet e saj. Në shumicën e rasteve kjo nuk pranohet në R, por është e pranueshme. Nuk duhet të importoni fare një paketë nëse keni nevojë për një nga funksionet e saj në kodin tuaj, por thjesht thirreni atë duke specifikuar emrin e paketës dhe emrin e funksionit. Ndarësi ndërmjet emrave të paketave dhe funksioneve në R është një dy pika. package_name::function_name().
Në Python, përkundrazi, konsiderohet klasik thirrja e funksioneve të një pakete duke specifikuar në mënyrë eksplicite emrin e saj. Kur një paketë shkarkohet, zakonisht i jepet një emër i shkurtuar, p.sh. pandas zakonisht përdoret një pseudonim pd. Një funksion i paketës arrihet përmes një pike package_name.function_name().
Detyrë
Në R, është e zakonshme të përdoret një shigjetë për t'i caktuar një vlerë një objekti. obj_name <- value, megjithëse lejohet një shenjë e vetme barazimi, shenja e vetme e barazimit në R përdoret kryesisht për të kaluar vlerat në argumentet e funksionit.
Në Python, caktimi bëhet ekskluzivisht me një shenjë të vetme barazimi obj_name = value.
Indeksimi
Këtu ka edhe dallime mjaft domethënëse. Në R, indeksimi fillon në një dhe përfshin të gjithë elementët e specifikuar në diapazonin që rezulton,
Në Python, indeksimi fillon nga zero dhe diapazoni i zgjedhur nuk përfshin elementin e fundit të specifikuar në indeks. Pra dizajn x[i:j] në Python nuk do të përfshijë elementin j.
Ka edhe dallime në indeksimin negativ, në shënimin R x[-1] do të kthejë të gjithë elementët e vektorit përveç atij të fundit. Në Python, një shënim i ngjashëm do të kthejë vetëm elementin e fundit.
Metodat dhe OOP
R zbaton OOP në mënyrën e vet, kam shkruar për këtë në artikull "OOP në gjuhën R (pjesa 1): klasa S3". Në përgjithësi, R është një gjuhë funksionale dhe gjithçka në të është e ndërtuar mbi funksione. Prandaj, për shembull, për përdoruesit e Excel, shkoni te tydiverse do të jetë më e lehtë se pandas. Edhe pse ky mund të jetë mendimi im subjektiv.
Me pak fjalë, objektet në R nuk kanë metoda (nëse flasim për klasa S3, por ka zbatime të tjera OOP që janë shumë më pak të zakonshme). Ekzistojnë vetëm funksione të përgjithësuara që i përpunojnë ato ndryshe në varësi të klasës së objektit.
Tubacionet
Ndoshta ky është emri për pandas Nuk do të jetë plotësisht e saktë, por do të përpiqem të shpjegoj kuptimin.
Për të mos kursyer llogaritjet e ndërmjetme dhe për të mos prodhuar objekte të panevojshme në mjedisin e punës, mund të përdorni një lloj tubacioni. Ato. kaloni rezultatin e një llogaritjeje nga një funksion në tjetrin dhe mos ruani rezultate të ndërmjetme.
Le të marrim shembullin e kodit të mëposhtëm, ku ruajmë llogaritjet e ndërmjetme në objekte të veçanta:
Kemi kryer 3 operacione radhazi, dhe rezultati i secilit është ruajtur në një objekt të veçantë. Por në fakt, ne nuk kemi nevojë për këto objekte të ndërmjetme.
Ose edhe më keq, por më i njohur për përdoruesit e Excel.
obj <- func3(func2(func1()))
Në këtë rast, ne nuk i ruajmë rezultatet e llogaritjes së ndërmjetme, por leximi i kodit me funksione të ndërthurura është jashtëzakonisht i papërshtatshëm.
Ne do të shikojmë disa qasje për përpunimin e të dhënave në R, dhe ato kryejnë operacione të ngjashme në mënyra të ndryshme.
Tubacionet në bibliotekë tidyverse zbatuar nga operatori %>%.
obj <- func1() %>%
func2() %>%
func3()
Kështu marrim rezultatin e punës func1() dhe ia kaloni si argumentin e parë func2(), atëherë ne kalojmë rezultatin e kësaj llogaritjeje si argument të parë func3(). Dhe në fund, ne shkruajmë të gjitha llogaritjet e kryera në objekt obj <-.
Të gjitha sa më sipër janë ilustruar më mirë se fjalët nga kjo meme:
В data.table zinxhirët përdoren në mënyrë të ngjashme.
Në secilën prej kllapave katrore mund të përdorni rezultatin e operacionit të mëparshëm.
В pandas veprime të tilla ndahen me një pikë.
obj = df.fun1().fun2().fun3()
ato. marrim tryezën tonë df dhe përdorni metodën e saj fun1(), pastaj aplikojmë metodën në rezultatin e fituar fun2(), pas fun3(). Rezultati që rezulton ruhet në një objekt obj .
Strukturat e të dhënave
Strukturat e të dhënave në R dhe Python janë të ngjashme, por kanë emra të ndryshëm.
Përshkrim
Emri në R
Emri në Python/panda
Struktura e tabelës
data.frame, data.tabela, tibble
Korniza e të Dhënave
Lista njëdimensionale e vlerave
vektor
Seri në panda ose listë në Python të pastër
Struktura jo tabelare me shumë nivele
Listë
fjalor (dikt)
Më poshtë do të shikojmë disa veçori dhe ndryshime të tjera në sintaksë.
Disa fjalë për paketat që do të përdorim
Së pari, do t'ju tregoj pak për paketat me të cilat do të njiheni gjatë këtij artikulli.
e rregullt
Faqja zyrtare: tidyverse.org
Bibliotekë tidyverse shkruar nga Hedley Wickham, shkencëtare e lartë kërkimore në RStudio. tidyverse përbëhet nga një grup mbresëlënës paketash që thjeshtojnë përpunimin e të dhënave, 5 prej të cilave përfshihen në 10 shkarkimet më të mira nga depoja CRAN.
Thelbi i bibliotekës përbëhet nga paketat e mëposhtme: ggplot2, dplyr, tidyr, readr, purrr, tibble, stringr, forcats. Secila prej këtyre paketave ka për qëllim zgjidhjen e një problemi specifik. Për shembull dplyr krijuar për manipulimin e të dhënave, tidyr për të sjellë të dhënat në një formë të rregullt, stringr thjeshton punën me vargje, dhe ggplot2 është një nga mjetet më të njohura të vizualizimit të të dhënave.
avantazh tidyverse është thjeshtësia dhe sintaksa e lehtë për t'u lexuar, e cila në shumë mënyra është e ngjashme me gjuhën e pyetjeve SQL.
Publikimi i parë i bibliotekës u bë në vitin 2006.
Sintaksa e paketës nuk është aq e përshtatshme sa në tidyverse dhe të kujton më shumë kornizat klasike të të dhënave në R, por në të njëjtën kohë zgjerohet ndjeshëm në funksionalitet.
Të gjitha manipulimet me tabelën në këtë paketë përshkruhen në kllapa katrore dhe nëse përktheni sintaksën data.table në SQL, ju merrni diçka si kjo: data.table[ WHERE, SELECT, GROUP BY ]
Fuqia e kësaj pakete është shpejtësia e përpunimit të sasive të mëdha të të dhënave.
Emri i bibliotekës vjen nga termi ekonometrik "të dhënat e panelit", i përdorur për të përshkruar grupe informacionesh të strukturuara shumëdimensionale.
Nga autori pandas është amerikani Wes McKinney.
Kur bëhet fjalë për analizën e të dhënave në Python, është e barabartë pandas Nr. Një paketë shumëfunksionale, e nivelit të lartë që ju lejon të kryeni çdo manipulim me të dhënat, nga ngarkimi i të dhënave nga çdo burim deri te vizualizimi i tyre.
Instalimi i paketave shtesë
Paketat e diskutuara në këtë artikull nuk përfshihen në shpërndarjet bazë R dhe Python. Edhe pse ka një paralajmërim të vogël, nëse keni instaluar shpërndarjen Anaconda, atëherë instaloni shtesë pandas nuk kërkohet
Instalimi i paketave në R
Nëse e keni hapur të paktën një herë mjedisin e zhvillimit RStudio, me siguri tashmë e dini se si të instaloni paketën e kërkuar në R. Për të instaluar paketat, përdorni komandën standarde install.packages() duke e drejtuar direkt në vetë R.
# установка пакетов
install.packages("vroom")
install.packages("readr")
install.packages("dplyr")
install.packages("data.table")
Pas instalimit, paketat duhet të lidhen, për të cilat në shumicën e rasteve përdoret komanda library().
# подключение или импорт пакетов в рабочее окружение
library(vroom)
library(readr)
library(dplyr)
library(data.table)
Instalimi i paketave në Python
Pra, nëse keni të instaluar Python të pastër, atëherë pandas duhet ta instaloni manualisht. Hapni një linjë komande ose terminal, në varësi të sistemit tuaj operativ dhe futni komandën e mëposhtme.
pip install pandas
Më pas kthehemi në Python dhe importojmë paketën e instaluar me komandën import.
import pandas as pd
Ngarkimi i të dhënave
Minimi i të dhënave është një nga hapat më të rëndësishëm në analizën e të dhënave. Si Python ashtu edhe R, nëse dëshironi, ju ofrojnë mundësi të gjera për të marrë të dhëna nga çdo burim: skedarë lokalë, skedarë nga Interneti, faqet e internetit, të gjitha llojet e bazave të të dhënave.
Gjatë gjithë artikullit ne do të përdorim disa grupe të dhënash:
Dy shkarkime nga Google Analytics.
Të dhënat e pasagjerëve të Titanic.
Të gjitha të dhënat janë tek unë GitHub në formën e skedarëve csv dhe tsv. Nga do t'i kërkojmë?
Ngarkimi i të dhënave në R: tidyverse, vroom, reader
Për të ngarkuar të dhënat në një bibliotekë tidyverse Ka dy paketa: vroom, readr. vroom më moderne, por në të ardhmen paketat mund të kombinohen.
vroom vs lexues
Çfarë bën lirimi i vroom do të thotë për readr? Tani për tani ne planifikojmë t'i lëmë të dy paketat të evoluojnë veçmas, por ka të ngjarë t'i bashkojmë paketat në të ardhmen. Një disavantazh i leximit dembel të vroom është se disa probleme të të dhënave nuk mund të raportohen përpara, kështu që mënyra më e mirë për t'i unifikuar ato kërkon pak mendim.
vroom vs lexues
Çfarë do të thotë lirim? vroom për readr? Për momentin planifikojmë t'i zhvillojmë të dyja paketat veç e veç, por me siguri do t'i kombinojmë në të ardhmen. Një nga disavantazhet e leximit dembel vroom është se disa probleme me të dhënat nuk mund të raportohen paraprakisht, kështu që ju duhet të mendoni se si t'i kombinoni ato më mirë.
Në këtë artikull do të shikojmë të dy paketat e ngarkimit të të dhënave:
Në paketë vroom, pavarësisht nga formati i të dhënave csv / tsv, ngarkimi kryhet nga funksioni me të njëjtin emër vroom(), në paketim readr ne përdorim një funksion të ndryshëm për çdo format read_tsv() и read_csv().
Ngarkimi i të dhënave në R: data.tabela
В data.table ekziston një funksion për ngarkimin e të dhënave fread().
Nëse krahasojmë me paketat R, atëherë në këtë rast sintaksa është më afër pandas do të readr, sepse pandas mund të kërkojë të dhëna nga kudo, dhe ka një familje të tërë funksionesh në këtë paketë read_*().
read_csv()
read_excel()
read_sql()
read_json()
read_html()
Dhe shumë funksione të tjera të krijuara për të lexuar të dhëna nga formate të ndryshme. Por për qëllimet tona mjafton read_table() ose read_csv() duke përdorur argumentin shtator për të specifikuar ndarësin e kolonës.
Tabela kolosal, të cilën e ngarkuam, ka një fushë Seks, e cila ruan identifikuesin gjinor të pasagjerit.
Por për një prezantim më të përshtatshëm të të dhënave për sa i përket gjinisë së pasagjerëve, duhet të përdorni emrin dhe jo kodin gjinor.
Për ta bërë këtë, ne do të krijojmë një drejtori të vogël, një tabelë në të cilën do të ketë vetëm 2 kolona (kodi dhe emri i gjinisë) dhe 2 rreshta, përkatësisht.
Krijimi i një kornize të dhënash në R: tidyverse, dplyr
Në shembullin e kodit më poshtë, ne krijojmë kornizën e dëshiruar të të dhënave duke përdorur funksionin tibble() .
Krijimi i një kornize të dhënash në Python: pandas
В pandas Krijimi i kornizave kryhet në disa faza, fillimisht krijojmë një fjalor dhe më pas e shndërrojmë fjalorin në një kornizë të dhënash.
Krijimi i një kornize të dhënash në Python: pandas
# создаём дата фрейм
gender_dict = {'id': [1, 2],
'gender': ["female", "male"]}
# преобразуем словарь в датафрейм
gender = pd.DataFrame.from_dict(gender_dict)
Përzgjedhja e kolonave
Tabelat me të cilat punoni mund të përmbajnë dhjetëra apo edhe qindra kolona të dhënash. Por për të kryer analiza, si rregull, nuk ju nevojiten të gjitha kolonat që janë të disponueshme në tabelën burimore.
Prandaj, një nga operacionet e para që do të kryeni me tabelën burimore është pastrimi i saj nga informacioni i panevojshëm dhe lirimi i memories që zë ky informacion.
Zgjedhja e kolonave në R: tidyverse, dplyr
sintaksë dplyr është shumë e ngjashme me gjuhën e pyetjeve SQL, nëse jeni njohur me të, do ta zotëroni shpejt këtë paketë.
Për të zgjedhur kolonat, përdorni funksionin select().
Më poshtë janë shembuj të kodit me të cilin mund të zgjidhni kolonat në mënyrat e mëposhtme:
Renditja e emrave të kolonave të kërkuara
Referojuni emrave të kolonave duke përdorur shprehje të rregullta
Sipas llojit të të dhënave ose çdo veçori tjetër të të dhënave të përfshira në kolonë
Zgjedhja e kolonave në 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)
Zgjedhja e kolonave në R: të dhënat.tabela
Të njëjtat operacione në data.table janë kryer disi ndryshe, në fillim të artikullit kam dhënë një përshkrim se cilat argumente janë brenda kllapave katrore në data.table.
DT[i,j,by]
Ku:
i - ku, d.m.th. filtrim sipas rreshtave
j - zgjidhni|përditësoni|bëj, d.m.th. zgjedhjen e kolonave dhe konvertimin e tyre
nga - grupimi i të dhënave
Ndryshore .SD ju lejon të përdorni të gjitha kolonat, dhe .SDcols filtroni kolonat e kërkuara duke përdorur shprehje të rregullta ose funksione të tjera për të filtruar emrat e kolonave që ju nevojiten.
Përzgjedhja e kolonave në Python, panda
Për të zgjedhur kolonat sipas emrit në pandas mjafton të jepet një listë me emrat e tyre. Dhe për të zgjedhur ose përjashtuar kolonat me emër duke përdorur shprehje të rregullta, duhet të përdorni funksionet drop() и filter(), dhe argumenti aks=1, me të cilën tregoni se është e nevojshme të përpunohen kolonat dhe jo rreshtat.
Për të zgjedhur një fushë sipas llojit të të dhënave, përdorni funksionin select_dtypes(), dhe në argumente përfshin ose përjashtoj kaloni një listë të llojeve të të dhënave që korrespondojnë me cilat fusha duhet të zgjidhni.
Përzgjedhja e kolonave në Python: panda
# Выбор полей по названию
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'])
Filtrimi i rreshtave
Për shembull, tabela burimore mund të përmbajë të dhëna disa vjeçare, por ju duhet vetëm të analizoni muajin e kaluar. Përsëri, linjat shtesë do të ngadalësojnë procesin e përpunimit të të dhënave dhe do të bllokojnë kujtesën e kompjuterit.
Filtrimi i rreshtave në R: tydyverse, dplyr
В dplyr funksioni përdoret për të filtruar rreshtat filter(). Ai merr një kornizë të dhënash si argumentin e parë, pastaj ju listoni kushtet e filtrimit.
Kur shkruani shprehje logjike për të filtruar një tabelë, në këtë rast, specifikoni emrat e kolonave pa thonjëza dhe pa deklaruar emrin e tabelës.
Kur përdorni shprehje të shumta logjike për të filtruar, përdorni operatorët e mëposhtëm:
& ose presje - logjike DHE
| - logjik OSE
Filtrimi i rreshtave në R: dplyr
# фильтрация строк
## dplyr
### фильтрация строк по одному условию
filter(ga_nov, source == "google")
### фильтр по двум условиям соединённым логическим и
filter(ga_nov, source == "google" & sessions >= 10)
### фильтр по двум условиям соединённым логическим или
filter(ga_nov, source == "google" | sessions >= 10)
Filtrimi i rreshtave në R: data.tabela
Siç kam shkruar tashmë më lart, në data.table Sintaksa e konvertimit të të dhënave është e mbyllur në kllapa katrore.
DT[i,j,by]
Ku:
i - ku, d.m.th. filtrim sipas rreshtave
j - zgjidhni|përditësoni|bëj, d.m.th. zgjedhjen e kolonave dhe konvertimin e tyre
nga - grupimi i të dhënave
Argumenti përdoret për të filtruar rreshtat i, e cila ka pozicionin e parë në kllapa katrore.
Kolonat aksesohen në shprehje logjike pa thonjëza dhe pa specifikuar emrin e tabelës.
Shprehjet logjike lidhen me njëra-tjetrën në të njëjtën mënyrë si në dplyr nëpërmjet operatorëve & dhe |.
Filtrimi i rreshtave në R: data.tabela
## data.table
### фильтрация строк по одному условию
ga_nov[source == "google"]
### фильтр по двум условиям соединённым логическим и
ga_nov[source == "google" & sessions >= 10]
### фильтр по двум условиям соединённым логическим или
ga_nov[source == "google" | sessions >= 10]
Filtrimi i vargjeve në Python: panda
Filtro sipas rreshtave brenda pandas të ngjashme me filtrimin në data.table, dhe bëhet në kllapa katrore.
Në këtë rast, qasja në kolona kryhet domosdoshmërisht duke treguar emrin e kornizës së të dhënave; atëherë emri i kolonës mund të tregohet gjithashtu në thonjëza në kllapa katrore (shembulldf['col_name']), ose pa kuota pas periudhës (shembulldf.col_name).
Nëse keni nevojë të filtroni një kornizë të dhënash sipas disa kushteve, çdo kusht duhet të vendoset në kllapa. Kushtet logjike lidhen me njëra-tjetrën nga operatorët & и |.
Filtrimi i vargjeve në Python: panda
# Фильтрация строк таблицы
### фильтрация строк по одному условию
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)]
Grupimi dhe grumbullimi i të dhënave
Një nga operacionet më të përdorura në analizën e të dhënave është grupimi dhe grumbullimi.
Sintaksa për kryerjen e këtyre operacioneve është e shpërndarë në të gjitha paketat që shqyrtojmë.
Në këtë rast, ne do të marrim një kornizë të dhënash si shembull kolosal, dhe llogaritni numrin dhe koston mesatare të biletave në varësi të klasës së kabinës.
Grupimi dhe grumbullimi i të dhënave në R: tidyverse, dplyr
В dplyr funksioni përdoret për grupim group_by(), dhe për grumbullim summarise(). Në fakt, dplyr ekziston një familje e tërë funksionesh summarise_*(), por qëllimi i këtij artikulli është të krahasojë sintaksën bazë, kështu që ne nuk do të hyjmë në një xhungël të tillë.
Në funksion group_by() kaluam tabelën si argumentin e parë kolosal, dhe më pas tregoi fushën Pklasa, me anë të së cilës do të grupojmë tabelën tonë. Rezultati i këtij operacioni duke përdorur operatorin %>% kalohet si argumenti i parë i funksionit summarise(), dhe shtoi edhe 2 fusha të tjera: pasagjerët и çmimi_mesatar. Në të parën, duke përdorur funksionin length() llogaritur numrin e biletave, dhe në të dytën duke përdorur funksionin mean() mori çmimin mesatar të biletës.
Grupimi dhe grumbullimi i të dhënave në R: të dhëna.tabela
В data.table argumenti përdoret për grumbullim j e cila ka një pozicion të dytë në kllapa katrore dhe për grupim by ose keyby, që zënë vendin e tretë.
Lista e funksioneve të grumbullimit në këtë rast është identike me atë të përshkruar në dplyr, sepse këto janë funksione nga sintaksa bazë R.
Grupimi dhe grumbullimi në R: të dhëna.tabela
## data.table
### фильтрация строк по одному условию
titanic[, .(passangers = length(PassengerId),
avg_price = mean(Fare)),
by = Pclass]
Grupimi dhe grumbullimi i të dhënave në Python: panda
Grupimi në pandas të ngjashme me dplyr, por grumbullimi nuk është i ngjashëm me dplyr jo në data.table.
Për të grupuar, përdorni metodën groupby(), në të cilën duhet të kaloni një listë kolonash me të cilat do të grupohet korniza e të dhënave.
Për grumbullim mund të përdorni metodën agg()që pranon një fjalor. Çelësat e fjalorit janë kolonat në të cilat do të aplikoni funksionet e grumbullimit, dhe vlerat janë emrat e funksioneve të grumbullimit.
Funksionet e grumbullimit:
sum() - përmbledhje
min() / max() - vlera minimale dhe maksimale
mean() - mesatare
median() - mesatare
count() - sasi
Funksion reset_index() në shembullin e mëposhtëm përdoret për të rivendosur indekset e mbivendosura që pandas parazgjedhur në pas grumbullimit të të dhënave.
Simbol ju lejon të kaloni në rreshtin tjetër.
Grupimi dhe grumbullimi në Python: panda
# группировка и агрегация данных
titanic.groupby(["Pclass"]).
agg({'PassengerId': 'count', 'Fare': 'mean'}).
reset_index()
Bashkimi vertikal i tabelave
Një operacion në të cilin ju bashkoni dy ose më shumë tabela të së njëjtës strukturë. Të dhënat që ngarkuam përmbajnë tabela ga_nov и ga_dhjetor. Këto tabela janë identike në strukturë, d.m.th. kanë të njëjtat kolona dhe llojet e të dhënave në këto kolona.
Ky është një ngarkim nga Google Analytics për muajt nëntor dhe dhjetor, në këtë seksion do t'i kombinojmë këto të dhëna në një tabelë.
Lidhja vertikale e tabelave në R: tidyverse, dplyr
В dplyr Ju mund të kombinoni 2 tabela në një duke përdorur funksionin bind_rows(), kalimi i tabelave si argumente të tij.
Filtrimi i rreshtave në R: dplyr
# Вертикальное объединение таблиц
## dplyr
bind_rows(ga_nov, ga_dec)
Bashkimi vertikal i tabelave në R: të dhëna.tabela
Nuk është gjithashtu asgjë e komplikuar, le ta përdorim rbind().
Filtrimi i rreshtave në R: data.tabela
## data.table
rbind(ga_nov, ga_dec)
Bashkimi vertikal i tabelave në Python: panda
В pandas funksioni përdoret për bashkimin e tabelave concat(), në të cilën duhet të kaloni një listë kornizash për t'i kombinuar ato.
Filtrimi i vargjeve në Python: panda
# вертикальное объединение таблиц
pd.concat([ga_nov, ga_dec])
Bashkimi horizontal i tabelave
Një operacion në të cilin kolonat nga e dyta shtohen në tabelën e parë me çelës. Shpesh përdoret kur pasurohet një tabelë faktesh (për shembull, një tabelë me të dhëna shitjesh) me disa të dhëna referencë (për shembull, kostoja e një produkti).
Ekzistojnë disa lloje të lidhjeve:
Në tabelën e ngarkuar më parë kolosal kemi një kolonë Seks, që korrespondon me kodin gjinor të pasagjerit:
1 - femër
2 - mashkull
Gjithashtu, ne kemi krijuar një tabelë - një libër referencë gjini. Për një prezantim më të përshtatshëm të të dhënave për gjininë e pasagjerëve, duhet të shtojmë emrin e gjinisë nga drejtoria. gjini te tavolina kolosal.
Lidhja horizontale e tabelës në R: tidyverse, dplyr
В dplyr Ekziston një familje e tërë funksionesh për bashkimin horizontal:
inner_join()
left_join()
right_join()
full_join()
semi_join()
nest_join()
anti_join()
Më e përdorura në praktikën time është left_join().
Si dy argumentet e para, funksionet e listuara më sipër marrin dy tabela për t'u bashkuar dhe si argumenti i tretë by ju duhet të specifikoni kolonat për t'u bashkuar.
Bashkimi horizontal i tabelës në R: dplyr
# объединяем таблицы
left_join(titanic, gender,
by = c("Sex" = "id"))
Bashkimi horizontal i tabelave në R: të dhëna.tabela
В data.table Ju duhet të bashkoni tabelat me çelës duke përdorur funksionin merge().
Funksioni i argumenteve për merge() në të dhënat.tabela
x, y - Tabelat për bashkim
nga — Kolona që është çelësi për t'u bashkuar nëse ka të njëjtin emër në të dyja tabelat
by.x, by.y - Emrat e kolonave që do të bashkohen, nëse kanë emra të ndryshëm në tabela
all, all.x, all.y — Join type, all do t'i kthejë të gjitha rreshtat nga të dyja tabelat, all.x korrespondon me operacionin LEFT JOIN (do të lërë të gjitha rreshtat e tabelës së parë), all.y - korrespondon me Operacioni RIGHT JOIN (do të lërë të gjitha rreshtat e tabelës së dytë).
Bashkimi horizontal i tabelave në R: të dhëna.tabela
Si dhe në data.table, në pandas funksioni përdoret për bashkimin e tabelave merge().
Argumentet e funksionit merge() në panda
si — Lloji i lidhjes: majtas, djathtas, i jashtëm, i brendshëm
on — Kolona që është një çelës nëse ka të njëjtin emër në të dyja tabelat
left_on, right_on — Emrat e kolonave kryesore, nëse ato kanë emra të ndryshëm në tabela
Bashkimi horizontal i tabelës në Python: panda
# объединяем по ключу
titanic.merge(gender, how = "left", left_on = "Sex", right_on = "id")
Funksionet bazë të dritares dhe kolonat e llogaritura
Funksionet e dritares janë të ngjashme në kuptim me funksionet e grumbullimit, dhe gjithashtu përdoren shpesh në analizën e të dhënave. Por ndryshe nga funksionet e grumbullimit, funksionet e dritares nuk ndryshojnë numrin e rreshtave të kornizës së të dhënave dalëse.
Në thelb, duke përdorur funksionin e dritares, ne e ndajmë kornizën e të dhënave hyrëse në pjesë sipas disa kritereve, d.m.th. nga vlera e një fushe ose disa fushave. Dhe ne kryejmë veprime aritmetike në secilën dritare. Rezultati i këtyre operacioneve do të kthehet në çdo rresht, d.m.th. pa ndryshuar numrin e përgjithshëm të rreshtave në tabelë.
Për shembull, le të marrim tabelën kolosal. Mund të llogarisim se sa përqind ishte kostoja e secilës biletë brenda klasës së saj të kabinës.
Për ta bërë këtë, ne duhet të marrim në secilën linjë koston totale të një bilete për klasën aktuale të kabinës së cilës i përket bileta në këtë linjë, më pas të pjesëtojmë koston e secilës biletë me koston totale të të gjitha biletave të së njëjtës klasë kabine. .
Funksionet e dritares në R: tidyverse, dplyr
Për të shtuar kolona të reja, pa përdorur grupimin e rreshtave, në dplyr shërben funksionin mutate().
Ju mund ta zgjidhni problemin e përshkruar më sipër duke grupuar të dhënat sipas fushës Pklasa dhe përmbledhja e fushës në një kolonë të re tarifë. Më pas, anuloni tabelën dhe ndani vlerat e fushës tarifë për atë që ndodhi në hapin e mëparshëm.
Algoritmi i zgjidhjes mbetet i njëjtë si në dplyr, duhet ta ndajmë tabelën në dritare sipas fushës Pklasa. Vendosni në një kolonë të re shumën për grupin që korrespondon me çdo rresht dhe shtoni një kolonë në të cilën llogarisim pjesën e kostos së secilës biletë në grupin e saj.
Për të shtuar kolona të reja në data.table operatori i pranishëm :=. Më poshtë është një shembull i zgjidhjes së një problemi duke përdorur paketën data.table
Funksionet e dritares në R: të dhënat.tabela
titanic[,c("Pclass_cost","ticket_fare_rate") := .(sum(Fare), Fare / Pclass_cost),
by = Pclass]
Funksionet e dritares në Python: panda
Një mënyrë për të shtuar një kolonë të re pandas - përdorni funksionin assign(). Për të përmbledhur koston e biletave sipas klasës së kabinës, pa grupuar rreshtat, do të përdorim funksionin transform().
Më poshtë është një shembull i një zgjidhjeje në të cilën ne shtojmë në tabelë kolosal të njëjtat 2 kolona.
Tabela e korrespondencës së funksioneve dhe metodave
Më poshtë është një tabelë e korrespondencës midis metodave për kryerjen e operacioneve të ndryshme me të dhënat në paketat që kemi shqyrtuar.
Përshkrim
e rregullt
të dhëna.tabela
pandas
Ngarkimi i të dhënave vroom()/ readr::read_csv() / readr::read_tsv() fread() read_csv()
Krijimi i kornizave të të dhënave tibble() data.table() dict() + from_dict()
Përzgjedhja e kolonave select()
argument j, pozicioni i dytë në kllapa katrore
ne kalojmë listën e kolonave të kërkuara në kllapa katrore / drop() / filter() / select_dtypes()
Filtrimi i rreshtave filter()
argument i, pozicioni i parë në kllapa katrore
Ne rendisim kushtet e filtrimit në kllapa katrore / filter()
Grupimi dhe grumbullimi group_by() + summarise()
argumentet j + by groupby() + agg()
Bashkimi vertikal i tabelave (UNION) bind_rows() rbind() concat()
Bashkimi horizontal i tabelave (JOIN) left_join() / *_join() merge() merge()
Funksionet bazë të dritares dhe shtimi i kolonave të llogaritura group_by() + mutate()
argument j duke përdorur operatorin := + argument by transform() + assign()
Përfundim
Ndoshta në artikull përshkrova jo implementimet më optimale të përpunimit të të dhënave, kështu që do të jem i lumtur nëse korrigjoni gabimet e mia në komente, ose thjesht plotësoni informacionin e dhënë në artikull me teknika të tjera për të punuar me të dhëna në R / Python.
Siç shkrova më lart, qëllimi i artikullit nuk ishte të impononte mendimin se cila gjuhë është më e mirë, por të thjeshtonte mundësinë për të mësuar të dyja gjuhët, ose, nëse është e nevojshme, të migronte midis tyre.
Nëse ju pëlqeu artikulli, do të jem i lumtur të kem pajtimtarë të rinj në tim youtube и telegram kanalet.
Опрос
Cilën nga paketat e mëposhtme përdorni në punën tuaj?
Në komente mund të shkruani arsyen e zgjedhjes suaj.
Vetëm përdoruesit e regjistruar mund të marrin pjesë në anketë. Hyni, te lutem
Cilën paketë të përpunimit të të dhënave përdorni (mund të zgjidhni disa opsione)