Dè an cànan a thaghas tu airson obrachadh le dàta - R no Python? An dà chuid! Imrich bho pandathan gu sgioblachadh agus data.table agus air ais

Le bhith a 'lorg R no Python air an eadar-lìon, gheibh thu milleanan de artaigilean agus cilemeatairean de chòmhraidhean air a' chuspair a tha nas fheàrr, nas luaithe agus nas freagarraiche airson a bhith ag obair le dàta. Ach gu mì-fhortanach, chan eil na h-artaigilean agus na connspaidean sin uile gu sònraichte feumail.

Dè an cànan a thaghas tu airson obrachadh le dàta - R no Python? An dà chuid! Imrich bho pandathan gu sgioblachadh agus data.table agus air ais

Is e adhbhar an artaigil seo coimeas a dhèanamh eadar na dòighean giullachd dàta bunaiteach anns na pasganan as mòr-chòrdte san dà chànan. Agus cuidich luchd-leughaidh gu sgiobalta le bhith a’ faighinn eòlas air rudeigin air nach eil fios aca fhathast. Dhaibhsan a tha a’ sgrìobhadh ann am Python, faigh a-mach mar a nì thu an aon rud ann an R, agus a chaochladh.

Rè an artaigil nì sinn sgrùdadh air co-chòrdadh nam pasganan as mòr-chòrdte ann an R. Seo na pacaidean a tha san leabharlann tidyverseagus cuideachd am pasgan data.table. Agus dèan coimeas eadar an co-chòrdadh aca agus pandas, am pasgan mion-sgrùdadh dàta as mòr-chòrdte ann am Python.

Thèid sinn ceum air cheum tron ​​​​t-slighe gu lèir de mhion-sgrùdadh dàta bho bhith ga luchdachadh gu bhith a’ coileanadh gnìomhan uinneig anailis a’ cleachdadh Python agus R.

Clàr-innse

Faodar an artaigil seo a chleachdadh mar dhuilleag meallta ma tha thu air dìochuimhneachadh mar a nì thu beagan obrachaidh giollachd dàta ann am fear de na pacaidean air a bheilear a’ beachdachadh.

Dè an cànan a thaghas tu airson obrachadh le dàta - R no Python? An dà chuid! Imrich bho pandathan gu sgioblachadh agus data.table agus air ais

  1. Prìomh eadar-dhealachaidhean syntax eadar R agus Python
    1.1. A’ faighinn cothrom air gnìomhan pacaid
    1.2. Sònrachadh
    1.3. Indexing
    1.4. Dòighean agus OOP
    1.5. Pìoban
    1.6. Structaran Dàta
  2. Beagan fhaclan mu na pacaidean a chleachdas sinn
    2.1. sgioblachadh
    2.2. dàta.clàr
    2.3. pandathan
  3. Stàladh pacaidean
  4. A’ luchdachadh dàta
  5. A 'cruthachadh frèamaichean dàta
  6. A 'taghadh nan colbhan a dh' fheumas tu
  7. A 'sìoladh sreathan
  8. Buidheann agus Co-chruinneachadh
  9. Aonadh bùird dìreach (UNION)
  10. Ceangal còmhnard de bhùird (JOIN)
  11. Gnìomhan uinneag bunaiteach agus colbhan àireamhaichte
  12. Clàr co-fhreagairt eadar modhan giullachd dàta ann an R agus Python
  13. co-dhùnadh
  14. Suirbhidh goirid air dè am pasgan a chleachdas tu

Ma tha ùidh agad ann am mion-sgrùdadh dàta, is dòcha gum faigh thu mo telegram и youtube seanailean. Tha a’ mhòr-chuid den t-susbaint coisrigte don chànan R.

Prìomh eadar-dhealachaidhean syntax eadar R agus Python

Gus a dhèanamh nas fhasa dhut gluasad bho Python gu R, no a chaochladh, bheir mi beagan phrìomh phuingean air am feum thu aire a thoirt.

A’ faighinn cothrom air gnìomhan pacaid

Aon uair ‘s gu bheil pasgan air a luchdachadh a-steach do R, cha leig thu leas ainm a’ phacaid a shònrachadh gus faighinn gu na gnìomhan aige. Anns a 'mhòr-chuid de chùisean chan eil seo cumanta ann an R, ach tha e iomchaidh. Cha leig thu leas pasgan a thoirt a-steach idir ma tha feum agad air aon de na gnìomhan anns a’ chòd agad, ach dìreach cuir fios thuige le bhith a’ sònrachadh ainm a’ phacaid agus ainm a’ ghnìomh. Tha an dealaiche eadar ainmean pacaid agus gnìomh ann an R na choloin dùbailte. package_name::function_name().

Ann am Python, air an làimh eile, thathas den bheachd gu bheil e clasaigeach gnìomhan pacaid a ghairm le bhith a ’sònrachadh ainm gu soilleir. Nuair a thèid pasgan a luchdachadh sìos, mar as trice thèid ainm nas giorra a thoirt dha, m.e. pandas mar as trice bidh ainm-brèige air a chleachdadh pd. Gheibhear a-steach gu gnìomh pacaid tro dot package_name.function_name().

Sònrachadh

Ann an R, tha e cumanta saighead a chleachdadh gus luach a shònrachadh do nì. obj_name <- value, ged a tha soidhne co-ionann singilte ceadaichte, tha an soidhne co-ionann singilte ann an R air a chleachdadh gu sònraichte airson luachan a thoirt seachad gu argamaidean gnìomh.

