Iza amin'ireo fiteny tokony hofidiana hiasa amin'ny angona - R na Python? Samy! Mifindra avy amin'ny panda mankany amin'ny tidyverse sy data.table sy back

Amin'ny fitadiavana R na Python amin'ny Internet dia hahita lahatsoratra sy kilometatra an-tapitrisany amin'ny fifanakalozan-kevitra momba ny lohahevitra hoe iza no tsara kokoa, haingana ary mety kokoa amin'ny fiasana amin'ny data. Saingy indrisy fa tsy dia ilaina loatra ireo lahatsoratra sy fifandirana rehetra ireo.

Iza amin'ireo fiteny tokony hofidiana hiasa amin'ny angona - R na Python? Samy! Mifindra avy amin'ny panda mankany amin'ny tidyverse sy data.table sy back

Ny tanjon'ity lahatsoratra ity dia ny fampitahana ireo teknika fanodinana data fototra amin'ireo fonosana malaza indrindra amin'ireo fiteny roa ireo. Ary ampio ny mpamaky hifehy haingana ny zavatra mbola tsy hainy. Ho an'ireo izay manoratra amin'ny Python dia tadiavo ny fomba hanaovana izany amin'ny R, ary ny mifamadika amin'izany.

Mandritra ny lahatsoratra dia handinika ny syntax amin'ny fonosana malaza indrindra amin'ny R. Ireo no fonosana tafiditra ao amin'ny tranomboky tidyverseary koa ny fonosana data.table. Ary ampitahao amin'ny syntax-ny pandas, fonosana famakafakana angona malaza indrindra amin'ny Python.

Handeha tsikelikely amin'ny lalan'ny famakafakana ny angon-drakitra isika manomboka amin'ny famenoana azy mankany amin'ny fanatanterahana ny fiasan'ny fikandrana famakafakana mampiasa Python sy R.

afa-po

Ity lahatsoratra ity dia azo ampiasaina ho takelaka fitaka raha adinonao ny fomba fanaovana asa fanodinana angon-drakitra amin'ny iray amin'ireo fonosana dinihina.

Iza amin'ireo fiteny tokony hofidiana hiasa amin'ny angona - R na Python? Samy! Mifindra avy amin'ny panda mankany amin'ny tidyverse sy data.table sy back

  1. Ny fahasamihafana lehibe eo amin'ny R sy Python
    1.1. Fidirana amin'ny fonosana fonosana
    1.2. Andraikitra
    1.3. nirakitra anarana
    1.4. Fomba sy OOP
    1.5. Pipelines
    1.6. Rafitra data
  2. Teny vitsivitsy momba ny fonosana hampiasainay
    2.1. tidyverse
    2.2. data.table
    2.3. pandas
  3. Fametrahana fonosana
  4. Loading Data
  5. Famoronana dataframes
  6. Fisafidianana ireo tsanganana ilainao
  7. Sivana andalana
  8. Vondrona sy Fanangonana
  9. Fiombonan'ny latabatra (UNION)
  10. Fikambanan'ny tabilao marindrano (JOIN)
  11. Fampiasana fikandrana fototra sy tsanganana kajy
  12. Tabilao fifandraisana eo amin'ny fomba fanodinana data amin'ny R sy Python
  13. famaranana
  14. Fanadihadiana fohy momba ny fonosana ampiasainao

Raha liana amin'ny famakafakana angon-drakitra ianao dia mety hahita ny ahy telegrama и YouTube fantsona. Ny ankamaroan'ny votoaty dia natokana ho an'ny fiteny R.

Ny fahasamihafana lehibe eo amin'ny R sy Python

Mba hahamora kokoa ny fifindranao avy amin'ny Python mankany R, na ny mifamadika amin'izany, dia hanome hevi-dehibe vitsivitsy tokony hojerenao aho.

Fidirana amin'ny fonosana fonosana

Raha vao tafiditra ao amin'ny R ny fonosana iray dia tsy mila mamaritra ny anaran'ny fonosana ianao raha te hidirana amin'ny asany. Amin'ny ankamaroan'ny toe-javatra dia tsy fahita amin'ny R izany, saingy azo ekena. Tsy mila manafatra fonosana mihitsy ianao raha mila iray amin'ireo fiasany ao amin'ny codeo, fa antsoy fotsiny izany amin'ny famaritana ny anaran'ny fonosana sy ny anaran'ny asa. Ny separator eo anelanelan'ny fonosana sy ny anaran'ny asa ao amin'ny R dia colon roa. package_name::function_name().

Ao amin'ny Python, ny mifanohitra amin'izany, dia heverina ho mahazatra ny miantso ny fiasan'ny fonosana iray amin'ny famaritana mazava ny anarany. Rehefa alaina ny fonosana dia matetika nomena anarana nohafohezina, ohatra. pandas mazàna solon'anarana no ampiasaina pd. Ny fiasa fonosana dia idirana amin'ny alalan'ny teboka iray package_name.function_name().

Andraikitra

Ao amin'ny R, mahazatra ny mampiasa zana-tsipìka hanisy sanda amin'ny zavatra iray. obj_name <- value, na dia azo atao aza ny famantarana tokana mitovy, ny famantarana tokana mitovy amin'ny R dia ampiasaina voalohany indrindra handefasana soatoavina amin'ny tohan-kevitra.

Amin'ny Python, ny fanendrena dia atao miaraka amin'ny famantarana mitovy obj_name = value.

nirakitra anarana

Misy fahasamihafana lehibe ihany koa eto. Ao amin'ny R, ny fanondroana dia manomboka amin'ny iray ary ahitana ny singa rehetra voafaritra ao amin'ny salan'isa vokatra,

Ao amin'ny Python, ny fanondroana dia manomboka amin'ny aotra ary ny faritra voafantina dia tsy ahitana ny singa farany voalaza ao amin'ny index. So design x[i:j] amin'ny Python dia tsy hampiditra ny singa j.

