ProHoster > Blogi > antaminen > Mikä kieli valitaan tietojen käsittelyyn - R vai Python? Molemmat! Muutto pandasta tidyverseen ja data.tablein ja takaisin
Mikä kieli valitaan tietojen käsittelyyn - R vai Python? Molemmat! Muutto pandasta tidyverseen ja data.tablein ja takaisin
Haemalla R:tä tai Pythonia Internetistä löydät miljoonia artikkeleita ja kilometrejä keskusteluja aiheesta, kumpi on parempi, nopeampi ja kätevämpi työskennellä datan kanssa. Mutta valitettavasti kaikki nämä artikkelit ja kiistat eivät ole erityisen hyödyllisiä.
Tämän artikkelin tarkoituksena on vertailla perustietojenkäsittelytekniikoita molempien kielten suosituimmissa paketeissa. Ja auta lukijoita nopeasti hallitsemaan jotain, jota he eivät vielä tiedä. Pythonilla kirjoittaville kannattaa ottaa selvää, kuinka sama asia tehdään R:llä ja päinvastoin.
Artikkelin aikana analysoimme R:n suosituimpien pakettien syntaksia. Nämä ovat kirjastoon sisältyvät paketit tidyverseja myös paketti data.table. Ja vertaa niiden syntaksia pandas, Pythonin suosituin data-analyysipaketti.
Käymme askel askeleelta läpi koko data-analyysin polun lataamisesta analyyttisten ikkunatoimintojen suorittamiseen Pythonilla ja R:llä.
Pitoisuus
Tätä artikkelia voidaan käyttää huijauslehtenä, jos olet unohtanut, kuinka jossakin tarkasteltavissa olevista paketeista suoritetaan tietojenkäsittelytoiminto.
Jos olet kiinnostunut data-analyysistä, saatat löytää minun sähke и youtube kanavia. Suurin osa sisällöstä on omistettu R-kielelle.
Tärkeimmät syntaksierot R:n ja Pythonin välillä
Jotta voit helpommin vaihtaa Pythonista R: hen tai päinvastoin, annan muutaman pääkohdan, joihin sinun on kiinnitettävä huomiota.
Pakettitoimintojen käyttäminen
Kun paketti on ladattu R:hen, sinun ei tarvitse määrittää paketin nimeä käyttääksesi sen toimintoja. Useimmissa tapauksissa tämä ei ole yleistä R:ssä, mutta se on hyväksyttävää. Sinun ei tarvitse tuoda pakettia ollenkaan, jos tarvitset jonkin sen toiminnoista koodiisi, vaan kutsu se yksinkertaisesti määrittämällä paketin nimi ja funktion nimi. Erotin paketin ja funktion nimien välillä R:ssä on kaksoispiste. package_name::function_name().
Pythonissa sitä vastoin pidetään klassisena kutsua paketin funktioita nimenomaisesti määrittämällä sen nimi. Kun paketti ladataan, sille annetaan yleensä lyhennetty nimi, esim. pandas yleensä käytetään pseudonyymiä pd. Pakettitoimintoon pääsee pisteen kautta package_name.function_name().
Tehtävä
R:ssä on yleistä käyttää nuolta arvon määrittämiseen objektille. obj_name <- value, vaikka yksittäinen yhtäläisyysmerkki on sallittu, yhtä yhtäsuuruusmerkkiä R:ssä käytetään ensisijaisesti arvojen välittämiseen funktion argumenteille.
Pythonissa määritys tehdään yksinomaan yhdellä yhtäläisyysmerkillä obj_name = value.
indeksointi
Tässä on myös melko merkittäviä eroja. R:ssä indeksointi alkaa yhdestä ja sisältää kaikki määritetyt elementit tuloksena olevalla alueella,
Pythonissa indeksointi alkaa nollasta, eikä valittu alue sisällä viimeistä indeksissä määritettyä elementtiä. Suunnittelua siis x[i:j] Pythonissa ei sisällä j-elementtiä.
Myös negatiivisessa indeksoinnissa R-merkinnöissä on eroja x[-1] palauttaa kaikki vektorin elementit paitsi viimeinen. Pythonissa samanlainen merkintä palauttaa vain viimeisen elementin.
Menetelmät ja OOP
R toteuttaa OOP:n omalla tavallaan, kirjoitin tästä artikkelissa "OOP R-kielellä (osa 1): S3-luokat". Yleensä R on toiminnallinen kieli, ja kaikki siinä on funktioiden varassa. Siksi esimerkiksi Excelin käyttäjille siirry osoitteeseen tydiverse se on helpompaa kuin pandas. Vaikka tämä saattaa olla minun subjektiivinen mielipiteeni.
Lyhyesti sanottuna R:n objekteissa ei ole menetelmiä (jos puhumme S3-luokista, mutta on muita OOP-toteutuksia, jotka ovat paljon harvinaisempia). On olemassa vain yleisiä funktioita, jotka käsittelevät niitä eri tavalla objektin luokasta riippuen.
Putket
Ehkä tämä on nimi pandas Se ei ole täysin oikein, mutta yritän selittää merkityksen.
Voit käyttää eräänlaista putkistoa, jotta et säästäisi välilaskutoimituksia ja et tuottaisi tarpeettomia esineitä työympäristössä. Nuo. siirtää laskutoimituksen tulos funktiosta toiseen, äläkä tallenna välituloksia.
Otetaan seuraava koodiesimerkki, jossa tallennetaan välilaskelmat erillisiin objekteihin:
Otamme siis työn tuloksen func1() ja anna se ensimmäisenä argumenttina func2(), välitämme tämän laskelman tuloksen ensimmäisenä argumenttina func3(). Ja lopuksi kirjoitamme kaikki suoritetut laskelmat objektiin obj <-.
Tämä meemi kuvaa kaikkea yllä olevaa sanaa paremmin:
Jokaisessa hakasulkeessa voit käyttää edellisen toiminnon tulosta.
В pandas Tällaiset toiminnot on erotettu pisteellä.
obj = df.fun1().fun2().fun3()
Nuo. otamme pöytämme df ja käyttää hänen menetelmäään fun1(), sitten sovelletaan menetelmää saatuun tulokseen fun2()jälkeen fun3(). Tuloksena oleva tulos tallennetaan objektiin obj .
Tietorakenteet
Tietorakenteet R:ssä ja Pythonissa ovat samanlaisia, mutta niillä on eri nimet.
Kuvaus
Nimi kirjassa R
Nimi kielellä Python/pandas
Taulukon rakenne
data.frame, data.table, tibble
Datakehys
Yksiulotteinen arvoluettelo
vektori
Sarjat pandoina tai lista puhtaalla Pythonilla
Monitasoinen ei-taulukkorakenne
Lista
Sanakirja (dikt)
Tarkastellaan joitain muita ominaisuuksia ja syntaksin eroja alla.
Muutama sana käyttämistämme paketeista
Ensin kerron sinulle hieman paketeista, joihin tulet tutustumaan tämän artikkelin aikana.
siistiä
Официальный сайт: tidyverse.org
kirjasto tidyverse kirjoittanut Hedley Wickham, RStudion vanhempi tutkija. tidyverse koostuu vaikuttavasta paketeista, jotka yksinkertaistavat tietojenkäsittelyä, joista 5 sisältyy 10 parhaan latauksen joukkoon CRAN-arkistosta.
Kirjaston ydin koostuu seuraavista paketeista: ggplot2, dplyr, tidyr, readr, purrr, tibble, stringr, forcats. Jokainen näistä paketeista on tarkoitettu tietyn ongelman ratkaisemiseen. Esimerkiksi dplyr luotu tietojen käsittelyä varten, tidyr tuoda tiedot siistiin muotoon, stringr yksinkertaistaa kielten kanssa työskentelyä ja ggplot2 on yksi suosituimmista datan visualisointityökaluista.
Etu tidyverse on yksinkertaisuus ja helppolukuinen syntaksi, joka on monella tapaa samanlainen kuin SQL-kyselykieli.
Tekijän toimesta data.table on Matt Dole H2O.ai:sta.
Kirjaston ensimmäinen julkaisu tapahtui vuonna 2006.
Paketin syntaksi ei ole yhtä kätevä kuin siinä tidyverse ja se muistuttaa enemmän R:n klassisia datakehyksiä, mutta samalla huomattavasti laajennettu toimintoja.
Kaikki tämän paketin taulukon käsittelyt on kuvattu hakasulkeissa, ja jos käännät syntaksin data.table SQL:ssä saat jotain tällaista: data.table[ WHERE, SELECT, GROUP BY ]
Tämän paketin vahvuus on suurten tietomäärien käsittelyn nopeus.
Kirjaston nimi tulee ekonometrisesta termistä ”paneelidata”, jota käytetään kuvaamaan moniulotteisia rakenteellisia tietojoukkoja.
Tekijän toimesta pandas on amerikkalainen Wes McKinney.
Mitä tulee Pythonin data-analyysiin, sama pandas Ei. Erittäin monitoiminen, korkeatasoinen paketti, jonka avulla voit suorittaa mitä tahansa tietojen käsittelyä tietojen lataamisesta mistä tahansa lähteestä sen visualisointiin.
Lisäpakettien asentaminen
Tässä artikkelissa käsitellyt paketit eivät sisälly R- ja Python-perusjakeluihin. Vaikka on pieni varoitus, jos olet asentanut Anaconda-jakelun, asenna se lisäksi pandas ei vaadita.
Pakettien asentaminen R
Jos olet avannut RStudio-kehitysympäristön vähintään kerran, tiedät luultavasti jo kuinka asentaa tarvittava paketti R:ssä. Asenna paketit käyttämällä vakiokomentoa install.packages() suorittamalla sen suoraan R:ssä itsessään.
# установка пакетов
install.packages("vroom")
install.packages("readr")
install.packages("dplyr")
install.packages("data.table")
Asennuksen jälkeen paketit on yhdistettävä, mihin useimmissa tapauksissa käytetään komentoa library().
# подключение или импорт пакетов в рабочее окружение
library(vroom)
library(readr)
library(dplyr)
library(data.table)
Pakettien asentaminen Pythonissa
Joten jos sinulla on puhdas Python asennettuna, niin pandas sinun on asennettava se manuaalisesti. Avaa komentorivi tai pääte käyttöjärjestelmästäsi riippuen ja kirjoita seuraava komento.
pip install pandas
Sitten palaamme Pythoniin ja tuomme asennetun paketin komennolla import.
import pandas as pd
Ladataan tietoja
Tiedon louhinta on yksi tärkeimmistä vaiheista data-analyysissä. Sekä Python että R tarjoavat haluttaessa laajat mahdollisuudet saada tietoja mistä tahansa lähteestä: paikallisista tiedostoista, tiedostoista Internetistä, verkkosivustoilta, kaikenlaisista tietokannoista.
Koko artikkelin aikana käytämme useita tietojoukkoja:
Kaksi latausta Google Analyticsista.
Titanicin matkustajatietojoukko.
Kaikki tiedot ovat minulla GitHub csv- ja tsv-tiedostoina. Mistä aiomme pyytää niitä?
Ladataan tietoja R:ään: tidyverse, vroom, readr
Tietojen lataaminen kirjastoon tidyverse Paketteja on kaksi: vroom, readr. vroom nykyaikaisempia, mutta jatkossa paketteja voidaan yhdistää.
vroom vs lukija
Mitä vapauttaminen tekee vroom tarkoittavat readr? Toistaiseksi aiomme antaa näiden kahden paketin kehittyä erikseen, mutta todennäköisesti yhdistämme paketit tulevaisuudessa. Yksi haittapuoli vroomin laiskalle lukemiselle on, että tiettyjä tietoongelmia ei voida ilmoittaa etukäteen, joten niiden yhdistäminen vaatii hieman pohdintaa.
vroom vs Readr
Mitä vapauttaminen tarkoittaa? vroom varten readr? Tällä hetkellä suunnittelemme molempien pakettien kehittämistä erikseen, mutta todennäköisesti yhdistämme ne jatkossa. Yksi laiskan lukemisen haitoista vroom Joitakin tiedoissa esiintyviä ongelmia ei voida raportoida etukäteen, joten sinun on mietittävä, kuinka ne parhaiten yhdistetään.
Tässä artikkelissa tarkastellaan molempia tiedonlatauspaketteja:
Paketissa vroom, riippumatta csv / tsv-tietomuodosta, lataus suoritetaan samannimisellä toiminnolla vroom(), paketissa readr käytämme eri toimintoa jokaiselle muodolle read_tsv() и read_csv().
Ladataan tietoja R:hen: data.table
В data.table on toiminto tietojen lataamista varten fread().
Jos verrataan R-paketteihin, niin tässä tapauksessa syntaksi on lähimpänä pandas tahto readrkoska pandas voi pyytää tietoja mistä tahansa, ja tässä paketissa on koko joukko toimintoja read_*().
read_csv()
read_excel()
read_sql()
read_json()
read_html()
Ja monia muita toimintoja, jotka on suunniteltu lukemaan tietoja eri muodoista. Mutta meidän tarkoituksiin se riittää read_table() tai read_csv() argumentin avulla syyskuu määrittääksesi sarakkeen erottimen.
В pandas Kehysten luominen tapahtuu useissa vaiheissa, ensin luodaan sanakirja ja sitten muunnetaan sanakirja tietokehykseksi.
Tietokehyksen luominen Pythonissa: pandas
# создаём дата фрейм
gender_dict = {'id': [1, 2],
'gender': ["female", "male"]}
# преобразуем словарь в датафрейм
gender = pd.DataFrame.from_dict(gender_dict)
Sarakkeiden valinta
Taulukot, joiden kanssa työskentelet, voivat sisältää kymmeniä tai jopa satoja tietosarakkeita. Mutta analyysin suorittamiseen et yleensä tarvitse kaikkia lähdetaulukossa olevia sarakkeita.
Siksi yksi ensimmäisistä toiminnoista, jotka suoritat lähdetaulukon kanssa, on tyhjentää se tarpeettomasta tiedosta ja vapauttaa näiden tietojen varaama muisti.
Sarakkeiden valinta R:ssä: tidyverse, dplyr
syntaksi dplyr on hyvin samanlainen kuin SQL-kyselykieli, jos olet perehtynyt siihen, hallitset tämän paketin nopeasti.
Valitse sarakkeet funktiolla select().
Alla on esimerkkejä koodeista, joilla voit valita sarakkeita seuraavilla tavoilla:
Vaadittujen sarakkeiden nimien luettelointi
Katso sarakkeiden nimiä käyttämällä säännöllisiä lausekkeita
Tietotyypin tai minkä tahansa muun sarakkeen sisältämien tietojen ominaisuuden mukaan
Sarakkeiden valinta 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:n sarakkeiden valinta: data.table
Samat toiminnot sisään data.table suoritetaan hieman eri tavalla, artikkelin alussa annoin kuvauksen siitä, mitkä argumentit ovat hakasulkeissa data.table.
DT[i,j,by]
Missä:
minä - missä, ts. suodatus rivien mukaan
j - valitse|päivitä|tee, ts. sarakkeiden valinta ja muuntaminen
tietojen ryhmittelyn mukaan
muuttuja .SD antaa sinun käyttää kaikkia sarakkeita ja .SDcols suodata tarvittavat sarakkeet säännöllisillä lausekkeilla tai muilla funktioilla suodattaaksesi tarvitsemiesi sarakkeiden nimet.
Sarakkeiden valinta Pythonissa, pandas
Sarakkeiden valitseminen nimen mukaan pandas riittää, kun annat luettelon heidän nimistään. Ja jos haluat valita tai sulkea pois sarakkeita nimen perusteella säännöllisten lausekkeiden avulla, sinun on käytettävä funktioita drop() и filter(), ja argumentti akseli = 1, jolla osoitat, että on tarpeen käsitellä sarakkeita rivien sijaan.
Voit valita kentän tietotyypin mukaan käyttämällä toimintoa select_dtypes(), ja argumentteihin sisältää tai sulkea välittää luettelon tietotyypeistä, jotka vastaavat valittavia kenttiä.
Sarakkeiden valinta Pythonissa: 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'])
Rivien suodatus
Esimerkiksi lähdetaulukko voi sisältää useiden vuosien tietoja, mutta sinun tarvitsee analysoida vain viimeinen kuukausi. Jälleen ylimääräiset rivit hidastavat tietojenkäsittelyprosessia ja tukkivat tietokoneen muistin.
Rivien suodatus R:ssä: tydyverse, dplyr
В dplyr funktiota käytetään rivien suodattamiseen filter(). Se ottaa datakehyksen ensimmäisenä argumenttina, minkä jälkeen luettelet suodatusehdot.
Kun kirjoitat loogisia lausekkeita taulukon suodattamiseksi, määritä tässä tapauksessa sarakkeiden nimet ilman lainausmerkkejä ja ilmoittamatta taulukon nimeä.
Kun käytät suodattamiseen useita loogisia lausekkeita, käytä seuraavia operaattoreita:
& tai pilkku - looginen JA
| - looginen TAI
Rivien suodatus R:ssä: dplyr
# фильтрация строк
## dplyr
### фильтрация строк по одному условию
filter(ga_nov, source == "google")
### фильтр по двум условиям соединённым логическим и
filter(ga_nov, source == "google" & sessions >= 10)
### фильтр по двум условиям соединённым логическим или
filter(ga_nov, source == "google" | sessions >= 10)
Rivien suodatus R:ssä: data.table
Kuten jo edellä kirjoitin, sisään data.table tietojen muunnossyntaksi on suljettu hakasulkeissa.
DT[i,j,by]
Missä:
minä - missä, ts. suodatus rivien mukaan
j - valitse|päivitä|tee, ts. sarakkeiden valinta ja muuntaminen
tietojen ryhmittelyn mukaan
Argumenttia käytetään rivien suodattamiseen i, jonka ensimmäinen sijainti on hakasulkeissa.
Sarakkeisiin päästään loogisilla lausekkeilla ilman lainausmerkkejä ja määrittelemättä taulukon nimeä.
Loogiset lausekkeet liittyvät toisiinsa samalla tavalla kuin kohdassa dplyr & ja |-operaattoreiden kautta.
Rivien suodatus R:ssä: data.table
## data.table
### фильтрация строк по одному условию
ga_nov[source == "google"]
### фильтр по двум условиям соединённым логическим и
ga_nov[source == "google" & sessions >= 10]
### фильтр по двум условиям соединённым логическим или
ga_nov[source == "google" | sessions >= 10]
Merkkijonojen suodatus Pythonissa: pandat
Suodata rivien mukaan pandas samanlainen kuin suodatus data.table, ja se tehdään hakasulkeissa.
Tässä tapauksessa pääsy sarakkeisiin tapahtuu välttämättä ilmoittamalla tietokehyksen nimi, jolloin sarakkeen nimi voidaan ilmoittaa myös lainausmerkeissä hakasulkeissa (esimerkkidf['col_name']), tai ilman lainausmerkkejä jakson jälkeen (esimerkkidf.col_name).
Jos sinun on suodatettava tietokehys useiden ehtojen mukaan, jokainen ehto on sijoitettava sulkeisiin. Loogiset ehdot yhdistetään toisiinsa operaattorien avulla & и |.
Merkkijonojen suodatus Pythonissa: pandat
# Фильтрация строк таблицы
### фильтрация строк по одному условию
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)]
Tietojen ryhmittely ja yhdistäminen
Yksi yleisimmin käytetyistä operaatioista data-analyysissä on ryhmittely ja aggregointi.
Näiden toimintojen suorittamisen syntaksi on hajallaan kaikkien tarkistamiemme pakettien kesken.
Tässä tapauksessa otamme esimerkkinä datakehyksen titaanimainenja laske lippujen lukumäärä ja keskihinta matkustamoluokan mukaan.
R:n tietojen ryhmittely ja yhdistäminen: tidyverse, dplyr
В dplyr funktiota käytetään ryhmittelyyn group_by(), ja yhdistämistä varten summarise(). Itse asiassa, dplyr toimintoja on kokonainen perhe summarise_*(), mutta tämän artikkelin tarkoituksena on verrata perussyntaksia, joten emme mene sellaiseen viidakkoon.
Toiminnassa group_by() ohitimme taulukon ensimmäisenä argumenttina titaanimainenja osoitti sitten kentän Luokka, jonka mukaan ryhmittelemme pöytämme. Tämän operaation tulos käyttämällä operaattoria %>% välitettiin funktion ensimmäisenä argumenttina summarise()ja lisäsi vielä 2 kenttää: matkustajia и keskihinta. Ensimmäisessä käyttämällä toimintoa length() laski lippujen lukumäärän ja toisessa funktion avulla mean() sai keskimääräisen lipun hinnan.
R:n tietojen ryhmittely ja yhdistäminen: data.table
В data.table argumenttia käytetään yhdistämiseen j jossa on toinen paikka hakasulkeissa, ja ryhmittelyä varten by tai keyby, jotka ovat kolmannella sijalla.
Aggregointifunktioiden luettelo on tässä tapauksessa identtinen kohdassa kuvatun kanssa dplyr, koska nämä ovat toimintoja R-perussyntaksista.
Ryhmittely ja aggregointi R:ssä: data.table
## data.table
### фильтрация строк по одному условию
titanic[, .(passangers = length(PassengerId),
avg_price = mean(Fare)),
by = Pclass]
Tietojen ryhmittely ja yhdistäminen Pythonissa: pandat
Ryhmittely sisään pandas samanlainen kuin dplyr, mutta yhdistäminen ei ole samanlainen kuin dplyr Ei lainkaan data.table.
Ryhmittele menetelmällä groupby(), johon sinun on välitettävä luettelo sarakkeista, joiden mukaan tietokehys ryhmitellään.
Aggregointiin voit käyttää menetelmää agg()joka hyväksyy sanakirjan. Sanakirjaavaimet ovat sarakkeita, joissa käytät koontifunktioita, ja arvot ovat koontifunktioiden nimiä.
Aggregointitoiminnot:
sum() - summaus
min() / max() – minimi- ja maksimiarvo
mean() - keskiverto
median() - mediaani
count() - määrä
Toiminto reset_index() alla olevassa esimerkissä sitä käytetään nollaamaan sisäkkäisiä indeksejä pandas oletuksena tietojen yhdistämisen jälkeen.
symboli voit siirtyä seuraavalle riville.
Ryhmittely ja aggregointi Pythonissa: pandat
# группировка и агрегация данных
titanic.groupby(["Pclass"]).
agg({'PassengerId': 'count', 'Fare': 'mean'}).
reset_index()
Pöytien pystysuora liitos
Toiminto, jossa yhdistät kaksi tai useampia saman rakenteen omaavia taulukkoja. Lataamamme tiedot sisältävät taulukoita ga_nov и ga_dec. Nämä taulukot ovat rakenteeltaan identtisiä, ts. niillä on samat sarakkeet ja näiden sarakkeiden tietotyypit.
Tämä on lataus Google Analyticsista marras- ja joulukuulta. Tässä osiossa yhdistämme nämä tiedot yhdeksi taulukoksi.
В pandas funktiota käytetään taulukoiden yhdistämiseen concat(), johon sinun on välitettävä luettelo kehyksistä yhdistääksesi ne.
Merkkijonojen suodatus Pythonissa: pandat
# вертикальное объединение таблиц
pd.concat([ga_nov, ga_dec])
Pöytien vaakasuora liitos
Toiminto, jossa sarakkeet toisesta lisätään ensimmäiseen taulukkoon avaimella. Sitä käytetään usein rikastattaessa faktataulukkoa (esimerkiksi myyntitietoja sisältävää taulukkoa) jollain viitetiedolla (esimerkiksi tuotteen hinnalla).
Liitoksia on useita tyyppejä:
Aiemmin ladatussa taulukossa titaanimainen meillä on kolumni sukupuoli, joka vastaa matkustajan sukupuolikoodia:
1 - naaras
2 - uros
Olemme myös luoneet taulukon - hakuteoksen sukupuoli. Matkustajien sukupuolta koskevien tietojen esittämisen helpottamiseksi meidän on lisättävä sukupuolen nimi hakemistosta sukupuoli pöytään titaanimainen.
Vaakasuora pöytäliitos R:ssä: tidyverse, dplyr
В dplyr Vaakasuoraan liittämiseen on olemassa koko joukko toimintoja:
inner_join()
left_join()
right_join()
full_join()
semi_join()
nest_join()
anti_join()
Käytännössäni yleisimmin käytetty on left_join().
Ensimmäisenä kahtena argumenttina yllä luetellut funktiot yhdistävät kaksi taulukkoa ja kolmantena argumenttina by sinun on määritettävä liitetyt sarakkeet.
Vaakasuora pöytäliitos R:ssä: dplyr
# объединяем таблицы
left_join(titanic, gender,
by = c("Sex" = "id"))
Taulukoiden vaakasuora liitos R:ssä: data.table
В data.table Taulukot on yhdistettävä avaimella funktion avulla merge().
Argumentit merge()-funktiolle data.taulukossa
x, y — Liitostaulukot
by — Sarake, joka on liittämisen avain, jos sillä on sama nimi molemmissa taulukoissa
by.x, by.y — Yhdistettävät sarakkeiden nimet, jos niillä on eri nimet taulukoissa
all, all.x, all.y — Liitostyyppi, kaikki palauttaa kaikki rivit molemmista taulukoista, all.x vastaa LEFT JOIN -toimintoa (jättää kaikki ensimmäisen taulukon rivit), all.y — vastaa RIGHT JOIN -toiminto (jättää kaikki toisen taulukon rivit).
Kuten myös sisällä data.tableSisään pandas funktiota käytetään taulukoiden yhdistämiseen merge().
Merge()-funktion argumentit pandoissa
miten — Liitäntätyyppi: vasen, oikea, ulompi, sisempi
päällä — Sarake, joka on avain, jos sillä on sama nimi molemmissa taulukoissa
left_on, right_on — Avainsarakkeiden nimet, jos niillä on eri nimet taulukoissa
Vaakasuora pöytäliitos Pythonissa: pandat
# объединяем по ключу
titanic.merge(gender, how = "left", left_on = "Sex", right_on = "id")
Ikkunan perusfunktiot ja lasketut sarakkeet
Ikkunafunktiot ovat merkitykseltään samanlaisia kuin aggregointifunktiot, ja niitä käytetään usein myös data-analyysissä. Mutta toisin kuin aggregointifunktiot, ikkunafunktiot eivät muuta lähtevän tietokehyksen rivien määrää.
Pohjimmiltaan ikkuna-funktiota käyttämällä jaamme saapuvan datakehyksen osiin jonkin kriteerin mukaan, ts. kentän tai useamman kentän arvon perusteella. Ja teemme aritmeettisia operaatioita jokaiselle ikkunalle. Näiden operaatioiden tulos palautetaan jokaiselle riville, ts. muuttamatta taulukon rivien kokonaismäärää.
Otetaan esimerkiksi pöytä titaanimainen. Voimme laskea, kuinka monta prosenttia kunkin lipun hinta oli sen hyttiluokassa.
Tätä varten meidän on hankittava jokaiselle riville sen nykyisen hyttiluokan lipun kokonaishinta, johon tämän rivin lippu kuuluu, ja jaettava sitten kunkin lipun hinta saman hyttiluokan kaikkien lippujen kokonaishinnalla. .
Ikkunatoiminnot R:ssä: tidyverse, dplyr
Voit lisätä uusia sarakkeita käyttämättä rivien ryhmittelyä dplyr palvelee toimintoa mutate().
Voit ratkaista yllä kuvatun ongelman ryhmittelemällä tiedot kenttien mukaan Luokka ja summaamalla kentän uuteen sarakkeeseen hinta. Pura seuraavaksi taulukko ja jaa kenttien arvot hinta mitä tapahtui edellisessä vaiheessa.
Ratkaisualgoritmi pysyy samana kuin kohdassa dplyr, meidän on jaettava taulukko ikkunoihin kenttien mukaan Luokka. Kirjoita uuteen sarakkeeseen kutakin riviä vastaavan ryhmän summa ja lisää sarake, jossa laskemme kunkin lipun hinnan osuuden ryhmässään.
Voit lisätä uusia sarakkeita data.table operaattori paikalla :=. Alla on esimerkki ongelman ratkaisemisesta paketin avulla data.table
Ikkunafunktiot R:ssä: data.table
titanic[,c("Pclass_cost","ticket_fare_rate") := .(sum(Fare), Fare / Pclass_cost),
by = Pclass]
Ikkunatoiminnot Pythonissa: pandas
Yksi tapa lisätä uusi sarake pandas - käytä toimintoa assign(). Lippujen hinnan yhteenvetoon hyttiluokittain, ilman rivien ryhmittelyä, käytämme toimintoa transform().
Alla on esimerkki ratkaisusta, jonka lisäämme taulukkoon titaanimainen samat 2 saraketta.
Ikkunan perustoiminnot ja laskettujen sarakkeiden lisääminen group_by() + mutate()
perustelu j käyttämällä operaattoria := + argumentti by transform() + assign()
Johtopäätös
Ehkä artikkelissa kuvailin tietojenkäsittelyn optimaalisia toteutuksia, joten olen iloinen, jos korjaat virheeni kommenteissa tai yksinkertaisesti täydennät artikkelissa annettuja tietoja muilla tekniikoilla tietojen käsittelyyn R / Pythonissa.
Kuten edellä kirjoitin, artikkelin tarkoituksena ei ollut pakottaa mielipidettä kumpi kieli on parempi, vaan yksinkertaistaa mahdollisuutta oppia molempia kieliä tai tarvittaessa siirtyä niiden välillä.
Jos pidit artikkelista, saan mielelläni uusia tilaajia youtube и sähke kanavia.
Опрос
Mitä seuraavista paketeista käytät työssäsi?
Kommentteihin voit kirjoittaa syyn valintaasi.
Vain rekisteröityneet käyttäjät voivat osallistua kyselyyn. Kirjaudu sisään, ole kiltti.
Mitä tietojenkäsittelypakettia käytät (voit valita useita vaihtoehtoja)