Pulogalamu ya ProHoster > Blog > Ulamuliro > Ndi chilankhulo chiti chomwe mungasankhe kuti mugwiritse ntchito ndi data - R kapena Python? Onse! Kusamuka kuchokera ku panda kupita ku tidyverse ndi data.table ndi kubwerera
Ndi chilankhulo chiti chomwe mungasankhe kuti mugwiritse ntchito ndi data - R kapena Python? Onse! Kusamuka kuchokera ku panda kupita ku tidyverse ndi data.table ndi kubwerera
Pofufuza R kapena Python pa intaneti, mupeza mamiliyoni a zolemba ndi ma kilomita a zokambirana pamutu wakuti ndi wabwino, wachangu komanso wosavuta kugwiritsa ntchito ndi data. Koma mwatsoka, zolemba zonsezi ndi mikangano sizothandiza kwenikweni.
Cholinga cha nkhaniyi ndikufanizira njira zoyendetsera deta zomwe zili m'maphukusi otchuka azinenero zonse ziwiri. Ndipo thandizani owerenga kudziwa mwachangu zomwe sakudziwa. Kwa iwo omwe amalemba mu Python, fufuzani momwe mungachitire zomwezo mu R, ndi mosemphanitsa.
M'nkhaniyo tidzasanthula kalembedwe ka phukusi lodziwika kwambiri mu R. Awa ndi mapepala omwe akuphatikizidwa mu laibulale tidyversekomanso paketi data.table. Ndipo yerekezerani mawu awo ndi pandas, phukusi lodziwika kwambiri losanthula deta ku Python.
Tidzadutsa pang'onopang'ono njira yonse yowunikira deta kuchokera pakuyiyika mpaka pochita ntchito zazenera pogwiritsa ntchito Python ndi R.
Zamkatimu
Nkhaniyi ingagwiritsidwe ntchito ngati pepala lachinyengo ngati mwaiwala momwe mungapangire ntchito yokonza deta mu imodzi mwa phukusi lomwe likuganiziridwa.
Ngati mukufuna kusanthula deta, mungapeze wanga uthengawo и Youtube njira. Zambiri mwazomwe zimaperekedwa ku chilankhulo cha R.
Kusiyana kwakukulu kwa syntax pakati pa R ndi Python
Kuti zikhale zosavuta kuti musinthe kuchokera ku Python kupita ku R, kapena mosemphanitsa, ndikupatsani mfundo zazikulu zingapo zomwe muyenera kuziganizira.
Kupeza Ntchito Za Phukusi
Phukusi likayikidwa mu R, simuyenera kufotokoza dzina la phukusi kuti mupeze ntchito zake. Nthawi zambiri izi sizodziwika mu R, koma ndizovomerezeka. Simuyenera kuitanitsa phukusi konse ngati mukufuna imodzi mwazochita zake mu code yanu, koma ingoyitchani potchula dzina la phukusi ndi dzina la ntchitoyo. Olekanitsa pakati pa phukusi ndi mayina a ntchito mu R ndi coloni iwiri. package_name::function_name().
Mu R, ndizofala kugwiritsa ntchito muvi kuti mupereke mtengo ku chinthu. obj_name <- value, ngakhale chizindikiro chimodzi chofanana ndi chololedwa, chizindikiro chimodzi chofanana mu R chimagwiritsidwa ntchito makamaka popereka mfundo kuti zigwire ntchito.
Ku Python, ntchito imachitidwa kokha ndi chizindikiro chimodzi chofanana obj_name = value.
Kulozera
Palinso kusiyana kwakukulu apa. Mu R, kulondolera kumayambira pa imodzi ndipo kumaphatikizapo zinthu zonse zomwe zafotokozedwa muzotsatira,
Mu Python, kulondolera kumayambira pa ziro ndipo mndandanda womwe wasankhidwa suphatikiza chinthu chomaliza chomwe chafotokozedwa muzolozera. Choncho kupanga x[i:j] mu Python sichiphatikizapo j element.
Palinso zosiyana pakulondolera kolakwika, mu R notation x[-1] idzabwezeretsa zinthu zonse za vector kupatula yomaliza. Ku Python, zolemba zofananira zidzangobweretsa chinthu chomaliza.
Njira ndi OOP
R imagwiritsa ntchito OOP mwanjira yake, ndidalemba za izi m'nkhaniyi "OOP m'chinenero cha R (gawo 1): makalasi a S3". Kawirikawiri, R ndi chinenero chogwira ntchito, ndipo chirichonse chomwe chiri momwemo chimamangidwa pa ntchito. Chifukwa chake, mwachitsanzo, kwa ogwiritsa ntchito a Excel, pitani ku tydiverse zidzakhala zosavuta kuposa pandas. Ngakhale izi zitha kukhala lingaliro langa lokhazikika.
Mwachidule, zinthu zomwe zili mu R zilibe njira (ngati tikukamba za makalasi a S3, koma pali zina zomwe zakhazikitsidwa ndi OOP zomwe ndizochepa kwambiri). Pali ntchito zokhazikika zomwe zimawasintha mosiyana malinga ndi gulu la chinthucho.
Mapaipi
Mwina ili ndi dzina lake pandas Sizingakhale zolondola kwathunthu, koma ndiyesera kufotokoza tanthauzo lake.
Kuti musapulumutse kuwerengera kwapakatikati komanso kuti musapange zinthu zosafunika m'malo ogwirira ntchito, mutha kugwiritsa ntchito mtundu wa payipi. Iwo. perekani zotsatira za kuwerengera kuchokera ku ntchito ina kupita ku ina, ndipo musasunge zotsatira zapakatikati.
Choyamba, ndikuwuzani pang'ono za mapaketi omwe mudzawadziwa bwino m'nkhaniyi.
zasintha
Webusaiti yamtundu: tidyverse.org
Library tidyverse yolembedwa ndi Hedley Wickham, Senior Research Scientist ku RStudio. tidyverse imakhala ndi maphukusi ochititsa chidwi omwe amathandizira kukonza deta mosavuta, 5 mwa iwo akuphatikizidwa muzotsitsa 10 zapamwamba kuchokera kunkhokwe ya CRAN.
Pakatikati pa laibulale ili ndi mapepala awa: ggplot2, dplyr, tidyr, readr, purrr, tibble, stringr, forcats. Iliyonse mwa phukusili ili ndi cholinga chothetsa vuto linalake. Mwachitsanzo dplyr idapangidwa kuti iwononge data, tidyr kubweretsa deta mu mawonekedwe abwino, stringr imathandizira kugwira ntchito ndi zingwe, ndi ggplot2 ndi imodzi mwa zida zodziwika bwino zowonera deta.
mwayi tidyverse ndikosavuta komanso kosavuta kuwerenga, komwe kuli kofanana m'njira zambiri ndi chilankhulo cha SQL.
Kutulutsidwa koyamba kwa laibulaleyi kunachitika mu 2006.
Syntax ya phukusi siyosavuta ngati in tidyverse ndipo imakumbukiranso ma dataframe akale mu R, koma nthawi yomweyo amakulitsidwa kwambiri pakugwira ntchito.
Zosintha zonse zomwe zili ndi tebulo mu phukusili zikufotokozedwa m'mabulaketi apakati, ndipo ngati mutamasulira mawuwo. data.table mu SQL, mumapeza zinthu monga izi: data.table[ WHERE, SELECT, GROUP BY ]
Mphamvu ya phukusili ndi liwiro la kukonza deta yambiri.
Maphukusi omwe akufotokozedwa m'nkhaniyi sanaphatikizidwe mu magawo oyambira a R ndi Python. Ngakhale pali chenjezo laling'ono, ngati mwayika kugawa kwa Anaconda, ndiye kukhazikitsanso pandas osafunikira.
Kuyika mapaketi mu R
Ngati mwatsegula malo a chitukuko cha RStudio kamodzi, mwinamwake mukudziwa kale momwe mungayikitsire phukusi lofunikira mu R. Kuti muyike mapepala, gwiritsani ntchito lamulo lokhazikika. install.packages() poyiyendetsa molunjika mu R yokha.
# установка пакетов
install.packages("vroom")
install.packages("readr")
install.packages("dplyr")
install.packages("data.table")
Mu phukusi vroom, mosasamala kanthu za mtundu wa data wa csv / tsv, kutsitsa kumachitika ndi ntchito ya dzina lomwelo vroom(), mu paketi readr timagwiritsa ntchito zosiyana pamtundu uliwonse read_tsv() и read_csv().
Onani mayina a magawo pogwiritsa ntchito mawu okhazikika
Mwa mtundu wa data kapena katundu wina uliwonse wa data yomwe ili mugawoli
Kusankha mizati mu 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)
Kusankha mizati mu R: data.table
Ntchito zomwezo mu data.table amachitidwa mwanjira ina, koyambirira kwa nkhaniyo ndidapereka kufotokozera zomwe zili mkati mwa mabulaketi apakati data.table.
DT[i,j,by]
Kumeneko:
i - kuti, i.e. kusefa ndi mizere
j - sankhani|kusintha|chita, i.e. kusankha mizati ndikusintha
mwa - gulu la data
Kusankha mizati ndi dzina mu pandas ndikokwanira kupereka mndandanda wa mayina awo. Ndipo kuti musankhe kapena kusanja mizati ndi mayina pogwiritsa ntchito mawu okhazikika, muyenera kugwiritsa ntchito ntchitozo drop() и filter(), ndi kukangana olamulira=1, zomwe mukuwonetsa kuti ndikofunikira kukonza zipilala osati mizere.
Kuti musankhe gawo ndi mtundu wa data, gwiritsani ntchito ntchitoyi select_dtypes(), ndi kukangana onjezerani kapena sungani perekani mndandanda wamitundu yofananira ndi magawo omwe muyenera kusankha.
Kusankha mizati mu Python: pandas
# Выбор полей по названию
ga_nov[['date', 'source', 'sessions']]
# Исключить по названию
ga_nov.drop(['medium', 'bounces'], axis=1)
# Выбрать по регулярному выражению
ga_nov.filter(regex="s$", axis=1)
# Выбрать числовые поля
ga_nov.select_dtypes(include=['number'])
# Выбрать текстовые поля
ga_nov.select_dtypes(include=['object'])
Kusefa mizere
Mwachitsanzo, tebulo la magwero likhoza kukhala ndi zaka zingapo za deta, koma muyenera kusanthula mwezi wapitawu. Apanso, mizere yowonjezera idzachedwetsa ndondomeko yowonongeka kwa deta ndikutseka kukumbukira kwa PC.
Pankhaniyi, titenga dataframe mwachitsanzo Titanic, ndikuwerengera chiwerengero ndi mtengo wapakati wa matikiti kutengera kalasi ya kanyumba.
Kugawa ndi kusonkhanitsa deta mu R: tidyverse, dplyr
В dplyr ntchitoyi imagwiritsidwa ntchito kupanga magulu group_by(), ndi kusonkhanitsa summarise(). Pamenepo, dplyr pali banja lonse la ntchito summarise_*(), koma cholinga cha nkhaniyi ndikufanizira mawu oyambira, kuti tisalowe m'nkhalango yotere.
Kugwira ntchito group_by() tinadutsa tebulo ngati mkangano woyamba Titanic, ndiyeno kusonyeza munda Pclass, momwe tidzayikamo tebulo lathu. Zotsatira za opaleshoniyi pogwiritsa ntchito woyendetsa %>% idadutsa ngati mtsutso woyamba ku ntchitoyi summarise(), ndikuwonjezera minda ina 2: apaulendo и avg_price. Choyamba, mutha kugwiritsa ntchito length() anawerengera chiwerengero cha matikiti, ndipo chachiwiri ntchito ntchito mean() adalandira mtengo wapakati wa tikiti.
Kuyika m'magulu ndi kusonkhanitsa deta mu R: data.table
В data.table mkangano umagwiritsidwa ntchito pophatikiza j yomwe ili ndi malo achiwiri m'mabulaketi apakati, ndi magulu by kapena keyby, amene ali ndi malo achitatu.
Mndandanda wa ntchito zophatikizira mu nkhaniyi ndi zofanana ndi zomwe zafotokozedwa mu dplyr, chifukwa izi ndi ntchito zochokera ku R syntax.
Kuyika magulu ndi kuphatikiza mu R: data.table
## data.table
### фильтрация строк по одному условию
titanic[, .(passangers = length(PassengerId),
avg_price = mean(Fare)),
by = Pclass]
Kuyika m'magulu ndi kuphatikiza kwa data mu Python: pandas
Kupanga magulu pandas zofanana ndi dplyr, koma kuphatikizikako sikufanana ndi dplyr ayi pa data.table.
ntchito reset_index() m'chitsanzo chomwe chili pansipa chimagwiritsidwa ntchito kukonzanso zolozera zomwe zili m'zisa pandas zosasintha pambuyo pa kusonkhanitsa deta.
Chizindikiro amakulolani kusunthira ku mzere wotsatira.
Kupanga magulu ndi kuphatikiza mu Python: pandas
# группировка и агрегация данных
titanic.groupby(["Pclass"]).
agg({'PassengerId': 'count', 'Fare': 'mean'}).
reset_index()
Kulumikizana koyima kwa matebulo
Opaleshoni yomwe mumalumikiza magome awiri kapena kuposerapo amtundu womwewo. Zomwe takweza zili ndi matebulo ga_nov и ga_dec. Matebulo awa ndi ofanana m'mapangidwe, i.e. khalani ndi mizati yofanana, ndi mitundu ya data muzaza izi.
Uku ndikukweza kuchokera ku Google Analytics m'mwezi wa Novembala ndi Disembala, mugawo lino tidzaphatikiza deta iyi kukhala tebulo limodzi.
В pandas ntchitoyi imagwiritsidwa ntchito kujowina matebulo concat(), momwe muyenera kudutsa mndandanda wa mafelemu kuti muwaphatikize.
Kusefa zingwe mu Python: pandas
# вертикальное объединение таблиц
pd.concat([ga_nov, ga_dec])
Kulumikizana kopingasa kwa matebulo
Ntchito yomwe mizati yachiwiri imawonjezedwa patebulo loyamba ndi kiyi. Amagwiritsidwa ntchito nthawi zambiri pokulitsa tebulo lazinthu (mwachitsanzo, tebulo lokhala ndi data yogulitsa) ndi data ina (mwachitsanzo, mtengo wa chinthu).
Pali mitundu ingapo yolumikizirana:
Mu tebulo lodzaza kale Titanic tili ndi gawo kugonana, zomwe zimagwirizana ndi nambala ya jenda:
1 - mkazi
2 - mwamuna
Komanso, tapanga tebulo - buku lofotokozera chikhalidwe. Kuti muwonetse zambiri zamtundu wa jenda, tiyenera kuwonjezera dzina la jenda kuchokera m'ndandanda. chikhalidwe ku tebulo Titanic.
Gome lopingasa lolowera R: tidyverse, dplyr
В dplyr Pali gulu lonse la ntchito zolumikizira zopingasa:
inner_join()
left_join()
right_join()
full_join()
semi_join()
nest_join()
anti_join()
Zomwe zimagwiritsidwa ntchito kwambiri muzochita zanga ndi left_join().
# объединяем таблицы
left_join(titanic, gender,
by = c("Sex" = "id"))
Kulumikizana kopingasa kwa matebulo mu R: data.table
В data.table Muyenera kujowina matebulo pogwiritsa ntchito kiyi merge().
Zotsutsana zophatikiza () ntchito mu data.table
x, y - Matebulo ojowina
by — Column that is the key to join if it has the same name in all the tables
by.x, by.y - Mayina amigawo kuti aphatikizidwa, ngati ali ndi mayina osiyanasiyana pamatebulo
all, all.x, all.y - Lembani mtundu, zonse zidzabweza mizere yonse kuchokera ku matebulo onse awiri, all.x ikugwirizana ndi LEFT JOIN (idzasiya mizere yonse ya tebulo loyamba), all.y - ikugwirizana ndi RIGHT JOIN ntchito (idzasiya mizere yonse ya tebulo lachiwiri).
Kulumikizana kopingasa kwa matebulo mu R: data.table
pa - Column yomwe ndi kiyi ngati ili ndi dzina lomwelo pamagome onse awiri
left_on, right_on - Mayina a mizati yofunika, ngati ali ndi mayina osiyana mu matebulo
Gome lopingasa lilowa nawo Python: pandas
# объединяем по ключу
titanic.merge(gender, how = "left", left_on = "Sex", right_on = "id")
Ntchito zoyambira zenera ndi magawo owerengeka
Ntchito zamazenera ndizofanana ndi ntchito zophatikiza, ndipo zimagwiritsidwanso ntchito posanthula deta. Koma mosiyana ndi ntchito zophatikizira, ntchito zazenera sizisintha kuchuluka kwa mizere ya dataframe yotuluka.
Kwenikweni, pogwiritsa ntchito zenera, timagawaniza dataframe yomwe ikubwera m'zigawo molingana ndi miyeso ina, i.e. ndi mtengo wamunda, kapena minda ingapo. Ndipo timachita masamu pawindo lililonse. Zotsatira za ntchitozi zidzabwezeredwa pamzere uliwonse, i.e. popanda kusintha chiwerengero chonse cha mizere patebulo.
Mwachitsanzo, tiyeni titenge tebulo Titanic. Titha kuwerengera kuchuluka kwa mtengo wa tikiti iliyonse mkati mwa kalasi yake yanyumba.
Kuti tichite izi, tifunika kuyika pamzere uliwonse mtengo wa tikiti wa gulu lanyumba lomwe tikiti ili pamzerewu, ndikugawa mtengo wa tikiti iliyonse ndi mtengo wokwanira wa matikiti onse agulu lomwelo. .
Mawindo amagwira ntchito mu R: tidyverse, dplyr
Kuti muwonjezere mizati yatsopano, osagwiritsa ntchito magulu a mizere, mu dplyr imagwira ntchito mutate().
Mutha kuthana ndi vuto lomwe lafotokozedwa pamwambapa pogawa deta ndi gawo Pclass ndi kufotokoza mwachidule gawolo mu ndime yatsopano Mitengo. Kenako, sankhani gululo ndikugawa magawo amunda Mitengo ku zomwe zidachitika m'mbuyomu.