Misy ihany koa ny fahasamihafana eo amin'ny fanondroana ratsy, ao amin'ny R notation x[-1] dia hamerina ny singa rehetra amin'ny vector afa-tsy ny farany. Ao amin'ny Python, ny fanamarihana mitovy amin'izany dia hamerina ny singa farany ihany.

Fomba sy OOP

R dia mampihatra ny OOP amin'ny fombany manokana, nanoratra momba izany aho tao amin'ny lahatsoratra "OOP amin'ny fiteny R (fizarana 1): kilasy S3". Amin'ny ankapobeny, R dia fiteny miasa, ary ny zavatra rehetra ao anatiny dia miorina amin'ny fiasa. Noho izany, ohatra, ho an'ny mpampiasa Excel, mandehana any tydiverse ho mora kokoa noho izany pandas. Na dia mety ho hevitro manokana aza izany.

Raha fintinina, ny zavatra ao amin'ny R dia tsy manana fomba (raha miresaka momba ny kilasy S3 isika, fa misy fampiharana OOP hafa izay tsy dia mahazatra loatra). Tsy misy afa-tsy asa ankapobe izay manodina azy ireo amin'ny fomba hafa arakaraka ny kilasin'ilay zavatra.

Pipelines

Angamba izany no anarana ho an'ny pandas Tsy ho marina tanteraka izany, fa hiezaka aho hanazava ny dikany.

Mba tsy hamonjena ny kajy mpanelanelana ary tsy hamokatra zavatra tsy ilaina amin'ny tontolon'ny asa dia azonao atao ny mampiasa karazana fantsona. Ireo. Mandalo ny vokatry ny kajy avy amin'ny asa iray mankany amin'ny manaraka, ary aza mitahiry valiny manelanelana.

Andeha horaisintsika ity ohatra kaody manaraka ity, izay itehirizana kajy manelanelana amin'ny zavatra samihafa:

temp_object <- func1()
temp_object2 <- func2(temp_object )
obj <- func3(temp_object2 )

Nanao hetsika 3 misesy izahay, ary ny vokatry ny tsirairay dia voatahiry ao anaty zavatra iray. Saingy raha ny marina, tsy mila ireo zavatra mpanelanelana ireo isika.

Na ratsy kokoa aza, fa mahazatra kokoa ny mpampiasa Excel.

obj  <- func3(func2(func1()))

Amin'ity tranga ity, tsy nitahiry ny valin'ny kajy antonony izahay, fa ny famakiana kaody miaraka amin'ny fiasa misy akany dia tena manahiran-tsaina.

Hijery fomba fiasa maromaro amin'ny fanodinana angon-drakitra ao amin'ny R isika, ary manao asa mitovy amin'ny fomba samihafa izy ireo.

Pipelines ao amin'ny tranomboky tidyverse ampiharin'ny mpandraharaha %>%.

obj <- func1() %>% 
            func2() %>%
            func3()

Noho izany dia mandray ny vokatry ny asa isika func1() ary ampitao ho tohan-kevitra voalohany amin'ny func2(), dia mandalo ny valin'io kajy io ho toy ny hevitra voalohany func3(). Ary amin'ny farany dia soratanay ny kajy rehetra natao tao amin'ilay zavatra obj <-.

Ireo rehetra voalaza etsy ambony ireo dia aseho tsara kokoa noho ny teny amin'ity meme ity:
Iza amin'ireo fiteny tokony hofidiana hiasa amin'ny angona - R na Python? Samy! Mifindra avy amin'ny panda mankany amin'ny tidyverse sy data.table sy back

В data.table ny rojo dia ampiasaina amin'ny fomba mitovy.

newDT <- DT[where, select|update|do, by][where, select|update|do, by][where, select|update|do, by]

Ao amin'ny tsirairay amin'ireo fononteny efajoro dia azonao ampiasaina ny vokatry ny asa teo aloha.

В pandas ny asa toy izany dia misaraka amin'ny teboka iray.

obj = df.fun1().fun2().fun3()

Ireo. maka ny latabatray izahay df ary ampiasao ny fomba fiasany fun1(), dia ampiharintsika amin'ny vokatra azo ilay fomba fun2(), aorian'ny fun3(). Ny vokatra azo dia voatahiry ao anaty zavatra iray zavatra .

Rafitra data

Ny firafitry ny angona ao amin'ny R sy Python dia mitovy, saingy manana anarana hafa.

famaritana
Anarana ao amin'ny R
Anarana amin'ny Python/pandas

Firafitry ny latabatra
data.frame, data.table, tapa
DataFrame

Lisitry ny soatoavina tokana
Vector
Andian-dahatsoratra amin'ny panda na lisitra amin'ny Python madio

Firafitra tsy misy tabilao maromaro
Lisitra
Rakibolana (dict)

Hijery endri-javatra hafa sy fahasamihafana hafa amin'ny syntax eto ambany isika.

Teny vitsivitsy momba ny fonosana hampiasainay

Voalohany, holazaiko anao kely momba ny fonosana izay ho fantatrao mandritra ity lahatsoratra ity.

tidyverse

Tranonkala Ofisialy: tidyverse.org
Iza amin'ireo fiteny tokony hofidiana hiasa amin'ny angona - R na Python? Samy! Mifindra avy amin'ny panda mankany amin'ny tidyverse sy data.table sy back
fitehirizam-boky tidyverse nosoratan'i Hedley Wickham, mpahay siansa momba ny fikarohana ao amin'ny RStudio. tidyverse dia ahitana fonosana mahavariana manatsotra ny fanodinana angon-drakitra, ny 5 amin'izy ireo dia tafiditra ao anatin'ny fampidinana 10 ambony avy amin'ny tahiry CRAN.

Ny fototry ny tranomboky dia ahitana ireto fonosana manaraka ireto: ggplot2, dplyr, tidyr, readr, purrr, tibble, stringr, forcats. Ny tsirairay amin'ireo fonosana ireo dia mikendry ny famahana olana manokana. Ohatra dplyr natao ho an'ny fanodinkodinana ny angona, tidyr hitondra ny angon-drakitra amin'ny endrika milamina, stringr manamora ny fiasana amin'ny tady, ary ggplot2 dia iray amin'ireo fitaovana fijerena angona malaza indrindra.

