Cén teanga a roghnófar chun oibriú le sonraí - R nó Python? An dá! Aistriú ó pandas go slachtmhar agus data.table agus ar ais

Trí chuardach a dhéanamh ar R nó Python ar an Idirlíon, gheobhaidh tú na milliúin alt agus ciliméadar de phlé ar an ábhar atá níos fearr, níos tapúla agus níos áisiúla chun oibriú le sonraí. Ach ar an drochuair, níl na hailt agus na díospóidí seo go léir úsáideach go háirithe.

Cén teanga a roghnófar chun oibriú le sonraí - R nó Python? An dá! Aistriú ó pandas go slachtmhar agus data.table agus ar ais

Is é cuspóir an ailt seo comparáid a dhéanamh idir na bunteicníochtaí próiseála sonraí sna pacáistí is coitianta sa dá theanga. Agus cuidigh le léitheoirí máistreacht a fháil go tapa ar rud éigin nach bhfuil ar eolas acu go fóill. Dóibh siúd a scríobhann i Python, faigh amach conas an rud céanna a dhéanamh in R, agus vice versa.

Le linn an ailt déanfaimid anailís ar chomhréir na bpacáistí is coitianta in R. Seo iad na pacáistí atá san áireamh sa leabharlann tidyverseagus freisin an pacáiste data.table. Agus cuir a gcomhréir i gcomparáid le pandas, an pacáiste anailíse sonraí is coitianta i Python.

Rachaimid céim ar chéim trí chonair iomlán na hanailíse sonraí ó é a luchtú go feidhmeanna fuinneoige anailíse a dhéanamh ag baint úsáide as Python agus R.

Ábhar

Is féidir an t-alt seo a úsáid mar bhileog cheat má tá dearmad déanta agat ar conas roinnt oibríocht próiseála sonraí a dhéanamh i gceann de na pacáistí atá á mbreithniú.

Cén teanga a roghnófar chun oibriú le sonraí - R nó Python? An dá! Aistriú ó pandas go slachtmhar agus data.table agus ar ais

  1. Príomhdhifríochtaí comhréire idir R agus Python
    1.1. Feidhmeanna Pacáiste a Rochtain
    1.2. Sannadh
    1.3. Innéacsú
    1.4. Modhanna agus OOP
    1.5. Píblínte
    1.6. Struchtúir Sonraí
  2. Cúpla focal faoi na pacáistí a úsáidfimid
    2.1. slachtmhar
    2.2. sonraí.tábla
    2.3. pandas
  3. Suiteáil pacáistí
  4. Sonraí á Luchtú
  5. Cruthú frámaí sonraí
  6. Roghnú na Colúin a Theastóidh uait
  7. Ag scagadh sraitheanna
  8. Grúpáil agus Comhiomlánú
  9. Aontas ingearach na dtáblaí (UNION)
  10. Ceangal cothrománach na dtáblaí (JOIN)
  11. Feidhmeanna bunúsacha fuinneoige agus colúin ríofa
  12. Tábla comhfhreagrais idir modhanna próiseála sonraí i R agus Python
  13. Conclúid
  14. Suirbhé gairid faoin bpacáiste a úsáideann tú

Má tá suim agat in anailís sonraí, b'fhéidir go bhfaighidh tú mo chuid teileagram и youtube cainéil. Tá an chuid is mó den ábhar tiomnaithe don teanga R.

Príomhdhifríochtaí comhréire idir R agus Python

Chun é a dhéanamh níos éasca duit aistriú ó Python go R, nó a mhalairt, tabharfaidh mé roinnt príomhphointí ar gá duit aird a thabhairt orthu.

Feidhmeanna Pacáiste a Rochtain

Nuair a bheidh pacáiste luchtaithe isteach i R, ní gá duit ainm an phacáiste a shonrú chun rochtain a fháil ar a fheidhmeanna. I bhformhór na gcásanna níl sé seo coitianta i R, ach tá sé inghlactha. Ní gá duit pacáiste a allmhairiú ar chor ar bith má tá ceann dá fheidhmeanna i do chód ag teastáil uait, ach glaoch air trí ainm an phacáiste agus ainm na feidhme a shonrú. Is idirstad dúbailte é an deighilteoir idir ainmneacha pacáiste agus feidhm in R. package_name::function_name().

I Python, ar a mhalairt, meastar gur clasaiceach é feidhmeanna pacáiste a ghlaoch trína ainm a shonrú go sainráite. Nuair a dhéantar pacáiste a íoslódáil, de ghnáth tugtar ainm giorraithe air, e.g. pandas de ghnáth úsáidtear ainm cleite pd. Faightear feidhm phacáiste trí phonc package_name.function_name().

Sannadh

In R, is coitianta saighead a úsáid chun luach a shannadh do réad. obj_name <- value, cé go gceadaítear comhartha comhionann aonair, úsáidtear an comhartha comhionann aonair in R go príomha chun luachanna a rith chun argóintí feidhme.

