Unsa nga pinulongan ang pilion alang sa pagtrabaho sa datos - R o Python? Ang duha! Paglalin gikan sa mga panda ngadto sa tidyverse ug data.table ug balik

Pinaagi sa pagpangita alang sa R ​​o Python sa Internet, makit-an nimo ang milyon-milyon nga mga artikulo ug kilometro nga mga diskusyon sa hilisgutan kung diin ang usa mas maayo, mas paspas ug labi ka kombenyente alang sa pagtrabaho sa datos. Apan ikasubo, kining tanan nga mga artikulo ug mga panaglalis dili labi ka mapuslanon.

Unsa nga pinulongan ang pilion alang sa pagtrabaho sa datos - R o Python? Ang duha! Paglalin gikan sa mga panda ngadto sa tidyverse ug data.table ug balik

Ang katuyoan niini nga artikulo mao ang pagtandi sa batakang mga pamaagi sa pagproseso sa datos sa labing popular nga mga pakete sa duha ka pinulongan. Ug tabangi ang mga magbabasa nga dali nga ma-master ang usa ka butang nga wala pa nila nahibal-an. Alang sa mga nagsulat sa Python, hibal-i kung giunsa pagbuhat ang parehas nga butang sa R, ug vice versa.

Atol sa artikulo atong analisahon ang syntax sa labing popular nga mga pakete sa R. Kini ang mga pakete nga gilakip sa librarya tidyverseug usab ang pakete data.table. Ug itandi ang ilang syntax sa pandas, ang pinakasikat nga data analysis package sa Python.

Moadto kami sa lakang sa tibuuk nga agianan sa pag-analisar sa datos gikan sa pagkarga niini hangtod sa paghimo sa mga function sa analytical nga bintana gamit ang Python ug R.

Mga sulod

Kini nga artikulo mahimong gamiton ingon nga usa ka cheat sheet kung nakalimtan nimo kung giunsa paghimo ang pipila nga operasyon sa pagproseso sa datos sa usa sa mga pakete nga gikonsiderar.

Unsa nga pinulongan ang pilion alang sa pagtrabaho sa datos - R o Python? Ang duha! Paglalin gikan sa mga panda ngadto sa tidyverse ug data.table ug balik

  1. Panguna nga mga kalainan sa syntax tali sa R ​​ug Python
    1.1. Pag-access sa mga Function sa Package
    1.2. Assignment
    1.3. Pag-indeks
    1.4. Pamaagi ug OOP
    1.5. Mga linya sa tubo
    1.6. Mga Istruktura sa Data
  2. Pipila ka mga pulong bahin sa mga pakete nga among gamiton
    2.1. tidyverse
    2.2. datos.tabla
    2.3. pandas
  3. Pag-instalar sa mga pakete
  4. Nagkarga sa Data
  5. Paghimo og mga dataframe
  6. Pagpili sa mga Kolum nga Imong Gikinahanglan
  7. Pagsala sa mga laray
  8. Paggrupo ug Paghiusa
  9. Vertikal nga panaghiusa sa mga lamesa (UNION)
  10. Horizontal nga pagdugtong sa mga lamesa (JOIN)
  11. Panguna nga mga gimbuhaton sa bintana ug kalkulado nga mga kolum
  12. Talaan sa korespondensiya tali sa mga pamaagi sa pagproseso sa datos sa R ​​ug Python
  13. konklusyon
  14. Usa ka mubo nga survey bahin sa kung unsang pakete ang imong gigamit

Kung interesado ka sa pag-analisar sa datos, mahimo nimong makit-an ang akong telegram и youtube mga kanal. Kadaghanan sa sulod niini gipahinungod sa R ​​nga pinulongan.

Panguna nga mga kalainan sa syntax tali sa R ​​ug Python

Aron mas sayon ​​​​alang kanimo ang pagbalhin gikan sa Python ngadto sa R, o vice versa, maghatag ko og pipila ka mga nag-unang punto nga kinahanglan nimong hatagan og pagtagad.

Pag-access sa mga Function sa Package

Sa higayon nga ang usa ka pakete makarga sa R, dili nimo kinahanglan nga ipiho ang ngalan sa pakete aron ma-access ang mga gimbuhaton niini. Sa kadaghanan nga mga kaso kini dili kasagaran sa R, apan kini madawat. Dili nimo kinahanglan nga mag-import sa usa ka pakete kung kinahanglan nimo ang usa sa mga function niini sa imong code, apan tawga lang kini pinaagi sa pagtino sa ngalan sa package ug ang ngalan sa function. Ang separator tali sa package ug function name sa R ​​kay double colon. package_name::function_name().

Sa Python, sa sukwahi, giisip nga klasiko ang pagtawag sa mga gimbuhaton sa usa ka pakete pinaagi sa tin-aw nga pagtino sa ngalan niini. Sa diha nga ang usa ka package ma-download, kini kasagarang hatagan ug pinamubo nga ngalan, e.g. pandas kasagaran pseudonym gigamit pd. Ang usa ka function sa package ma-access pinaagi sa usa ka tulbok package_name.function_name().

Assignment

