ProHoster > Blog > Administrasyon an > Ki lang pou w chwazi pou travay ak done - R oswa Python? Tou de! Migrasyon soti nan panda nan tidyverse ak data.table ak tounen lakay ou
Ki lang pou w chwazi pou travay ak done - R oswa Python? Tou de! Migrasyon soti nan panda nan tidyverse ak data.table ak tounen lakay ou
Lè w chèche R oswa Python sou entènèt la, w ap jwenn dè milyon de atik ak kilomèt diskisyon sou sijè ki pi bon, pi vit ak pi bon pou travay ak done yo. Men, malerezman, tout atik sa yo ak diskisyon yo pa patikilyèman itil.
Objektif atik sa a se pou konpare teknik debaz tretman done yo nan pakè ki pi popilè nan tou de lang yo. Epi ede lektè yo byen vit metrize yon bagay yo poko konnen. Pou moun ki ekri nan Python, chèche konnen ki jan fè menm bagay la nan R, ak vis vèrsa.
Pandan atik la nou pral analize sentaks pakè ki pi popilè nan R. Sa yo se pakè ki enkli nan bibliyotèk la. tidyverseepi tou pakè a data.table. Epi konpare sentaks yo ak pandas, pake analiz done ki pi popilè nan Python.
Nou pral ale etap pa etap nan tout chemen an nan analiz done soti nan chaje li nan fè fonksyon fenèt analyse lè l sèvi avèk Python ak R.
Content
Atik sa a ka itilize kòm yon fèy tronpe si ou te bliye ki jan fè kèk operasyon pwosesis done nan youn nan pakè yo anba konsiderasyon.
Si w enterese nan analiz done, ou ka jwenn mwen telegram и YouTube chanèl. Pifò nan kontni an dedye a lang R la.
Diferans sentaks prensipal ant R ak Python
Pou fè li pi fasil pou ou chanje soti nan Python nan R, oswa vis vèrsa, mwen pral bay kèk pwen prensipal ke ou bezwen peye atansyon a.
Aksè Fonksyon Pake
Yon fwa yo chaje yon pake nan R, ou pa bezwen presize non pake a pou jwenn aksè nan fonksyon li yo. Nan pifò ka sa a pa komen nan R, men li akseptab. Ou pa bezwen enpòte yon pake ditou si ou bezwen youn nan fonksyon li yo nan kòd ou a, men tou senpleman rele li lè w espesifye non pake a ak non fonksyon an. Separatè ant pake ak non fonksyon nan R se yon doub kolon. package_name::function_name().
Nan Python, okontrè, li konsidere kòm klasik yo rele fonksyon yo nan yon pake pa klèman espesifye non li. Lè yo telechaje yon pake, anjeneral yo bay li yon non ki pi kout, pa egzanp. pandas anjeneral yo itilize yon psedonim pd. Yon fonksyon pake gen aksè atravè yon pwen package_name.function_name().
Plasman
Nan R, li komen pou itilize yon flèch pou bay yon valè yon objè. obj_name <- value, byenke yon sèl siy egal a pèmèt, se yon sèl siy egal nan R yo itilize prensipalman pou pase valè nan agiman fonksyon.
Nan Python, plasman yo fèt sèlman ak yon sèl siy egal obj_name = value.
Indexing
Genyen tou diferans byen enpòtan isit la. Nan R, Indexing kòmanse nan yon sèl epi li gen ladan tout eleman espesifye nan seri a ki kapab lakòz,
Nan Python, Indexing kòmanse soti nan zewo ak seri a chwazi pa gen ladan dènye eleman ki espesifye nan endèks la. Se konsa, konsepsyon x[i:j] nan Python pa pral enkli eleman j la.
Genyen tou diferans ki genyen nan endèks negatif, nan notasyon R x[-1] pral retounen tout eleman vektè a eksepte dènye a. Nan Python, yon notasyon menm jan an pral retounen sèlman dènye eleman an.
Metòd ak OOP
R aplike OOP nan pwòp fason li, mwen te ekri sou sa a nan atik la "OOP nan lang R (pati 1): klas S3". An jeneral, R se yon lang fonksyonèl, ak tout bagay nan li se bati sou fonksyon. Se poutèt sa, pou egzanp, pou itilizatè Excel, ale nan tydiverse li pral pi fasil pase pandas. Malgre ke sa a ka opinyon subjectif mwen.
Nan ti bout tan, objè nan R pa gen metòd (si nou pale sou klas S3, men gen lòt aplikasyon OOP ki pi mwens komen). Gen sèlman fonksyon jeneralize ki trete yo yon fason diferan selon klas objè a.
Tiyo
Petèt sa a se non an pou pandas Li pa pral totalman kòrèk, men mwen pral eseye eksplike siyifikasyon an.
Yo nan lòd yo pa sove kalkil entèmedyè epi yo pa pwodwi objè ki pa nesesè nan anviwònman an k ap travay, ou ka itilize yon kalite tiyo. Moun sa yo. pase rezilta yon kalkil soti nan yon fonksyon nan yon lòt, epi pa sove rezilta entèmedyè.
Ann pran egzanp kòd sa a, kote nou estoke kalkil entèmedyè nan objè separe:
Nou te fè 3 operasyon an sekans, epi rezilta a nan chak te sove nan yon objè separe. Men, an reyalite, nou pa bezwen objè entèmedyè sa yo.
Oswa menm vin pi mal, men plis abitye ak itilizatè Excel.
obj <- func3(func2(func1()))
Nan ka sa a, nou pa te sove rezilta kalkil entèmedyè, men lekti kòd ak fonksyon enbrike se trè konvenyan.
Nou pral gade plizyè apwòch nan pwosesis done nan R, epi yo fè operasyon menm jan an nan diferan fason.
Pipelines nan bibliyotèk la tidyverse operatè a aplike %>%.
obj <- func1() %>%
func2() %>%
func3()
Kidonk nou pran rezilta travay la func1() epi pase li kòm premye agiman an func2(), Lè sa a, nou pase rezilta kalkil sa a kòm premye agiman an func3(). Epi nan fen a, nou ekri tout kalkil yo fè nan objè a obj <-.
Tout sa ki anwo yo ilistre pi byen pase mo pa mem sa a:
Nan chak parantèz yo ou ka itilize rezilta operasyon anvan an.
В pandas operasyon sa yo separe pa yon pwen.
obj = df.fun1().fun2().fun3()
Moun sa yo. nou pran tab nou df epi sèvi ak metòd li fun1(), Lè sa a, nou aplike metòd la nan rezilta yo jwenn fun2()apre fun3(). Se rezilta a ki kapab lakòz sove nan yon objè objè .
Estrikti done yo
Estrikti done nan R ak Python yo sanble, men yo gen non diferan.
Deskripsyon
Non nan R
Non nan Python/pandas
Estrikti tab la
data.frame, data.table, tibble
DataFrame
Lis yon dimansyon nan valè
Vektè
Seri nan panda oswa lis nan piton piton
Estrikti milti-nivo ki pa tabul
Lis
Diksyonè (dik)
Nou pral gade kèk lòt karakteristik ak diferans ki genyen nan sentaks anba a.
Kèk mo sou pakè nou pral itilize yo
Premyèman, mwen pral di ou yon ti kras sou pakè yo ke ou pral vin abitye avèk pandan atik sa a.
tidyverse
Официальный сайт: tidyverse.org
bibliyotèk tidyverse ekri pa Hedley Wickham, Senior Research Syantis nan RStudio. tidyverse konsiste de yon seri pakè enpresyonan ki senplifye pwosesis done, 5 ladan yo enkli nan 10 pi gwo telechajman ki soti nan depo CRAN.
Nwayo bibliyotèk la konsiste de pakè sa yo: ggplot2, dplyr, tidyr, readr, purrr, tibble, stringr, forcats. Chak pakè sa yo vize pou rezoud yon pwoblèm espesifik. Pa egzanp dplyr kreye pou manipilasyon done, tidyr pote done yo nan yon fòm pwòp, stringr senplifye travay ak fisèl, ak ggplot2 se youn nan zouti vizyalizasyon done ki pi popilè.
Avantaj la tidyverse se senplisite la ak fasil li sentaks, ki se nan plizyè fason menm jan ak lang nan rechèch SQL.
Sentaks pake a pa pratik tankou nan tidyverse epi li se plis okoumansman de klasik dataframes nan R, men an menm tan an siyifikativman elaji nan fonksyonalite.
Tout manipilasyon ak tablo a nan pake sa a yo dekri nan parantèz kare, epi si ou tradui sentaks la data.table nan SQL, ou jwenn yon bagay tankou sa a: data.table[ WHERE, SELECT, GROUP BY ]
Fòs nan pake sa a se vitès la nan pwosesis gwo kantite done.
Non bibliyotèk la soti nan tèm ekonometrik "panèl done", yo itilize pou dekri seri enfòmasyon estriktire miltidimansyon.
Pa pandas se Ameriken Wes McKinney.
Lè li rive analiz done nan Python, egal pandas Non. Yon pake trè multifonksyonèl, wo nivo ki pèmèt ou fè nenpòt manipilasyon ak done, soti nan chaje done ki soti nan nenpòt sous yo vizyalize li.
Enstale pakè adisyonèl
Pakè yo diskite nan atik sa a pa enkli nan distribisyon debaz R ak Python. Malgre ke gen yon ti opozisyon, si ou enstale distribisyon an Anaconda, Lè sa a, enstale anplis pandas pa obligatwa.
Enstale pakè nan R
Si ou te louvri anviwònman devlopman RStudio omwen yon fwa, pwobableman ou deja konnen ki jan yo enstale pake ki nesesè a nan R. Pou enstale pakè, sèvi ak lòd estanda a. install.packages() pa kouri li dirèkteman nan R tèt li.
# установка пакетов
install.packages("vroom")
install.packages("readr")
install.packages("dplyr")
install.packages("data.table")
Apre enstalasyon, pakè yo bezwen konekte, pou ki nan pifò ka yo se kòmandman an itilize library().
# подключение или импорт пакетов в рабочее окружение
library(vroom)
library(readr)
library(dplyr)
library(data.table)
Enstale pakè nan Python
Se konsa, si ou gen pi bon Python enstale, lè sa a pandas ou bezwen enstale li manyèlman. Louvri yon liy lòd, oswa tèminal, tou depann de sistèm opere ou a epi antre nan lòd sa a.
pip install pandas
Lè sa a, nou retounen nan Python ak enpòte pake a enstale ak lòd la import.
import pandas as pd
Chaje Done
Done min se youn nan etap ki pi enpòtan nan analiz done yo. Tou de Python ak R, si ou vle, bay ou ak anpil opòtinite pou jwenn done ki soti nan nenpòt sous: dosye lokal yo, dosye ki soti nan entènèt la, sit entènèt, tout kalite baz done.
Pandan tout atik la nou pral sèvi ak plizyè seri done:
De telechaje soti nan Google Analytics.
Dataset pasaje Titanic.
Tout done yo sou mwen GitHub sou fòm dosye csv ak tsv. Ki kote nou pral mande yo?
Chaje done nan R: tidyverse, vroom, readr
Pou chaje done nan yon bibliyotèk tidyverse Gen de pakè: vroom, readr. vroom pi modèn, men nan lavni an pakè yo ka konbine.
vroom vs lektè
Ki sa ki liberasyon an nan vroom vle di pou readr? Pou kounye a nou planifye kite de pakè yo evolye separeman, men gen anpil chans nou pral ini pakè yo nan lavni. Youn nan dezavantaj nan lekti parese vroom a se sèten pwoblèm done yo pa ka rapòte davans, kidonk ki jan pi bon inifye yo mande pou kèk reflechi.
vroom vs lektè
Ki sa Liberasyon vle di? vroom pou readr? Nan moman sa a nou planifye devlope tou de pakè separeman, men nou pral pwobableman konbine yo nan lavni. Youn nan dezavantaj yo nan lekti parese vroom se ke kèk pwoblèm ak done yo pa ka rapòte davans, kidonk ou bezwen reflechi sou ki jan pi bon konbine yo.
Nan atik sa a nou pral gade tou de pakè chaj done yo:
Nan pake a vroom, kèlkeswa fòma done csv / tsv, chajman fèt pa fonksyon menm non an. vroom(), nan pakè a readr nou itilize yon fonksyon diferan pou chak fòma read_tsv() и read_csv().
Chaje done nan R: data.table
В data.table gen yon fonksyon pou chaje done fread().
Si nou konpare ak pakè R, Lè sa a, nan ka sa a sentaks la pi pre pandas pral readr, paske pandas ka mande done nenpòt kote, epi gen yon fanmi antye nan fonksyon nan pake sa a read_*().
read_csv()
read_excel()
read_sql()
read_json()
read_html()
Ak anpil lòt fonksyon ki fèt pou li done ki soti nan divès fòma. Men, pou rezon nou li ase read_table() oswa read_csv() lè l sèvi avèk agiman Sep pou presize separateur kolòn lan.
В pandas se kreye ankadreman fèt nan plizyè etap, premye nou kreye yon diksyonè, ak Lè sa a, nou konvèti diksyonè a nan yon dataframe.
Kreye yon dataframe nan Python: panda
# создаём дата фрейм
gender_dict = {'id': [1, 2],
'gender': ["female", "male"]}
# преобразуем словарь в датафрейм
gender = pd.DataFrame.from_dict(gender_dict)
Chwazi kolòn
Tablo ou travay avèk yo ka genyen plizyè douzèn oswa menm dè santèn de kolòn done. Men, pou fè analiz, kòm yon règ, ou pa bezwen tout kolòn ki disponib nan tablo sous la.
Se poutèt sa, youn nan premye operasyon yo ke ou pral fè ak tab sous la se netwaye li nan enfòmasyon ki pa nesesè epi libere memwa ke enfòmasyon sa a okipe.
Chwazi kolòn nan R: tidyverse, dplyr
sentaks dplyr se trè menm jan ak lang nan rechèch SQL, si ou abitye ak li ou pral byen vit metrize pake sa a.
Pou chwazi kolòn, sèvi ak fonksyon an select().
Anba a gen kèk egzanp kòd ak kote ou ka chwazi kolòn nan fason sa yo:
Lis non kolòn obligatwa yo
Gade non kolòn yo lè l sèvi avèk ekspresyon regilye
Dapre kalite done oswa nenpòt lòt pwopriyete done ki nan kolòn nan
Chwazi kolòn nan 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)
Chwazi kolòn nan R: data.table
Operasyon yo menm nan data.table yo fè yon ti kras diferan, nan kòmansman atik la mwen te bay yon deskripsyon sou ki agiman yo andedan parantèz kare nan data.table.
DT[i,j,by]
Ki kote:
mwen - kote, i.e. filtraj pa ranje
j - chwazi|mizajou|fè, i.e. chwazi kolòn ak konvèti yo
pa - gwoupman done
Varyab .SD pèmèt ou jwenn aksè nan tout kolòn, ak .SDcols filtre kolòn ki nesesè yo lè l sèvi avèk ekspresyon regilye, oswa lòt fonksyon pou filtre non kolòn ou bezwen yo.
Chwazi kolòn nan Python, panda
Pou chwazi kolòn pa non nan pandas li ase pou bay yon lis non yo. Epi pou chwazi oswa eskli kolòn pa non lè l sèvi avèk ekspresyon regilye, ou bezwen sèvi ak fonksyon yo drop() и filter(), ak agiman aks = 1, ak ki ou endike ke li nesesè pou trete kolòn olye ke ranje.
Pou chwazi yon jaden pa kalite done, sèvi ak fonksyon an select_dtypes(), ak nan agiman gen ladan yo oswa eskli pase yon lis kalite done ki koresponn ak ki jaden ou bezwen chwazi.
Chwazi kolòn nan 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'])
Filtrage ranje
Pou egzanp, tab sous la ka gen plizyè ane nan done, men ou sèlman bezwen analize dènye mwa a. Yon fwa ankò, liy siplemantè yo pral ralanti pwosesis la pwosesis done ak bouche memwa PC a.
Filtrage ranje nan R: tydyverse, dplyr
В dplyr fonksyon an itilize pou filtre ranje filter(). Li pran yon dataframe kòm premye agiman an, Lè sa a, ou lis kondisyon yo filtraj.
Lè w ap ekri ekspresyon lojik pou filtre yon tab, nan ka sa a, presize non kolòn yo san guillemets epi san yo pa deklare non tab la.
Lè w ap itilize plizyè ekspresyon lojik pou filtre, sèvi ak operatè sa yo:
& oswa vigil - lojik AND
| - lojik OSWA
Filtrage ranje nan R: dplyr
# фильтрация строк
## dplyr
### фильтрация строк по одному условию
filter(ga_nov, source == "google")
### фильтр по двум условиям соединённым логическим и
filter(ga_nov, source == "google" & sessions >= 10)
### фильтр по двум условиям соединённым логическим или
filter(ga_nov, source == "google" | sessions >= 10)
Filtrage ranje nan R: data.table
Kòm mwen te deja ekri pi wo a, nan data.table sentaks konvèsyon done yo mete nan parantèz kare.
DT[i,j,by]
Ki kote:
mwen - kote, i.e. filtraj pa ranje
j - chwazi|mizajou|fè, i.e. chwazi kolòn ak konvèti yo
pa - gwoupman done
Yo itilize agiman an pou filtre ranje i, ki gen premye pozisyon nan parantèz kare.
Yo jwenn aksè nan kolòn nan ekspresyon lojik san guillemets epi san yo pa espesifye non tab la.
Ekspresyon lojik yo gen rapò youn ak lòt menm jan ak nan dplyr atravè operatè yo & ak |.
Filtrage ranje nan R: data.table
## data.table
### фильтрация строк по одному условию
ga_nov[source == "google"]
### фильтр по двум условиям соединённым логическим и
ga_nov[source == "google" & sessions >= 10]
### фильтр по двум условиям соединённым логическим или
ga_nov[source == "google" | sessions >= 10]
Filtrage strings nan Python: panda
Filtre pa ranje nan pandas menm jan ak filtraj nan data.table, epi li fè nan parantèz kare.
Nan ka sa a, aksè nan kolòn yo fèt nesesèman lè w endike non an nan dataframe la; Lè sa a, non kolòn nan ka endike tou nan guillemets nan parantèz kare (egzanpdf['col_name']), oswa san quotes apre peryòd la (egzanpdf.col_name).
Si ou bezwen filtre yon dataframe pa plizyè kondisyon, yo dwe mete chak kondisyon an parantèz. Kondisyon lojik yo konekte youn ak lòt pa operatè yo & и |.
Filtrage strings nan 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)]
Gwoupman ak agrégation done yo
Youn nan operasyon ki pi souvan itilize nan analiz done se gwoupman ak agrégation.
Sentaks pou fè operasyon sa yo gaye nan tout pakè nou revize yo.
Nan ka sa a, nou pral pran yon dataframe kòm yon egzanp Titanic, epi kalkile kantite ak pri mwayèn tikè yo depann de klas kabin an.
Gwoupman ak agrégasyon done nan R: tidyverse, dplyr
В dplyr se fonksyon an itilize pou gwoupman group_by(), ak pou agrégation summarise(). An reyalite, dplyr gen tout yon fanmi fonksyon summarise_*(), men objektif atik sa a se konpare sentaks debaz la, kidonk nou pa pral antre nan forè sa yo.
Pou fonksyone group_by() nou te pase tab la kòm premye agiman an Titanic, ak Lè sa a, endike jaden an Pclass, pa ki nou pral gwoupe tab nou an. Rezilta a nan operasyon sa a lè l sèvi avèk operatè a %>% pase kòm premye agiman nan fonksyon an summarise(), epi ajoute 2 lòt jaden: pasaje yo и pri_mwayèn. Nan premye a, lè l sèvi avèk fonksyon an length() kalkile kantite tikè, ak nan dezyèm lan lè l sèvi avèk fonksyon an mean() te resevwa pri mwayèn tikè a.
Gwoupman ak agrégation done nan R: data.table
В data.table se agiman an itilize pou agrégation j ki gen yon dezyèm pozisyon nan parantèz kare, ak pou gwoupman by oswa keyby, ki gen twazyèm pozisyon.
Lis fonksyon agrégasyon nan ka sa a idantik ak sa ki dekri nan dplyr, paske sa yo se fonksyon ki soti nan sentaks R debaz la.
Gwoupman ak agrégation nan R: data.table
## data.table
### фильтрация строк по одному условию
titanic[, .(passangers = length(PassengerId),
avg_price = mean(Fare)),
by = Pclass]
Gwoupman ak agrégation done nan Python: panda
Gwoupman nan pandas menm jan ak dplyr, men totalman an pa sanble ak dplyr pa sou data.table.
Pou gwoupe, sèvi ak metòd la groupby(), nan ki ou bezwen pase yon lis kolòn kote dataframe a pral gwoupe.
Pou agrégation ou ka itilize metòd la agg()ki aksepte yon diksyonè. Kle diksyonè yo se kolòn kote w ap aplike fonksyon agrégasyon yo, ak valè yo se non fonksyon agrégasyon yo.
Fonksyon Agregasyon:
sum() - rezime
min() / max() - valè minimòm ak maksimòm
mean() - mwayèn
median() - medyàn
count() - kantite
Fonksyon reset_index() nan egzanp ki anba a li se itilize yo Reyajiste endis ki enbrike sa pandas par défaut apre agrégation done.
Senbòl pèmèt ou ale nan pwochen liy lan.
Gwoupman ak agrégation nan Python: panda
# группировка и агрегация данных
titanic.groupby(["Pclass"]).
agg({'PassengerId': 'count', 'Fare': 'mean'}).
reset_index()
Vètikal rantre nan tab yo
Yon operasyon kote ou rantre de oswa plis tab nan menm estrikti a. Done nou chaje yo gen tab ga_nov и ga_dec. Tablo sa yo idantik nan estrikti, i.e. gen menm kolòn yo, ak kalite done yo nan kolòn sa yo.
Sa a se yon upload soti nan Google Analytics pou mwa Novanm ak Desanm, nan seksyon sa a nou pral konbine done sa yo nan yon sèl tablo.
Vètikalman rantre nan tab nan R: tidyverse, dplyr
В dplyr Ou ka konbine 2 tab nan yon sèl lè l sèvi avèk fonksyon an bind_rows(), pase tab kòm agiman li yo.
Filtrage ranje nan R: dplyr
# Вертикальное объединение таблиц
## dplyr
bind_rows(ga_nov, ga_dec)
Vètikalman rantre nan tab nan R: data.table
Se tou pa gen anyen konplike, ann sèvi ak rbind().
Filtrage ranje nan R: data.table
## data.table
rbind(ga_nov, ga_dec)
Vètikalman rantre nan tab nan Python: panda
В pandas fonksyon an itilize pou rantre nan tab yo concat(), nan ki ou bezwen pase yon lis ankadreman yo konbine yo.
Filtrage strings nan Python: panda
# вертикальное объединение таблиц
pd.concat([ga_nov, ga_dec])
Orizontal rantre nan tab yo
Yon operasyon kote kolòn ki soti nan dezyèm lan yo ajoute nan premye tab la pa kle. Li se souvan itilize lè anrichi yon tablo reyalite (pa egzanp, yon tablo ak done lavant) ak kèk done referans (pa egzanp, pri a nan yon pwodwi).
Gen plizyè kalite rantre:
Nan tab la deja chaje Titanic nou gen yon kolòn Sèks, ki koresponn ak kòd sèks pasaje a:
1 - fi
2 - gason
Epitou, nou te kreye yon tab - yon liv referans sèks. Pou yon prezantasyon pi pratik nan done sou sèks pasaje yo, nou bezwen ajoute non sèks la nan anyè a. sèks sou tab la Titanic.
Tablo orizontal rantre nan R: tidyverse, dplyr
В dplyr Gen yon fanmi antye nan fonksyon pou rantre orizontal:
inner_join()
left_join()
right_join()
full_join()
semi_join()
nest_join()
anti_join()
Ki pi souvan itilize nan pratik mwen an se left_join().
Kòm de premye agiman yo, fonksyon yo ki nan lis pi wo a pran de tab yo rantre nan, ak kòm twazyèm agiman an by ou dwe presize kolòn yo rantre nan.
Tablo orizontal rantre nan R: dplyr
# объединяем таблицы
left_join(titanic, gender,
by = c("Sex" = "id"))
Orizontal rantre nan tab nan R: data.table
В data.table Ou bezwen rantre nan tab pa kle lè l sèvi avèk fonksyon an merge().
Agiman pou merge() fonksyon nan data.table
x, y — Tablo pou rantre nan
by — Kolòn ki se kle pou rantre si li gen menm non nan tou de tab yo
by.x, by.y — Non kolòn yo dwe fizyone, si yo gen non diferan nan tablo yo
all, all.x, all.y — Kalite Join, all ap retounen tout ranje ki soti nan tou de tab, all.x koresponn ak operasyon LEFT JOIN (ap kite tout ranje premye tab la), all.y — koresponn ak Operasyon RIGHT JOIN (ap kite tout ranje dezyèm tab la).
Osi byen ke nan data.tablepous pandas fonksyon an itilize pou rantre nan tab yo merge().
Agiman merge() fonksyon nan panda
ki jan — Kalite koneksyon: gòch, dwa, ekstèn, enteryè
on — Kolòn ki se yon kle si li gen menm non an nan tou de tablo yo
left_on, right_on — Non kolòn kle yo, si yo gen non diferan nan tablo yo
Tablo orizontal rantre nan Python: panda
# объединяем по ключу
titanic.merge(gender, how = "left", left_on = "Sex", right_on = "id")
Fonksyon fenèt debaz ak kolòn kalkile
Fonksyon fenèt yo sanble nan siyifikasyon fonksyon agrégasyon, epi yo souvan itilize tou nan analiz done. Men, kontrèman ak fonksyon agrégation, fonksyon fenèt yo pa chanje kantite ranje dataframe sortan an.
Esansyèlman, lè l sèvi avèk fonksyon fenèt la, nou divize dataframe fèk ap rantre an an pati dapre kèk kritè, i.e. pa valè yon jaden, oswa plizyè jaden. Epi nou fè operasyon aritmetik sou chak fenèt. Rezilta operasyon sa yo pral retounen nan chak liy, i.e. san yo pa chanje kantite total ranje nan tablo a.
Pa egzanp, ann pran tab la Titanic. Nou ka kalkile ki pousantaj pri chak tikè te nan klas kabin li a.
Pou fè sa, nou bezwen jwenn nan chak liy pri total yon tikè pou klas kabin aktyèl la kote tikè nan liy sa a fè pati, epi divize pri chak tikè pa pri total tout tikè nan menm klas kabin. .
Fonksyon fenèt nan R: tidyverse, dplyr
Pou ajoute nouvo kolòn, san yo pa itilize gwoupman ranje, nan dplyr sèvi fonksyon mutate().
Ou ka rezoud pwoblèm ki dekri pi wo a lè w gwoupe done pa jaden Pclass ak adisyone jaden an nan yon nouvo kolòn Pri. Apre sa, separe tab la epi divize valè jaden yo Pri sa ki te pase nan etap anvan an.
Algorithm solisyon an rete menm jan ak nan dplyr, nou bezwen divize tab la nan fenèt pa jaden Pclass. Sòti nan yon nouvo kolòn kantite lajan an pou gwoup ki koresponn ak chak ranje, epi ajoute yon kolòn nan ki nou kalkile pati nan pri a nan chak tikè nan gwoup li yo.
Pou ajoute nouvo kolòn nan data.table operatè prezan :=. Anba a se yon egzanp pou rezoud yon pwoblèm lè l sèvi avèk pake a data.table
Fonksyon fenèt nan R: data.table
titanic[,c("Pclass_cost","ticket_fare_rate") := .(sum(Fare), Fare / Pclass_cost),
by = Pclass]
Fonksyon fenèt nan Python: panda
Youn nan fason yo ajoute yon nouvo kolòn nan pandas - sèvi ak fonksyon an assign(). Pou rezime pri tikè pa klas kabin, san gwoupman ranje, nou pral sèvi ak fonksyon an transform().
Anba a se yon egzanp yon solisyon kote nou ajoute nan tablo a Titanic menm 2 kolòn yo.
Chwazi kolòn select()
agiman j, dezyèm pozisyon nan parantèz kare
nou pase lis kolòn obligatwa yo nan parantèz kare / drop() / filter() / select_dtypes()
Filtrage ranje filter()
agiman i, premye pozisyon nan parantèz kare
Nou lis kondisyon filtraj yo nan parantèz kare / filter()
Gwoupman ak Agregasyon group_by() + summarise()
agiman j + by groupby() + agg()
Inyon vètikal tab yo (UNION) bind_rows() rbind() concat()
Join orizontal nan tab yo (JOIN) left_join() / *_join() merge() merge()
Fonksyon fenèt debaz yo ak ajoute kolòn kalkile group_by() + mutate()
agiman j lè l sèvi avèk operatè a := + agiman by transform() + assign()
Konklizyon
Petèt nan atik la mwen dekri pa aplikasyon ki pi optimal nan pwosesis done, kidonk mwen pral kontan si ou korije erè mwen yo nan kòmantè yo, oswa tou senpleman konplete enfòmasyon yo bay nan atik la ak lòt teknik pou travay ak done nan R / Python.
Kòm mwen te ekri pi wo a, objektif la nan atik la pa te enpoze opinyon yon moun sou ki lang ki pi bon, men senplifye opòtinite pou aprann tou de lang, oswa, si sa nesesè, emigre ant yo.
Si ou te renmen atik la, mwen pral kontan gen nouvo abonnés pou mwen YouTube и telegram chanèl.
Опрос
Kilès nan pakè sa yo ou itilize nan travay ou?
Nan kòmantè yo ou ka ekri rezon ki fè chwa ou.
Se sèlman itilizatè ki anrejistre ki ka patisipe nan sondaj la. Enskri, tanpri.
Ki pake tretman done ou itilize (ou ka chwazi plizyè opsyon)