I Python, déantar an tasc go heisiach le comhartha comhionann amháin obj_name = value.

Innéacsú

Tá difríochtaí suntasacha anseo freisin. In R, tosaíonn an t-innéacsú ag a haon agus folaíonn sé na heilimintí sonraithe go léir sa raon iarmhartach, i.e.

I Python, tosaíonn innéacsú ó nialas agus ní chuimsíonn an raon roghnaithe an eilimint dheireanach a shonraítear san innéacs. Mar sin dearadh x[i:j] i Python ní bheidh an eilimint j san áireamh.

Tá difríochtaí freisin san innéacsú diúltach, i nodaireacht R x[-1] tabharfaidh sé ar ais gach eilimint den veicteoir seachas an ceann deireanach. I Python, ní thabharfaidh nodaireacht chomhchosúil ar ais ach an eilimint dheireanach.

Modhanna agus OOP

Cuireann R OOP i bhfeidhm ar a bhealach féin, scríobh mé faoi seo san alt "OOP sa teanga R (cuid 1): ranganna S3". Go ginearálta, is teanga fheidhmiúil í R, agus tá gach rud inti tógtha ar fheidhmeanna. Dá bhrí sin, mar shampla, d'úsáideoirí Excel, téigh go dtí tydiverse beidh sé níos éasca ná pandas. Cé go mb’fhéidir gurb é seo mo thuairim suibiachtúil.

I mbeagán focal, níl modhanna ag rudaí i R (má labhairt linn faoi ranganna S3, ach tá feidhmiúcháin OOP eile ann nach bhfuil chomh coitianta). Níl ach feidhmeanna ginearálaithe ann a phróiseálann iad go héagsúil ag brath ar aicme an ruda.

Píblínte

B’fhéidir gurb é seo an t-ainm do pandas Ní bheidh sé iomlán ceart, ach déanfaidh mé iarracht an bhrí a mhíniú.

D'fhonn gan ríomhaireachtaí idirmheánacha a shábháil agus gan rudaí gan ghá a tháirgeadh sa timpeallacht oibre, is féidir leat cineál píblíne a úsáid. Iad siúd. pas a fháil ar thoradh ríomh ó fheidhm amháin go dtí an chéad cheann eile, agus ná sábháil torthaí idirmheánacha.

Glacaimis an sampla cód seo a leanas, áit a stórálaimid ríomhaireachtaí idirmheánacha i réada ar leithligh:

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

Rinneamar 3 oibríocht go seicheamhach, agus sábháladh toradh gach ceann díobh i réad ar leith. Ach i ndáiríre, níl na rudaí idirmheánacha seo de dhíth orainn.

Nó níos measa fós, ach níos eolach d'úsáideoirí Excel.

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

Sa chás seo, níor shábháil muid torthaí ríomh idirmheánacha, ach tá léamh cód le feidhmeanna neadaithe thar a bheith deacair.

Breathnóimid ar roinnt cineálacha cur chuige maidir le próiseáil sonraí in R, agus déanann siad oibríochtaí comhchosúla ar bhealaí éagsúla.

Píblínte sa leabharlann tidyverse curtha i bhfeidhm ag an oibreoir %>%.

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

Mar sin glacaimid toradh na hoibre func1() agus é a chur ar aghaidh mar an chéad argóint go func2(), ansin pas againn an toradh an ríomh seo mar an chéad argóint func3(). Agus sa deireadh, scríobhann muid na ríomhanna go léir a dhéantar isteach sa réad obj <-.

Léirítear gach ceann díobh thuas níos fearr ná focail leis an meme seo:
Cén teanga a roghnófar chun oibriú le sonraí - R nó Python? An dá! Aistriú ó pandas go slachtmhar agus data.table agus ar ais

В data.table úsáidtear slabhraí ar an mbealach céanna.

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

I ngach ceann de na lúibíní cearnacha is féidir leat toradh na hoibríochta roimhe seo a úsáid.

В pandas déantar oibríochtaí den sórt sin a scaradh le ponc.

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

Iad siúd. tógann muid ár mbord df agus a modh a úsáid fun1(), ansin cuirimid an modh i bhfeidhm ar an toradh a fhaightear fun2(), tar éis fun3(). Is é an toradh mar thoradh air a shábháil i réad obj .

Struchtúir Sonraí

Tá struchtúir sonraí i R agus Python cosúil le chéile, ach tá ainmneacha éagsúla orthu.

Cur síos
Ainm in R
Ainm i Python/pandas

Struchtúr tábla
fráma sonraí, tábla.sonraí, tibble
Fráma Sonraí

Liosta luachanna aontoiseach
Veicteoir
Sraith i pandas nó liosta i Python íon

Struchtúr il-leibhéil neamhtháblach
Liosta
foclóir (dict)

Breathnóimid ar roinnt gnéithe agus difríochtaí eile sa chomhréir thíos.

Cúpla focal faoi na pacáistí a úsáidfimid

Ar dtús, inseoidh mé beagán duit faoi na pacáistí a mbeidh cur amach agat orthu le linn an ailt seo.