Sa R, kasagaran ang paggamit sa usa ka arrow aron paghatag og bili sa usa ka butang. obj_name <- value, bisan tuod gitugutan ang usa ka equals sign, ang single equals sign sa R ​​kay gigamit una sa pagpasa sa mga values ​​aron magamit ang mga argumento.

Sa Python, ang buluhaton gihimo nga eksklusibo sa usa ka parehas nga timaan obj_name = value.

Pag-indeks

Adunay usab daghang hinungdanon nga mga kalainan dinhi. Sa R, ang pag-indeks magsugod sa usa ug naglakip sa tanang espesipikong elemento sa resulta nga range,

Sa Python, ang pag-indeks magsugod gikan sa zero ug ang pinili nga han-ay wala maglakip sa katapusang elemento nga gipiho sa indeks. Busa disenyo x[i:j] sa Python dili maglakip sa j nga elemento.

Adunay usab mga kalainan sa negatibo nga pag-indeks, sa R ​​notation x[-1] ibalik ang tanan nga mga elemento sa vector gawas sa katapusan. Sa Python, ang susamang notasyon magbalik lamang sa kataposang elemento.

Pamaagi ug OOP

Ang R nagpatuman sa OOP sa kaugalingon nga paagi, gisulat ko kini sa artikulo "OOP sa R ​​nga pinulongan (bahin 1): S3 nga mga klase". Sa kinatibuk-an, ang R usa ka functional nga pinulongan, ug ang tanan nga anaa niini gitukod sa mga function. Busa, pananglitan, alang sa mga tiggamit sa Excel, adto sa tydiverse kini mahimong mas sayon ​​kay sa pandas. Bisan kung kini mahimo nga akong suhetibo nga opinyon.

Sa laktud, ang mga butang sa R ​​walay mga pamaagi (kung maghisgot kita bahin sa mga klase sa S3, apan adunay uban pang mga pagpatuman sa OOP nga dili kaayo komon). Adunay mga kinatibuk-an nga mga gimbuhaton nga nagproseso niini nga lahi depende sa klase sa butang.

Mga linya sa tubo

Tingali kini ang ngalan sa pandas Dili kini hingpit nga husto, apan sulayan nako nga ipasabut ang kahulugan.

Aron dili makaluwas sa mga intermediate nga kalkulasyon ug dili makahimo og wala kinahanglana nga mga butang sa nagtrabaho nga palibot, mahimo nimong gamiton ang usa ka matang sa pipeline. Mga. ipasa ang resulta sa usa ka kalkulasyon gikan sa usa ka function ngadto sa sunod, ug ayaw i-save ang intermediate nga mga resulta.

Atong kuhaon ang mosunod nga code nga pananglitan, diin atong gitipigan ang mga intermediate nga kalkulasyon sa lain nga mga butang:

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

Naghimo kami og 3 nga mga operasyon nga sunud-sunod, ug ang resulta sa matag usa gitipigan sa usa ka lahi nga butang. Apan sa pagkatinuod, dili nato kinahanglan kining mga intermediate nga mga butang.

O mas grabe pa, apan mas pamilyar sa mga tiggamit sa Excel.

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

Sa kini nga kaso, wala namo gitipigan ang mga resulta sa intermediate nga kalkulasyon, apan ang pagbasa sa code nga adunay mga nested function hilabihan ka dili kombenyente.

Atong tan-awon ang daghang mga pamaagi sa pagproseso sa datos sa R, ug naghimo sila og parehas nga mga operasyon sa lainlaing mga paagi.

Pipelines sa librarya tidyverse gipatuman sa operator %>%.

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

Sa ingon atong gikuha ang resulta sa trabaho func1() ug ipasa kini isip unang argumento sa func2(), unya atong ipasa ang resulta niini nga kalkulasyon isip unang argumento func3(). Ug sa katapusan, gisulat namon ang tanan nga mga kalkulasyon nga gihimo sa butang obj <-.

Ang tanan sa ibabaw gihulagway nga mas maayo kaysa mga pulong pinaagi niini nga meme:
Unsa nga pinulongan ang pilion alang sa pagtrabaho sa datos - R o Python? Ang duha! Paglalin gikan sa mga panda ngadto sa tidyverse ug data.table ug balik

В data.table ang mga kadena gigamit sa samang paagi.

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

Sa matag usa sa mga square bracket mahimo nimong gamiton ang resulta sa miaging operasyon.

В pandas ang maong mga operasyon gibulag sa usa ka tulbok.

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

Mga. kuhaon namo among lamesa df ug gamita ang iyang pamaagi fun1(), unya atong gamiton ang pamaagi sa nakuha nga resulta fun2()pagkahuman fun3(). Ang resulta nga resulta gitipigan sa usa ka butang butang .

Mga Istruktura sa Data

Ang mga istruktura sa datos sa R ​​ug Python managsama, apan adunay lainlaing mga ngalan.

paghulagway
Ngalan sa R
Ngalan sa Python/pandas

Istruktura sa lamesa
data.frame, data.table, tibble
DataFrame

Usa ka dimensyon nga lista sa mga kantidad
Vector
Serye sa mga panda o lista sa puro nga Python

Daghang lebel nga dili tabular nga istruktura
Listahan
Diksyonaryo (diksyon)