Ann am Python, thèid sònrachadh a dhèanamh a-mhàin le soidhne singilte co-ionann obj_name = value.

Indexing

Tha eadar-dhealachaidhean gu math cudromach an seo cuideachd. Ann an R, bidh clàr-amais a’ tòiseachadh aig aon agus a’ toirt a-steach a h-uile eileamaid ainmichte san raon a thig às,

Ann am Python, bidh clàr-amais a’ tòiseachadh bho neoni agus chan eil an raon taghte a’ toirt a-steach an eileamaid mu dheireadh a tha air a shònrachadh sa chlàr-amais. Mar sin dealbhadh x[i:j] ann am Python cha bhith e a’ toirt a-steach an eileamaid j.

Tha eadar-dhealachaidhean ann cuideachd ann an clàr-amais àicheil, ann an comharrachadh R x[-1] tillidh e a h-uile eileamaid den vectar ach am fear mu dheireadh. Ann am Python, cha till comharradh coltach ris ach an eileamaid mu dheireadh.

Dòighean agus OOP

R a 'cur an gnìomh OOP na dhòigh fhèin, sgrìobh mi mu dheidhinn seo san artaigil "OOP sa chànan R (pàirt 1): Clasaichean S3". San fharsaingeachd, is e cànan gnìomh a th’ ann an R, agus tha a h-uile dad ann air a thogail air gnìomhan. Mar sin, mar eisimpleir, airson luchd-cleachdaidh Excel, rachaibh gu tydiverse bidh e nas fhasa na pandas. Ged is dòcha gur e seo mo bheachd cuspaireil.

Ann an ùine ghoirid, chan eil dòighean aig nithean ann an R (ma bhios sinn a’ bruidhinn mu chlasaichean AS3, ach tha buileachadh OOP eile ann nach eil cho cumanta). Chan eil ann ach gnìomhan coitcheann a bhios gan làimhseachadh ann an dòigh eadar-dhealaichte a rèir clas an nì.

Pìoban

Is dòcha gur e seo an t-ainm airson pandas Cha bhith e gu tur ceart, ach feuchaidh mi ris a’ bhrìgh a mhìneachadh.

Gus nach sàbhail thu àireamhachadh eadar-mheadhanach agus gun a bhith a’ toirt a-mach nithean neo-riatanach san àrainneachd obrach, faodaidh tu seòrsa de loidhne-phìoban a chleachdadh. An fheadhainn sin. cuir seachad toradh àireamhachaidh bho aon ghnìomh chun ath fhear, agus na sàbhail toraidhean eadar-mheadhanach.

Gabhamaid an eisimpleir còd a leanas, anns am bi sinn a’ stòradh àireamhachadh eadar-mheadhanach ann an nithean fa leth:

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

Rinn sinn 3 obrachaidhean ann an sreath, agus chaidh toradh gach fear a shàbhaladh ann an rud air leth. Ach gu dearbh, chan eil feum againn air na stuthan eadar-mheadhanach sin.

No eadhon nas miosa, ach nas eòlaiche do luchd-cleachdaidh Excel.

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

Anns a 'chùis seo, cha do shàbhail sinn toraidhean àireamhachaidh eadar-mheadhanach, ach tha leughadh còd le gnìomhan neadachaidh air leth mì-ghoireasach.

Seallaidh sinn ri grunn dhòighean-obrach a thaobh giullachd dàta ann an R, agus bidh iad a’ coileanadh obair coltach ris ann an diofar dhòighean.

Pìoban anns an leabharlann tidyverse air a chuir an gnìomh leis a’ ghnìomhaiche %>%.

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

Mar sin bidh sinn a 'gabhail ri toradh na h-obrach func1() agus thoir seachad e mar a’ chiad argamaid gu func2(), an uairsin bheir sinn seachad toradh a’ chunntais seo mar a’ chiad argamaid func3(). Agus aig a 'cheann thall, bidh sinn a' sgrìobhadh a h-uile àireamhachadh a chaidh a dhèanamh a-steach don nì obj <-.

Tha a h-uile rud gu h-àrd air a nochdadh nas fheàrr na faclan leis a’ mheme seo:
Dè an cànan a thaghas tu airson obrachadh le dàta - R no Python? An dà chuid! Imrich bho pandathan gu sgioblachadh agus data.table agus air ais

В data.table Tha slabhraidhean air an cleachdadh san aon dòigh.

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

Anns gach aon de na camagan ceàrnagach faodaidh tu toradh an obrachaidh roimhe a chleachdadh.

В pandas tha gnìomhan mar sin air an sgaradh le dot.

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

An fheadhainn sin. gabhamaid ar bòrd df agus cleachd an dòigh aice fun1(), an uairsin bidh sinn a 'cur a-steach an dòigh air an toradh a gheibhear fun2()às deidh fun3(). Tha an toradh mar thoradh air a shàbhaladh ann an nì gearan .

Structaran Dàta

Tha structaran dàta ann an R agus Python coltach ri chèile, ach tha ainmean eadar-dhealaichte aca.

Tuairisgeul
Ainm ann an R
Ainm ann am Python/pandas

Structar clàr
data.frame, data.table, tibble
Frèam dàta

Liosta de luachan aon-thaobhach
Vector
Sreath ann am pandathan no liosta ann am fìor-ghlan Python

Structar neo-clàr ioma-ìre
Liosta
Faclair (dict)

Bheir sinn sùil air cuid de fheartan agus eadar-dhealachaidhean eile ann an co-chòrdadh gu h-ìosal.