tombony tidyverse dia ny fahatsorana sy mora vakina syntax, izay mitovy amin'ny fiteny SQL query amin'ny lafiny maro.

data.table

Iza amin'ireo fiteny tokony hofidiana hiasa amin'ny angona - R na Python? Samy! Mifindra avy amin'ny panda mankany amin'ny tidyverse sy data.table sy backTranonkala Ofisialy: r-datatable.com

Mpanoratra data.table dia Matt Dole avy amin'ny H2O.ai.

Ny famoahana voalohany ny tranomboky dia natao tamin'ny taona 2006.

Ny fonosana syntax dia tsy mety toy ny ao tidyverse ary mampahatsiahy kokoa ny angon-drakitra mahazatra ao amin'ny R, saingy amin'ny fotoana iray ihany dia miitatra be amin'ny fiasa.

Ny fanodinkodinana rehetra miaraka amin'ny latabatra ao amin'ity fonosana ity dia voalaza ao anaty fonon-joro efamira, ary raha mandika ny syntax ianao data.table Ao amin'ny SQL, mahazo zavatra toy izao ianao: data.table[ WHERE, SELECT, GROUP BY ]

Ny tanjaky ity fonosana ity dia ny hafainganam-pandehan'ny fanodinana angon-drakitra be dia be.

pandas

Tranonkala Ofisialy: pandas.pydata.org Iza amin'ireo fiteny tokony hofidiana hiasa amin'ny angona - R na Python? Samy! Mifindra avy amin'ny panda mankany amin'ny tidyverse sy data.table sy back

Ny anaran'ny trano famakiam-boky dia avy amin'ny teny ekonometrika hoe "angona tontonana", ampiasaina hamaritana ireo antontam-baovao voarafitra marobe.

Mpanoratra pandas dia Wes McKinney Amerikana.

Raha ny momba ny famakafakana data amin'ny Python dia mitovy pandas Tsia. Fonosana tena multifunctional, avo lenta izay ahafahanao manao fanodinkodinana amin'ny angon-drakitra, manomboka amin'ny fampidirana angona avy amin'ny loharano rehetra ka hatramin'ny fijerena azy.

Fametrahana fonosana fanampiny

Ny fonosana resahina ato amin'ity lahatsoratra ity dia tsy tafiditra ao amin'ny fizarana R sy Python fototra. Na dia misy fampitandremana kely aza, raha nametraka ny fizarana Anaconda ianao, dia apetraho fanampiny pandas tsy ilaina.

Fametrahana fonosana ao amin'ny R

Raha nanokatra ny tontolon'ny fampandrosoana RStudio ianao farafaharatsiny indray mandeha, dia mety ho efa fantatrao ny fomba fametrahana ny fonosana ilaina amin'ny R. Mba hametrahana fonosana dia ampiasao ny baiko mahazatra install.packages() amin'ny fampandehanana azy mivantana amin'ny R mihitsy.

# установка пакетов
install.packages("vroom")
install.packages("readr")
install.packages("dplyr")
install.packages("data.table")

Aorian'ny fametrahana dia mila mifandray ny fonosana, izay matetika no ampiasaina ny baiko library().

# подключение или импорт пакетов в рабочее окружение
library(vroom)
library(readr)
library(dplyr)
library(data.table)

Fametrahana Packages amin'ny Python

Noho izany, raha manana Python madio ianao, dia pandas mila mametraka azy amin'ny tanana ianao. Sokafy baiko, na terminal, miankina amin'ny rafitra fiasanao ary ampidiro ity baiko manaraka ity.

pip install pandas

Avy eo dia miverina amin'ny Python izahay ary manafatra ny fonosana napetraka miaraka amin'ny baiko import.

import pandas as pd

Loading Data

Ny fitrandrahana angon-drakitra dia iray amin'ireo dingana lehibe indrindra amin'ny famakafakana data. Na Python na R, raha tiana, dia manome anao fahafahana malalaka hahazoana angon-drakitra avy amin'ny loharano rehetra: rakitra eo an-toerana, rakitra avy amin'ny Internet, tranokala, karazana tahiry rehetra.

Iza amin'ireo fiteny tokony hofidiana hiasa amin'ny angona - R na Python? Samy! Mifindra avy amin'ny panda mankany amin'ny tidyverse sy data.table sy back

Manerana ny lahatsoratra dia hampiasa angona maromaro izahay:

  1. Fisintonana roa avy amin'ny Google Analytics.
  2. Takelaka data Titanic Passenger.

Ny angon-drakitra rehetra dia ao amin'ny ahy GitHub amin'ny endrika rakitra csv sy tsv. Aiza no hangataka azy ireo?

Fampidirana angona ao amin'ny R: tidyverse, vroom, readr

Hampiditra angona ao anaty tranomboky tidyverse Misy fonosana roa: vroom, readr. vroom maoderina kokoa, fa amin'ny ho avy dia azo atambatra ny fonosana.

Teny avy amin'ny antontan-taratasy ofisialy vroom.

vroom vs mpamaky
Inona no atao hoe famoahana ny vroom midika ho readr? Amin'izao fotoana izao dia mikasa ny hamela ireo fonosana roa hivoatra misaraka izahay, saingy azo inoana fa hampitambatra ireo fonosana amin'ny ho avy. Ny fatiantoka iray amin'ny famakian-teny malaina an'i vroom dia ny olana sasany momba ny angon-drakitra tsy azo ambara mialoha, koa mila eritreritra ny fomba tsara indrindra hampiraisana azy ireo.