Atong tan-awon ang ubang mga bahin ug kalainan sa syntax sa ubos.

Pipila ka mga pulong bahin sa mga pakete nga among gamiton

Una, isulti ko kanimo ang gamay bahin sa mga pakete nga mahimo nimong pamilyar sa kini nga artikulo.

tidyverse

Opisyal nga website: tidyverse.org
Unsa nga pinulongan ang pilion alang sa pagtrabaho sa datos - R o Python? Ang duha! Paglalin gikan sa mga panda ngadto sa tidyverse ug data.table ug balik
librarya tidyverse gisulat ni Hedley Wickham, Senior Research Scientist sa RStudio. tidyverse naglangkob sa usa ka impresibo nga hugpong sa mga pakete nga nagpayano sa pagproseso sa datos, 5 niini gilakip sa top 10 nga mga pag-download gikan sa CRAN repository.

Ang kinauyokan sa librarya naglangkob sa mosunod nga mga pakete: ggplot2, dplyr, tidyr, readr, purrr, tibble, stringr, forcats. Ang matag usa niini nga mga pakete gitumong sa pagsulbad sa usa ka piho nga problema. Pananglitan dplyr gihimo alang sa pagmaniobra sa datos, tidyr aron madala ang datos sa hapsay nga porma, stringr gipasayon ​​ang pagtrabaho sa mga kuwerdas, ug ggplot2 mao ang usa sa labing popular nga data visualization himan.

Ang bentaha tidyverse mao ang kayano ug sayon ​​basahon nga syntax, nga sa daghang paagi susama sa SQL query nga pinulongan.

datos.tabla

Unsa nga pinulongan ang pilion alang sa pagtrabaho sa datos - R o Python? Ang duha! Paglalin gikan sa mga panda ngadto sa tidyverse ug data.table ug balikOpisyal nga website: r-datatable.com

Pinaagi sa data.table mao si Matt Dole sa H2O.ai.

Ang unang pagpagawas sa librarya nahitabo sa 2006.

Ang pakete nga syntax dili kombenyente sama sa tidyverse ug mas makapahinumdum sa classic dataframes sa R, apan sa samang higayon kamahinungdanon gipalapdan sa functionality.

Ang tanan nga mga manipulasyon sa lamesa sa kini nga pakete gihulagway sa square bracket, ug kung imong hubaron ang syntax data.table sa SQL, makakuha ka usa ka butang nga sama niini: data.table[ WHERE, SELECT, GROUP BY ]

Ang kusog sa kini nga pakete mao ang katulin sa pagproseso sa daghang mga datos.

pandas

Opisyal nga website: pandas.pydata.org Unsa nga pinulongan ang pilion alang sa pagtrabaho sa datos - R o Python? Ang duha! Paglalin gikan sa mga panda ngadto sa tidyverse ug data.table ug balik

Ang ngalan sa librarya naggikan sa termino nga ekonomiko nga "panel data", nga gigamit sa paghulagway sa multidimensional structured sets sa impormasyon.

Pinaagi sa pandas mao ang Amerikanong si Wes McKinney.

Kung bahin sa pag-analisar sa datos sa Python, parehas pandas Dili. Usa ka kaayo nga multifunctional, taas nga lebel nga pakete nga nagtugot kanimo sa paghimo sa bisan unsang pagmaniobra sa datos, gikan sa pagkarga sa datos gikan sa bisan unsang gigikanan hangtod sa paghanduraw niini.

Pag-instalar sa dugang nga mga pakete

Ang mga pakete nga gihisgutan sa kini nga artikulo wala gilakip sa sukaranan nga mga pag-apod-apod sa R ​​ug Python. Bisan kung adunay gamay nga caveat, kung imong gi-install ang Anaconda distribution, unya i-install ang dugang pandas dili kinahanglan.

Pag-instalar sa mga pakete sa R

Kung imong giablihan ang RStudio development environment labing menos kausa, tingali nahibal-an na nimo kung giunsa ang pag-install sa gikinahanglan nga package sa R. Aron ma-install ang mga package, gamita ang standard command install.packages() pinaagi sa pagpadagan niini direkta sa R ​​mismo.

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

Pagkahuman sa pag-instalar, ang mga pakete kinahanglan nga konektado, diin sa kadaghanan nga mga kaso gigamit ang mando library().

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

Pag-instalar sa mga pakete sa Python

Busa, kung ikaw adunay puro nga Python nga na-install, nan pandas kinahanglan nimo nga i-install kini sa kamut. Ablihi ang command line, o terminal, depende sa imong operating system ug isulod ang mosunod nga command.

pip install pandas

Dayon mibalik kami sa Python ug i-import ang na-install nga package gamit ang command import.

import pandas as pd

Nagkarga sa Data

Ang pagmina sa datos usa sa labing hinungdanon nga mga lakang sa pagtuki sa datos. Ang Python ug R, kung gusto, naghatag kanimo daghang mga oportunidad sa pagkuha sa datos gikan sa bisan unsang gigikanan: lokal nga mga file, mga file gikan sa Internet, mga website, tanan nga mga klase sa database.