Beagan fhaclan mu na pacaidean a chleachdas sinn

An toiseach, innsidh mi beagan dhut mu na pacaidean air am bi thu eòlach san artaigil seo.

sgioblachadh

Làrach-lìn oifigeil: tidyverse.org
Dè an cànan a thaghas tu airson obrachadh le dàta - R no Python? An dà chuid! Imrich bho pandathan gu sgioblachadh agus data.table agus air ais
leabharlainn tidyverse sgrìobhte le Hedley Wickham, Prìomh Neach-saidheans Rannsachaidh aig RStudio. tidyverse a’ toirt a-steach seata drùidhteach de phasganan a bhios a’ sìmpleachadh giollachd dàta, le 5 dhiubh sin air an toirt a-steach do na prìomh luchdachadh sìos 10 bho stòr CRAN.

Tha na pasganan a leanas aig cridhe an leabharlainn: ggplot2, dplyr, tidyr, readr, purrr, tibble, stringr, forcats. Tha gach aon de na pacaidean sin ag amas air fuasgladh fhaighinn air duilgheadas sònraichte. Mar eisimpleir dplyr air a chruthachadh airson làimhseachadh dàta, tidyr gus an dàta a thoirt gu cruth ceart, stringr a’ sìmpleachadh obrachadh le teudan, agus ggplot2 Is e seo aon de na h-innealan lèirsinn dàta as mòr-chòrdte.

Am buannachd tidyverse tha an co-chòrdadh sìmplidh agus furasta a leughadh, a tha ann an iomadh dòigh coltach ri cànan ceist SQL.

dàta.clàr

Dè an cànan a thaghas tu airson obrachadh le dàta - R no Python? An dà chuid! Imrich bho pandathan gu sgioblachadh agus data.table agus air aisLàrach-lìn oifigeil: r-datatable.com

Le bhith data.table tha Matt Dole à H2O.ai.

Chaidh a’ chiad fhoillseachadh den leabharlann a chumail ann an 2006.

Chan eil an co-chòrdadh pacaid cho goireasach ‘s a tha e tidyverse agus tha e nas cuimhneachail air frèaman dàta clasaigeach ann an R, ach aig an aon àm air leudachadh gu mòr ann an comas-gnìomh.

Tha a h-uile làimhseachadh leis a’ chlàr sa phasgan seo air a mhìneachadh eadar camagan ceàrnach, agus ma dh’ eadar-theangaich thu an co-chòrdadh data.table ann an SQL, gheibh thu rudeigin mar seo: data.table[ WHERE, SELECT, GROUP BY ]

Is e neart a’ phacaid seo astar giollachd mòran dàta.

pandathan

Làrach-lìn oifigeil: pandas.pydata.org Dè an cànan a thaghas tu airson obrachadh le dàta - R no Python? An dà chuid! Imrich bho pandathan gu sgioblachadh agus data.table agus air ais

Tha ainm an leabharlainn a’ tighinn bhon teirm eaconamach “dàta pannal”, a thathar a’ cleachdadh airson cunntas a thoirt air seataichean fiosrachaidh structaraichte ioma-thaobhach.

Le bhith pandas 's e American Wes McKinney.

Nuair a thig e gu mion-sgrùdadh dàta ann am Python, co-ionann pandas Chan eil. Pasgan fìor ioma-ghnìomhach, àrd-ìre a leigeas leat làimhseachadh sam bith a dhèanamh le dàta, bho bhith a’ luchdachadh dàta bho stòran sam bith gu bhith ga fhaicinn.

Stàladh pacaidean a bharrachd

Chan eil na pacaidean air an deach beachdachadh san artaigil seo air an toirt a-steach do na sgaoilidhean bunaiteach R agus Python. Ged a tha uamhas beag ann, ma shuidhich thu an cuairteachadh Anaconda, an uairsin stàlaich a bharrachd pandas chan eil feum air.

Stàladh pacaidean ann an R

Ma tha thu air àrainneachd leasachaidh RStudio fhosgladh co-dhiù aon turas, is dòcha gu bheil fios agad mu thràth mar a stàlaicheas tu am pasgan riatanach ann an R. Gus pacaidean a stàladh, cleachd an àithne àbhaisteach install.packages() le bhith ga ruith gu dìreach ann an R fhèin.

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

Às deidh an stàladh, feumaidh na pacaidean a bhith ceangailte, agus sa mhòr-chuid de chùisean thèid an àithne a chleachdadh library().

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

Stàladh pacaidean ann am python

Mar sin, ma tha Python fìor agad air a chuir a-steach, an uairsin pandas feumaidh tu a stàladh le làimh. Fosgail loidhne-àithne, no ceann-uidhe, a rèir an t-siostaim-obrachaidh agad agus cuir a-steach an àithne a leanas.

pip install pandas

An uairsin tillidh sinn gu Python agus bheir sinn a-steach am pasgan stàlaichte leis an àithne import.

import pandas as pd

A’ luchdachadh dàta

Is e mèinneadh dàta aon de na ceumannan as cudromaiche ann am mion-sgrùdadh dàta. Bheir Python agus R, ma thogras tu, cothroman farsaing dhut airson dàta fhaighinn bho thùs sam bith: faidhlichean ionadail, faidhlichean bhon eadar-lìn, làraich-lìn, gach seòrsa stòr-dàta.

Dè an cànan a thaghas tu airson obrachadh le dàta - R no Python? An dà chuid! Imrich bho pandathan gu sgioblachadh agus data.table agus air ais