vroom vs readr
Inona no dikan'ny hoe famotsorana? vroom ho an'ny readr? Amin'izao fotoana izao dia mikasa ny hamolavola ireo fonosana roa misaraka izahay, saingy mety hanambatra azy ireo amin'ny ho avy. Iray amin'ireo tsy fahampian'ny kamo mamaky teny vroom dia ny olana sasany amin'ny angon-drakitra tsy azo taterina mialoha, ka mila mieritreritra ny fomba tsara indrindra hanambatra azy ireo ianao.

Ato amin'ity lahatsoratra ity isika dia hijery ny roa fonosana entana:

Fampidirana ny angona ao anaty fonosana R: vroom

# install.packages("vroom")
library(vroom)

# Чтение данных
## vroom
ga_nov  <- vroom("https://raw.githubusercontent.com/selesnow/publications/master/data_example/r_python_data/ga_nowember.csv")
ga_dec  <- vroom("https://raw.githubusercontent.com/selesnow/publications/master/data_example/r_python_data/ga_december.csv")
titanic <- vroom("https://raw.githubusercontent.com/selesnow/publications/master/data_example/r_python_data/titanic.csv")

Mametraka angona ao amin'ny R: readr

# install.packages("readr")
library(readr)

# Чтение данных
## readr
ga_nov  <- read_tsv("https://raw.githubusercontent.com/selesnow/publications/master/data_example/r_python_data/ga_nowember.csv")
ga_dec  <- read_tsv("https://raw.githubusercontent.com/selesnow/publications/master/data_example/r_python_data/ga_december.csv")
titanic <- read_csv("https://raw.githubusercontent.com/selesnow/publications/master/data_example/r_python_data/titanic.csv")

Ao amin'ny fonosana vroom, na inona na inona format data csv / tsv, ny fandefasana dia atao amin'ny alàlan'ny anarana mitovy vroom(), ao anaty fonosana readr mampiasa asa hafa ho an'ny endrika tsirairay izahay read_tsv() и read_csv().

Fampidirana angona ao amin'ny R: data.table

В data.table misy fonctionnement andefasana data fread().

Fampidirana ny angona ao amin'ny R: fonosana data.table

# install.packages("data.table")
library(data.table)

## data.table
ga_nov  <- fread("https://raw.githubusercontent.com/selesnow/publications/master/data_example/r_python_data/ga_nowember.csv")
ga_dec  <- fread("https://raw.githubusercontent.com/selesnow/publications/master/data_example/r_python_data/ga_december.csv")
titanic <- fread("https://raw.githubusercontent.com/selesnow/publications/master/data_example/r_python_data/titanic.csv")

Loading data amin'ny Python: pandas

Raha ampitahaina amin'ny fonosana R isika, amin'ity tranga ity dia ny syntax no akaiky indrindra pandas dia ho readr, satria pandas afaka mangataka angon-drakitra na aiza na aiza, ary misy fianakaviam-piasa iray manontolo ao anatin'ity fonosana ity read_*().

  • read_csv()
  • read_excel()
  • read_sql()
  • read_json()
  • read_html()

Ary asa maro hafa natao hamakiana angona avy amin'ny endrika isan-karazany. Saingy ho an'ny tanjonay dia ampy izany read_table() na read_csv() mampiasa argument Sep mba hamaritana ny tsanganana separator.

Loading data amin'ny Python: pandas

import pandas as pd

ga_nov  = pd.read_csv("https://raw.githubusercontent.com/selesnow/publications/master/data_example/russian_text_in_r/ga_nowember.csv", sep = "t")
ga_dec  = pd.read_csv("https://raw.githubusercontent.com/selesnow/publications/master/data_example/russian_text_in_r/ga_december.csv", sep = "t")
titanic = pd.read_csv("https://raw.githubusercontent.com/selesnow/publications/master/data_example/russian_text_in_r/titanic.csv")

Famoronana dataframes

LOHA Titanic, izay nampitondrainay, misy saha Firaisana Ara-nofo, izay mitahiry ny famantarana ny maha-lahy sy maha-vavy ny mpandeha.

Fa ho famelabelarana mora kokoa ny angon-drakitra momba ny lahy sy vavy, dia tokony hampiasa ny anarana ianao fa tsy ny fehezan-dalàna momba ny lahy sy ny vavy.