Unsa nga pinulongan ang pilion alang sa pagtrabaho sa datos - R o Python? Ang duha! Paglalin gikan sa mga panda ngadto sa tidyverse ug data.table ug balik

Sa tibuuk nga artikulo mogamit kami daghang mga datos:

  1. Duha ka pag-download gikan sa Google Analytics.
  2. Titanic Passenger Dataset.

Ang tanan nga datos naa sa akong GitHub sa porma sa csv ug tsv files. Asa nato sila pangayoon?

Nag-load sa datos sa R: tidyverse, vroom, readr

Aron makarga ang datos sa usa ka librarya tidyverse Adunay duha ka pakete: vroom, readr. vroom mas moderno, apan sa umaabot ang mga pakete mahimong mahiusa.

Quote gikan sa opisyal nga dokumentasyon vroom.

vroom vs magbabasa
Unsa ang pagpagawas sa vroom nagpasabot alang sa readr? Sa pagkakaron nagplano kami nga tugotan ang duha nga mga pakete nga maglainlain, apan lagmit among iusa ang mga pakete sa umaabot. Ang usa ka disbentaha sa tapolan nga pagbasa sa vroom mao ang pipila nga mga problema sa datos nga dili ma-report sa unahan, busa kung giunsa ang labing kaayo nga paghiusa kanila nanginahanglan pipila nga paghunahuna.

vroom vs reader
Unsay buot ipasabot sa pagpagawas? vroom alang sa readr? Sa pagkakaron nagplano kami sa pag-ugmad sa duha ka mga pakete nga gilain, apan mahimo natong ikombinar kini sa umaabot. Usa sa mga disbentaha sa tapulan nga pagbasa vroom mao nga ang pipila ka mga problema sa mga datos dili ma-report nga abante, mao nga kinahanglan nimo nga hunahunaon kung giunsa kini labing maayo sa paghiusa.

Niini nga artikulo atong tan-awon ang duha nga mga pakete sa pagkarga sa datos:

Nag-load sa datos sa R: vroom package

# 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")

Nag-load sa datos sa 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")

Sa putos vroom, bisan unsa pa ang format sa data sa csv / tsv, ang pagkarga gihimo pinaagi sa function sa parehas nga ngalan vroom(), sa pakete readr naggamit kami usa ka lahi nga function alang sa matag format read_tsv() и read_csv().

Nag-load sa datos sa R: data.table

В data.table adunay function alang sa loading data fread().

Nag-load sa datos sa R: data.table package

# 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")

Nag-load sa datos sa Python: pandas

Kung atong itandi sa R ​​packages, nan sa kini nga kaso ang syntax mao ang labing duol sa pandas mahimong readr, kay pandas makahangyo ug datos gikan sa bisan asa, ug adunay tibuok pamilya sa mga gimbuhaton niini nga pakete read_*().

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

Ug daghang uban pang mga gimbuhaton nga gidisenyo aron mabasa ang datos gikan sa lainlaing mga format. Apan alang sa among katuyoan kini igo na read_table() o read_csv() gamit ang argumento Sep aron matino ang separator sa kolum.

Nag-load sa datos sa 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")

Paghimo og mga dataframe

Lamesa titanic, nga among gikarga, naay field Sex, nga nagtipig sa gender identifier sa pasahero.

Apan para sa mas kombenyente nga presentasyon sa datos sa termino sa gender sa pasahero, kinahanglan nimong gamiton ang ngalan kay sa gender code.

Aron mahimo kini, maghimo kami usa ka gamay nga direktoryo, usa ka lamesa diin adunay 2 ra ka kolum (code ug ngalan sa gender) ug 2 ka laray, matag usa.

Paghimo og dataframe sa R: tidyverse, dplyr

Sa panig-ingnan sa code sa ubos, gihimo namon ang gitinguha nga dataframe gamit ang function tibble() .

Paghimo og dataframe sa R: dplyr

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

Paghimo ug dataframe sa R: data.table

Paghimo ug dataframe sa R: data.table

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

Paghimo og dataframe sa Python: pandas

В pandas Ang paghimo sa mga frame gihimo sa daghang mga yugto, una naghimo kami usa ka diksyonaryo, ug dayon among gi-convert ang diksyonaryo sa usa ka dataframe.

Paghimo og dataframe sa Python: pandas

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

Pagpili sa mga Kolum

Ang mga lamesa nga imong gitrabahoan mahimong adunay mga dosena o bisan gatosan nga mga kolum sa datos. Apan aron mahimo ang pag-analisar, ingon usa ka lagda, dili nimo kinahanglan ang tanan nga mga kolum nga magamit sa lamesa sa gigikanan.

Unsa nga pinulongan ang pilion alang sa pagtrabaho sa datos - R o Python? Ang duha! Paglalin gikan sa mga panda ngadto sa tidyverse ug data.table ug balik

Busa, ang usa sa unang mga operasyon nga imong himoon sa tinubdan nga lamesa mao ang paghawan niini sa wala kinahanglana nga impormasyon ug pagpalingkawas sa panumduman nga kini nga impormasyon nag-okupar.

Pagpili sa mga kolum sa R: tidyverse, dplyr