Tron artaigil cleachdaidh sinn grunn stòran-dàta:

  1. Dà luchdachadh sìos bho Google Analytics.
  2. Stòr-dàta luchd-siubhail an Titanic.

Tha an dàta gu lèir air mo shon GitHub ann an cruth faidhlichean csv agus tsv. Cò às a dh’iarras sinn iad?

A’ luchdachadh dàta gu R: tidyverse, vroom, leughadair

Airson dàta a luchdadh a-nuas ann an leabharlann tidyverse Tha dà phacaid ann: vroom, readr. vroom nas ùire, ach san àm ri teachd faodar na pacaidean a chur còmhla.

Aithris bho sgrìobhainnean oifigeil vroom.

vroom vs leughadair
Dè tha foillseachadh a vroom ciallachadh airson readr? Airson a-nis tha sinn an dùil leigeil leis an dà phacaid a thighinn air adhart air leth, ach is dòcha gun aonaich sinn na pacaidean san àm ri teachd. Is e aon eas-bhuannachd do leughadh leisg vroom nach urrainnear cuid de dhuilgheadasan dàta innse ro-làimh, agus mar sin feumar beagan smaoineachaidh air an dòigh as fheàrr air an aonachadh.

vroom vs leughadair
Dè tha foillseachadh a’ ciallachadh? vroom airson readr? Aig an àm seo tha sinn an dùil an dà phacaid a leasachadh air leth, ach is dòcha gun cuir sinn còmhla iad san àm ri teachd. Aon de na h-eas-bhuannachdan a tha ann an leughadh leisg vroom is e nach urrainnear cuid de dhuilgheadasan leis an dàta aithris ro-làimh, agus mar sin feumaidh tu smaoineachadh air an dòigh as fheàrr air an cur còmhla.

San artaigil seo bheir sinn sùil air an dà phacaid luchdachadh dàta:

A’ luchdachadh dàta gu 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")

A 'luchdachadh dàta gu R: reader

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

Anns a ’phacaid vroom, ge bith dè an cruth dàta csv / tsv, bidh an luchdachadh air a dhèanamh le gnìomh an aon ainm vroom(), anns a' phacaid readr bidh sinn a’ cleachdadh gnìomh eadar-dhealaichte airson gach cruth read_tsv() и read_csv().

A’ luchdachadh dàta gu R: data.table

В data.table tha gnìomh ann airson dàta a luchdachadh fread().

A 'luchdachadh dàta gu pasgan 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")

A’ luchdachadh dàta ann am Python: pandathan

Ma nì sinn coimeas ri pacaidean R, an uairsin sa chùis seo tha an co-chòrdadh as fhaisge air pandas Bidh readr, oir pandas faodaidh iad dàta iarraidh bho àite sam bith, agus tha teaghlach slàn de ghnìomhan sa phacaid seo read_*().

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

Agus mòran de dhleastanasan eile air an dealbhadh gus dàta a leughadh bho dhiofar chruthan. Ach airson ar n-adhbharan tha e gu leòr read_table() no read_csv() a’ cleachdadh argamaid Sep gus an dealaiche colbh a shònrachadh.

A’ luchdachadh dàta ann am Python: pandathan

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

A 'cruthachadh frèamaichean dàta

Clàr Titanic, a luchdaich sinn, tha achadh ann Sex, a bhios a’ stòradh aithnichear gnè an neach-siubhail.

Ach airson taisbeanadh dàta nas goireasaiche a thaobh gnè luchd-siubhail, bu chòir dhut an t-ainm a chleachdadh seach an còd gnè.

Gus seo a dhèanamh, cruthaichidh sinn eòlaire beag, clàr anns nach bi ach 2 cholbh (còd agus ainm gnè) agus 2 shreath, fa leth.

A’ cruthachadh frèam-dàta ann an R: tidyverse, dplyr

Anns an eisimpleir còd gu h-ìosal, bidh sinn a’ cruthachadh an fhrèam dàta a tha thu ag iarraidh a’ cleachdadh a’ ghnìomh tibble() .

A’ cruthachadh frèam dàta ann an R: dplyr

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

A’ cruthachadh frèam-dàta ann an R: data.table

A’ cruthachadh frèam-dàta ann an R: data.table

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

A’ cruthachadh frèam-dàta ann am Python: pandathan

В pandas Tha cruthachadh frèaman air a dhèanamh ann an grunn ìrean, an toiseach bidh sinn a 'cruthachadh faclair, agus an uairsin bidh sinn a' tionndadh am faclair gu frèam dàta.

A’ cruthachadh frèam-dàta ann am Python: pandathan

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

A 'taghadh colbhan

Faodaidh dusanan no eadhon ceudan de cholbhan dàta a bhith anns na clàran leis a bheil thu ag obair. Ach airson mion-sgrùdadh a dhèanamh, mar riaghailt, chan fheum thu na colbhan uile a tha rim faighinn anns a 'chlàr stòr.

Dè an cànan a thaghas tu airson obrachadh le dàta - R no Python? An dà chuid! Imrich bho pandathan gu sgioblachadh agus data.table agus air ais

Mar sin, is e aon de na ciad obraichean a nì thu leis a’ chlàr stòr fiosrachadh neo-riatanach a dhubhadh às agus an cuimhne a tha am fiosrachadh seo a shaoradh.

A’ taghadh cholbhan ann an R: tidyverse, dplyr