slachtmhar

Официальный сайт: tidyverse.org
Cén teanga a roghnófar chun oibriú le sonraí - R nó Python? An dá! Aistriú ó pandas go slachtmhar agus data.table agus ar ais
leabharlann tidyverse scríofa ag Hedley Wickham, Eolaí Sinsearach Taighde ag RStudio. tidyverse comhdhéanta de shraith mhórthaibhseach pacáiste a shimplíonn próiseáil sonraí, a bhfuil 5 cinn díobh san áireamh sna 10 íoslódálacha is fearr ó stór CRAN.

Tá na pacáistí seo a leanas i gcroílár na leabharlainne: ggplot2, dplyr, tidyr, readr, purrr, tibble, stringr, forcats. Tá gach ceann de na pacáistí seo dírithe ar fhadhb shonrach a réiteach. Mar shampla dplyr cruthaithe le haghaidh ionramháil sonraí, tidyr na sonraí a thabhairt go foirm néata, stringr shimpliú oibriú le teaghráin, agus ggplot2 ar cheann de na huirlisí léirshamhlaithe sonraí is coitianta.

An buntáiste tidyverse an chomhréir atá simplí agus éasca le léamh, atá cosúil le teanga ceisteanna SQL ar go leor bealaí.

sonraí.tábla

Cén teanga a roghnófar chun oibriú le sonraí - R nó Python? An dá! Aistriú ó pandas go slachtmhar agus data.table agus ar aisОфициальный сайт: r-datatable.com

Le data.table é Matt Dole ó H2O.ai.

Tharla an chéad eisiúint den leabharlann i 2006.

Níl an chomhréir pacáiste chomh áisiúil agus atá i tidyverse agus tá sé níos meabhrú ar frámaí sonraí clasaiceacha i R, ach ag an am céanna leathnaithe go suntasach i bhfeidhmiúlacht.

Déantar cur síos ar gach ionramhálacha leis an tábla sa phacáiste seo idir lúibíní cearnacha, agus má aistríonn tú an chomhréir data.table i SQL, gheobhaidh tú rud éigin mar seo: data.table[ WHERE, SELECT, GROUP BY ]

Is é neart an phacáiste seo ná luas próiseála méideanna móra sonraí.

pandas

Официальный сайт: pandas.pydata.org Cén teanga a roghnófar chun oibriú le sonraí - R nó Python? An dá! Aistriú ó pandas go slachtmhar agus data.table agus ar ais

Tagann ainm na leabharlainne ón téarma eacnaiméadrach “sonraí painéil”, a úsáidtear chun cur síos a dhéanamh ar thacair struchtúrtha iltoiseacha faisnéise.

Le pandas Is Meiriceánach Wes McKinney.

Nuair a thagann sé chun anailís sonraí i Python, comhionann pandas Níl. Pacáiste ardleibhéil an-ilfheidhmeach a ligeann duit aon ionramháil a dhéanamh le sonraí, ó lódáil sonraí ó fhoinsí ar bith go dtí iad a léirshamhlú.

Suiteáil pacáistí breise

Níl na pacáistí a phléitear san Airteagal seo san áireamh sna dáiltí bunúsacha R agus Python. Cé go bhfuil caveat beag ann, má shuiteáil tú an dáileadh Anaconda, ansin suiteáil freisin pandas ní gá.

Suiteáil pacáistí i R

Má d'oscail tú an timpeallacht forbartha RStudio uair amháin ar a laghad, is dócha go bhfuil a fhios agat cheana féin conas an pacáiste riachtanach a shuiteáil in R. Chun pacáistí a shuiteáil, bain úsáid as an ordú caighdeánach install.packages() trína rith go díreach i R féin.

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

Tar éis a shuiteáil, is gá na pacáistí a nascadh, agus úsáidtear an t-ordú i bhformhór na gcásanna library().

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

Suiteáil pacáistí i Python

Mar sin, má tá Python íon suiteáilte agat, ansin pandas ní mór duit é a shuiteáil de láimh. Oscail líne ordaithe, nó teirminéal, ag brath ar do chóras oibriúcháin agus cuir isteach an t-ordú seo a leanas.

pip install pandas

Ansin filleann muid ar Python agus iompórtálann muid an pacáiste suiteáilte leis an ordú import.

import pandas as pd

Sonraí á Luchtú

Tá mianadóireacht sonraí ar cheann de na céimeanna is tábhachtaí in anailís sonraí. Soláthraíonn Python agus R araon, más mian leo, deiseanna fairsinge duit sonraí a fháil ó fhoinsí ar bith: comhaid áitiúla, comhaid ón Idirlíon, láithreáin ghréasáin, gach cineál bunachair shonraí.

Cén teanga a roghnófar chun oibriú le sonraí - R nó Python? An dá! Aistriú ó pandas go slachtmhar agus data.table agus ar ais