syntax dplyr susama kaayo sa SQL query nga lengguwahe, kung pamilyar ka niini dali ka maka-master niini nga pakete.

Aron mapili ang mga kolum, gamita ang function select().

Sa ubos mao ang mga pananglitan sa code diin mahimo nimong pilion ang mga kolum sa mosunod nga mga paagi:

  • Paglista sa mga ngalan sa gikinahanglan nga mga kolum
  • Tan-awa ang mga ngalan sa kolum gamit ang regular nga mga ekspresyon
  • Pinaagi sa tipo sa datos o bisan unsang ubang kabtangan sa datos nga naa sa kolum

Pagpili sa mga kolum sa 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)

Pagpili sa mga kolum sa R: data.table

Ang parehas nga operasyon sa data.table gihimo nga gamay nga lahi, sa sinugdanan sa artikulo naghatag ako usa ka paghulagway kung unsang mga argumento ang naa sa sulod sa square bracket data.table.

DT[i,j,by]

Asa:
ako - diin, i.e. pagsala pinaagi sa mga laray
j - pilia|pag-update|buhata, i.e. pagpili sa mga kolum ug pag-convert niini
pinaagi sa - data grouping

Pagpili sa mga kolum sa 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$")]

Variable .SD nagtugot kanimo sa pag-access sa tanan nga mga kolum, ug .SDcols salain ang gikinahanglan nga mga kolum gamit ang regular nga mga ekspresyon, o uban pang mga gimbuhaton aron masala ang mga ngalan sa mga kolum nga imong gikinahanglan.

Pagpili sa mga kolum sa Python, pandas

Sa pagpili sa mga kolum pinaagi sa ngalan sa pandas igo na ang paghatag ug listahan sa ilang mga ngalan. Ug aron mapili o dili iapil ang mga kolum pinaagi sa ngalan gamit ang regular nga mga ekspresyon, kinahanglan nimo gamiton ang mga gimbuhaton drop() и filter(), ug argumento axis=1, diin imong gipakita nga gikinahanglan ang pagproseso sa mga kolum kaysa mga laray.

Aron makapili og field pinaagi sa data type, gamita ang function select_dtypes(), ug ngadto sa mga argumento naglakip sa o iapil ipasa ang usa ka lista sa mga tipo sa datos nga katumbas kung unsang mga natad ang kinahanglan nimong pilion.

Pagpili sa mga kolum sa 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'])

Pagsala sa mga laray

Pananglitan, ang tinubdan nga lamesa mahimong adunay daghang mga tuig nga datos, apan kinahanglan nimo nga analisahon ang miaging bulan. Pag-usab, ang dugang nga mga linya makapahinay sa proseso sa pagproseso sa datos ug makabara sa memorya sa PC.

Unsa nga pinulongan ang pilion alang sa pagtrabaho sa datos - R o Python? Ang duha! Paglalin gikan sa mga panda ngadto sa tidyverse ug data.table ug balik

Pagsala sa mga laray sa R: tydyverse, dplyr

В dplyr ang function gigamit sa pagsala sa mga laray filter(). Nagkinahanglan kini og dataframe isip unang argumento, unya imong ilista ang mga kondisyon sa pagsala.

Kung nagsulat ug lohikal nga mga ekspresyon aron masala ang usa ka lamesa, sa kini nga kaso, ipiho ang mga ngalan sa kolum nga wala’y mga kinutlo ug wala ipahayag ang ngalan sa lamesa.

Kung naggamit ug daghang lohikal nga mga ekspresyon sa pagsala, gamita ang mosunod nga mga operator:

  • & o comma - lohikal UG
  • | - lohikal O

Pagsala sa mga laray sa R: dplyr

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

Pagsala sa mga laray sa R: data.table

Sama sa gisulat ko na sa ibabaw, sa data.table Ang data conversion syntax gilakip sa square bracket.

DT[i,j,by]

Asa:
ako - diin, i.e. pagsala pinaagi sa mga laray
j - pilia|pag-update|buhata, i.e. pagpili sa mga kolum ug pag-convert niini
pinaagi sa - data grouping

Ang argumento gigamit sa pagsala sa mga laray i, nga adunay una nga posisyon sa square bracket.

Ang mga kolum gi-access sa lohikal nga mga ekspresyon nga wala’y mga marka sa kinutlo ug wala ipiho ang ngalan sa lamesa.

Ang lohikal nga mga ekspresyon adunay kalabutan sa usag usa sa parehas nga paagi sama sa dplyr pinaagi sa & ug | operators.

Pagsala sa mga laray sa R: data.table

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

Pagsala sa mga string sa Python: pandas

Salain pinaagi sa mga laray sa pandas susama sa pagsala sa data.table, ug gihimo sa square bracket.

Sa kini nga kaso, ang pag-access sa mga kolum kinahanglan nga himuon pinaagi sa pagpaila sa ngalan sa dataframe; unya ang ngalan sa kolum mahimo usab nga ipakita sa mga marka sa kinutlo sa mga square bracket (usa ka panig-ingnan df['col_name']), o walay mga kinutlo human sa yugto (usa ka panig-ingnan df.col_name).