Mba hanaovana izany, dia hamorona lahatahiry kely isika, latabatra iray izay tsy hisy afa-tsy tsanganana 2 (kaody sy anaran'ny lahy sy vavy) ary laharana 2.

Mamorona angon-drakitra ao amin'ny R: tidyverse, dplyr

Ao amin'ny ohatra kaody etsy ambany, mamorona angon-drakitra tiana isika amin'ny fampiasana ny fiasa tibble() .

Mamorona rafitra data ao amin'ny R: dplyr

## dplyr
### создаём справочник
gender <- tibble(id = c(1, 2),
                 gender = c("female", "male"))

Mamorona rafitra angona ao amin'ny R: data.table

Mamorona rafitra angona ao amin'ny R: data.table

## data.table
### создаём справочник
gender <- data.table(id = c(1, 2),
                    gender = c("female", "male"))

Mamorona dataframe amin'ny Python: pandas

В pandas Ny famoronana frame dia atao amin'ny dingana maromaro, voalohany dia mamorona rakibolana, ary avy eo dia mamadika ny rakibolana ho dataframe.

Mamorona dataframe amin'ny Python: pandas

# создаём дата фрейм
gender_dict = {'id': [1, 2],
               'gender': ["female", "male"]}
# преобразуем словарь в датафрейм
gender = pd.DataFrame.from_dict(gender_dict)

Mifidy Tsanganana

Mety misy tsanganana am-polony na an-jatony mihitsy aza ny tabilao iarahanao. Fa mba hanatanterahana ny fanadihadiana, toy ny fitsipika, dia tsy mila ny tsanganana rehetra izay hita ao amin'ny latabatra loharano.

Iza amin'ireo fiteny tokony hofidiana hiasa amin'ny angona - R na Python? Samy! Mifindra avy amin'ny panda mankany amin'ny tidyverse sy data.table sy back

Noho izany, ny iray amin'ireo hetsika voalohany hataonao miaraka amin'ny latabatra loharano dia ny manala azy amin'ny fampahalalana tsy ilaina ary manafaka ny fahatsiarovana izay misy an'io fampahalalana io.

Misafidiana tsanganana ao amin'ny R: tidyverse, dplyr

Syntaxe dplyr dia mitovy amin'ny fiteny SQL query, raha zatra azy ianao dia hahafehy haingana ity fonosana ity.

Raha hifidy tsanganana dia ampiasao ny fiasa select().

Ireto ambany ireto ny ohatra amin'ny kaody izay ahafahanao misafidy tsanganana amin'ireto fomba manaraka ireto:

  • Tanisaina ny anaran'ireo tsanganana ilaina
  • Jereo ny anaran'ny tsanganana mampiasa fomba fiteny mahazatra
  • Amin'ny karazana data na fananana hafa amin'ny angona voarakitra ao amin'ny tsanganana

Misafidiana tsanganana ao amin'ny 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)

Misafidiana tsanganana ao amin'ny R: data.table

Ny hetsika mitovy amin'ny data.table dia atao amin'ny fomba hafa kely, tany am-piandohan'ny lahatsoratra dia nanome famaritana momba ny hevitra ao anaty brackets efajoro aho data.table.

DT[i,j,by]

izay:
i - aiza, i.e. sivana amin'ny andalana
j - mifidy|fanavaozana|manao, i.e. mifantina tsanganana ary manova azy ireo
by - fanangonana angona

Misafidiana tsanganana ao amin'ny R: data.table

## data.table
### выбрать по названию столбцов
ga_nov[ , .(date, source, sessions) ]
### исключь по названию столбцов
ga_nov[ , .SD, .SDcols = ! names(ga_nov) %like% "medium|bounces" ]
### выбрать по регулярному выражению
ga_nov[, .SD, .SDcols = patterns("s$")]

Miovaova .SD ahafahanao miditra amin'ny tsanganana rehetra, ary .SDcols sivana ireo tsanganana ilaina amin'ny fampiasana fomba fiteny mahazatra, na asa hafa hanivanana ny anaran'ny tsanganana ilainao.

Misafidiana tsanganana amin'ny Python, panda

Hifantina tsanganana amin'ny anarana ao pandas ampy ny manome ny lisitry ny anarany. Ary raha misafidy na manilika tsanganana amin'ny anarana amin'ny fampiasana fiteny mahazatra dia mila mampiasa ireo fiasa ianao drop() и filter(), ary argument axis = 1, izay ilazanao fa ilaina ny fanodinana tsanganana fa tsy andalana.

Raha hifidy saha amin'ny karazana data, ampiasao ny fiasa select_dtypes(), ary amin'ny arguments Anisan'izany na manilika Mandefa lisitry ny karazana data mifanaraka amin'ny saha tokony hofidinao.

Misafidiana tsanganana amin'ny 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'])

Sivana andalana

Ohatra, ny latabatra loharano dia mety ahitana angona an-taonany maro, fa ny volana lasa ihany no ilainao hamakafaka. Averina indray, ny andalana fanampiny dia hampiadana ny fizotran'ny fanodinana angon-drakitra ary hanakana ny fitadidiana PC.

Iza amin'ireo fiteny tokony hofidiana hiasa amin'ny angona - R na Python? Samy! Mifindra avy amin'ny panda mankany amin'ny tidyverse sy data.table sy back

Sivana andalana ao amin'ny R: tydyverse, dplyr

В dplyr ny asa dia ampiasaina hanivana andalana filter(). Mila rafitra angon-drakitra ho tohan-kevitra voalohany, avy eo tanisao ny fepetra sivana.

Rehefa manoratra teny lojika hanivana latabatra, amin'ity tranga ity, dia mariho ny anaran'ny tsanganana tsy misy teny nalaina ary tsy manambara ny anaran'ny latabatra.

Rehefa mampiasa teny lojika maromaro hanivanana dia ampiasao ireto mpandraharaha manaraka ireto:

  • & na faingo - lojika ARY
  • | - lojika OR

Sivana andalana ao amin'ny R: dplyr

# фильтрация строк
## dplyr
### фильтрация строк по одному условию
filter(ga_nov, source == "google")
### фильтр по двум условиям соединённым логическим и
filter(ga_nov, source == "google" & sessions >= 10)
### фильтр по двум условиям соединённым логическим или
filter(ga_nov, source == "google" | sessions >= 10)

Sivana andalana ao amin'ny R: data.table

Araka ny efa nosoratako etsy ambony, in data.table Ny syntax fiovam-po amin'ny angona dia voarakitra ao anaty fononteny efamira.

DT[i,j,by]

izay:
i - aiza, i.e. sivana amin'ny andalana
j - mifidy|fanavaozana|manao, i.e. mifantina tsanganana ary manova azy ireo
by - fanangonana angona

Ny argument dia ampiasaina hanivana andalana i, izay manana ny toerana voalohany amin'ny brackets efamira.

Ny tsanganana dia idirana amin'ny fomba fiteny lojika tsy misy mari-tsoratra ary tsy manondro ny anaran'ny latabatra.

Ny fomba fiteny lojika dia mifandray amin'ny fomba mitovy amin'ny ao dplyr amin'ny alalan'ny & and | operator.

Sivana andalana ao amin'ny R: data.table

## data.table
### фильтрация строк по одному условию
ga_nov[source == "google"]
### фильтр по двум условиям соединённым логическим и
ga_nov[source == "google" & sessions >= 10]
### фильтр по двум условиям соединённым логическим или
ga_nov[source == "google" | sessions >= 10]

Sivana tady amin'ny Python: pandas

Sivanina araka ny andalana ao pandas mitovy amin'ny sivana ao data.table, ary atao amin'ny fononteny efajoro.