sheantansan dplyr glè choltach ri cànan ceist SQL, ma tha thu eòlach air gheibh thu maighstireachd air a’ phacaid seo gu sgiobalta.

Gus colbhan a thaghadh, cleachd an gnìomh select().

Gu h-ìosal tha eisimpleirean de chòd leis an urrainn dhut colbhan a thaghadh anns na dòighean a leanas:

  • Ag ainmeachadh ainmean nan colbhan a tha a dhìth
  • Thoir sùil air ainmean colbhan a’ cleachdadh abairtean cunbhalach
  • A rèir seòrsa dàta no seilbh sam bith eile den dàta a tha sa cholbh

A’ taghadh cholbhan ann an 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)

A’ taghadh cholbhan ann an R: data.table

Na h-aon obrachaidhean ann an data.table air an coileanadh beagan eadar-dhealaichte, aig toiseach an artaigil thug mi cunntas air dè na h-argamaidean a tha taobh a-staigh camagan ceàrnagach data.table.

DT[i,j,by]

Càite:
i - càite, i.e. sìoladh le sreathan
j - tagh | ùrachadh | dèan, i.e. a’ taghadh cholbhan agus gan tionndadh
le - cruinneachadh dàta

A’ taghadh cholbhan ann an 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$")]

Caochlaideach .SD a’ leigeil leat faighinn chun a h-uile colbh, agus .SDcols criathraich na colbhan a tha a dhìth a’ cleachdadh abairtean cunbhalach, no gnìomhan eile gus ainmean nan colbhan a tha a dhìth ort a shìoladh.

A’ taghadh cholbhan ann am Python, pandathan

Gus colbhan a thaghadh a rèir ainm a-steach pandas tha e gu leòr liosta de na h-ainmean aca a thoirt seachad. Agus gus colbhan a thaghadh no a thoirmeasg a rèir ainm a’ cleachdadh abairtean cunbhalach, feumaidh tu na gnìomhan a chleachdadh drop() и filter(), agus argumaid ais=1, leis a bheil thu a’ comharrachadh gu bheil e riatanach colbhan a phròiseasadh seach sreathan.

Gus raon a thaghadh a rèir seòrsa dàta, cleachd an gnìomh select_dtypes(), agus ann an argamaidean gabhail a-steach no dùnadh cuir seachad liosta de sheòrsan dàta a fhreagras air na raointean a dh’ fheumas tu a thaghadh.

A’ taghadh cholbhan ann am Python: pandathan

# Выбор полей по названию
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'])

A 'sìoladh sreathan

Mar eisimpleir, faodaidh grunn bhliadhnaichean de dhàta a bhith anns a’ chlàr stòr, ach cha leig thu leas ach a’ mhìos a chaidh seachad a sgrùdadh. A-rithist, cuiridh loidhnichean a bharrachd maill air a’ phròiseas giollachd dàta agus cuiridh iad casg air cuimhne PC.

Dè an cànan a thaghas tu airson obrachadh le dàta - R no Python? An dà chuid! Imrich bho pandathan gu sgioblachadh agus data.table agus air ais

A’ sìoladh sreathan ann an R: tydyverse, dplyr

В dplyr tha an gnìomh air a chleachdadh gus sreathan a shìoladh filter(). Bheir e frèam-dàta mar a’ chiad argamaid, agus an uairsin bidh thu a’ liostadh nan suidheachaidhean sìoltachaidh.

Nuair a bhios tu a’ sgrìobhadh abairtean loidsigeach gus clàr a shìoladh, sa chùis seo, sònraich ainmean nan colbhan gun luachan agus gun a bhith ag ainmeachadh ainm a’ bhùird.

Nuair a bhios tu a’ cleachdadh ioma abairtean loidsigeach airson sìoladh, cleachd na gnìomhaichean a leanas:

  • & no cromag - loidsigeach AGUS
  • | - loidsigeach NO

A’ sìoladh sreathan ann an R: dplyr

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

A’ sìoladh sreathan ann an R: data.table

Mar a sgrìobh mi mu thràth gu h-àrd, ann an data.table tha co-chòrdadh tionndadh dàta dùinte eadar camagan ceàrnach.

DT[i,j,by]

Càite:
i - càite, i.e. sìoladh le sreathan
j - tagh | ùrachadh | dèan, i.e. a’ taghadh cholbhan agus gan tionndadh
le - cruinneachadh dàta

Tha an argamaid air a chleachdadh gus sreathan a shìoladh i, aig a bheil a’ chiad suidheachadh ann an camagan ceàrnagach.

Gheibhear a-steach gu colbhan ann an abairtean loidsigeach gun chomharran luachan agus gun a bhith a’ sònrachadh ainm a’ chlàir.

Tha abairtean loidsigeach co-cheangailte ri chèile san aon dòigh ri ann an dplyr tro na & agus | oibrichean.

A’ sìoladh sreathan ann an R: data.table

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

A’ sìoladh sreangan ann am Python: pandathan

Criathraich le sreathan a-steach pandas coltach ri sìoladh a-steach data.table, agus tha e air a dhèanamh eadar camagan ceàrnach.

Anns a’ chùis seo, bithear a’ faighinn cothrom air colbhan le bhith a’ comharrachadh ainm an fhrèam-dàta; an uairsin faodar ainm a’ cholbh a chomharrachadh cuideachd ann an comharran luachan eadar camagan ceàrnach (eisimpleir df['col_name']), no às aonais luachan às deidh na h-ùine (eisimpleir df.col_name).