Ar fud an ailt úsáidfimid roinnt tacar sonraí:

  1. Dhá íoslódáil ó Google Analytics.
  2. Tacar Sonraí Paisinéirí Titanic.

Tá na sonraí go léir ar mo chuid GitHub i bhfoirm chomhaid csv agus tsv. Cén áit a n-iarrfaimid iad?

Sonraí á lódáil go R: slachtmhar, vroom, léitheoir

Chun sonraí a íoslódáil i leabharlann tidyverse Tá dhá phacáiste ann: vroom, readr. vroom níos nua-aimseartha, ach sa todhchaí féadfar na pacáistí a chomhcheangal.

Cuóta ó doiciméadú oifigiúil vroom.

vroom vs léitheoir
Cad a dhéanann an scaoileadh vroom meán le haghaidh readr? Faoi láthair tá sé beartaithe againn ligean don dá phacáiste athrú ar leithligh, ach is dócha go n-aontóidh muid na pacáistí amach anseo. Míbhuntáiste amháin a bhaineann le léamh leisciúil vroom is ea nach féidir fadhbanna áirithe sonraí a thuairisciú roimh ré, agus mar sin ní mór smaoineamh ar an mbealach is fearr chun iad a aontú.

vroom vs léitheoir
Cad is brí le scaoileadh? vroom le haghaidh readr? I láthair na huaire tá sé beartaithe againn an dá phacáiste a fhorbairt ar leithligh, ach is dócha go gcuirfimid le chéile iad sa todhchaí. Ceann de na míbhuntáistí a bhaineann le léitheoireacht leisciúil vroom is é sin nach féidir roinnt fadhbanna leis na sonraí a thuairisciú roimh ré, mar sin ní mór duit smaoineamh ar an mbealach is fearr chun iad a chomhcheangal.

San Airteagal seo féachfaimid ar an dá phacáiste luchtaithe sonraí:

Sonraí á lódáil isteach sa phacáiste 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")

Sonraí á lódáil isteach i R: léitheoir

# 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 phacáiste vroom, beag beann ar fhormáid sonraí csv / tsv, déantar an luchtú de réir feidhm an ainm céanna vroom(), sa phacáiste readr úsáidimid feidhm dhifriúil do gach formáid read_tsv() и read_csv().

Sonraí á lódáil isteach i R: data.table

В data.table tá feidhm ann chun sonraí a luchtú fread().

Sonraí á lódáil isteach i bpacáiste R: 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")

Sonraí á lódáil i Python: pandas

Má dhéanaimid comparáid le pacáistí R, sa chás seo is gaire don chomhréir pandas Beidh readr, mar pandas in ann sonraí a iarraidh ó áit ar bith, agus tá teaghlach iomlán feidhmeanna sa phacáiste seo read_*().

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

Agus go leor feidhmeanna eile atá deartha chun sonraí a léamh ó bhformáidí éagsúla. Ach chun ár gcríoch is leor read_table()read_csv() ag baint úsáide as argóint Meán Fómhair chun an deighilteoir colún a shonrú.

Sonraí á lódáil i 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")

Cruthú frámaí sonraí

Tábla titanic, a luchtaithe againn, tá réimse Gnéas, a stórálann aitheantóir inscne an phaisinéara.

Ach le haghaidh cur i láthair níos áisiúla sonraí de réir inscne paisinéirí, ba cheart duit an t-ainm a úsáid seachas an cód inscne.

Chun seo a dhéanamh, cruthóimid eolaire beag, tábla ina mbeidh ach 2 cholún (cód agus ainm inscne) agus 2 shraith, faoi seach.

Fráma sonraí a chruthú i R: tidyverse, dplyr

Sa sampla cód thíos, cruthaímid an fráma sonraí atá ag teastáil ag baint úsáide as an bhfeidhm tibble() .

Fráma sonraí a chruthú in R: dplyr

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

Fráma sonraí a chruthú in R: data.table

Fráma sonraí a chruthú in R: data.table

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

Fráma sonraí a chruthú i Python: pandas

В pandas Déantar frámaí a chruthú i roinnt céimeanna, cruthaímid foclóir ar dtús, agus ansin déanaimid an foclóir a thiontú i bhfráma sonraí.

Fráma sonraí a chruthú i Python: pandas

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

Roghnú Colúin

Seans go mbeidh na dosaenacha nó fiú na céadta colún sonraí sna táblaí lena n-oibríonn tú. Ach chun anailís a dhéanamh, mar riail, ní gá duit na colúin go léir atá ar fáil sa tábla foinse.

Cén teanga a roghnófar chun oibriú le sonraí - R nó Python? An dá! Aistriú ó pandas go slachtmhar agus data.table agus ar ais

Mar sin, is é ceann de na chéad oibríochtaí a dhéanfaidh tú leis an tábla foinse ná faisnéis nach bhfuil gá léi a ghlanadh agus an chuimhne atá ag an bhfaisnéis seo a shaoradh.

Roghnú colúin in R: tidyverse, dplyr