Kung kinahanglan nimo nga isala ang usa ka dataframe pinaagi sa daghang mga kondisyon, ang matag kondisyon kinahanglan ibutang sa parentheses. Ang lohikal nga mga kondisyon konektado sa usag usa sa mga operator & и |.

Pagsala sa mga string sa 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)]

Pag-grupo ug paghugpong sa datos

Usa sa labing kasagarang gigamit nga operasyon sa pagtuki sa datos mao ang paggrupo ug paghugpong.

Unsa nga pinulongan ang pilion alang sa pagtrabaho sa datos - R o Python? Ang duha! Paglalin gikan sa mga panda ngadto sa tidyverse ug data.table ug balik

Ang syntax alang sa paghimo niini nga mga operasyon nagkatag sa tanan nga mga pakete nga among girepaso.

Sa kini nga kaso, magkuha kami usa ka dataframe ingon usa ka pananglitan titanic, ug kuwentaha ang gidaghanon ug kasagarang gasto sa mga tiket depende sa klase sa cabin.

Pag-grupo ug paghugpong sa datos sa R: tidyverse, dplyr

В dplyr ang function gigamit alang sa paggrupo group_by(), ug alang sa aggregation summarise(). Sa pagkatinuod, dplyr adunay usa ka tibuok pamilya sa mga gimbuhaton summarise_*(), apan ang katuyoan niini nga artikulo mao ang pagtandi sa batakang syntax, aron dili kami moadto sa ingon nga kalasangan.

Panguna nga aggregation function:

  • sum() - summasyon
  • min() / max() - minimum ug maximum nga kantidad
  • mean() - average
  • median() - median
  • length() - gidaghanon

Pag-grupo ug paghugpong sa R: dplyr

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

Aron molihok group_by() gipasa namo ang lamesa isip unang argumento titanic, ug dayon gipakita ang field Pclass, diin atong igrupo ang atong lamesa. Ang resulta niini nga operasyon gamit ang operator %>% gipasa isip unang argumento sa function summarise(), ug midugang ug 2 pa ka field: mga pasahero и avg_price. Sa una, gamit ang function length() kalkulado ang gidaghanon sa mga tiket, ug sa ikaduha nga paggamit sa function mean() nakadawat sa kasagaran nga presyo sa tiket.

Pag-grupo ug paghugpong sa datos sa R: data.table

В data.table ang argumento kay gigamit para sa aggregation j nga adunay ikaduha nga posisyon sa square bracket, ug alang sa paggrupo by o keyby, nga adunay ikatulo nga posisyon.

Ang lista sa aggregation function sa kini nga kaso parehas sa gihulagway sa dplyr, kay kini mga gimbuhaton gikan sa batakang R syntax.

Pag-grupo ug paghugpong sa R: data.table

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

Pag-grupo ug paghugpong sa datos sa Python: pandas

Pag-grupo sa pandas susama sa dplyr, apan ang aggregation dili susama sa dplyr dili gyud data.table.

Sa paggrupo, gamita ang paagi groupby(), diin kinahanglan nimo nga ipasa ang usa ka lista sa mga kolum diin ang dataframe igrupo.

Alang sa aggregation mahimo nimong gamiton ang pamaagi agg()nga modawat ug diksiyonaryo. Ang mga yawe sa diksyonaryo mao ang mga kolum diin imong ipadapat ang mga function sa aggregation, ug ang mga kantidad mao ang mga ngalan sa mga function sa aggregation.

Mga gimbuhaton sa panagsama:

  • sum() - summasyon
  • min() / max() - minimum ug maximum nga kantidad
  • mean() - average
  • median() - median
  • count() - gidaghanon

function reset_index() sa pananglitan sa ubos kini gigamit sa pag-reset sa mga nested index nga pandas default sa pagkahuman sa data aggregation.

Simbolo nagtugot kanimo sa paglihok sa sunod nga linya.

Pag-grupo ug paghugpong sa Python: pandas

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

Vertikal nga pagdugtong sa mga lamesa

Usa ka operasyon diin moapil ka sa duha o daghan pa nga mga lamesa sa parehas nga istruktura. Ang datos nga among gikarga adunay mga lamesa ga_nov и ga_dec. Kini nga mga lamesa parehas sa istruktura, i.e. adunay parehas nga mga kolum, ug ang mga tipo sa datos sa kini nga mga kolum.

Unsa nga pinulongan ang pilion alang sa pagtrabaho sa datos - R o Python? Ang duha! Paglalin gikan sa mga panda ngadto sa tidyverse ug data.table ug balik

Kini usa ka pag-upload gikan sa Google Analytics alang sa bulan sa Nobyembre ug Disyembre, sa kini nga seksyon among isagol kini nga datos sa usa ka lamesa.

Patindog nga pagdugtong sa mga lamesa sa R: tidyverse, dplyr

В dplyr Mahimo nimong isagol ang 2 nga mga lamesa sa usa gamit ang function bind_rows(), pagpasa sa mga lamesa ingong mga argumento niini.

Pagsala sa mga laray sa R: dplyr

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

Patindog nga pag-apil sa mga lamesa sa R: data.table

Wala usab kini komplikado, atong gamiton rbind().

Pagsala sa mga laray sa R: data.table