Ma dh'fheumas tu frèam dàta a shìoladh le grunn chumhachan, feumar gach suidheachadh a chuir ann am bragan. Tha suidheachaidhean loidsigeach ceangailte ri chèile le gnìomhaichean & и |.

A’ sìoladh sreangan ann am Python: pandathan

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

Cruinneachadh agus cruinneachadh dàta

Is e aon de na h-obraichean as cumanta ann an mion-sgrùdadh dàta cruinneachadh agus cruinneachadh.

Dè an cànan a thaghas tu airson obrachadh le dàta - R no Python? An dà chuid! Imrich bho pandathan gu sgioblachadh agus data.table agus air ais

Tha an co-chòrdadh airson na h-obraichean sin a choileanadh sgapte thar nam pasganan air fad a bhios sinn a’ sgrùdadh.

Anns a 'chùis seo, gabhaidh sinn frèam dàta mar eisimpleir Titanic, agus obraich a-mach àireamh agus cosgais chuibheasach thiocaidean a rèir clas a’ chaibineit.

A’ cruinneachadh agus a’ cruinneachadh dàta ann an R: tidyverse, dplyr

В dplyr tha an gnìomh air a chleachdadh airson cruinneachadh group_by(), agus airson co-chruinneachadh summarise(). Leis an fhìrinn innse, dplyr tha teaghlach iomlan de ghnìomhan ann summarise_*(), ach is e adhbhar an artaigil seo coimeas a dhèanamh eadar an co-chòrdadh bunaiteach, gus nach tèid sinn a-steach don jungle mar sin.

Gnìomhan cruinneachaidh bunaiteach:

  • sum() — suim
  • min() / max() - an luach as ìsle agus as àirde
  • mean() - cuibheasach
  • median() - meadhan
  • length() - meud

Buidheann agus cruinneachadh ann an R: dplyr

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

Gus obrachadh group_by() chaidh sinn seachad air a’ bhòrd mar a’ chiad argamaid Titanic, agus an uairsin chomharraich e an raon Pclass, leis an cuir sinn ar bòrd còmhla. Toradh an obrachaidh seo a 'cleachdadh a' ghnìomhaiche %>% seachad mar a’ chiad argamaid don ghnìomh summarise(), agus chuir e 2 raon eile ris: luchd-siubhail и cuibheasach_prìs. Anns a 'chiad, a' cleachdadh an gnìomh length() obraich a-mach an àireamh de thiogaidean, agus anns an dàrna fear a’ cleachdadh a’ ghnìomh mean() fhuair e prìs chuibheasach na tiogaid.

A’ cruinneachadh agus a’ cruinneachadh dàta ann an R: data.table

В data.table tha an argamaid air a chleachdadh airson cruinneachadh j aig a bheil an dàrna suidheachadh eadar camagan ceàrnach, agus airson buidhnean by no keyby, aig a bheil an treas suidheachadh.

Tha an liosta de ghnìomhan cruinneachaidh sa chùis seo co-ionann ris an fhear a tha air a mhìneachadh ann dplyr, oir tha iad sin nan gnìomhan bhon cho-chòrdadh bunaiteach R.

Buidheann agus cruinneachadh ann an R: data.table

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

A’ cruinneachadh agus a’ cruinneachadh dàta ann am Python: pandathan

A' cruinneachadh a-steach pandas coltach ri dplyr, ach chan eil an cruinneachadh coltach ris dplyr chan eil idir data.table.

Airson buidheann, cleachd am modh groupby(), anns am feum thu a dhol seachad air liosta de cholbhan leis an tèid an dataframe a chruinneachadh.

Airson cruinneachadh faodaidh tu an dòigh-obrach a chleachdadh agg()a ghabhas ri faclair. Is e na h-iuchraichean faclair na colbhan air an cuir thu an gnìomh gnìomhan cruinneachaidh, agus is e na luachan ainmean nan gnìomhan cruinneachaidh.

Feartan cruinneachaidh:

  • sum() — suim
  • min() / max() - an luach as ìsle agus as àirde
  • mean() - cuibheasach
  • median() - meadhan
  • count() - meud

gnìomh reset_index() san eisimpleir gu h-ìosal tha e air a chleachdadh gus clàran-amais neadachaidh ath-shuidheachadh a tha pandas bunaiteach gu às deidh cruinneachadh dàta.

Samhla a’ leigeil leat gluasad chun ath loidhne.

Buidheann agus cruinneachadh ann am Python: pandathan

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

Ceangal dìreach de bhùird

Obrachadh anns am bi thu a’ ceangal dà chlàr no barrachd den aon structar. Anns an dàta a luchdaich sinn tha clàran ga_nabh и ga_deag. Tha na clàran seo co-ionann ann an structar, i.e. tha na h-aon cholbhan agad, agus na seòrsaichean dàta anns na colbhan sin.

Dè an cànan a thaghas tu airson obrachadh le dàta - R no Python? An dà chuid! Imrich bho pandathan gu sgioblachadh agus data.table agus air ais

Is e seo luchdachadh suas bho Google Analytics airson mìos na Samhna agus na Dùbhlachd, anns an earrainn seo cuiridh sinn an dàta seo còmhla ann an aon chlàr.

A’ ceangal bùird gu dìreach ann an R: tidyverse, dplyr

В dplyr Faodaidh tu 2 chlàr a chur còmhla ann an aon leis a’ ghnìomh bind_rows(), a’ dol seachad air bùird mar argamaidean.

A’ sìoladh sreathan ann an R: dplyr

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

A’ ceangal chlàran gu dìreach ann an R: data.table