error dplyr an-chosúil leis an teanga ceisteanna SQL, má tá tú eolach uirthi déanfaidh tú an pacáiste seo a mháistir go tapa.

Chun colúin a roghnú, úsáid an fheidhm select().

Seo thíos samplaí de chód lenar féidir leat colúin a roghnú ar na bealaí seo a leanas:

  • Ag liostú ainmneacha na gcolún riachtanach
  • Déan tagairt d'ainmneacha na gcolún ag baint úsáide as nathanna rialta
  • De réir cineáil sonraí nó aon airí eile de na sonraí atá sa cholún

Roghnú colúin in 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)

Roghnú colúin in R: data.table

Na hoibríochtaí céanna i data.table a dhéantar ar bhealach difriúil, ag tús an ailt chuir mé síos ar na hargóintí atá taobh istigh de lúibíní cearnacha data.table.

DT[i,j,by]

I gcás:
i - cá, i.e. scagadh de réir sraitheanna
j - roghnaigh|nuashonraigh|déan, i.e. colúin a roghnú agus iad a thiontú
trí - ghrúpáil sonraí

Roghnú colúin in 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$")]

Athróg .SD ligeann duit rochtain a fháil ar gach colún, agus .SDcols scagaire na colúin riachtanacha ag baint úsáide as nathanna rialta, nó feidhmeanna eile a scagadh ainmneacha na gcolún atá uait.

Roghnú colúin i Python, pandas

Chun colúin a roghnú de réir ainm i pandas is leor liosta dá n-ainmneacha a sholáthar. Agus chun colúin de réir ainm a roghnú nó a eisiamh ag baint úsáide as nathanna rialta, ní mór duit na feidhmeanna a úsáid drop() и filter(), agus argóint ais=1, lena gcuireann tú in iúl go bhfuil sé riachtanach colúin seachas sraitheanna a phróiseáil.

Chun réimse a roghnú de réir cineáil sonraí, úsáid an fheidhm select_dtypes(), agus isteach in argóintí I measceisiamh pas a fháil ar liosta de na cineálacha sonraí a fhreagraíonn do na réimsí is gá duit a roghnú.

Roghnú colúin i 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'])

Ag scagadh sraitheanna

Mar shampla, d'fhéadfadh go mbeadh roinnt blianta de shonraí sa tábla foinse, ach ní gá duit ach anailís a dhéanamh ar an mhí seo caite. Arís, cuirfidh línte breise moill ar an bpróiseas próiseála sonraí agus bacfaidh siad cuimhne an ríomhaire.

Cén teanga a roghnófar chun oibriú le sonraí - R nó Python? An dá! Aistriú ó pandas go slachtmhar agus data.table agus ar ais

Ag scagadh sraitheanna i R: tydyverse, dplyr

В dplyr úsáidtear an fheidhm chun sraitheanna a scagadh filter(). Tógann sé fráma sonraí mar an chéad argóint, ansin liostaíonn tú na coinníollacha scagtha.

Agus nathanna loighciúla á scríobh chun tábla a scagadh, sa chás seo, sonraigh ainmneacha na gcolún gan comharthaí athfhriotail agus gan ainm an tábla a dhearbhú.

Agus na habairtí loighciúla iolracha á n-úsáid le scagadh, bain úsáid as na hoibreoirí seo a leanas:

  • & nó camóg - loighciúil AGUS
  • | - loighciúil NÓ

Na sraitheanna a scagadh in R: dplyr

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

Na sraitheanna a scagadh in R: data.table

Mar a scríobh mé thuas cheana, i data.table tá comhréir chomhshó sonraí faoi iamh idir lúibíní cearnacha.

DT[i,j,by]

I gcás:
i - cá, i.e. scagadh de réir sraitheanna
j - roghnaigh|nuashonraigh|déan, i.e. colúin a roghnú agus iad a thiontú
trí - ghrúpáil sonraí

Úsáidtear an argóint chun sraitheanna a scagadh i, a bhfuil an chéad suíomh idir lúibíní cearnacha.

Faightear rochtain ar cholúin i nathanna loighciúla gan comharthaí athfhriotail agus gan ainm an tábla a shonrú.

Tá baint ag nathanna loighciúla lena chéile ar an mbealach céanna agus atá i dplyr trí na hoibreoirí & agus |.

Na sraitheanna a scagadh in R: data.table

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

Teaghráin a scagadh i Python: pandas

Scag de réir sraitheanna isteach pandas cosúil le scagadh isteach data.table, agus déantar é idir lúibíní cearnacha.

Sa chás seo, is gá go ndéanfaí rochtain ar cholúin trí ainm an fhráma sonraí a léiriú; ansin is féidir ainm an cholúin a léiriú freisin i gcomharthaí athfhriotail idir lúibíní cearnacha (mar shampla df['col_name']), nó gan Sleachta tar éis na tréimhse (mar shampla df.col_name).

Más gá duit fráma sonraí a scagadh faoi roinnt coinníollacha, ní mór gach coinníoll a chur i lúibíní. Déanann oibreoirí coinníollacha loighciúla a nascadh lena chéile & и |.