## data.table
rbind(ga_nov, ga_dec)

Vertikal nga pag-apil sa mga lamesa sa Python: pandas

В pandas ang function gigamit sa pag-apil sa mga lamesa concat(), diin kinahanglan nimo nga ipasa ang usa ka lista sa mga frame aron makombinar sila.

Pagsala sa mga string sa Python: pandas

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

Horizontal nga pagdugtong sa mga lamesa

Usa ka operasyon diin ang mga kolum gikan sa ikaduha idugang sa unang lamesa pinaagi sa yawe. Kanunay kini nga gigamit sa pagpauswag sa usa ka lamesa sa kamatuoran (pananglitan, usa ka lamesa nga adunay datos sa pagpamaligya) nga adunay pipila nga datos sa pakisayran (pananglitan, ang gasto sa usa ka produkto).

Unsa nga pinulongan ang pilion alang sa pagtrabaho sa datos - R o Python? Ang duha! Paglalin gikan sa mga panda ngadto sa tidyverse ug data.table ug balik

Adunay ubay-ubay nga mga matang sa paghiusa:

Unsa nga pinulongan ang pilion alang sa pagtrabaho sa datos - R o Python? Ang duha! Paglalin gikan sa mga panda ngadto sa tidyverse ug data.table ug balik

Sa nauna nga gikarga nga lamesa titanic naa tay column Sex, nga katumbas sa gender code sa pasahero:

1 - babaye
2 - lalaki

Usab, naghimo kami usa ka lamesa - usa ka reference nga libro gender. Alang sa mas sayon ​​​​nga presentasyon sa datos sa gender sa mga pasahero, kinahanglan natong idugang ang ngalan sa gender gikan sa direktoryo gender ngadto sa lamesa titanic.

Horizontal nga lamesa apil sa R: tidyverse, dplyr

В dplyr Adunay usa ka tibuuk nga pamilya sa mga gimbuhaton alang sa pinahigda nga pag-apil:

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

Ang labing kasagarang gigamit sa akong praktis mao ang left_join().

Ingon nga ang unang duha ka mga argumento, ang mga gimbuhaton nga gilista sa ibabaw nagkinahanglan og duha ka mga lamesa aron iapil, ug isip ang ikatulo nga argumento by kinahanglan nimong ipiho ang mga kolum aron makaapil.

Horizontal nga lamesa apil sa R: dplyr

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

Horizontal nga pagdugtong sa mga lamesa sa R: data.table

В data.table Kinahanglan ka nga moapil sa mga lamesa pinaagi sa yawe gamit ang function merge().

Mga argumento sa paghiusa() function sa data.table

  • x, y - Mga lamesa alang sa pag-apil
  • ni — Kolum nga mao ang yawe sa pag-apil kung kini adunay parehas nga ngalan sa duha ka mga lamesa
  • by.x, by.y — Mga ngalan sa mga kolum nga i-merge, kung lainlain ang ilang ngalan sa mga lamesa
  • all, all.x, all.y — Apil nga tipo, ibalik sa tanan ang tanang laray gikan sa duha ka lamesa, all.x katumbas sa LEFT JOIN operation (mobiya sa tanang laray sa unang lamesa), all.y — katumbas sa RIGHT JOIN operation (ibilin ang tanang laray sa ikaduhang lamesa ).

Horizontal nga pagdugtong sa mga lamesa sa R: data.table

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

Horizontal nga lamesa apil sa Python: pandas

Ingon man sa data.tablesa pandas ang function gigamit sa pag-apil sa mga lamesa merge().

Ang mga argumento sa merge() function sa pandas

  • unsaon — Type sa koneksyon: wala, tuo, gawas, sulod
  • on — Kolum nga usa ka yawe kon kini adunay parehas nga ngalan sa duha ka mga lamesa
  • left_on, right_on — Mga ngalan sa yawe nga mga kolum, kon kini adunay lain-laing mga ngalan sa mga lamesa

Horizontal nga lamesa apil sa Python: pandas

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

Panguna nga mga gimbuhaton sa bintana ug kalkulado nga mga kolum

Ang mga function sa bintana parehas sa kahulugan sa mga function sa aggregation, ug kanunay usab nga gigamit sa pagtuki sa datos. Apan dili sama sa aggregation functions, ang mga function sa bintana wala mag-usab sa gidaghanon sa mga laray sa outgoing dataframe.

Unsa nga pinulongan ang pilion alang sa pagtrabaho sa datos - R o Python? Ang duha! Paglalin gikan sa mga panda ngadto sa tidyverse ug data.table ug balik

Sa tinuud, gamit ang function sa bintana, gibahin namon ang umaabot nga dataframe sa mga bahin sumala sa pipila nga sukdanan, i.e. pinaagi sa kantidad sa usa ka uma, o daghang mga uma. Ug nagpahigayon kami og mga operasyon sa aritmetika sa matag bintana. Ang resulta niini nga mga operasyon ibalik sa matag linya, i.e. nga walay pagbag-o sa kinatibuk-ang gidaghanon sa mga laray sa lamesa.

Pananglitan, atong kuhaon ang lamesa titanic. Makalkulo nato kung pila ka porsyento ang gasto sa matag tiket sulod sa klase sa cabin niini.