Chan eil e dad iom-fhillte cuideachd, leig dhuinn a chleachdadh rbind().

A’ sìoladh sreathan ann an R: data.table

## data.table
rbind(ga_nov, ga_dec)

A’ ceangal bùird gu dìreach ann am Python: pandathan

В pandas tha an gnìomh air a chleachdadh gus bùird a cheangal concat(), anns am feum thu liosta de fhrèamaichean a thoirt seachad airson an cur còmhla.

A’ sìoladh sreangan ann am Python: pandathan

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

Ceangal còmhnard de bhùird

Obrachadh anns a bheil colbhan bhon dàrna fear air an cur ris a’ chiad chlàr le iuchair. Bidh e air a chleachdadh gu tric nuair a thathar a’ beairteachadh clàr fìrinn (mar eisimpleir, clàr le dàta reic) le beagan dàta iomraidh (mar eisimpleir, cosgais toraidh).

Dè an cànan a thaghas tu airson obrachadh le dàta - R no Python? An dà chuid! Imrich bho pandathan gu sgioblachadh agus data.table agus air ais

Tha grunn sheòrsaichean de cheanglaichean ann:

Dè an cànan a thaghas tu airson obrachadh le dàta - R no Python? An dà chuid! Imrich bho pandathan gu sgioblachadh agus data.table agus air ais

Anns a 'chlàr a chaidh a luchdachadh roimhe Titanic tha colbh againn Sex, a tha a rèir còd gnè an neach-siubhail:

1 - boireann
2 - fireann

Cuideachd, tha sinn air clàr a chruthachadh - leabhar fiosrachaidh gnè. Airson taisbeanadh dàta nas goireasaiche air gnè luchd-siubhail, feumaidh sinn ainm a’ ghnè a chur ris bhon eòlaire gnè chun a' bhùird Titanic.

Clàr còmhnard a’ tighinn còmhla ann an R: tidyverse, dplyr

В dplyr Tha teaghlach slàn de ghnìomhan ann airson ceangal còmhnard:

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

Is e an fheadhainn as cumanta anns a 'chleachdadh agam left_join().

Mar a’ chiad dà argamaid, bheir na gnìomhan gu h-àrd dà chlàr airson a dhol còmhla, agus mar an treas argamaid by feumaidh tu na colbhan a shònrachadh airson a dhol còmhla.

Clàr còmhnard a’ tighinn còmhla ann an R: dplyr

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

Ceangal còmhnard de chlàran ann an R: data.table

В data.table Feumaidh tu bùird a cheangal le iuchair a’ cleachdadh a’ ghnìomh merge().

Argamaidean airson gnìomh () a chur còmhla ann an data.table

  • x, y — Clàir airson a dhol còmhla
  • le - Colbh a tha mar an iuchair airson a dhol còmhla ma tha an aon ainm air anns an dà chlàr
  • by.x, by.y — Ainmean cholbhan ri bhi air an aonadh, ma tha ainmean eadar-dhealaichte aca anns na clàir
  • uile, all.x, all.y — Join type, tillidh iad uile a h-uile sreath bhon dà chlàr, tha all.x a’ freagairt ris an obrachadh LEFT JOIN (fàgaidh e sreathan a’ chiad chlàr), all.y - a’ freagairt ris an Obrachadh CEART Thig còmhla (fàgaidh e na sreathan uile den dàrna clàr).

Ceangal còmhnard de chlàran ann an R: data.table

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

Clàr còmhnard a’ tighinn còmhla ri Python: pandathan

A bharrachd air ann an data.table, ann pandas tha an gnìomh air a chleachdadh gus bùird a cheangal merge().

Argamaidean mun ghnìomh aonaidh () ann am pandathan

  • ciamar - Seòrsa ceangail: clì, deas, taobh a-muigh, a-staigh
  • air — Colbh a tha na iuchair ma tha an aon ainm air anns an dà chlàr
  • left_on, right_on — Ainmean nam prìomh cholbhan, ma tha ainmean eadar-dhealaichte aca ann an clàran

Clàr còmhnard a’ tighinn còmhla ri Python: pandathan

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

Gnìomhan uinneag bunaiteach agus colbhan àireamhaichte

Tha gnìomhan uinneig coltach ri gnìomhan cruinneachaidh, agus bidh iad cuideachd air an cleachdadh gu tric ann am mion-sgrùdadh dàta. Ach aocoltach ri gnìomhan cruinneachaidh, chan atharraich gnìomhan uinneig an àireamh de shreathan den fhrèam dàta a tha a’ dol a-mach.

Dè an cànan a thaghas tu airson obrachadh le dàta - R no Python? An dà chuid! Imrich bho pandathan gu sgioblachadh agus data.table agus air ais

Gu bunaiteach, a’ cleachdadh gnìomh na h-uinneige, roinneadh sinn an fhrèam dàta a tha a’ tighinn a-steach gu pàirtean a rèir cuid de shlat-tomhais, i.e. a rèir luach achaidh, no grunn raointean. Agus bidh sinn a’ dèanamh obair àireamhachd air gach uinneag. Thèid toradh nan obraichean sin a thilleadh anns gach loidhne, i.e. gun a bhith ag atharrachadh an àireamh iomlan de shreathan sa chlàr.

Mar eisimpleir, gabhamaid am bòrd Titanic. Is urrainn dhuinn obrachadh a-mach dè an àireamh sa cheud de chosgais gach tiogaid taobh a-staigh a chlas cabin.