Teaghráin a scagadh i 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)]

Grúpáil agus comhiomlánú sonraí

Ceann de na hoibríochtaí is coitianta a úsáidtear in anailís sonraí ná grúpáil agus comhiomlánú.

Cén teanga a roghnófar chun oibriú le sonraí - R nó Python? An dá! Aistriú ó pandas go slachtmhar agus data.table agus ar ais

Tá an chomhréir chun na hoibríochtaí seo a dhéanamh scaipthe ar fud na bpacáistí go léir a ndéanaimid athbhreithniú orthu.

Sa chás seo, tógfaimid fráma sonraí mar shampla titanic, agus ríomh líon agus meánchostas na dticéad ag brath ar an rang cábáin.

Grúpáil agus comhiomlánú sonraí in R: tidyverse, dplyr

В dplyr úsáidtear an fheidhm le haghaidh grúpála group_by(), agus le haghaidh comhiomlánaithe summarise(). Go deimhin, dplyr tá teaghlach iomlán feidhmeanna ann summarise_*(), ach is é cuspóir an ailt seo ná an chomhréir bhunúsach a chur i gcomparáid, ionas nach rachaimid isteach sa dufair sin.

Feidhmeanna bunúsacha comhiomlánaithe:

  • sum() — suimiú
  • min() / max() – íosluach agus uasluach
  • mean() - meán
  • median() — airmheánach
  • length() - cainníocht

Grúpáil agus comhiomlánú in R: dplyr

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

I bhfeidhm group_by() ritheamar an tábla mar an chéad argóint titanic, agus ansin léirigh an réimse Paicme, trína gcuirfimid ár mbord le chéile. Toradh na hoibríochta seo ag baint úsáide as an oibreoir %>% ritheadh ​​mar an chéad argóint don fheidhm summarise(), agus cuireadh 2 réimse eile leis: paisinéirí и meán_phraghas. Sa chéad, ag baint úsáide as an fheidhm length() ríomh líon na ticéid, agus sa dara baint úsáide as an fheidhm mean() fuair sé meánphraghas an ticéid.

Grúpáil agus comhiomlánú sonraí in R: data.table

В data.table úsáidtear an argóint le haghaidh comhiomlánaithe j a bhfuil an dara háit aige idir lúibíní cearnacha, agus le haghaidh grúpála bykeyby, a bhfuil an tríú seasamh acu.

Tá liosta na bhfeidhmeanna comhiomlánaithe sa chás seo comhionann leis an gceann a thuairiscítear i dplyr, mar is feidhmeanna iad seo ón gcomhréir bhunúsach R.

Grúpáil agus comhiomlánú in R: data.table

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

Grúpáil agus comhiomlánú sonraí i Python: pandas

Grúpáil i pandas cosúil le dplyr, ach níl an comhiomlán cosúil leis dplyr ní ar data.table.

Le grúpáil, bain úsáid as an modh groupby(), ina gcaithfidh tú liosta de na colúin a chur isteach trína ndéanfar an fráma sonraí a ghrúpáil.

Le haghaidh comhiomlánaithe is féidir leat an modh a úsáid agg()a ghlacann foclóir. Is iad na heochracha foclóir ná na colúin ar a gcuirfidh tú na feidhmeanna comhiomlánaithe i bhfeidhm, agus is iad na luachanna ainmneacha na bhfeidhmeanna comhiomlánaithe.

Feidhmeanna comhiomlánaithe:

  • sum() — suimiú
  • min() / max() – íosluach agus uasluach
  • mean() - meán
  • median() — airmheánach
  • count() - cainníocht

Feidhm reset_index() sa sampla thíos úsáidtear é chun innéacsanna neadaithe a athshocrú go pandas réamhshocraithe tar éis comhiomlánú sonraí.

Siombail ligeann duit bogadh go dtí an chéad líne eile.

Grúpáil agus comhiomlánú i Python: pandas

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

Ceangal ingearach na dtáblaí

Oibríocht ina nascann tú dhá thábla nó níos mó den struchtúr céanna. Tá táblaí sna sonraí a lódáileamar ga_nabh и ga_dec. Tá na táblaí seo comhionann ó thaobh struchtúir de, i.e. tá na colúin chéanna acu, agus na cineálacha sonraí sna colúin seo.

Cén teanga a roghnófar chun oibriú le sonraí - R nó Python? An dá! Aistriú ó pandas go slachtmhar agus data.table agus ar ais

Uaslódáil é seo ó Google Analytics do mhí na Samhna agus mhí na Nollag, sa chuid seo cuirfimid na sonraí seo le chéile i dtábla amháin.

Comhcheangail táblaí go hingearach i R: slachtmhar, dplyr

В dplyr Is féidir leat 2 tábla a chomhcheangal i gceann amháin ag baint úsáide as an bhfeidhm bind_rows(), táblaí a rith mar argóintí.

Na sraitheanna a scagadh in R: dplyr

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