Amin'ity tranga ity, ny fidirana amin'ny tsanganana dia tsy maintsy atao amin'ny fanondroana ny anaran'ny dataframe; avy eo ny anaran'ny tsanganana dia azo aseho amin'ny marika teny amin'ny brackets square (ohatra df['col_name']), na tsy misy teny nalaina aorian'ny fe-potoana (ohatra df.col_name).

Raha mila manivana angon-drakitra amin'ny fepetra maromaro ianao dia tsy maintsy apetraka ao anaty fononteny ny fepetra tsirairay. Ny fepetra lojika dia mifamatotra amin'ny tsirairay amin'ireo mpandraharaha & и |.

Sivana tady amin'ny Python: pandas

# Фильтрация строк таблицы
### фильтрация строк по одному условию
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)]

Vondrona sy fanangonana angona

Ny iray amin'ireo asa fampiasa matetika indrindra amin'ny famakafakana angon-drakitra dia ny fanangonana sy fanangonana.

Iza amin'ireo fiteny tokony hofidiana hiasa amin'ny angona - R na Python? Samy! Mifindra avy amin'ny panda mankany amin'ny tidyverse sy data.table sy back

Miparitaka amin'ny fonosana rehetra jerentsika ny syntax amin'ny fanatanterahana ireo asa ireo.

Amin'ity tranga ity dia haka angon-drakitra ho ohatra isika Titanic, ary kajy ny isa sy ny salanisa vidin'ny tapakila miankina amin'ny kilasy cabin.

Vondrona sy fanangonana angon-drakitra ao amin'ny R: tidyverse, dplyr

В dplyr ny asa dia ampiasaina amin'ny vondrona group_by(), ary ho an'ny fanangonana summarise(). Raha ny tena izy, dplyr misy fianakaviana iray manontolo ny asa summarise_*(), fa ny tanjon'ity lahatsoratra ity dia ny fampitahana ny fehezanteny fototra, ka tsy hiditra amin'ny ala mikitroka toy izany isika.

Asa fanangonana fototra:

  • sum() - famintinana
  • min() / max() - sanda kely indrindra sy ambony indrindra
  • mean() - antonony
  • median() — mediana
  • length() - habetsahana

Vondrona sy fanangonana ao amin'ny R: dplyr

## dplyr
### группировка и агрегация строк
group_by(titanic, Pclass) %>%
  summarise(passangers = length(PassengerId),
            avg_price  = mean(Fare))

Miasa group_by() Nandalo ny latabatra ho tohan-kevitra voalohany izahay Titanic, ary avy eo nanondro ny saha Pclass, izay hanakambanantsika ny latabatra. Ny vokatry ny asa mampiasa ny mpandraharaha %>% lasa ho tohan-kevitra voalohany ho an'ny asa summarise(), ary nanampy saha 2 hafa: mpandeha и vidiny_avg. Tamin'ny voalohany, mampiasa ny asa length() kajy ny isan'ny tapakila, ary ao amin'ny faharoa mampiasa ny asa mean() nahazo ny vidin'ny tapakila antonony.

Fivondronana sy fanangonana ny angona ao amin'ny R: data.table

В data.table ny tohan-kevitra dia ampiasaina amin'ny fanangonana j izay manana toerana faharoa amin'ny brackets efamira, ary ho an'ny vondrona by na keyby, izay manana ny laharana fahatelo.

Ny lisitry ny asa aggregation amin'ity tranga ity dia mitovy amin'ny voalaza ao dplyr, satria Ireo dia fiasa avy amin'ny syntax fototra R.

Vondrona sy fanangonana ao amin'ny R: data.table

## data.table
### фильтрация строк по одному условию
titanic[, .(passangers = length(PassengerId),
            avg_price  = mean(Fare)),
        by = Pclass]

Vondrona sy fanangonana angon-drakitra amin'ny Python: pandas

Grouping in pandas mitovy amin'ny dplyr, fa ny fitambarana dia tsy mitovy amin'ny dplyr tsia mihitsy data.table.

Mba hanangonana, ampiasao ny fomba groupby(), izay ilainao handefasana lisitry ny tsanganana izay hanakambanana ny dataframe.

Ho an'ny fanangonana dia azonao ampiasaina ny fomba agg()izay manaiky rakibolana. Ny fanalahidin'ny rakibolana dia ny tsanganana izay hampiharanao ny asa fanangonana, ary ny sanda dia ny anaran'ny asa fanangonana.

Asa fanangonana:

  • sum() - famintinana
  • min() / max() - sanda kely indrindra sy ambony indrindra
  • mean() - antonony
  • median() — mediana
  • count() - habetsahana

asa reset_index() ao amin'ny ohatra etsy ambany dia ampiasaina hamerenana ny fanondroana nested izany pandas default amin'ny aorian'ny fanangonana angona.

Символ mamela anao hifindra amin'ny andalana manaraka.

Vondrona sy fanangonana amin'ny Python: pandas

# группировка и агрегация данных
titanic.groupby(["Pclass"]).
    agg({'PassengerId': 'count', 'Fare': 'mean'}).
        reset_index()

Fikambanan'ny tabilao mitsangana

Hetsika iray iarahanao tabilao roa na maromaro mitovy rafitra. Ahitana tabilao ny angona nampidirinay ga_nov и ga_dec. Ireo tabilao ireo dia mitovy amin'ny rafitra, i.e. manana tsanganana mitovy, ary ny karazana angona ao amin'ireo tsanganana ireo.

Iza amin'ireo fiteny tokony hofidiana hiasa amin'ny angona - R na Python? Samy! Mifindra avy amin'ny panda mankany amin'ny tidyverse sy data.table sy back

Ity dia fampidinana avy amin'ny Google Analytics ho an'ny volana Novambra sy Desambra, amin'ity fizarana ity dia hanambatra ireo angona ireo ho latabatra iray.

Manambatra latabatra mitsangana amin'ny R: tidyverse, dplyr

В dplyr Azonao atao ny manambatra latabatra 2 ho iray amin'ny fampiasana ny fiasa bind_rows(), mampita tabilao ho tohan-kevitra.