Gus seo a dhèanamh, feumaidh sinn cosgais iomlan tiogaid fhaighinn anns gach loidhne airson a’ chlas cabin gnàthach dham buin an tiogaid san loidhne seo, agus an uairsin roinn cosgais gach tiogaid le cosgais iomlan gach tiogaid den aon chlas cabin .

Gnìomhan uinneig ann an R: tidyverse, dplyr

Gus colbhan ùra a chur ris, gun a bhith a’ cleachdadh cruinneachadh sreath, cuir a-steach dplyr a 'frithealadh gnìomh mutate().

Faodaidh tu an duilgheadas a tha air a mhìneachadh gu h-àrd fhuasgladh le bhith a’ cruinneachadh dàta a rèir raon Pclass agus a 'toirt geàrr-chunntas air an raon ann an colbh ùr a dhèanamh. An ath rud, cuir às don chlàr agus roinn na luachan raoin a dhèanamh ris na thachair anns a' cheum roimhe.

Gnìomhan uinneig ann an R: dplyr

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

Gnìomhan uinneig ann an R: data.table

Tha an algairim fuasglaidh fhathast mar a tha e ann dplyr, feumaidh sinn am bòrd a roinn ann an uinneagan le raon Pclass. Toradh ann an colbh ùr an t-suim airson na buidhne a fhreagras air gach sreath, agus cuir colbh ris anns am bi sinn ag obrachadh a-mach cuibhreann cosgais gach tiogaid sa bhuidheann aige.

Gus colbhan ùra a chur ris data.table gnìomhaiche an làthair :=. Gu h-ìosal tha eisimpleir de bhith a 'fuasgladh duilgheadas a' cleachdadh a 'phacaid data.table

Gnìomhan uinneig ann an R: data.table

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

Gnìomhan uinneig ann am Python: pandathan

Aon dòigh air colbh ùr a chur ris pandas - cleachd an gnìomh assign(). Gus geàrr-chunntas a dhèanamh air cosgais thiogaidean a rèir clas cabin, gun a bhith a’ cruinneachadh sreathan, cleachdaidh sinn an gnìomh transform().

Gu h-ìosal tha eisimpleir de fhuasgladh anns am bi sinn a 'cur ris a' chlàr Titanic an aon 2 cholbh.

Gnìomhan uinneig ann am Python: pandathan

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

Clàr conaltraidh gnìomhan agus dòighean-obrach

Gu h-ìosal tha clàr de chonaltradh eadar dòighean airson diofar obrachaidhean a dhèanamh le dàta anns na pacaidean air an do bheachdaich sinn.

Tuairisgeul
sgioblachadh
dàta.clàr
pandathan

A’ luchdachadh dàta
vroom()/ readr::read_csv() / readr::read_tsv()
fread()
read_csv()

A 'cruthachadh frèamaichean dàta
tibble()
data.table()
dict() + from_dict()

A 'taghadh colbhan
select()
argamaid j, an dàrna suidheachadh eadar camagan ceàrnagach
bidh sinn a’ dol seachad air an liosta de cholbhan a tha a dhìth eadar camagan ceàrnach / drop() / filter() / select_dtypes()

A 'sìoladh sreathan
filter()
argamaid i, a 'chiad suidheachadh eadar camagan ceàrnagach
Bidh sinn a’ liostadh nan suidheachaidhean sìoltachaidh eadar camagan ceàrnach / filter()

Buidheann agus Co-chruinneachadh
group_by() + summarise()
argamaidean j + by
groupby() + agg()

Aonadh bùird dìreach (UNION)
bind_rows()
rbind()
concat()

Ceangal còmhnard de bhùird (JOIN)
left_join() / *_join()
merge()
merge()

Gnìomhan uinneag bunaiteach agus cuir colbhan àireamhaichte ris
group_by() + mutate()
argamaid j a 'cleachdadh a' ghnìomhaiche := + argamaid by
transform() + assign()

co-dhùnadh

Is dòcha anns an artaigil cha tug mi cunntas air na gnìomhan as fheàrr a thaobh giollachd dàta, agus mar sin bidh mi toilichte ma chuireas tu na mearachdan agam ceart anns na beachdan, no dìreach cuir ris an fhiosrachadh a tha air a thoirt seachad san artaigil le dòighean eile airson obrachadh le dàta ann an R / Python.

Mar a sgrìobh mi gu h-àrd, cha b’ e adhbhar an artaigil a bhith a’ sparradh beachd neach air dè an cànan as fheàrr, ach an cothrom an dà chànan ionnsachadh a dhèanamh nas sìmplidhe, no, ma dh’ fheumar, imrich eatorra.

Nam bu toil leat an artaigil, bidh mi toilichte fo-sgrìobhaichean ùra a bhith agam dha youtube и teileagram seanailean.

Poll

Dè de na pacaidean a leanas a bhios tu a’ cleachdadh san obair agad?

Anns na beachdan faodaidh tu an adhbhar airson do roghainn a sgrìobhadh.

Chan fhaod ach luchd-cleachdaidh clàraichte pàirt a ghabhail san sgrùdadh. Soidhnig a-steach, mas e do thoil e.

Dè am pasgan giollachd dàta a chleachdas tu (faodaidh tu grunn roghainnean a thaghadh)

  • 45,2%rann sgiobalta19

  • 33,3%dàta.clàr14

  • 54,8%pandathan23

Bhòt 42 neach-cleachdaidh. Sheall 9 neach-cleachdaidh.

Source: www.habr.com

Cuir beachd ann