Comhcheangail táblaí go hingearach in R: data.table

Níl aon rud casta ann freisin, bainimis úsáid as rbind().

Na sraitheanna a scagadh in R: data.table

## data.table
rbind(ga_nov, ga_dec)

Comhcheangail táblaí go hingearach i Python: pandas

В pandas úsáidtear an fheidhm chun táblaí a cheangal concat(), inar gá duit liosta de na frámaí chun iad a chur le chéile.

Teaghráin a scagadh i Python: pandas

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

Ceangal cothrománach na dtáblaí

Oibríocht ina gcuirtear colúin ón dara ceann leis an gcéad tábla le heochair. Is minic a úsáidtear é nuair a shaibhrítear tábla fíricí (mar shampla, tábla le sonraí díolacháin) le roinnt sonraí tagartha (mar shampla, costas táirge).

Cén teanga a roghnófar chun oibriú le sonraí - R nó Python? An dá! Aistriú ó pandas go slachtmhar agus data.table agus ar ais

Tá roinnt cineálacha ceangail ann:

Cén teanga a roghnófar chun oibriú le sonraí - R nó Python? An dá! Aistriú ó pandas go slachtmhar agus data.table agus ar ais

Sa tábla luchtaithe roimhe seo titanic tá colún againn Gnéas, a fhreagraíonn do chód inscne an phaisinéara:

1 - baineann
2 - fireann

Chomh maith leis sin, tá tábla cruthaithe againn - leabhar tagartha inscne. Chun sonraí a chur i láthair níos áisiúla ar inscne paisinéirí, ní mór dúinn ainm na hinscne a chur leis an eolaire inscne chuig an mbord titanic.

Clár cothrománach a bheith páirteach i R: tidyverse, dplyr

В dplyr Tá raon iomlán feidhmeanna ann le haghaidh nascadh cothrománach:

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

Is é an ceann is coitianta a úsáidtear i mo chleachtas left_join().

Mar an chéad dá argóint, glacann na feidhmeanna atá liostaithe thuas dhá thábla le chéile, agus mar an tríú argóint by ní mór duit na colúin a shonrú chun páirt a ghlacadh.

Glacadh tábla cothrománach in R: dplyr

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

Ceangal cothrománach na dtáblaí in R: data.table

В data.table Ní mór duit táblaí a cheangal le heochair ag baint úsáide as an bhfeidhm merge().

Feidhmíonn argóintí a chumasc() i data.table

  • x, y — Táblaí le haghaidh ceangail
  • le — Colún is é sin an eochair chun páirt a ghlacadh má tá an t-ainm céanna air sa dá tábla
  • by.x, by.y — Ainmneacha colúin le cumasc, má tá ainmneacha éagsúla orthu sna táblaí
  • all, all.x, all.y — Cineál páirt a ghlacadh, cuirfidh gach ceann ar ais na sraitheanna go léir ón dá tábla, comhfhreagraíonn all.x don oibríocht JOIN LEFT (fágfaidh sé sraitheanna uile an chéad tábla), comhfhreagraíonn all.y - don CEART Join oibríocht ( fágfaidh sé go léir na sraitheanna den dara tábla ) .

Ceangal cothrománach na dtáblaí in R: data.table

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

Páirt tábla cothrománach i Python: pandas

Chomh maith le i data.tableI pandas úsáidtear an fheidhm chun táblaí a cheangal merge().

Argóintí na feidhme merge() i pandas

  • conas — Cineál ceangail: clé, ar dheis, taobh amuigh, istigh
  • ar — Colún atá ina eochair má tá an t-ainm céanna air sa dá tábla
  • left_on, right_on — Ainmneacha na bpríomhcholún, má tá ainmneacha difriúla acu i dtáblaí

Páirt tábla cothrománach i Python: pandas

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

Feidhmeanna bunúsacha fuinneoige agus colúin ríofa

Tá feidhmeanna fuinneoige cosúil le brí feidhmeanna comhiomlánaithe, agus is minic a úsáidtear iad in anailís sonraí freisin. Ach murab ionann agus feidhmeanna comhiomlánaithe, ní athraíonn feidhmeanna fuinneoige líon na sraitheanna den fhráma sonraí atá ag dul as oifig.

Cén teanga a roghnófar chun oibriú le sonraí - R nó Python? An dá! Aistriú ó pandas go slachtmhar agus data.table agus ar ais

Go bunúsach, ag baint úsáide as feidhm na fuinneoige, scoilteamar an fráma sonraí isteach ina chodanna de réir critéar áirithe, i.e. de réir luach réimse, nó réimsí éagsúla. Agus déanaimid oibríochtaí uimhríochta ar gach fuinneog. Tabharfar toradh na n-oibríochtaí sin ar ais i ngach líne, i.e. gan líon iomlán na sraitheanna sa tábla a athrú.

Mar shampla, a ligean ar a ghlacadh ar an tábla titanic. Is féidir linn a ríomh cén céatadán de chostas gach ticéid laistigh dá rang cábáin.