Sivana andalana ao amin'ny R: dplyr

# Вертикальное объединение таблиц
## dplyr
bind_rows(ga_nov, ga_dec)

Mampiditra tabilao mitsangana amin'ny R: data.table

Tsy misy sarotra koa izany, andao hampiasaina rbind().

Sivana andalana ao amin'ny R: data.table

## data.table
rbind(ga_nov, ga_dec)

Mampiditra latabatra mitsangana amin'ny Python: pandas

В pandas ny asa dia ampiasaina mba hanambatra latabatra concat(), izay tsy maintsy andalovanao ny lisitry ny frame mba hanambatra azy ireo.

Sivana tady amin'ny Python: pandas

# вертикальное объединение таблиц
pd.concat([ga_nov, ga_dec])

Fikambanan'ny tabilao marindrano

Hetsika izay ampiana tsanganana avy amin'ny faharoa amin'ny latabatra voalohany amin'ny alalan'ny fanalahidy. Matetika izy io no ampiasaina rehefa mampanan-karena ny latabatra zava-misy (ohatra, latabatra misy angona momba ny varotra) miaraka amin'ny angona fanondro (ohatra, ny vidin'ny vokatra iray).

Iza amin'ireo fiteny tokony hofidiana hiasa amin'ny angona - R na Python? Samy! Mifindra avy amin'ny panda mankany amin'ny tidyverse sy data.table sy back

Misy karazana fifandraisana maromaro:

Iza amin'ireo fiteny tokony hofidiana hiasa amin'ny angona - R na Python? Samy! Mifindra avy amin'ny panda mankany amin'ny tidyverse sy data.table sy back

Ao amin'ny latabatra efa feno Titanic manana tsanganana izahay Firaisana Ara-nofo, izay mifanandrify amin'ny kaody lahy sy vavy ho an'ny mpandeha:

1 - vehivavy
2 - lahy

Ary koa, namorona latabatra - boky fanondro lahy sy ny vavy. Raha mila famelabelarana mora kokoa ny angon-drakitra momba ny lahy sy vavy amin'ny mpandeha dia mila ampiana ny anaran'ny lahy sy vavy avy amin'ny lahatahiry lahy sy ny vavy amin'ny latabatra Titanic.

Tabilao mitsivalana mitambatra amin'ny R: tidyverse, dplyr

В dplyr Misy fianakaviam-piasa iray manontolo ho an'ny fifandraisana horizontaly:

  • inner_join()
  • left_join()
  • right_join()
  • full_join()
  • semi_join()
  • nest_join()
  • anti_join()

Ny fampiasa matetika indrindra amin'ny fanaoko dia left_join().

Amin'ny maha arguments roa voalohany, ny asa voatanisa etsy ambony dia maka latabatra roa hikambanana, ary ho toy ny hevitra fahatelo by tsy maintsy mamaritra ny tsanganana hidirana ianao.

Tabilao mitsivalana mitambatra amin'ny R: dplyr

# объединяем таблицы
left_join(titanic, gender,
          by = c("Sex" = "id"))

Fikambanan'ny tabilao marindrano ao amin'ny R: data.table

В data.table Mila manambatra latabatra amin'ny fanalahidy ianao amin'ny fampiasana ny fiasa merge().

