ProHoster > Blog > Administrazioa > Zein hizkuntza aukeratu datuak lantzeko - R edo Python? Biak! Pandatik Tidyversera eta datuetara migratzen.taula eta atzera
Zein hizkuntza aukeratu datuak lantzeko - R edo Python? Biak! Pandatik Tidyversera eta datuetara migratzen.taula eta atzera
Interneten R edo Python bilatuz gero, milioika artikulu eta kilometroko eztabaida topatuko dituzu gaiari buruz zein den hobea, azkarragoa eta erosoagoa datuak lantzeko. Baina, zoritxarrez, artikulu eta gatazka horiek guztiak ez dira bereziki erabilgarriak.
Artikulu honen helburua bi hizkuntzetako pakete ezagunenetan datuak prozesatzeko oinarrizko teknikak alderatzea da. Eta lagundu irakurleei oraindik ezagutzen ez duten zerbait azkar menderatzen. Python-en idazten dutenentzat, jakin ezazu nola egin gauza bera R-n, eta alderantziz.
Artikuluan zehar R-ko pakete ezagunenen sintaxia aztertuko dugu. Hauek dira liburutegian sartutako paketeak tidyverseeta baita paketea ere data.table. Eta alderatu haien sintaxia pandas, Python-en datuen analisi pakete ezagunena.
Pausoz pauso datuen analisiaren bide osoa zeharkatuko dugu kargatzetik Python eta R erabiliz leiho analitikoen funtzioak burutzera.
Edukia
Artikulu hau iruzur orri gisa erabil daiteke kontuan hartutako paketeetako batean datuak prozesatzeko eragiketa bat nola egin ahaztu baduzu.
Datuen analisia interesatzen bazaizu, nirea aurki dezakezu telegrama и youtube kanalak. Eduki gehienak R hizkuntzari eskainitakoak dira.
R eta Python-en arteko sintaxi-desberdintasun nagusiak
Python-etik R-ra aldatzea errazteko, edo alderantziz, arreta jarri behar dituzun puntu nagusi batzuk emango ditut.
Paketeen funtzioetara sartzea
Pakete bat R-n kargatu ondoren, ez duzu paketearen izena zehaztu behar bere funtzioetara sartzeko. Kasu gehienetan hau ez da ohikoa R-n, baina onargarria da. Ez duzu pakete bat inportatu beharrik zure kodean bere funtzioren bat behar baduzu, baizik eta deitu paketearen izena eta funtzioaren izena zehaztuz. R-n paketeen eta funtzioen izenen arteko bereizlea bi puntu bikoitza da. package_name::function_name().
Pythonen, aitzitik, pakete baten funtzioei deitzea klasikotzat jotzen da bere izena esplizituki zehaztuz. Pakete bat deskargatzen denean, normalean izen laburtua ematen zaio, adibidez. pandas normalean ezizena erabiltzen da pd. Pakete-funtzio batera puntu baten bidez sartzen da package_name.function_name().
Esleipena
R-n, ohikoa da gezi bat erabiltzea objektu bati balio bat esleitzeko. obj_name <- value, nahiz eta berdintasun zeinu bakarra onartzen den, R-ko berdintasun zeinu bakarra erabiltzen da nagusiki funtzioen argumentuei balioak pasatzeko.
Python-en, esleipena berdintasun zeinu bakar batekin egiten da soilik obj_name = value.
Indexatzea
Hemen ere alde nahiko nabarmenak daude. R-n, indexazioa batean hasten da eta ondoriozko barrutian zehaztutako elementu guztiak barne hartzen ditu,
Python-en, indexazioa zerotik hasten da eta aukeratutako barrutiak ez du barne hartzen indizean zehaztutako azken elementua. Beraz, diseinua x[i:j] Python-en ez du j elementua sartuko.
Indexazio negatiboan ere aldeak daude, R idazkeran x[-1] bektorearen elementu guztiak itzuliko ditu azkena izan ezik. Python-en, antzeko notazio batek azken elementua bakarrik itzuliko du.
Metodoak eta OOP
R-k OOP inplementatzen du bere erara, honi buruz idatzi nuen artikuluan "OOP R hizkuntzan (1. zatia): S3 klaseak". Oro har, R lengoaia funtzionala da, eta bertan dagoen guztia funtzioen gainean eraikita dago. Hori dela eta, adibidez, Excel erabiltzaileentzat, joan hona tydiverse baino errazagoa izango da pandas. Hau nire iritzi subjektiboa izan daitekeen arren.
Laburbilduz, R-ko objektuek ez dute metodorik (S3 klaseei buruz hitz egiten badugu, baina badira beste OOP inplementazio batzuk, askoz ere ez hain ohikoak). Objektuaren klasearen arabera modu ezberdinean prozesatzen dituzten funtzio orokortuak baino ez daude.
Hodiak
Agian hau da izena pandas Ez da guztiz zuzena izango, baina esanahia azaltzen saiatuko naiz.
Tarteko kalkuluak ez gordetzeko eta lan-ingurunean alferrikako objektuak ez sortzeko, kanalizazio moduko bat erabil dezakezu. Horiek. kalkulu baten emaitza funtzio batetik bestera pasa, eta ez gorde tarteko emaitzak.
Har dezagun kode-adibide hau, non tarteko kalkuluak objektu bereizietan gordetzen ditugun:
3 eragiketa egin genituen sekuentzialki, eta bakoitzaren emaitza objektu bereizi batean gorde zen. Baina, egia esan, ez ditugu bitarteko objektu hauek behar.
Edo are okerrago, baina ezagunagoa Excel erabiltzaileentzat.
obj <- func3(func2(func1()))
Kasu honetan, ez ditugu tarteko kalkuluen emaitzak gorde, baina habiaraturiko funtzioekin kodea irakurtzea oso deserosoa da.
Datuak prozesatzeko hainbat ikuspegi aztertuko ditugu R-n, eta antzeko eragiketak egiten dituzte modu ezberdinetan.
Horrela lanaren emaitza hartzen dugu func1() eta pasa ezazu lehen argumentu gisa func2(), orduan kalkulu honen emaitza lehen argumentu gisa pasatzen dugu func3(). Eta azkenean, egindako kalkulu guztiak objektuan idazten ditugu obj <-.
Aurreko guztia hitzak baino hobeto ilustratzen du meme honek:
Kortxete bakoitzean aurreko eragiketaren emaitza erabil dezakezu.
В pandas eragiketa horiek puntu batez bereizten dira.
obj = df.fun1().fun2().fun3()
Horiek. gure mahaia hartzen dugu df eta erabili bere metodoa fun1(), ondoren lortutako emaitzari metodoa aplikatuko diogu fun2(), ondoren fun3(). Emaitza objektu batean gordetzen da objektua .
Datuen Egiturak
R eta Python-en datu-egiturak antzekoak dira, baina izen desberdinak dituzte.
Description
Izena R-n
Izena Python/pandas-en
Taularen egitura
datu.markoa, datu.taula, tible
Datu-markoa
Balioen zerrenda dimentsio bakarrekoa
Bektorea
Serie pandatan edo zerrenda Python hutsean
Maila anitzeko egitura ez-tabularra
Zerrenda
Hiztegia (dik)
Sintaxiaren beste ezaugarri eta desberdintasun batzuk aztertuko ditugu jarraian.
Erabiliko ditugun paketeei buruzko hitz batzuk
Lehenik eta behin, artikulu honetan zehar ezagutuko dituzun paketeei buruz pixka bat kontatuko dizut.
txukuna
Официальный сайт: tidyverse.org
Liburutegia tidyverse Hedley Wickham RStudioko Ikerketa Zientzialari Nagusiak idatzia. tidyverse Datuen prozesamendua errazten duten pakete-multzo ikusgarri batek osatzen dute, eta horietako 5 CRAN biltegiko 10 deskarga nagusien artean daude.
Liburutegiaren muina honako pakete hauek ditu: ggplot2, dplyr, tidyr, readr, purrr, tibble, stringr, forcats. Pakete horietako bakoitza arazo zehatz bat konpontzera zuzenduta dago. Adibidez dplyr datuak manipulatzeko sortua, tidyr datuak forma txukun batera eramateko, stringr sokekin lan egitea errazten du, eta ggplot2 datuak bistaratzeko tresnarik ezagunenetako bat da.
Abantaila tidyverse sintaxia sinplea eta irakurtzeko erraza da, modu askotan SQL kontsulta-lengoaiaren antzekoa dena.
Paketearen sintaxia ez da in bezain erosoa tidyverse eta R-n datu-marko klasikoak gogorarazten ditu, baina, aldi berean, funtzionalitatean nabarmen zabaldu da.
Pakete honetako taularen manipulazio guztiak kortxete artean deskribatzen dira, eta sintaxia itzultzen baduzu data.table SQLn, honelako zerbait lortzen duzu: data.table[ WHERE, SELECT, GROUP BY ]
Pakete honen indarra datu kopuru handiak prozesatzeko abiadura da.
Liburutegiaren izena "panel datuak" termino ekonometrikotik dator, dimentsio anitzeko egituratutako informazio multzoak deskribatzeko erabiltzen dena.
Nork pandas Wes McKinney estatubatuarra da.
Python-en datuen analisiari dagokionez, berdin pandas Ez. Oso funtzio anitzeko eta maila altuko pakete bat, datuekin edozein manipulazio egiteko aukera ematen duena, edozein iturritatik datuak kargatzen hasi eta bistaratu arte.
Pakete gehigarriak instalatzea
Artikulu honetan eztabaidatutako paketeak ez daude oinarrizko R eta Python banaketetan sartzen. Ohar txiki bat dagoen arren, Anaconda banaketa instalatu baduzu, instalatu gehigarria pandas ez da beharrezkoa.
Paketeak instalatzen R-n
RStudio garapen-ingurunea gutxienez behin ireki baduzu, ziurrenik dagoeneko badakizu nola instalatu behar den paketea R-n. Paketeak instalatzeko, erabili komando estandarra. install.packages() zuzenean R-n bertan exekutatuz.
# установка пакетов
install.packages("vroom")
install.packages("readr")
install.packages("dplyr")
install.packages("data.table")
Instalatu ondoren, paketeak konektatuta egon behar dira, kasu gehienetan komandoa erabiltzen da library().
# подключение или импорт пакетов в рабочее окружение
library(vroom)
library(readr)
library(dplyr)
library(data.table)
Python-en paketeak instalatzea
Beraz, Python purua instalatuta baduzu, orduan pandas eskuz instalatu behar duzu. Ireki komando-lerro bat edo terminal bat, zure sistema eragilearen arabera eta sartu komando hau.
pip install pandas
Ondoren, Pythonera itzuliko gara eta instalatutako paketea komandoarekin inportatuko dugu import.
import pandas as pd
Datuak kargatzen
Datuen meatzaritza datuen analisiaren urrats garrantzitsuenetako bat da. Bai Python-ek bai R-k, nahi izanez gero, edozein iturritatik datuak lortzeko aukera zabalak eskaintzen dizkizute: tokiko fitxategiak, Interneteko fitxategiak, webguneak, mota guztietako datu-baseak.
Artikuluan zehar hainbat datu multzo erabiliko ditugu:
Bi deskarga Google Analytics-etik.
Titanic bidaiarien datu multzoa.
Datu guztiak nirean daude GitHub csv eta tsv fitxategien forman. Nondik eskatuko ditugu?
Datuak R-n kargatzen: tidyverse, vroom, readr
Datuak liburutegi batean kargatzeko tidyverse Bi pakete daude: vroom, readr. vroom modernoagoa, baina etorkizunean paketeak konbinatu daitezke.
vroom vs irakurgailua
Zer da oharra vroom esan nahi du readr? Oraingoz bi paketeak bereizita eboluzionatzeko asmoa dugu, baina ziurrenik paketeak bateratuko ditugu etorkizunean. vroom-en irakurketa alferraren desabantaila bat datu-arazo jakin batzuk ezin direla jakinarazi aurretik, beraz, horiek bateratzeko modurik onena hausnarketa bat behar da.
vroom vs readr
Zer esan nahi du askatzea? vroom egiteko readr? Momentuz bi paketeak bereizita garatzeko asmoa dugu, baina ziurrenik etorkizunean konbinatuko ditugu. Irakurketa alferraren desabantailetako bat vroom da datuekin arazo batzuk ezin direla aldez aurretik jakinarazi, beraz, horiek konbinatu ondoen pentsatu behar duzu.
Artikulu honetan bi datuak kargatzeko paketeei begiratuko diegu:
Paketean vroom, csv / tsv datu-formatua edozein dela ere, karga izen bereko funtzioaren bidez egiten da vroom(), paketean readr formatu bakoitzerako funtzio ezberdin bat erabiltzen dugu read_tsv() и read_csv().
Datuak R-n kargatzea: datuak.taula
В data.table datuak kargatzeko funtzio bat dago fread().
R paketeekin alderatzen badugu, kasu honetan sintaxia hurbilen dago pandas izango da readr, zeren pandas edonondik eska ditzake datuak, eta pakete honetan funtzio familia oso bat dago read_*().
read_csv()
read_excel()
read_sql()
read_json()
read_html()
Eta hainbat formatutako datuak irakurtzeko diseinatutako beste funtzio asko. Baina gure helburuetarako nahikoa da read_table() edo read_csv() argumentua erabiliz sep zutabe-bereizlea zehazteko.
Taula titanikoa, kargatu genuena, eremu bat dago Sex, bidaiariaren genero identifikatzailea gordetzen duena.
Baina bidaiarien generoari dagokionez datuak erosoago aurkezteko, izena erabili beharko zenuke genero kodea baino.
Horretarako, direktorio txiki bat sortuko dugu, taula bat, zeinetan 2 zutabe (kodea eta genero izena) eta 2 errenkada baino ez egongo diren hurrenez hurren.
R-n datu-markoa sortzea: tidyverse, dplyr
Beheko kodearen adibidean, nahi duzun datu-markoa sortzen dugu funtzioa erabiliz tibble() .
В pandas Markoak sortzea hainbat fasetan egiten da, lehenik hiztegi bat sortzen dugu, eta gero hiztegia datu-marko batean bihurtzen dugu.
Python-en datu-markoa sortzea: pandak
# создаём дата фрейм
gender_dict = {'id': [1, 2],
'gender': ["female", "male"]}
# преобразуем словарь в датафрейм
gender = pd.DataFrame.from_dict(gender_dict)
Zutabeak hautatzea
Lan egiten dituzun taulek dozenaka edo ehunka datu zutabe izan ditzakete. Baina azterketa egiteko, oro har, ez dituzu iturburu-taulan eskuragarri dauden zutabe guztiak behar.
Hori dela eta, iturburu-taularekin egingo duzun lehenengo eragiketa bat da beharrezkoa ez den informazioa garbitzea eta informazio horrek hartzen duen memoria askatzea.
R-n zutabeak hautatzea: tidyverse, dplyr
sintaxia dplyr SQL kontsulta-lengoaiaren oso antzekoa da, ezagutzen baduzu pakete hau azkar menderatuko duzu.
Zutabeak hautatzeko, erabili funtzioa select().
Jarraian, zutabeak modu hauetan hauta ditzakezun kodeen adibideak daude:
Beharrezko zutabeen izenak zerrendatzea
Erreparatu zutabeen izenak adierazpen erregularrak erabiliz
Datu motaren edo zutabean jasotako datuen beste edozein propietatearen arabera
R-n zutabeak hautatzea: 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 zutabeak hautatzea: datuak.taula
urtean eragiketa berdinak data.table zertxobait ezberdin egiten dira, artikuluaren hasieran kortxeteen artean zer argumentu dauden deskribatu nuen. data.table.
DT[i,j,by]
Non:
i - non, alegia. errenkaden arabera iragaztea
j - hautatu|eguneratu|egin, hau da. zutabeak hautatzea eta bihurtzea
arabera - datuen multzokatzea
Aldakorra .SD zutabe guztietara sartzeko aukera ematen du, eta .SDcols iragazi behar dituzun zutabeak adierazpen erregularrak erabiliz edo behar dituzun zutabeen izenak iragazteko beste funtzio batzuk erabiliz.
Python-en zutabeak hautatzea, pandak
Zutabeak izenaren arabera hautatzeko pandas nahikoa da haien izenen zerrenda ematea. Eta esamolde erregularrak erabiliz zutabeak izenaren arabera aukeratzeko edo baztertzeko, funtzioak erabili behar dituzu drop() и filter(), eta argumentua ardatza=1, eta horrekin errenkadak baino zutabeak prozesatzea beharrezkoa dela adierazten duzu.
Eremu bat datu-motaren arabera hautatzeko, erabili funtzioa select_dtypes(), eta argudioetan besteak beste, edo baztertzeko pasa ezazu hautatu behar dituzun eremuei dagozkien datu-moten zerrenda.
Python-en zutabeak hautatzea: pandak
# Выбор полей по названию
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'])
Errenkadak iragaztea
Adibidez, iturburu-taulak hainbat urtetako datuak izan ditzake, baina azken hilabetea soilik aztertu behar duzu. Berriz ere, lerro gehigarriek datuak prozesatzeko prozesua motelduko dute eta ordenagailuaren memoria blokeatzen dute.
R-ko errenkadak iragaztea: tydyverse, dplyr
В dplyr funtzioa errenkadak iragazteko erabiltzen da filter(). Datu-marko bat hartzen du lehen argumentu gisa, gero iragazketa-baldintzak zerrendatzen dituzu.
Taula bat iragazteko adierazpen logikoak idaztean, kasu honetan, zehaztu zutabe-izenak komatxorik gabe eta taularen izena deklaratu gabe.
Iragazteko hainbat adierazpen logiko erabiltzen dituzunean, erabili operadore hauek:
& edo koma - ETA logikoa
| - EDO logikoa
R-ko errenkadak iragaztea: dplyr
# фильтрация строк
## dplyr
### фильтрация строк по одному условию
filter(ga_nov, source == "google")
### фильтр по двум условиям соединённым логическим и
filter(ga_nov, source == "google" & sessions >= 10)
### фильтр по двум условиям соединённым логическим или
filter(ga_nov, source == "google" | sessions >= 10)
R-ko errenkadak iragaztea: datuak.taula
Goian idatzi dudan bezala, urtean data.table datuen bihurketa sintaxia kortxete artean sartuta dago.
DT[i,j,by]
Non:
i - non, alegia. errenkaden arabera iragaztea
j - hautatu|eguneratu|egin, hau da. zutabeak hautatzea eta bihurtzea
arabera - datuen multzokatzea
Argumentua errenkadak iragazteko erabiltzen da i, kortxete artean lehen posizioa duena.
Zutabeetara adierazpen logikoetan sartzen da komatxorik gabe eta taularen izena zehaztu gabe.
Adierazpen logikoak elkarren artean erlazionatuta daude dplyr & eta | operadoreen bidez.
R-ko errenkadak iragaztea: datuak.taula
## data.table
### фильтрация строк по одному условию
ga_nov[source == "google"]
### фильтр по двум условиям соединённым логическим и
ga_nov[source == "google" & sessions >= 10]
### фильтр по двум условиям соединённым логическим или
ga_nov[source == "google" | sessions >= 10]
Python-en kateak iragaztea: pandak
Iragazi errenkadaren arabera pandas iragaztearen antzekoa data.table, eta kortxete artean egiten da.
Kasu honetan, zutabeetarako sarbidea nahitaez datu-markoaren izena adieraziz egiten da; orduan, zutabearen izena ere adierazi daiteke kortxete artean komatxoen artean (Adibidezdf['col_name']), edo komatxorik gabe puntuaren ondoren (Adibidezdf.col_name).
Datu-markoa hainbat baldintzaren arabera iragazi behar baduzu, baldintza bakoitza parentesi artean jarri behar da. Baldintza logikoak elkarren artean lotzen dituzte operadoreek & и |.
Python-en kateak iragaztea: pandak
# Фильтрация строк таблицы
### фильтрация строк по одному условию
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)]
Datuen multzokatzea eta batuketa
Datuen analisian gehien erabiltzen den eragiketa bat taldekatzea eta agregatzea da.
Eragiketa hauek egiteko sintaxia berrikusten ditugun pakete guztietan sakabanatuta dago.
Kasu honetan, datu-marko bat hartuko dugu adibide gisa titanikoa, eta kalkulatu txartelen kopurua eta batez besteko kostua kabina klasearen arabera.
Datuen multzokatzea eta batuketa R-n: tidyverse, dplyr
В dplyr funtzioa taldekatzeko erabiltzen da group_by(), eta agregaziorako summarise(). Izan ere, dplyr funtzio familia oso bat dago summarise_*(), baina artikulu honen helburua oinarrizko sintaxia alderatzea da, beraz, ez gara halako oihanean sartuko.
Funtzionatzeko group_by() taula pasa genuen lehen argumentu gisa titanikoa, eta gero eremua adierazi Pclass, horren bidez gure mahaia taldekatuko dugu. Eragiketa honen emaitza operadorea erabiliz %>% funtzioari lehen argumentu gisa pasatu da summarise(), eta beste 2 eremu gehitu ditu: bidaiariak и batez besteko_prezioa. Lehenengoan, funtzioa erabiliz length() txartel kopurua kalkulatu, eta bigarrenean funtzioa erabiliz mean() sarreraren batez besteko prezioa jaso zuen.
Datuen multzokatzea eta batuketa R-n: datuak.taula
В data.table argumentua agregaziorako erabiltzen da j kortxete artean bigarren posizioa duena, eta taldekatzeko by edo keyby, hirugarren postua dutenak.
Kasu honetan agregazio-funtzioen zerrenda atalean deskribatutakoaren berdina da dplyr, zeren oinarrizko R sintaxiko funtzioak dira.
Taldekatzea eta batuketa R-n: datuak.taula
## data.table
### фильтрация строк по одному условию
titanic[, .(passangers = length(PassengerId),
avg_price = mean(Fare)),
by = Pclass]
Python-en datuen multzokatzea eta batuketa: pandak
Taldekatzea pandas antzekoak dplyr, baina agregazioa ez da antzekoa dplyr ez piztuta data.table.
Taldekatzeko, erabili metodoa groupby(), eta bertan datu-markoa taldekatuko den zutabeen zerrenda pasa behar duzu.
Agregaziorako metodoa erabil dezakezu agg()hiztegi bat onartzen duena. Hiztegiko teklak agregazio-funtzioak aplikatuko dituzun zutabeak dira, eta balioak agregazio-funtzioen izenak dira.
Agregazio funtzioak:
sum() - batuketa
min() / max() – Balio minimoa eta maximoa
mean() - batez bestekoa
median() - mediana
count() - kantitatea
Funtzioa reset_index() beheko adibidean habiaraturiko indizeak berrezartzeko erabiltzen da pandas lehenetsitako datuak batu ondoren.
Sinboloa hurrengo lerrora joateko aukera ematen du.
Python-en multzokatzea eta agregatzea: pandak
# группировка и агрегация данных
titanic.groupby(["Pclass"]).
agg({'PassengerId': 'count', 'Fare': 'mean'}).
reset_index()
Taulen elkarketa bertikala
Egitura bereko bi taula edo gehiago batzen dituen eragiketa. Kargatu ditugun datuek taulak dituzte ga_nov и ga_dec. Taula hauek egituraz berdinak dira, hau da. zutabe berdinak dituzte, eta zutabe horietako datu motak.
Hau Google Analytics-en igoera bat da azaroa eta abendua, atal honetan datu hauek taula batean konbinatuko ditugu.
Taulak R-n bertikalki elkartzea: tidyverse, dplyr
В dplyr 2 taula batean konbina ditzakezu funtzioa erabiliz bind_rows(), taulak bere argumentu gisa pasatuz.
R-ko errenkadak iragaztea: dplyr
# Вертикальное объединение таблиц
## dplyr
bind_rows(ga_nov, ga_dec)
Taulak bertikalean elkartzea R-n: datuak.taula
Gainera ez da ezer konplikatua, erabil dezagun rbind().
R-ko errenkadak iragaztea: datuak.taula
## data.table
rbind(ga_nov, ga_dec)
Python-en taulak bertikalki elkartzea: pandak
В pandas funtzioa taulak batzeko erabiltzen da concat(), zeinetan markoen zerrenda bat pasatu behar duzu horiek konbinatzeko.
Python-en kateak iragaztea: pandak
# вертикальное объединение таблиц
pd.concat([ga_nov, ga_dec])
Taulen elkarketa horizontala
Eragiketa, bigarreneko zutabeak lehenengo taulara giltzaz gehitzen dituena. Sarritan erabiltzen da gertakari-taula bat (adibidez, salmenta-datuak dituen taula) erreferentzia-datu batzuekin (adibidez, produktu baten kostua) aberastean.
Hainbat lotura mota daude:
Aurretik kargatutako taulan titanikoa zutabe bat dugu Sex, bidaiariaren genero kodeari dagokiona:
1 - emea
2 - gizonezkoa
Gainera, taula bat sortu dugu, erreferentzia-liburu bat genero. Bidaiarien generoari buruzko datuak erosoago aurkezteko, generoaren izena gehitu behar dugu direktoriotik. genero mahaira titanikoa.
Taula horizontal bat R-n: tidyverse, dplyr
В dplyr Lotura horizontalerako funtzio familia oso bat dago:
inner_join()
left_join()
right_join()
full_join()
semi_join()
nest_join()
anti_join()
Nire praktikan gehien erabiltzen dena da left_join().
Lehenengo bi argumentu gisa, goian zerrendatutako funtzioek bi taula hartzen dituzte elkartzeko, eta hirugarren argumentu gisa by batu beharreko zutabeak zehaztu behar dituzu.
Taula horizontal bat R-n: dplyr
# объединяем таблицы
left_join(titanic, gender,
by = c("Sex" = "id"))
R-ko taulen elkarketa horizontala: datuak.taula
В data.table Taulak teklaren bidez elkartu behar dituzu funtzioa erabiliz merge().
merge() funtziorako argudioak data.tablen
x, y — Elkartzeko taulak
by — Bi tauletan izen bera badu batzeko gakoa den zutabea
by.x, by.y — Batu beharreko zutabe-izenak, tauletan izen desberdinak badituzte
all, all.x, all.y — Elkartu mota, all.x bi tauletako errenkada guztiak itzuliko ditu, all.x LEFT JOIN eragiketari dagokio (lehen taulako errenkada guztiak utziko ditu), all.y — dagokio. RIGHT JOIN eragiketa (bigarren taulako errenkada guztiak utziko ditu).
Baita in data.tablein pandas funtzioa taulak batzeko erabiltzen da merge().
merge() funtzioaren argudioak pandetan
nola — Konexio mota: ezkerreko, eskuineko, kanpoko, barneko
on — Gako bat den zutabea bi tauletan izen bera badu
left_on, right_on — Funtsezko zutabeen izenak, tauletan izen desberdinak badituzte
Taula horizontala Python-en elkartzea: pandak
# объединяем по ключу
titanic.merge(gender, how = "left", left_on = "Sex", right_on = "id")
Leihoaren oinarrizko funtzioak eta kalkulatutako zutabeak
Leiho-funtzioak agregazio-funtzioen esanahiaren antzekoak dira, eta datuen analisian ere erabili ohi dira. Baina agregazio funtzioek ez bezala, leiho funtzioek ez dute aldatzen irteerako datu-markoaren errenkada kopurua.
Funtsean, leiho funtzioa erabiliz, sarrerako datu-markoa zatitan zatitzen dugu irizpide batzuen arabera, hau da. eremu baten edo hainbat eremuren balioaren arabera. Eta leiho bakoitzean eragiketa aritmetikoak egiten ditugu. Eragiketa horien emaitza lerro bakoitzean itzuliko da, hau da. taulako errenkada kopurua aldatu gabe.
Adibidez, har dezagun mahaia titanikoa. Txartel bakoitzaren kostua zein portzentaje zen bere kabina klasearen barruan kalkula dezakegu.
Horretarako, lerro bakoitzean txartel baten kostu osoa lortu behar dugu, linea honetako txartela dagokion kabina-klaserako, eta gero zatitu txartel bakoitzaren kostua kabina-klase bereko txartel guztien kostu osoa. .
Leiho-funtzioak R-n: tidyverse, dplyr
Zutabe berriak gehitzeko, errenkadak taldekatzea erabili gabe, in dplyr funtzioa betetzen du mutate().
Goian azaldutako arazoa ebatzi dezakezu datuak eremuka taldekatuz Pclass eta eremua zutabe berri batean batuz ez. Ondoren, banandu taula eta zatitu eremuaren balioak ez aurreko urratsean gertatutakoari.
Soluzio algoritmoa berdina izaten jarraitzen du dplyr, taula eremuka leihoetan banatu behar dugu Pclass. Iretzi zutabe berri batean errenkada bakoitzari dagokion taldearen zenbatekoa, eta gehitu zutabe bat, non bere taldeko txartel bakoitzaren kostuaren zatia kalkulatzen dugun.
Zutabe berriak gehitzeko data.table operadorea presente :=. Jarraian, paketea erabiliz arazo bat konpontzeko adibide bat dago data.table
Leiho-funtzioak R-n: datuak.taula
titanic[,c("Pclass_cost","ticket_fare_rate") := .(sum(Fare), Fare / Pclass_cost),
by = Pclass]
Leiho-funtzioak Python-en: pandak
Zutabe berri bat gehitzeko modu bat pandas - funtzioa erabili assign(). Txartelen kostua kabinako klasearen arabera laburbiltzeko, errenkadak taldekatu gabe, funtzioa erabiliko dugu transform().
Jarraian, taulara gehitzen dugun soluzio baten adibidea dago titanikoa 2 zutabe berdinak.
Zutabeak hautatzea select()
argumentua j, bigarren posizioa kortxete artean
beharrezko zutabeen zerrenda kortxete artean pasatzen dugu / drop() / filter() / select_dtypes()
Errenkadak iragaztea filter()
argumentua i, lehen posizioa kortxete artean
Iragazteko baldintzak kortxete artean zerrendatzen ditugu / filter()
Taldekatzea eta Agregazioa group_by() + summarise()
argudioak j + by groupby() + agg()
Leihoaren oinarrizko funtzioak eta kalkulatutako zutabeak gehitzea group_by() + mutate()
argumentua j operadorea erabiliz := + argumentua by transform() + assign()
Ondorioa
Agian, artikuluan ez dira datuak prozesatzeko inplementaziorik egokienak deskribatu, beraz, poztuko naiz iruzkinetan nire akatsak zuzentzen badituzu edo, besterik gabe, artikuluan emandako informazioa R / Python-en datuak lantzeko beste teknika batzuekin osatuz gero.
Goian idatzi dudan bezala, artikuluaren helburua ez zen norberaren iritzia inposatzea zein den hobea den hizkuntza, bi hizkuntzak ikasteko aukera erraztea baizik, edo, behar izanez gero, haien artean migratzea.
Artikulua gustatu bazaizu, poztuko naiz nire harpidedun berriak izateaz youtube и telegrama kanalak.
Опрос
Hurrengo paketeetatik zein erabiltzen duzu zure lanean?