Chun seo a dhéanamh, ní mór dúinn costas iomlán ticéid a fháil i ngach líne don aicme cábáin reatha lena mbaineann an ticéad sa líne seo, agus ansin costas gach ticéid a roinnt ar chostas iomlán na dticéad go léir den aicme cábáin chéanna. .

Feidhmeanna fuinneoige i R: tidyverse, dplyr

Chun colúin nua a chur leis, gan úsáid a bhaint as grúpáil rónna, isteach dplyr feidhmíonn sé feidhm mutate().

Is féidir leat an fhadhb a bhfuil cur síos uirthi thuas a réiteach trí shonraí a ghrúpáil de réir réimse Paicme agus achoimre ar an réimse i gcolún nua dhéanamh. Ansin, díghrúpáil an tábla agus roinn na luachanna réimse dhéanamh leis an méid a tharla sa chéim roimhe seo.

Feidhmeanna fuinneoige i R: dplyr

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

Feidhmeanna fuinneoige in R: data.table

Fanann an algartam réitigh mar an gcéanna leis in dplyr, ní mór dúinn an tábla a roinnt ina fhuinneoga de réir réimse Paicme. Aschur i gcolún nua an méid don ghrúpa a fhreagraíonn do gach ró, agus cuir colún ina ríomhaimid an sciar de chostas gach ticéid ina ghrúpa.

Chun colúin nua a chur le data.table oibreoir i láthair :=. Seo thíos sampla d’fhadhb a réiteach ag baint úsáide as an bpacáiste data.table

Feidhmeanna fuinneoige in R: data.table

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

Feidhmeanna fuinneoige i Python: pandas

Bealach amháin le colún nua a chur leis pandas - an fheidhm a úsáid assign(). Chun achoimre a dhéanamh ar chostas ticéid de réir rang cábáin, gan sraitheanna a ghrúpáil, úsáidfimid an fheidhm transform().

Seo thíos sampla de réiteach ina gcuirimid leis an tábla titanic an 2 cholún céanna.

Feidhmeanna fuinneoige i Python: pandas

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

Feidhmeanna agus modhanna tábla comhfhreagrais

Anseo thíos tá tábla comhfhreagrais idir modhanna chun oibríochtaí éagsúla a dhéanamh le sonraí sna pacáistí a ndearnamar machnamh orthu.

Cur síos
slachtmhar
sonraí.tábla
pandas

Sonraí á Luchtú
vroom()/ readr::read_csv() / readr::read_tsv()
fread()
read_csv()

Cruthú frámaí sonraí
tibble()
data.table()
dict() + from_dict()

Roghnú Colúin
select()
argóint j, an dara seasamh idir lúibíní cearnacha
pasaimid an liosta de na colúin riachtanacha idir lúibíní cearnacha / drop() / filter() / select_dtypes()

Ag scagadh sraitheanna
filter()
argóint i, an chéad suíomh idir lúibíní cearnacha
Liostaímid na coinníollacha scagtha idir lúibíní cearnacha / filter()

Grúpáil agus Comhiomlánú
group_by() + summarise()
argóintí j + by
groupby() + agg()

Aontas ingearach na dtáblaí (UNION)
bind_rows()
rbind()
concat()

Ceangal cothrománach na dtáblaí (JOIN)
left_join() / *_join()
merge()
merge()

Feidhmeanna bunúsacha na fuinneoige agus colúin ríofa a chur leis
group_by() + mutate()
argóint j ag baint úsáide as an oibreoir := +argóint by
transform() + assign()

Conclúid

B’fhéidir san alt nach ndearna mé cur síos ar na feidhmeanna próiseála sonraí is fearr, agus mar sin beidh áthas orm má cheartaíonn tú mo bhotúin sna tuairimí, nó má dhéanann tú ach an fhaisnéis a thugtar san alt a fhorlíonadh le teicnící eile chun oibriú le sonraí i R / Python.

Mar a scríobh mé thuas, ní hé cuspóir an ailt ná tuairim a chur i leith cén teanga is fearr, ach an deis chun an dá theanga a fhoghlaim a shimpliú, nó, más gá, dul ar imirce eatarthu.

Má thaitin an t-alt leat, beidh áthas orm síntiúsóirí nua a bheith agam le mo chuid youtube и teileagram cainéil.

Опрос

Cé acu de na pacáistí seo a leanas a úsáideann tú i do chuid oibre?

Sna tuairimí is féidir leat an chúis le do rogha a scríobh.

Ní féidir ach le húsáideoirí cláraithe páirt a ghlacadh sa suirbhé. Sínigh isteach, le do thoil.

Cén pacáiste próiseála sonraí a úsáideann tú (is féidir leat roinnt roghanna a roghnú)

  • 45,2%slachtmhar19

  • 33,3%sonraí.tábla14

  • 54,8%pandas23

Vótáil 42 úsáideoir. Staon 9 úsáideoir.

Foinse: will.com

Add a comment