Ny tohan-kevitra hanambatra () miasa ao amin'ny data.table

  • x, y - Tabilao hikambanana
  • by — Tsanganana izay fanalahidy hidirana raha mitovy ny anarana ao amin'ny tabilao roa
  • by.x, by.y - Anaran'ny tsanganana hatambatra, raha manana anarana hafa ao anaty tabilao
  • all, all.x, all.y — Karazana mitambatra, ny rehetra dia hamerina ny andalana rehetra avy amin'ny latabatra roa, all.x mifanitsy amin'ny hetsika LEFT JOIN (dia handao ny andalana rehetra amin'ny latabatra voalohany), all.y — mifanitsy amin'ny RIGHT JOIN operation (dia hamela ny andalana rehetra amin'ny latabatra faharoa).

Fikambanan'ny tabilao marindrano ao amin'ny R: data.table

# объединяем таблицы
merge(titanic, gender, by.x = "Sex", by.y = "id", all.x = T)

Tabilao mitsivalana mitambatra amin'ny Python: pandas

Toy izany koa amin'ny data.tablein pandas ny asa dia ampiasaina mba hanambatra latabatra merge().

Ny adihevitra momba ny merge() miasa amin'ny pandas

  • ahoana — Karazana fifandraisana: havia, havanana, ivelany, anatiny
  • on — Tsanganana izay fanalahidy raha manana anarana mitovy amin'ny tabilao roa
  • left_on, right_on - Anaran'ny tsanganana manan-danja, raha manana anarana hafa ao anaty tabilao

Tabilao mitsivalana mitambatra amin'ny Python: pandas

# объединяем по ключу
titanic.merge(gender, how = "left", left_on = "Sex", right_on = "id")

Fampiasana fikandrana fototra sy tsanganana kajy

Ny fiasan'ny fikandrana dia mitovy amin'ny dikany amin'ny asa fanangonana, ary matetika ampiasaina amin'ny famakafakana angon-drakitra. Saingy tsy toy ny asa fanangonana, ny fiasan'ny fikandrana dia tsy manova ny isan'ny andalana amin'ny dataframe mivoaka.

Iza amin'ireo fiteny tokony hofidiana hiasa amin'ny angona - R na Python? Samy! Mifindra avy amin'ny panda mankany amin'ny tidyverse sy data.table sy back

Amin'ny ankapobeny, amin'ny fampiasana ny fiasan'ny fikandrana, dia nozarainay ho ampahany ny dataframe ho avy araka ny fepetra sasany, i.e. amin'ny sandan'ny saha iray, na saha maromaro. Ary manao asa arithmetika amin'ny varavarankely tsirairay izahay. Ny vokatr'ireo asa ireo dia haverina isaky ny andalana, i.e. tsy manova ny isan'ny andalana rehetra ao amin'ny latabatra.

Ohatra, andeha horaisintsika ny latabatra Titanic. Azontsika kajy ny isan-jaton'ny vidin'ny tapakila tsirairay tao anatin'ny kilasin'ny kabine.

Mba hanaovana izany dia mila miditra amin'ny andalana tsirairay ny totalin'ny tapakila ho an'ny kilasin'ny kabine amin'izao fotoana izao izay misy ny tapakila amin'ity andalana ity, ary zarao ny vidin'ny tapakila tsirairay amin'ny vidin'ny tapakila rehetra amin'ny kilasin'ny kabine iray ihany. .

Ny varavarankely miasa ao amin'ny R: tidyverse, dplyr

Hanampy tsanganana vaovao, tsy mampiasa fanakambanana andalana, in dplyr manompo asa mutate().

Azonao atao ny mamaha ny olana voalaza etsy ambony amin'ny alàlan'ny fanakambanana data amin'ny saha Pclass ary mamintina ny saha amin'ny tsanganana vaovao manao. Manaraka, sokafy ny latabatra ary zarao ny sandan'ny saha manao amin'izay nitranga tamin'ny dingana teo aloha.

Ny varavarankely miasa ao amin'ny R: dplyr

group_by(titanic, Pclass) %>%
  mutate(Pclass_cost = sum(Fare)) %>%
  ungroup() %>%
  mutate(ticket_fare_rate = Fare / Pclass_cost)

Miasa ao amin'ny R: data.table

Ny algorithm solution dia mitovy amin'ny in dplyr, mila mizara ny latabatra ho varavarankely amin'ny saha Pclass. Avoahy ao anaty tsanganana vaovao ny vola ho an'ny vondrona mifanitsy amin'ny andalana tsirairay, ary ampio tsanganana izay kajy ny anjaran'ny vidin'ny tapakila tsirairay ao amin'ny vondrona misy azy.

Hanampy tsanganana vaovao amin'ny data.table misy mpandraharaha :=. Ity ambany ity ny ohatra iray amin'ny famahana olana amin'ny fampiasana ny fonosana data.table

Miasa ao amin'ny R: data.table

titanic[,c("Pclass_cost","ticket_fare_rate") := .(sum(Fare), Fare / Pclass_cost), 
        by = Pclass]

Windows miasa amin'ny Python: pandas

Fomba iray hanampiana tsanganana vaovao amin'ny pandas - mampiasa ny asa assign(). Mba hamintinana ny vidin'ny tapakila amin'ny kilasy kabine, tsy misy filaharana, dia hampiasa ny fiasa izahay transform().

Ity ambany ity ny ohatra iray amin'ny vahaolana izay ampianay eo amin'ny latabatra Titanic mitovy 2 tsanganana.

Windows miasa amin'ny Python: pandas

titanic.assign(Pclass_cost      =  titanic.groupby('Pclass').Fare.transform(sum),
               ticket_fare_rate = lambda x: x['Fare'] / x['Pclass_cost'])

Ny asa sy ny fomba fifandraisana latabatra

Ity ambany ity ny tabilaon'ny fifampiraharahana eo amin'ny fomba fanaovana asa isan-karazany miaraka amin'ny angona ao anaty fonosana nodinihintsika.

famaritana
tidyverse
data.table
pandas

Loading Data
vroom()/ readr::read_csv() / readr::read_tsv()
fread()
read_csv()

Famoronana dataframes
tibble()
data.table()
dict() + from_dict()

Mifidy Tsanganana
select()
fandresen-dahatra j, toerana faharoa amin'ny brackets efamira
mandalo ny lisitry ny tsanganana ilaina amin'ny fononteny efamira / drop() / filter() / select_dtypes()

Sivana andalana
filter()
fandresen-dahatra i, toerana voalohany amin'ny brackets efamira
Tanisainay ao anaty fononteny efamira ny fepetra sivana / filter()

Vondrona sy Fanangonana
group_by() + summarise()
kevitra j + by
groupby() + agg()

Fiombonan'ny latabatra (UNION)
bind_rows()
rbind()
concat()

Fikambanan'ny tabilao marindrano (JOIN)
left_join() / *_join()
merge()
merge()

Fampiasa fikandrana fototra ary manampy tsanganana kajy
group_by() + mutate()
fandresen-dahatra j mampiasa ny opérateur := + hevitra by
transform() + assign()

famaranana

Angamba ao amin'ny lahatsoratra nolazaiko fa tsy ny fampiharana tsara indrindra amin'ny fanodinana angon-drakitra, noho izany dia ho faly aho raha manitsy ny fahadisoako amin'ny fanehoan-kevitra ianao, na mameno fotsiny ny fampahalalana omena ao amin'ny lahatsoratra miaraka amin'ny teknika hafa miasa amin'ny data amin'ny R / Python.

Araka ny nosoratako etsy ambony, ny tanjon'ny lahatsoratra dia tsy ny hanery ny olona iray amin'izay fiteny tsara kokoa, fa ny hanatsorana ny fahafahana hianatra fiteny roa, na, raha ilaina, mifindra monina eo anelanelan'izy ireo.

Raha tianao ilay lahatsoratra dia ho faly aho manana mpanjifa vaovao ho ahy YouTube и telegrama fantsona.

resadresaka

Iza amin'ireto fonosana ireto no ampiasainao amin'ny asanao?

Ao amin'ny fanehoan-kevitra dia azonao soratana ny anton'ny safidinao.

Ireo mpampiasa voasoratra anarana ihany no afaka mandray anjara amin'ny fanadihadiana. HiditraPlease.

Inona no fonosana fanodinana data ampiasainao (afaka misafidy safidy maromaro ianao)

  • 45,2%tidyverse19

  • 33,3%data.table14

  • 54,8%panda23

Mpampiasa 42 no nifidy. Mpampiasa 9 no nifady.

Source: www.habr.com

Add a comment