Aron mahimo kini, kinahanglan natong makuha sa matag linya ang kinatibuk-ang gasto sa usa ka tiket alang sa kasamtangan nga klase sa cabin diin ang tiket niini nga linya iya, unya bahinon ang gasto sa matag tiket sa kinatibuk-ang gasto sa tanan nga mga tiket sa samang klase sa cabin. .

Naglihok ang bintana sa R: tidyverse, dplyr

Aron makadugang bag-ong mga kolum, nga dili mogamit sa row grouping, in dplyr nagsilbi nga function mutate().

Mahimo nimong sulbaron ang problema nga gihulagway sa ibabaw pinaagi sa paggrupo sa datos sa uma Pclass ug summing sa field sa bag-ong column sa pagbuhat sa. Sunod, ungroup ang lamesa ug bahina ang field values sa pagbuhat sa sa nahitabo sa miaging lakang.

Mga function sa bintana sa R: dplyr

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

Naglihok ang bintana sa R: data.table

Ang algorithm sa solusyon nagpabilin nga parehas sa dplyr, kinahanglan natong bahinon ang lamesa ngadto sa mga bintana pinaagi sa uma Pclass. I-output sa usa ka bag-ong kolum ang kantidad alang sa grupo nga katumbas sa matag laray, ug idugang ang usa ka kolum diin among gikalkula ang bahin sa gasto sa matag tiket sa grupo niini.

Aron makadugang bag-ong mga kolum sa data.table anaa ang operator :=. Sa ubos usa ka pananglitan sa pagsulbad sa usa ka problema gamit ang package data.table

Naglihok ang bintana sa R: data.table

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

Mga function sa bintana sa Python: pandas

Usa ka paagi sa pagdugang og bag-ong kolum sa pandas - gamita ang function assign(). Aron i-summarize ang gasto sa mga tiket sa klase sa cabin, nga wala’y pag-grupo sa mga laray, among gamiton ang function transform().

Sa ubos usa ka pananglitan sa usa ka solusyon diin among idugang sa lamesa titanic parehas nga 2 ka kolum.

Mga function sa bintana sa Python: pandas

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

Function ug mga pamaagi sa sulat sa lamesa

Sa ubos usa ka talaan sa mga sulat tali sa mga pamaagi alang sa paghimo sa lainlaing mga operasyon nga adunay datos sa mga pakete nga among gikonsiderar.

paghulagway
tidyverse
datos.tabla
pandas

Nagkarga sa Data
vroom()/ readr::read_csv() / readr::read_tsv()
fread()
read_csv()

Paghimo og mga dataframe
tibble()
data.table()
dict() + from_dict()

Pagpili sa mga Kolum
select()
argumento j, ikaduha nga posisyon sa square bracket
gipasa namo ang listahan sa gikinahanglan nga mga kolum sa square bracket / drop() / filter() / select_dtypes()

Pagsala sa mga laray
filter()
argumento i, unang posisyon sa square bracket
Gilista namo ang mga kondisyon sa pagsala sa mga square bracket / filter()

Paggrupo ug Paghiusa
group_by() + summarise()
mga argumento j + by
groupby() + agg()

Vertikal nga panaghiusa sa mga lamesa (UNION)
bind_rows()
rbind()
concat()

Horizontal nga pagdugtong sa mga lamesa (JOIN)
left_join() / *_join()
merge()
merge()

Panguna nga mga gimbuhaton sa bintana ug pagdugang mga kalkulado nga mga kolum
group_by() + mutate()
argumento j gamit ang operator := + argumento by
transform() + assign()

konklusyon

Tingali sa artikulo nga akong gihulagway nga dili ang labing kamalaumon nga pagpatuman sa pagproseso sa datos, mao nga malipay ako kung imong tul-iron ang akong mga sayup sa mga komento, o dugangan lang ang kasayuran nga gihatag sa artikulo sa ubang mga pamaagi sa pagtrabaho sa data sa R ​​/ Python.

Sama sa akong gisulat sa ibabaw, ang katuyoan sa artikulo dili aron ipahamtang ang opinyon sa usa ka tawo kung unsang lengguwahe ang mas maayo, apan aron pasimplehon ang oportunidad sa pagkat-on sa duha nga mga sinultian, o, kung kinahanglan, pagbalhin sa taliwala nila.

Kung gusto nimo ang artikulo, malipay ako nga adunay bag-ong mga subscriber sa akong youtube и telegram mga kanal.

Poll

Asa sa mosunod nga mga pakete ang imong gigamit sa imong trabaho?

Sa mga komento mahimo nimong isulat ang hinungdan sa imong pagpili.

Ang mga rehistradong tiggamit lamang ang makaapil sa survey. Sign in, walay sapayan.

Unsa nga pakete sa pagproseso sa datos ang imong gigamit (makapili ka daghang mga kapilian)

  • 45,2%hapsay ngaverse19

  • 33,3%datos.talaan14

  • 54,8%panda23

42 ka tiggamit ang miboto. 9 ka tiggamit ang nag-abstain.

Source: www.habr.com

Idugang sa usa ka comment