Какой язык Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ β€” R ΠΈΠ»ΠΈ Python? Оба! ΠœΠΈΠ³Ρ€ΠΈΡ€ΡƒΠ΅ΠΌ с pandas Π½Π° tidyverse ΠΈ data.table ΠΈ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ

По запросу R ΠΈΠ»ΠΈ Python Π² ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚Π΅ Π²Ρ‹ Π½Π°ΠΉΠ΄Ρ‘Ρ‚Π΅ ΠΌΠΈΠ»Π»ΠΈΠΎΠ½Ρ‹ статСй ΠΈ ΠΊΠΈΠ»ΠΎΠΌΠ΅Ρ‚Ρ€ΠΎΠ²Ρ‹Ρ… обсуТдСний ΠΏΠΎ Ρ‚Π΅ΠΌΠ΅ ΠΊΠ°ΠΊΠΎΠΉ ΠΈΠ· Π½ΠΈΡ… Π»ΡƒΡ‡ΡˆΠ΅, быстрСС ΠΈ ΡƒΠ΄ΠΎΠ±Π½Π΅Π΅ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ. Но ΠΊ соТалСнию особой ΠΏΠΎΠ»ΡŒΠ·Ρ‹ всС эти ΡΡ‚Π°Ρ‚ΡŒΠΈ ΠΈ споры Π½Π΅ нСсут.

Какой язык Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ — R ΠΈΠ»ΠΈ Python? Оба! ΠœΠΈΠ³Ρ€ΠΈΡ€ΡƒΠ΅ΠΌ с pandas Π½Π° tidyverse ΠΈ data.table ΠΈ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ

ЦСль этой ΡΡ‚Π°Ρ‚ΡŒΠΈ β€” ΡΡ€Π°Π²Π½ΠΈΡ‚ΡŒ основныС ΠΏΡ€ΠΈΡ‘ΠΌΡ‹ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ… Π² Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ популярных ΠΏΠ°ΠΊΠ΅Ρ‚Π°Ρ… ΠΎΠ±ΠΎΠΈΡ… языков. И ΠΏΠΎΠΌΠΎΡ‡ΡŒ читатСлям максимально быстро ΠΎΠ²Π»Π°Π΄Π΅Ρ‚ΡŒ Ρ‚Π΅ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΠ½ΠΈ Π΅Ρ‰Ρ‘ Π½Π΅ Π·Π½Π°ΡŽΡ‚. Для Ρ‚Π΅Ρ… ΠΊΡ‚ΠΎ ΠΏΠΈΡˆΠ΅Ρ‚ Π½Π° Python ΡƒΠ·Π½Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ всё Ρ‚ΠΎ ΠΆΠ΅ самоС Π² R, ΠΈ соотвСтствСнно Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚.

Π’ Ρ…ΠΎΠ΄Π΅ ΡΡ‚Π°Ρ‚ΡŒΠΈ ΠΌΡ‹ Ρ€Π°Π·Π±Π΅Ρ€Ρ‘ΠΌ синтаксис Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ популярных ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² Π½Π° R. Π­Ρ‚ΠΎ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ входящиС Π² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ tidyverse, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠ°ΠΊΠ΅Ρ‚ data.table. И сравним ΠΈΡ… синтаксис с pandas, Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ популярным ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠΌ для Π°Π½Π°Π»ΠΈΠ·Π° Π΄Π°Π½Π½Ρ‹Ρ… Π² Python.

ΠœΡ‹ пошагово ΠΏΡ€ΠΎΠΉΠ΄Ρ‘ΠΌ вСсь ΠΏΡƒΡ‚ΡŒ Π°Π½Π°Π»ΠΈΠ·Π° Π΄Π°Π½Π½Ρ‹Ρ… ΠΎΡ‚ ΠΈΡ… Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π΄ΠΎ выполнСния аналитичСских, ΠΎΠΊΠΎΠ½Π½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ срСдствами Python ΠΈ R.

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅

Данная ΡΡ‚Π°Ρ‚ΡŒΡ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΊ ΡˆΠΏΠ°Ρ€Π³Π°Π»ΠΊΠ°, Π² случаС Ссли Π²Ρ‹ Π·Π°Π±Ρ‹Π»ΠΈ ΠΊΠ°ΠΊ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ· рассматриваСмых ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ ΠΏΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Π΄Π°Π½Π½Ρ‹Ρ….

Какой язык Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ — R ΠΈΠ»ΠΈ Python? Оба! ΠœΠΈΠ³Ρ€ΠΈΡ€ΡƒΠ΅ΠΌ с pandas Π½Π° tidyverse ΠΈ data.table ΠΈ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ

  1. ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ отличия синтаксиса Π² R ΠΈ Python
    1.1. ΠžΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΊ функциям ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ²
    1.2. ΠŸΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΠ΅
    1.3. Π˜Π½Π΄Π΅ΠΊΡΠ°Ρ†ΠΈΡ
    1.4. ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈ ООП
    1.5. ΠŸΠ°ΠΉΠΏΠ»Π°ΠΉΠ½Ρ‹
    1.6. Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…
  2. НСсколько слов ΠΎ ΠΏΠ°ΠΊΠ΅Ρ‚Π°Ρ… ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ
    2.1. tidyverse
    2.2. data.table
    2.3. pandas
  3. Установка ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ²
  4. Π—Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Π΄Π°Π½Π½Ρ‹Ρ…
  5. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π΄Π°Ρ‚Π°Ρ„Ρ€Π΅ΠΉΠΌΠΎΠ²
  6. Π’Ρ‹Π±ΠΎΡ€ Π½ΡƒΠΆΠ½Ρ‹Ρ… столбцов
  7. Π€ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΡ строк
  8. Π“Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²ΠΊΠ° ΠΈ агрСгация
  9. Π’Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠ΅ объСдинСниС Ρ‚Π°Π±Π»ΠΈΡ† (UNION)
  10. Π“ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΡŒΠ½ΠΎΠ΅ объСдинСниС Ρ‚Π°Π±Π»ΠΈΡ† (JOIN)
  11. ΠŸΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠΈΠ΅ ΠΎΠΊΠΎΠ½Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ вычисляСмыС столбцы
  12. Π’Π°Π±Π»ΠΈΡ†Π° соотвСтствия ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ… Π² R ΠΈ Python
  13. Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅
  14. НСбольшой опрос ΠΎ Ρ‚ΠΎΠΌ ΠΊΠ°ΠΊΠΎΠΉ ΠΏΠ°ΠΊΠ΅Ρ‚ Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅

Если Π²Ρ‹ ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΡƒΠ΅Ρ‚Π΅ΡΡŒ Π°Π½Π°Π»ΠΈΠ·ΠΎΠΌ Π΄Π°Π½Π½Ρ‹Ρ… Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π²Π°ΠΌ Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ ΠΌΠΎΠΈ telegram ΠΈ youtube ΠΊΠ°Π½Π°Π»Ρ‹. Π‘ΠΎΠ»ΡŒΡˆΠ°Ρ Ρ‡Π°ΡΡ‚ΡŒ ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… посвящСны языку R.

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ отличия синтаксиса Π² R ΠΈ Python

Π§Ρ‚ΠΎ Π±Ρ‹ Π²Π°ΠΌ Π±Ρ‹Π»ΠΎ ΠΏΡ€ΠΎΡ‰Π΅ с ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΎΠΌ ΠΈΠ· Python ΠΊ R, ΠΈΠ»ΠΈ Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚, ΠΏΡ€ΠΈΠ²Π΅Π΄Ρƒ нСсколько основных ΠΌΠΎΠΌΠ΅Π½Ρ‚ΠΎΠ², Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅.

ΠžΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΊ функциям ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ²

ПослС Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚Π° Π² R, для обращСния ΠΊ Π΅Π³ΠΎ функциям Π½Π΅Ρ‚ нСобходимости ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ имя ΠΏΠ°ΠΊΠ΅Ρ‚Π°. Π’ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ случаСв Π² R это Π½Π΅ принято, Π½ΠΎ допустимо. Π’Ρ‹ Π²ΠΎΠΎΠ±Ρ‰Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π΅ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ°ΠΊΠ΅Ρ‚ Ссли Π² ΠΊΠΎΠ΄Π΅ Π²Π°ΠΌ понадобится какая-Π»ΠΈΠ±ΠΎ ΠΎΠ΄Π½Π° Π΅Π³ΠΎ функция, Π° просто Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ Π΅Ρ‘ ΡƒΠΊΠ°Π·Π°Π² Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΏΠ°ΠΊΠ΅Ρ‚Π° ΠΈ имя Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Π Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»Π΅ΠΌ ΠΌΠ΅ΠΆΠ΄Ρƒ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ ΠΏΠ°ΠΊΠ΅Ρ‚Π° ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² R слуТит Π΄Π²ΠΎΠΉΠ½ΠΎΠ΅ Π΄Π²ΠΎΠ΅Ρ‚ΠΎΡ‡ΠΈΠ΅ package_name::function_name().

Π’ Python Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚, классикой считаСтся ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΊ функциям ΠΏΠ°ΠΊΠ΅Ρ‚Π°, явно ΡƒΠΊΠ°Π·Π°Π² Π΅Π³ΠΎ имя. ΠŸΡ€ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅ ΠΏΠ°ΠΊΠ΅Ρ‚Π°, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, Π΅ΠΌΡƒ ΠΏΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°ΡŽΡ‚ сокращённоС имя, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ для pandas ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ псСвдоним pd. ΠžΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΊ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚Π° ΠΈΠ΄Ρ‘Ρ‚ Ρ‡Π΅Ρ€Π΅Π· Ρ‚ΠΎΡ‡ΠΊΡƒ package_name.function_name().

ΠŸΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΠ΅

Π’ R для присваивания значСния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ принято ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ стрСлку obj_name <- value, хотя допускаСтся ΠΈ ΠΎΠ΄ΠΈΠ½Π°Ρ€Π½Ρ‹ΠΉ Π·Π½Π°ΠΊ равСнства, Π½ΠΎ ΠΎΠ΄ΠΈΠ½Π°Ρ€Π½Ρ‹ΠΉ Π·Π½Π°ΠΊ равСнства Π² R ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Π² основном для ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ.

Π’ Python присваиваниС осущСствляСтся ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΠ΄ΠΈΠ½Π°Ρ€Π½Ρ‹ΠΌ Π·Π½Π°ΠΊΠΎΠΌ равСнства obj_name = value.

Π˜Π½Π΄Π΅ΠΊΡΠ°Ρ†ΠΈΡ

Π’ΡƒΡ‚ Ρ‚ΠΎΠΆΠ΅ Π΅ΡΡ‚ΡŒ довольно вСсомыС отличия. Π’ R индСксация начинаСтся с Π΅Π΄ΠΈΠ½ΠΈΡ†Ρ‹ ΠΈ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ всС ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Π΅ элСмСнты,

Π² Python индСксация начинаСтся с нуля ΠΈ Π²Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌΡ‹ΠΉ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ Π½Π΅ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ послСдний элСмСнт ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ Π² индСксации. Π’Π°ΠΊ конструкция x[i:j] Π² Python Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ элСмСнт j.

Π’Π°ΠΊΠΆΠ΅ Π΅ΡΡ‚ΡŒ различия Π² ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΉ индСксации, Π² R запись x[-1] Π²Π΅Ρ€Π½Ρ‘Ρ‚ всС элСмСнты Π²Π΅ΠΊΡ‚ΠΎΡ€Π°, ΠΊΡ€ΠΎΠΌΠ΅ послСднСго. Π’ Python аналогичная запись Π²Π΅Ρ€Π½Ρ‘Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ послСдний элСмСнт.

ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈ ООП

Π’ R ΠΏΠΎ своСму Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ΠΎ ООП, ΠΎΠ± этом я писал Π² ΡΡ‚Π°Ρ‚ΡŒΠ΅ "ООП Π² языкС R (Ρ‡Π°ΡΡ‚ΡŒ 1): S3 классы". Π’ Ρ†Π΅Π»ΠΎΠΌ R Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ язык, ΠΈ всё Π² Π½Ρ‘ΠΌ построСно Π½Π° функциях. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ Excel ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ Π½Π° tydiverse Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΡ‰Π΅, Ρ‡Π΅ΠΌ Π½Π° pandas. Π₯отя Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ это ΠΌΠΎΡ‘ ΡΡƒΠ±ΡŠΠ΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ΅ ΠΌΠ½Π΅Π½ΠΈΠ΅.

Если Π²ΠΊΡ€Π°Ρ‚Ρ†Π΅, Ρ‚ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π² R Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² (Ссли Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎ S3 классы, Π½ΠΎ Π΅ΡΡ‚ΡŒ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ООП, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²ΡΡ‚Ρ€Π΅Ρ‡Π°ΡŽΡ‚ΡΡ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ€Π΅ΠΆΠ΅). Π•ΡΡ‚ΡŒ лишь ΠΎΠ±ΠΎΠ±Ρ‰Ρ‘Π½Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π² зависимости ΠΎΡ‚ класса ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΏΠΎ-Ρ€Π°Π·Π½ΠΎΠΌΡƒ ΠΈΡ… ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚.

ΠŸΠ°ΠΉΠΏΠ»Π°ΠΉΠ½Ρ‹

Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ это Π½Π°Π·Π²Π°Π½ΠΈΠ΅ для pandas Π±ΡƒΠ΄Π΅Ρ‚ Π½Π΅ совсСм ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ, Π½ΠΎ я ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΡŽ ΠΎΠ±ΡŠΡΡΠ½ΠΈΡ‚ΡŒ смысл.

Π§Ρ‚ΠΎ Π±Ρ‹ Π½Π΅ ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹Π΅ вычислСния ΠΈ Π½Π΅ ΠΏΠ»ΠΎΠ΄ΠΈΡ‚ΡŒ Π² Ρ€Π°Π±ΠΎΡ‡Π΅ΠΌ ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠΈ Π½Π΅Π½ΡƒΠΆΠ½Ρ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ своСобразный ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€. Π’.Π΅. ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ вычислСния ΠΈΠ· ΠΎΠ΄Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ, ΠΈ Π½Π΅ ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹Π΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹.

Π’ΠΎΠ·ΡŒΠΌΡ‘ΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ΄Π°, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΌΡ‹ сохраняСм Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹Π΅ вычислСния:

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

ΠœΡ‹ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ»ΠΈ 3 ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, ΠΈ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ сохранили Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚. Но Π½Π° самом Π΄Π΅Π»Π΅ эти ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π½Π°ΠΌ Π½Π΅ Π½ΡƒΠΆΠ½Ρ‹.

Π›ΠΈΠ±ΠΎ Π΅Ρ‰Ρ‘ Ρ…ΡƒΠΆΠ΅, Π½ΠΎ ΠΏΡ€ΠΈΠ²Ρ‹Ρ‡Π½Π΅Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ Excel.

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

Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС ΠΌΡ‹ Π½Π΅ сохраняли ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹Π΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ вычислСний, Π½ΠΎ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ с Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΌΠΈ Π΄Ρ€ΡƒΠ³, Π² Π΄Ρ€ΡƒΠ³Π° функциями ΠΊΡ€Π°ΠΉΠ½Π΅ Π½Π΅ ΡƒΠ΄ΠΎΠ±Π½ΠΎ.

ΠœΡ‹ Π±ΡƒΠ΄Π΅ΠΌ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ нСсколько ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΎΠ² ΠΊ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… Π² R, ΠΈ Π² Π½ΠΈΡ… ΠΏΠΎ Ρ€Π°Π·Π½ΠΎΠΌΡƒ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ.

ΠŸΠ°ΠΉΠΏΠ»Π°ΠΉΠ½Ρ‹ Π² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ tidyverse Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‚ΡΡ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ %>%.

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

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΌΡ‹ Π±Π΅Ρ€Ρ‘ΠΌ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρ‹ func1() ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‘ΠΌ Π΅Π³ΠΎ Π² качСствС ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° Π² func2(), Π΄Π°Π»Π΅Π΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ этого вычислСния ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‘ΠΌ Π² качСствС ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° func3(). И Π² ΠΊΠΎΠ½Ρ†Π΅ ΠΊΠΎΠ½Ρ†ΠΎΠ², всС Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π½Ρ‹Π΅ вычислСния записываСм Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ obj <-.

Π›ΡƒΡ‡ΡˆΠ΅ слов всё Π²Ρ‹ΡˆΠ΅ΠΎΠΏΠΈΡΠ°Π½Π½ΠΎΠ΅ ΠΈΠ»Π»ΡŽΡΡ‚ΠΈΡ€ΠΈΡ€ΡƒΠ΅Ρ‚ этот ΠΌΠ΅ΠΌ:
Какой язык Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ — R ΠΈΠ»ΠΈ Python? Оба! ΠœΠΈΠ³Ρ€ΠΈΡ€ΡƒΠ΅ΠΌ с pandas Π½Π° tidyverse ΠΈ data.table ΠΈ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ

Π’ data.table ΠΏΠΎΡ…ΠΎΠΆΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠΈ.

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

Π’ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΠ· ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Ρ… скобок Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ.

Π’ pandas Ρ‚Π°ΠΊΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Ρ€Π°Π·Π΄Π΅Π»ΡΡŽΡ‚ΡΡ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ.

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

Π’.Π΅. ΠΌΡ‹ Π±Π΅Ρ€Ρ‘ΠΌ Π½Π°ΡˆΡƒ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ df ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Π΅Ρ‘ ΠΌΠ΅Ρ‚ΠΎΠ΄ fun1(), Π΄Π°Π»Π΅Π΅ ΠΊ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠΌΡƒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρƒ примСняСм ΠΌΠ΅Ρ‚ΠΎΠ΄ fun2(), послС fun3(). ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ сохраняСм Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ obj .

Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…

Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… Π² R ΠΈ Python схоТи, Π½ΠΎ ΠΈΠΌΠ΅ΡŽΡ‚ Ρ€Π°Π·Π½Ρ‹Π΅ названия.

ОписаниС
НазваниС в R
НазваниС в Python / pandas

Вабличная структура
data.frame, data.table, tibble
DataFrame

ΠžΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΉ список Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ
Π’Π΅ΠΊΡ‚ΠΎΡ€
Series Π² pandas ΠΈΠ»ΠΈ список (list) Π² чистом Python

ΠœΠ½ΠΎΠ³ΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Π°Ρ Π½Π΅ табличная структура
Бписок (List)
Π‘Π»ΠΎΠ²Π°Ρ€ΡŒ (dict)

НСкоторыС Π΄Ρ€ΡƒΠ³ΠΈΠ΅ особСнности ΠΈ различия синтаксиса ΠΌΡ‹ рассмотрим Π΄Π°Π»Π΅Π΅.

НСсколько слов ΠΎ ΠΏΠ°ΠΊΠ΅Ρ‚Π°Ρ… ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ

Для Π½Π°Ρ‡Π°Π»Π° расскаТу Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΎ ΠΏΠ°ΠΊΠ΅Ρ‚Π°Ρ… с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ Π² Ρ…ΠΎΠ΄Π΅ этой ΡΡ‚Π°Ρ‚ΡŒΠΈ Π²Ρ‹ ΠΏΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚Π΅ΡΡŒ.

tidyverse

ΠžΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ сайт: tidyverse.org
Какой язык Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ — R ΠΈΠ»ΠΈ Python? Оба! ΠœΠΈΠ³Ρ€ΠΈΡ€ΡƒΠ΅ΠΌ с pandas Π½Π° tidyverse ΠΈ data.table ΠΈ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ
Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° tidyverse написана Π₯Π΅Π΄Π»ΠΈ Π’ΠΈΠΊΡ…Π΅ΠΌΠΎΠΌ, ΡΡ‚Π°Ρ€ΡˆΠΈΠΌ Π½Π°ΡƒΡ‡Π½Ρ‹ΠΌ сотрудником RStudio. tidyverse состоит ΠΈΠ· Π²Π½ΡƒΡˆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ Π½Π°Π±ΠΎΡ€Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² ΡƒΠΏΡ€ΠΎΡ‰Π°ΡŽΡ‰ΠΈΡ… ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ Π΄Π°Π½Π½Ρ‹Ρ…, 5 ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… входят Π² Ρ‚ΠΎΠΏ 10 Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅ΠΌΡ‹Ρ… ΠΈΠ· рСпозитория CRAN.

Π―Π΄Ρ€ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ состоит ΠΈΠ· ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ²: ggplot2, dplyr, tidyr, readr, purrr, tibble, stringr, forcats. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· этих ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ Π½Π° Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΠΎΠΉ Π·Π°Π΄Π°Ρ‡ΠΈ. НапримСр dplyr создан для манипуляции с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ, tidyr для привСдСния Π΄Π°Π½Π½Ρ‹Ρ… ΠΊ Π°ΠΊΠΊΡƒΡ€Π°Ρ‚Π½ΠΎΠΌΡƒ Π²ΠΈΠ΄Ρƒ, stringr ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρƒ со строками, Π° ggplot2 являСтся ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ популярных инструмСнтов для Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π΄Π°Π½Π½Ρ‹Ρ….

ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²ΠΎΠΌ tidyverse являСтся простота ΠΈ Π»Π΅Π³ΠΊΠΎ Ρ‡ΠΈΡ‚Π°Π΅ΠΌΠΎΡΡ‚ΡŒ синтаксиса, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΠΌ ΠΏΠΎΡ…ΠΎΠΆ Π½Π° язык запросов SQL.

data.table

Какой язык Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ — R ΠΈΠ»ΠΈ Python? Оба! ΠœΠΈΠ³Ρ€ΠΈΡ€ΡƒΠ΅ΠΌ с pandas Π½Π° tidyverse ΠΈ data.table ΠΈ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠžΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ сайт: r-datatable.com

Автором data.table являСтся ΠœΡΡ‚Ρ‚ Π”ΠΎΡƒΠ» ΠΈΠ· H2O.ai.

ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ Ρ€Π΅Π»ΠΈΠ· Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ состоялся Π² 2006 Π³ΠΎΠ΄Ρƒ.

Бинтаксис ΠΏΠ°ΠΊΠ΅Ρ‚Π° Π½Π΅ Ρ‚Π°ΠΊ ΡƒΠ΄ΠΎΠ±Π΅Π½ ΠΊΠ°ΠΊ Π² tidyverse ΠΈ большС Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π΅Ρ‚ классичСскиС Π΄Π°Ρ‚Π°Ρ„Ρ€Π΅ΠΉΠΌΡ‹ Π² R, Π½ΠΎ ΠΏΡ€ΠΈ этом Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½Ρ‹Π΅ ΠΏΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»Ρƒ.

ВсС манипуляции с Ρ‚Π°Π±Π»ΠΈΡ†Π΅ΠΉ Π² Π΄Π°Π½Π½ΠΎΠΌ ΠΏΠ°ΠΊΠ΅Ρ‚Π΅ ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ΡΡ Π² ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Ρ… скобках, ΠΈ Ссли пСрСвСсти синтаксис data.table Π½Π° SQL, Ρ‚ΠΎ получится ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅: data.table[ WHERE, SELECT, GROUP BY ]

Бильной стороной Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠ°ΠΊΠ΅Ρ‚Π° являСтся ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΎΠ±ΡŠΡ‘ΠΌΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ….

pandas

ΠžΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ сайт: pandas.pydata.org Какой язык Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ — R ΠΈΠ»ΠΈ Python? Оба! ΠœΠΈΠ³Ρ€ΠΈΡ€ΡƒΠ΅ΠΌ с pandas Π½Π° tidyverse ΠΈ data.table ΠΈ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ

НазваниС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ происходит ΠΎΡ‚ экономСтричСского Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π° Β«ΠΏΠ°Π½Π΅Π»ΡŒΠ½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅Β» (Π°Π½Π³Π». panel data), ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠ³ΠΎ для описания ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹Ρ… структурированных Π½Π°Π±ΠΎΡ€ΠΎΠ² ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ.

Автором pandas являСтся Π°ΠΌΠ΅Ρ€ΠΈΠΊΠ°Π½Π΅Ρ† Уэс Мак-Кинни.

Когда Ρ€Π΅Ρ‡ΡŒ ΠΈΠ΄Ρ‘Ρ‚ ΠΎΠ± Π°Π½Π°Π»ΠΈΠ·Π΅ Π΄Π°Π½Π½Ρ‹Ρ… Π½Π° Python, Ρ€Π°Π²Π½Ρ‹Ρ… pandas Π½Π΅Ρ‚. ΠžΡ‡Π΅Π½ΡŒ ΠΌΠ½ΠΎΠ³ΠΎΡ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ, высокоуровнСвый ΠΏΠ°ΠΊΠ΅Ρ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт Π²Π°ΠΌ провСсти с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ Π»ΡŽΠ±Ρ‹Π΅ манипуляции начиная ΠΎΡ‚ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· Π»ΡŽΠ±Ρ‹Ρ… источников Π΄ΠΎ ΠΈΡ… Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ.

Установка Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ²

ΠŸΠ°ΠΊΠ΅Ρ‚Ρ‹ ΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΏΠΎΠΉΠ΄Ρ‘Ρ‚ Ρ€Π΅Ρ‡ΡŒ Π² этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ Π½Π΅ входят Π² Π±Π°Π·ΠΎΠ²Ρ‹Π΅ дистрибутивы R ΠΈ Python. Π₯отя Π΅ΡΡ‚ΡŒ нСбольшая ΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΊΠ°, Ссли Π²Ρ‹ установили дистрибутив Anaconda Ρ‚ΠΎ ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ pandas Π½Π΅ трСбуСтся.

Установка ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² Π² R

Если Π²Ρ‹ хотя Π±Ρ‹ Ρ€Π°Π· ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π»ΠΈ срСду Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ RStudio навСрняка Π²Ρ‹ ΠΈ Ρ‚Π°ΠΊ ΡƒΠΆΠ΅ Π·Π½Π°Π΅Ρ‚Π΅ ΠΊΠ°ΠΊ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π½ΡƒΠΆΠ½Ρ‹ΠΉ ΠΏΠ°ΠΊΠ΅Ρ‚ Π² R. Для установки ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ΡΡŒ стандартной ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ install.packages() запустив Π΅Ρ‘ нСпосрСдствСнно Π² самом R.

# установка ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ²
install.packages("vroom")
install.packages("readr")
install.packages("dplyr")
install.packages("data.table")

ПослС установки ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ, для Ρ‡Π΅Π³ΠΎ Π² Π±ΠΎΠ»ΡŒΡˆΠΈΡΡ‚Π²Π΅ случаСв ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Π° library().

# ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ ΠΈΠΌΠΏΠΎΡ€Ρ‚ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² Π² Ρ€Π°Π±ΠΎΡ‡Π΅Π΅ ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠ΅
library(vroom)
library(readr)
library(dplyr)
library(data.table)

Установка ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² Π² Python

Π˜Ρ‚Π°ΠΊ, Ссли Ρƒ вас установлСн чистый Python, Ρ‚ΠΎ pandas Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π΄ΠΎΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ Ρ€ΡƒΠΊΠ°ΠΌΠΈ. ΠžΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅ΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΡƒΡŽ строку, ΠΈΠ»ΠΈ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π», Π² зависимости ΠΎΡ‚ вашСй ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы ΠΈ Π²Π²ΠΎΠ΄ΠΈΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ.

pip install pandas

ПослС Ρ‡Π΅Π³ΠΎ возвращаСмся Π² Python ΠΈ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌ установлСнный ΠΏΠ°ΠΊΠ΅Ρ‚ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ import.

import pandas as pd

Π—Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Π΄Π°Π½Π½Ρ‹Ρ…

Π”ΠΎΠ±Ρ‹Ρ‡Π° Π΄Π°Π½Π½Ρ‹Ρ… являСтся ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· Π²Π°ΠΆΠ½Π΅ΠΉΡˆΠΈΡ… этапов Π°Π½Π°Π»ΠΈΠ·Π° Π΄Π°Π½Π½Ρ‹Ρ…. И Python ΠΈ R ΠΏΡ€ΠΈ ΠΆΠ΅Π»Π°Π½ΠΈΠΈ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ Π²Π°ΠΌ ΠΎΠ±ΡˆΠΈΡ€Π½Ρ‹Π΅ возмоТности для получСния Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· Π»ΡŽΠ±Ρ‹Ρ… источников: Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹, Ρ„Π°ΠΉΠ»Ρ‹ ΠΈΠ· ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚Π°, Π²Π΅Π± сайты, всСвозмоТныС Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ….

Какой язык Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ — R ΠΈΠ»ΠΈ Python? Оба! ΠœΠΈΠ³Ρ€ΠΈΡ€ΡƒΠ΅ΠΌ с pandas Π½Π° tidyverse ΠΈ data.table ΠΈ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ

Π’ Ρ…ΠΎΠ΄Π΅ ΡΡ‚Π°Ρ‚ΡŒΠΈ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ нСсколько Π½Π°Π±ΠΎΡ€ΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ…:

  1. Π”Π²Π΅ Π²Ρ‹Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΈΠ· Google Analytics.
  2. Набор Π΄Π°Π½Π½Ρ‹Ρ… ΠΎ пассаТирах Ρ‚ΠΈΡ‚Π°Π½ΠΈΠΊΠ°.

ВсС Π΄Π°Π½Π½Ρ‹Π΅ Π»Π΅ΠΆΠ°Ρ‚ Ρƒ мСня Π½Π° GitHub Π² Π²ΠΈΠ΄Π΅ csv ΠΈ tsv Ρ„Π°ΠΉΠ»ΠΎΠ². ΠžΡ‚ ΠΊΡƒΠ΄Π° ΠΌΡ‹ ΠΈΡ… ΠΈ Π±ΡƒΠ΄Π΅ΠΌ Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Ρ‚ΡŒ.

Π—Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Π΄Π°Π½Π½Ρ‹Ρ… Π² R: tidyverse, vroom, readr

Для Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ… Π² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ tidyverse ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Ρ‹ Π΄Π²Π° ΠΏΠ°ΠΊΠ΅Ρ‚Π°: vroom, readr. vroom Π±ΠΎΠ»Π΅Π΅ соврСмСнный, Π½ΠΎ Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½Π΅Π½Ρ‹.

Π¦ΠΈΡ‚Π°Ρ‚Π° ΠΈΠ· ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ vroom.

vroom vs readr
What does the release of vroom mean for readr? For now we plan to let the two packages evolve separately, but likely we will unite the packages in the future. One disadvantage to vroom’s lazy reading is certain data problems can’t be reported up front, so how best to unify them requires some thought.

vroom ΠΏΡ€ΠΎΡ‚ΠΈΠ² readr
Π§Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ выпуск vroom для readr? На Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΌΡ‹ ΠΏΠ»Π°Π½ΠΈΡ€ΡƒΠ΅ΠΌ Ρ€Π°Π·Π²ΠΈΠ²Π°Ρ‚ΡŒ ΠΎΠ±Π° ΠΏΠ°ΠΊΠ΅Ρ‚Π° ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ, Π½ΠΎ, вСроятно, ΠΌΡ‹ объСдиним ΠΈΡ… Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ. Одним ΠΈΠ· нСдостатков Π»Π΅Π½ΠΈΠ²ΠΎΠ³ΠΎ чтСния vroom являСтся Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°Ρ… с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ нСльзя ΡΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ Π·Π°Ρ€Π°Π½Π΅Π΅, поэтому, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠ΄ΡƒΠΌΠ°Ρ‚ΡŒ ΠΎ Ρ‚ΠΎΠΌ ΠΊΠ°ΠΊ Π»ΡƒΡ‡ΡˆΠ΅ ΠΈΡ… ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ.

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ рассмотрим ΠΎΠ±Π° ΠΏΠ°ΠΊΠ΅Ρ‚Π° для Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ…:

Π—Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Π΄Π°Π½Π½Ρ‹Ρ… Π² 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")

Π—Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Π΄Π°Π½Π½Ρ‹Ρ… Π² 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")

Π’ ΠΏΠ°ΠΊΠ΅Ρ‚Π΅ vroom, Π½Π΅ зависимо ΠΎΡ‚ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Π΄Π°Π½Π½Ρ‹Ρ… csv / tsv Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° осущСствляСтся ΠΎΠ΄Π½ΠΎΠΈΠΌΡ‘Π½Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ vroom(), Π² ΠΏΠ°ΠΊΠ΅Ρ‚Π΅ readr ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΏΠΎΠ΄ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ свою Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ read_tsv() ΠΈ read_csv().

Π—Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Π΄Π°Π½Π½Ρ‹Ρ… Π² R: data.table

Π’ data.table для Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ… присутствуСт функция fread().

Π—Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Π΄Π°Π½Π½Ρ‹Ρ… Π² 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")

Π—Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Π΄Π°Π½Π½Ρ‹Ρ… Π² Python: pandas

Если ΡΡ€Π°Π²Π½ΠΈΠ²Π°Ρ‚ΡŒ с R ΠΏΠ°ΠΊΠ΅Ρ‚Π°ΠΌΠΈ, Ρ‚ΠΎ Π² Π΄Π°Π½Π½ΠΎΠΌ случаС Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π±Π»ΠΈΠ·ΠΊΠΈΠΌ ΠΏΠΎ синтаксису ΠΊ pandas Π±ΡƒΠ΄Π΅Ρ‚ readr, Ρ‚.ΠΊ. pandas ΡƒΠΌΠ΅Π΅Ρ‚ Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΎΡ‚ ΠΊΡƒΠ΄Π° ΡƒΠ³ΠΎΠ΄Π½ΠΎ, ΠΈ Π² этом ΠΏΠ°ΠΊΠ΅Ρ‚Π΅ присутствуСт Ρ†Π΅Π»ΠΎΠ΅ сСмСйство Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ read_*().

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

И ΠΌΠ½ΠΎΠ³ΠΎ Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½Ρ‹Ρ… для чтСния Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· всСвозмоТных Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΎΠ². Но для Π½Π°ΡˆΠΈΡ… Ρ†Π΅Π»Π΅ΠΉ достаточно read_table() ΠΈΠ»ΠΈ read_csv() с использованиСм Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° sep для указания раздСлитСля столбцов.

Π—Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Π΄Π°Π½Π½Ρ‹Ρ… Π² 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")

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π΄Π°Ρ‚Π°Ρ„Ρ€Π΅ΠΉΠΌΠΎΠ²

Π’ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ titanic, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΡ‹ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΠ»ΠΈ, Π΅ΡΡ‚ΡŒ ΠΏΠΎΠ»Π΅ Sex, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ хранится ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ΠΏΠΎΠ»Π° пассаТира.

Но для Π±ΠΎΠ»Π΅Π΅ ΡƒΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ прСдставлСния Π΄Π°Π½Π½Ρ‹Ρ… Π² Ρ€Π°Π·Ρ€Π΅Π·Π΅ ΠΏΠΎΠ»Π° пассаТира слСдуСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π½Π΅ ΠΊΠΎΠ΄ ΠΏΠΎΠ»Π°, Π° Π½Π°Π·Π²Π°Π½ΠΈΠ΅.

Для этого ΠΌΡ‹ создадим нСбольшой справочник, Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π±ΡƒΠ΄Π΅Ρ‚ всСго 2 столбца (ΠΊΠΎΠ΄ ΠΈ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΏΠΎΠ»Π°) ΠΈ 2 строки соотвСтствСнно.

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π΄Π°Ρ‚Π°Ρ„Ρ€Π΅ΠΉΠΌΠ° Π² R: tidyverse, dplyr

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Π½Π½ΠΎΠΌ Π½ΠΈΠΆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΊΠΎΠ΄Π° ΠΌΡ‹ создаём Π½ΡƒΠΆΠ½Ρ‹ΠΉ Π΄Π°Ρ‚Π°Ρ„Ρ€Π΅ΠΉΠΌ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ tibble() .

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π΄Π°Ρ‚Π°Ρ„Ρ€Π΅ΠΉΠΌΠ° Π² R: dplyr

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

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π΄Π°Ρ‚Π°Ρ„Ρ€Π΅ΠΉΠΌΠ° Π² R: data.table

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π΄Π°Ρ‚Π°Ρ„Ρ€Π΅ΠΉΠΌΠ° Π² R: data.table

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

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π΄Π°Ρ‚Π°Ρ„Ρ€Π΅ΠΉΠΌΠ° Π² Python: pandas

Π’ pandas созданиС Ρ„Ρ€Π΅ΠΉΠΌΠΎΠ² осущСствляСтся Π² нСсколько этапов, спСрва ΠΌΡ‹ создаём ΡΠ»ΠΎΠ²Π°Ρ€ΡŒ, Π° ΠΏΠΎΡ‚ΠΎΠΌ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅ΠΌ ΡΠ»ΠΎΠ²Π°Ρ€ΡŒ Π² Π΄Π°Ρ‚Π°Ρ„Ρ€Π΅ΠΉΠΌ.

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π΄Π°Ρ‚Π°Ρ„Ρ€Π΅ΠΉΠΌΠ° Π² Python: pandas

# создаём Π΄Π°Ρ‚Π° Ρ„Ρ€Π΅ΠΉΠΌ
gender_dict = {'id': [1, 2],
               'gender': ["female", "male"]}
# ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅ΠΌ ΡΠ»ΠΎΠ²Π°Ρ€ΡŒ Π² Π΄Π°Ρ‚Π°Ρ„Ρ€Π΅ΠΉΠΌ
gender = pd.DataFrame.from_dict(gender_dict)

Π’Ρ‹Π±ΠΎΡ€ столбцов

Π’Π°Π±Π»ΠΈΡ†Ρ‹ с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ Π²Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ дСсятки, ΠΈ Π΄Π°ΠΆΠ΅ сотни столбцов с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ. Но для провСдСния Π°Π½Π°Π»ΠΈΠ·Π°, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, Π²Π°ΠΌ Π½ΡƒΠΆΠ½Ρ‹ Π΄Π°Π»Π΅ΠΊΠΎ Π½Π΅ всС столбцы ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ доступны Π² исходной Ρ‚Π°Π±Π»ΠΈΡ†Π΅.

Какой язык Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ — R ΠΈΠ»ΠΈ Python? Оба! ΠœΠΈΠ³Ρ€ΠΈΡ€ΡƒΠ΅ΠΌ с pandas Π½Π° tidyverse ΠΈ data.table ΠΈ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ

ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· ΠΏΠ΅Ρ€Π²Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ с исходной Ρ‚Π°Π±Π»ΠΈΡ†Π΅ΠΉ, это очистка Π΅Ρ‘ ΠΎΡ‚ Π½Π΅Π½ΡƒΠΆΠ½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, ΠΈ освобоТдСниС памяти ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ эта информация Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚.

Π’Ρ‹Π±ΠΎΡ€ столбцов Π² R: tidyverse, dplyr

Бинтаксис dplyr ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΡ…ΠΎΠΆ Π½Π° язык запросов SQL, Ссли Π²Ρ‹ с Π½ΠΈΠΌ Π·Π½Π°ΠΊΠΎΠΌΡ‹ Ρ‚ΠΎ довольно быстро ΠΎΠ²Π»Π°Π΄Π΅Π΅Ρ‚Π΅ этим ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠΌ.

Для Π²Ρ‹Π±ΠΎΡ€Π° столбцов ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ функция select().

НиТС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΊΠΎΠ΄Π° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ столбцы ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌΠΈ способами:

  • ΠŸΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»ΠΈΠ² названия Π½ΡƒΠΆΠ½Ρ‹Ρ… столбцов
  • ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΊ ΠΈΠΌΠ΅Π½Π°ΠΌ столбцов ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ рСгулярныС выраТСния
  • По Ρ‚ΠΈΠΏΡƒ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ»ΠΈ Π»ΡŽΠ±ΠΎΠΌΡƒ Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ свойству Π΄Π°Π½Π½Ρ‹Ρ… ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ содСрТатся Π² столбцС

Π’Ρ‹Π±ΠΎΡ€ столбцов Π² 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)

Π’Ρ‹Π±ΠΎΡ€ столбцов Π² R: data.table

Π’Π΅ ΠΆΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π² data.table Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ нСсколько ΠΈΠ½Π°Ρ‡Π΅, Π² Π½Π°Ρ‡Π°Π»Π΅ ΡΡ‚Π°Ρ‚ΡŒΠΈ я ΠΏΡ€ΠΈΠ²Ρ‘Π» описаниС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊΠΈΠ΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ Π΅ΡΡ‚ΡŒ Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Ρ… скобок Π² data.table.

DT[i,j,by]

Π“Π΄Π΅:
i β€” where, Ρ‚.Π΅. Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΡ ΠΏΠΎ строкам
j β€” select|update|do, Ρ‚.Π΅. Π²Ρ‹Π±ΠΎΡ€ столбцов ΠΈ ΠΈΡ… ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅
by β€” Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²ΠΊΠ° Π΄Π°Π½Π½Ρ‹Ρ…

Π’Ρ‹Π±ΠΎΡ€ столбцов Π² 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$")]

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ .SD позволяСт Π²Π°ΠΌ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΊΠΎ всСм столбцам, Π° .SDcols ΠΎΡ‚Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ²Π°Ρ‚ΡŒ Π½ΡƒΠΆΠ½Ρ‹Π΅ столбцы ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ рСгулярныС выраТСния, ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ для Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΠΈ Π½Π°Π·Π²Π°Π½ΠΈΠΉ Π½ΡƒΠΆΠ½Ρ‹Ρ… Π²Π°ΠΌ столбцов.

Π’Ρ‹Π±ΠΎΡ€ столбцов Π² Python, pandas

Для Π²Ρ‹Π±ΠΎΡ€Π° столбцов ΠΏΠΎ названию Π² pandas достаточно ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ список ΠΈΡ… Π½Π°Π·Π²Π°Π½ΠΈΠΉ. А для Π²Ρ‹Π±ΠΎΡ€Π° ΠΈΠ»ΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ столбцов ΠΏΠΎ названию ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ рСгулярныС выраТСния Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ drop() ΠΈ filter(), ΠΈ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ axis=1, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π²Ρ‹ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚Π΅, Ρ‡Ρ‚ΠΎ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ Π½Π°Π΄ΠΎ Π½Π΅ строки Π° столбцы.

Для Π²Ρ‹Π±ΠΎΡ€Π° поля ΠΏΠΎ Ρ‚ΠΈΠΏΡƒ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ select_dtypes(), ΠΈ Π² Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ include ΠΈΠ»ΠΈ exclude ΠΏΠ΅Ρ€Π΅Π΄Π°ΠΉΡ‚Π΅ список Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ… ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ Ρ‚Π΅ΠΌ, ΠΊΠ°ΠΊΠΈΠ΅ поля Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ.

Π’Ρ‹Π±ΠΎΡ€ столбцов Π² 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'])

Π€ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΡ строк

НапримСр, Π² исходной Ρ‚Π°Π±Π»ΠΈΡ†Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒΡΡ Π΄Π°Π½Π½Ρ‹Π΅ Π·Π° нСсколько Π»Π΅Ρ‚, Π° Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡ€ΠΎΠ°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΎΡˆΠ»Ρ‹ΠΉ мСсяц. ΠžΠΏΡΡ‚ΡŒ ΠΆΠ΅, лишниС строки замСдлят процСсс ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ Π±ΡƒΠ΄ΡƒΡ‚ Π·Π°ΡΠΎΡ€ΡΡ‚ΡŒ ΠΏΠ°ΠΌΡΡ‚ΡŒ ПК.

Какой язык Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ — R ΠΈΠ»ΠΈ Python? Оба! ΠœΠΈΠ³Ρ€ΠΈΡ€ΡƒΠ΅ΠΌ с pandas Π½Π° tidyverse ΠΈ data.table ΠΈ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ

Π€ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΡ строк Π² R: tydyverse, dplyr

Π’ dplyr для Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΠΈ строк ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ функция filter(). Π’ качСствС ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° ΠΎΠ½Π° ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π΄Π°Ρ‚Π°Ρ„Ρ€Π΅ΠΉΠΌ, Π΄Π°Π»Π΅Π΅ Π²Ρ‹ пСрСчисляСтС условия Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΠΈ.

ΠŸΡ€ΠΈ написании логичСских Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ для Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΠΈ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π² Π΄Π°Π½Π½ΠΎΠΌ случаС ΠΈΠΌΠ΅Π½Π° столбцов ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚Π΅ Π±Π΅Π· ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ, ΠΈ Π±Π΅Π· объявлСния ΠΈΠΌΠ΅Π½ΠΈ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹.

ΠŸΡ€ΠΈΠΌΠ΅Π½ΡΡ для Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΠΈ нСсколько логичСских Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹:

  • & ΠΈΠ»ΠΈ запятая β€” логичСскоС И
  • | β€” логичСскоС Π˜Π›Π˜

Π€ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΡ строк Π² R: dplyr

# Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΡ строк
## dplyr
### Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΡ строк ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡƒ ΡƒΡΠ»ΠΎΠ²ΠΈΡŽ
filter(ga_nov, source == "google")
### Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ ΠΏΠΎ Π΄Π²ΡƒΠΌ условиям соСдинённым логичСским ΠΈ
filter(ga_nov, source == "google" & sessions >= 10)
### Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ ΠΏΠΎ Π΄Π²ΡƒΠΌ условиям соСдинённым логичСским ΠΈΠ»ΠΈ
filter(ga_nov, source == "google" | sessions >= 10)

Π€ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΡ строк Π² R: data.table

Как я ΡƒΠΆΠ΅ писал Π²Ρ‹ΡˆΠ΅, Π² data.table синтаксис прСобразования Π΄Π°Π½Π½Ρ‹Ρ… Π·Π°ΠΊΠ»ΡŽΡ‡Ρ‘Π½ Π² ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Π΅ скобки.

DT[i,j,by]

Π“Π΄Π΅:
i β€” where, Ρ‚.Π΅. Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΡ ΠΏΠΎ строкам
j β€” select|update|do, Ρ‚.Π΅. Π²Ρ‹Π±ΠΎΡ€ столбцов ΠΈ ΠΈΡ… ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅
by β€” Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²ΠΊΠ° Π΄Π°Π½Π½Ρ‹Ρ…

Для Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΠΈ строк ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ i, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ Π² ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Ρ… скобках.

ΠžΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΊ столбцам Π² логичСских выраТСниях осущСствляСтся Π±Π΅Π· ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ ΠΈ указания ΠΈΠΌΠ΅Π½ΠΈ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹.

ЛогичСскиС выраТСния ΡΠ²ΡΠ·Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΌΠ΅ΠΆΠ΄Ρƒ собой Ρ‚Π°ΠΊ ΠΆΠ΅ ΠΊΠ°ΠΊ ΠΈ Π² dplyr Ρ‡Π΅Ρ€Π΅Π· ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ & ΠΈ |.

Π€ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΡ строк Π² R: data.table

## data.table
### Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΡ строк ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡƒ ΡƒΡΠ»ΠΎΠ²ΠΈΡŽ
ga_nov[source == "google"]
### Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ ΠΏΠΎ Π΄Π²ΡƒΠΌ условиям соСдинённым логичСским ΠΈ
ga_nov[source == "google" & sessions >= 10]
### Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ ΠΏΠΎ Π΄Π²ΡƒΠΌ условиям соСдинённым логичСским ΠΈΠ»ΠΈ
ga_nov[source == "google" | sessions >= 10]

Π€ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΡ строк Π² Python: pandas

Π€ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΡ ΠΏΠΎ строкам Π² pandas схоТа с Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΠ΅ΠΉ Π² data.table, ΠΈ осущСствляСтся Π² ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Ρ… скобках.

ΠžΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΊ столбцам Π² Π΄Π°Π½Π½ΠΎΠΌ случаС осущСствляСтся ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ с ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ ΠΈΠΌΠ΅Π½ΠΈ Π΄Π°Ρ‚Π°Ρ„Ρ€Π΅ΠΉΠΌΠ°, Π΄Π°Π»Π΅Π΅ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ столбца ΠΌΠΎΠΆΠ½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π² ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ°Ρ… Π² ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Ρ… скобках (ΠΏΡ€ΠΈΠΌΠ΅Ρ€ df['col_name']), Π»ΠΈΠ±ΠΎ Π±Π΅Π· ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ послС Ρ‚ΠΎΡ‡ΠΊΠΈ (ΠΏΡ€ΠΈΠΌΠ΅Ρ€ df.col_name).

Π’ случаС, Ссли Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΡ‚Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π°Ρ‚Π°Ρ„Ρ€Π΅ΠΉΠΌ ΠΏΠΎ нСскольким условиям, ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ ΠΈΠ· условий Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²Π·ΡΡ‚ΡŒ Π² ΠΊΡ€ΡƒΠ³Π»Ρ‹Π΅ скобки. Π‘Π²ΡΠ·Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΌΠ΅ΠΆΠ΄Ρƒ собой логичСский условия ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°ΠΌΠΈ & ΠΈ |.

Π€ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΡ строк Π² 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)]

Π“Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²ΠΊΠ° ΠΈ агрСгация Π΄Π°Π½Π½Ρ‹Ρ…

Одна ΠΈΠ· Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Π² Π°Π½Π°Π»ΠΈΠ·Π΅ Π΄Π°Π½Π½Ρ‹Ρ… β€” Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²ΠΊΠ° ΠΈ агрСгация.

Какой язык Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ — R ΠΈΠ»ΠΈ Python? Оба! ΠœΠΈΠ³Ρ€ΠΈΡ€ΡƒΠ΅ΠΌ с pandas Π½Π° tidyverse ΠΈ data.table ΠΈ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ

Бинтаксис для выполнСния этих ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Ρ€Π°Π·Ρ€ΠΎΠ·Π½Π΅Π½ Π²ΠΎ всСх рассматриваСмых Π½Π°ΠΌΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚Π°Ρ….

Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС Π² качСствС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° ΠΌΡ‹ Π²ΠΎΠ·ΡŒΠΌΡ‘ΠΌ Π΄Π°Ρ‚Π°Ρ„Ρ€Π΅ΠΉΠΌ titanic, ΠΈ посчитаСм количСство ΠΈ ΡΡ€Π΅Π΄Π½ΡŽΡŽ ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒ Π±ΠΈΠ»Π΅Ρ‚ΠΎΠ² Π² зависимости ΠΎΡ‚ класса ΠΊΠ°ΡŽΡ‚Ρ‹.

Π“Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²ΠΊΠ° ΠΈ агрСгация Π΄Π°Π½Π½Ρ‹Ρ… Π² R: tidyverse, dplyr

Π’ dplyr для Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²ΠΊΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ функция group_by(), Π° для Π°Π³Ρ€Π΅Π³Π°Ρ†ΠΈΠΈ summarise(). На самом Π΄Π΅Π»Π΅ Ρƒ dplyr Π΅ΡΡ‚ΡŒ Ρ†Π΅Π»ΠΎΠ΅ сСмСйство Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ summarise_*(), Π½ΠΎ Ρ†Π΅Π»ΡŒ этой ΡΡ‚Π°Ρ‚ΡŒΠΈ ΡΡ€Π°Π²Π½ΠΈΡ‚ΡŒ Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ синтаксис, поэтому Π½Π΅ Π±ΡƒΠ΄Π΅ΠΌ Π»Π΅Π·Ρ‚ΡŒ Π² Ρ‚Π°ΠΊΠΈΠ΅ Π΄Π΅Π±Ρ€ΠΈ.

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ Π°Π³Ρ€Π΅Π³ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ:

  • sum() β€” суммированиС
  • min() / max() β€” минимальноС ΠΈ максимальноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅
  • mean() β€” срСднСС арифмСтичСскоС
  • median() β€” ΠΌΠ΅Π΄ΠΈΠ°Π½Π°
  • length() β€” количСство

Π“Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²ΠΊΠ° ΠΈ агрСгация Π² R: dplyr

## dplyr
### Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²ΠΊΠ° ΠΈ агрСгация строк
group_by(titanic, Pclass) %>%
  summarise(passangers = length(PassengerId),
            avg_price  = mean(Fare))

Π’ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ group_by() Π² качСствС ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°Π»ΠΈ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ titanic, ΠΈ Π΄Π°Π»Π΅Π΅ ΡƒΠΊΠ°Π·Π°Π»ΠΈ ΠΏΠΎΠ»Π΅ Pclass, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π°ΡˆΡƒ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ этой ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° %>% ΠΏΠ΅Ρ€Π΅Π΄Π°Π»ΠΈ Π² качСствС ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ summarise(), ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ Π΅Ρ‰Ρ‘ 2 поля: passangers ΠΈ avg_price. Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΌ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ length() рассчитали количСство Π±ΠΈΠ»Π΅Ρ‚ΠΎΠ², Π° Π²ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ mean() ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ ΡΡ€Π΅Π΄Π½ΡŽΡŽ ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒ Π±ΠΈΠ»Π΅Ρ‚Π°.

Π“Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²ΠΊΠ° ΠΈ агрСгация Π΄Π°Π½Π½Ρ‹Ρ… Π² R: data.table

Π’ data.table для Π°Π³Ρ€Π΅Π³Π°Ρ†ΠΈΠΈ слуТит Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ j ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΠΌΠ΅Π΅Ρ‚ Π²Ρ‚ΠΎΡ€ΡƒΡŽ ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ Π² ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Ρ… скобках, Π° для Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²ΠΊΠΈ by ΠΈΠ»ΠΈ keyby, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ Ρ‚Ρ€Π΅Ρ‚ΡŒΡŽ ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ.

Бписок Π°Π³Ρ€Π΅Π³ΠΈΡ€ΡƒΡŽΡ‰ΠΈΡ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π² Π΄Π°Π½Π½ΠΎΠΌ случаС ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π΅Π½ описанному Π² dplyr, Ρ‚.ΠΊ. это Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈΠ· Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ синтаксиса R.

Π“Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²ΠΊΠ° ΠΈ агрСгация Π² R: data.table

## data.table
### Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΡ строк ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡƒ ΡƒΡΠ»ΠΎΠ²ΠΈΡŽ
titanic[, .(passangers = length(PassengerId),
            avg_price  = mean(Fare)),
        by = Pclass]

Π“Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²ΠΊΠ° ΠΈ агрСгация Π΄Π°Π½Π½Ρ‹Ρ… Π² Python: pandas

Π“Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²ΠΊΠ° Π² pandas схоТа с dplyr, Π° Π²ΠΎΡ‚ агрСгация Π½Π΅ ΠΏΠΎΡ…ΠΎΠΆΠ° Π½ΠΈ Π½Π° dplyr Π½ΠΈ Π½Π° data.table.

Для Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²ΠΊΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ groupby(), Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ список столбцов, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Π±ΡƒΠ΄Π΅Ρ‚ сгруппирован Π΄Π°Ρ‚Π°Ρ„Ρ€Π΅ΠΉΠΌ.

Для Π°Π³Ρ€Π΅Π³Π°Ρ†ΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ agg(), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ ΡΠ»ΠΎΠ²Π°Ρ€ΡŒ. ΠšΠ»ΡŽΡ‡Π°ΠΌΠΈ словаря ΡΠ²Π»ΡΡŽΡ‚ΡΡ столбцы ΠΊ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Π²Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚Π΅ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ Π°Π³Ρ€Π΅Π³ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π° значСниями Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΠΌΠ΅Π½Π° Π°Π³Ρ€Π΅Π³ΠΈΡ€ΡƒΡŽΡ‰ΠΈΡ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ.

ΠΠ³Ρ€Π΅Π³ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ:

  • sum() β€” суммированиС
  • min() / max() β€” минимальноС ΠΈ максимальноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅
  • mean() β€” срСднСС арифмСтичСскоС
  • median() β€” ΠΌΠ΅Π΄ΠΈΠ°Π½Π°
  • count() β€” количСство

Ѐункция reset_index() Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π½ΠΈΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Π±Ρ‹ ΡΠ±Ρ€ΠΎΡΠΈΡ‚ΡŒ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ индСксы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ pandas ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ устанавливаСт послС Π°Π³Ρ€Π΅Π³Π°Ρ†ΠΈΠΈ Π΄Π°Π½Π½Ρ‹Ρ….

Π‘ΠΈΠΌΠ²ΠΎΠ» позволяСт Π²Π°ΠΌ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ строку.

Π“Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²ΠΊΠ° ΠΈ агрСгация Π² Python: pandas

# Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²ΠΊΠ° ΠΈ агрСгация Π΄Π°Π½Π½Ρ‹Ρ…
titanic.groupby(["Pclass"]).
    agg({'PassengerId': 'count', 'Fare': 'mean'}).
        reset_index()

Π’Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠ΅ объСдинСниС Ρ‚Π°Π±Π»ΠΈΡ†

ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΡ, ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π²Ρ‹ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΠ΅Ρ‚Π΅ Π΄Π²Π΅ ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ Ρ‚Π°Π±Π»ΠΈΡ† ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎΠΉ структуры. Π’ Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½Π½Ρ‹Ρ… Π½Π°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ Π΅ΡΡ‚ΡŒ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ga_nov ΠΈ ga_dec. Π­Ρ‚ΠΈ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ ΠΏΠΎ структурС, Ρ‚.Π΅. ΠΈΠΌΠ΅ΡŽΡ‚ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Π΅ столбцы, ΠΈ Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… Π² этих столбцах.

Какой язык Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ — R ΠΈΠ»ΠΈ Python? Оба! ΠœΠΈΠ³Ρ€ΠΈΡ€ΡƒΠ΅ΠΌ с pandas Π½Π° tidyverse ΠΈ data.table ΠΈ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ

Π­Ρ‚ΠΎ Π²Ρ‹Π³Ρ€ΡƒΠ·ΠΊΠ° ΠΈΠ· Google Analytics Π·Π° Π½ΠΎΡΠ±Ρ€ΡŒ ΠΈ Π΄Π΅ΠΊΠ°Π±Ρ€ΡŒ мСсяц, Π² этом Ρ€Π°Π·Π΄Π΅Π»Π΅ ΠΌΡ‹ объСдим эти Π΄Π°Π½Π½Ρ‹Π΅ Π² ΠΎΠ΄Π½Ρƒ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ.

Π’Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠ΅ объСдинСниС Ρ‚Π°Π±Π»ΠΈΡ† Π² R: tidyverse, dplyr

Π’ dplyr ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ 2 Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π² ΠΎΠ΄Π½Ρƒ ΠΌΠΎΠΆΠ½ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ bind_rows(), ΠΏΠ΅Ρ€Π΅Π΄Π°Π² Π² качСствС Π΅Ρ‘ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹.

Π€ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΡ строк Π² R: dplyr

# Π’Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠ΅ объСдинСниС Ρ‚Π°Π±Π»ΠΈΡ†
## dplyr
bind_rows(ga_nov, ga_dec)

Π’Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠ΅ объСдинСниС Ρ‚Π°Π±Π»ΠΈΡ† Π² R: data.table

Π’Π°ΠΊ ΠΆΠ΅ Π½ΠΈΡ‡Π΅Π³ΠΎ слоТного, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ rbind().

Π€ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΡ строк Π² R: data.table

## data.table
rbind(ga_nov, ga_dec)

Π’Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠ΅ объСдинСниС Ρ‚Π°Π±Π»ΠΈΡ† Π² Python: pandas

Π’ pandas для объСдинСния Ρ‚Π°Π±Π»ΠΈΡ† слуТит функция concat(), Π² ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ список Ρ„Ρ€Π΅ΠΉΠΌΠΎΠ² для ΠΈΡ… объСдинСния.

Π€ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΡ строк Π² Python: pandas

# Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠ΅ объСдинСниС Ρ‚Π°Π±Π»ΠΈΡ†
pd.concat([ga_nov, ga_dec])

Π“ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΡŒΠ½ΠΎΠ΅ объСдинСниС Ρ‚Π°Π±Π»ΠΈΡ†

ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΡ ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ, ΠΊ ΠΏΠ΅Ρ€Π²ΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ Π΄ΠΎΠ±Π°Π²Π»ΡΡŽΡ‚ΡΡ столбцы ΠΈΠ· Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΏΠΎ ΠΊΠ»ΡŽΡ‡Ρƒ. Π—Π°Ρ‡Π°ΡΡ‚ΡƒΡŽ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΏΡ€ΠΈ ΠΎΠ±ΠΎΠ³Π°Ρ‰Π΅Π½ΠΈΠΈ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Ρ„Π°ΠΊΡ‚ΠΎΠ² (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΎ ΠΏΡ€ΠΎΠ΄Π°ΠΆΠ°Ρ…), Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ справочными Π΄Π°Π½Π½Ρ‹ΠΌΠΈ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒΡŽ Ρ‚ΠΎΠ²Π°Ρ€Π°).

Какой язык Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ — R ΠΈΠ»ΠΈ Python? Оба! ΠœΠΈΠ³Ρ€ΠΈΡ€ΡƒΠ΅ΠΌ с pandas Π½Π° tidyverse ΠΈ data.table ΠΈ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ

Π•ΡΡ‚ΡŒ нСсколько Ρ‚ΠΈΠΏΠΎΠ² объСдинСния:

Какой язык Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ — R ΠΈΠ»ΠΈ Python? Оба! ΠœΠΈΠ³Ρ€ΠΈΡ€ΡƒΠ΅ΠΌ с pandas Π½Π° tidyverse ΠΈ data.table ΠΈ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ

Π’ Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½Π½ΠΎΠΉ Ρ€Π°Π½Π΅Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ titanic Ρƒ нас имССтся столбСц Sex, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ соотвСтствуСт ΠΊΠΎΠ΄Ρƒ ΠΏΠΎΠ»Π° пассаТира:

1 β€” ТСнский
2 β€” муТской

Π’Π°ΠΊΠΆΠ΅, ΠΌΡ‹ с Π²Π°ΠΌΠΈ создали Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ β€” справочник gender. Для Π±ΠΎΠ»Π΅Π΅ ΡƒΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ прСдставлСния Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠΎ ΠΏΠΎΠ»Ρƒ пассаТиров Π½Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΏΠΎΠ»Π°, ΠΈΠ· справочника gender Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ titanic.

Π“ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΡŒΠ½ΠΎΠ΅ объСдинСниС Ρ‚Π°Π±Π»ΠΈΡ† Π² R: tidyverse, dplyr

Π’ dplyr для Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ объСдинСния присутствуСт Ρ†Π΅Π»ΠΎΠ΅ сСмСйство Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ:

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

НаиболСС часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠΉ Π² ΠΌΠΎΠ΅ΠΉ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ являСтся left_join().

Π’ качСствС ΠΏΠ΅Ρ€Π²Ρ‹Ρ… Π΄Π²ΡƒΡ… Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² пСрСчислСнныС Π²Ρ‹ΡˆΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‚ Π΄Π²Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ для объСдинСния, Π° Π² качСствС Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅Π³ΠΎ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° by Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ столбцы для объСдинСния.

Π“ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΡŒΠ½ΠΎΠ΅ объСдинСниС Ρ‚Π°Π±Π»ΠΈΡ† Π² R: dplyr

# объСдиняСм Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹
left_join(titanic, gender,
          by = c("Sex" = "id"))

Π“ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΡŒΠ½ΠΎΠ΅ объСдинСниС Ρ‚Π°Π±Π»ΠΈΡ† Π² R: data.table

Π’ data.table ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΡ‚ΡŒ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΏΠΎ ΠΊΠ»ΡŽΡ‡Ρƒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ merge().

АргумСнты Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ merge() Π² data.table

  • x, y β€” Π’Π°Π±Π»ΠΈΡ†Ρ‹ для объСлинСния
  • by β€” Π‘Ρ‚ΠΎΠ»Π±Π΅Ρ†, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ являСтся ΠΊΠ»ΡŽΡ‡ΠΎΠΌ для объСдинСния, Ссли Π² ΠΎΠ±Π΅ΠΈΡ… Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ… ΠΎΠ½ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎΠ΅ Π½Π°Π·Π²Π°Π½ΠΈΠ΅
  • by.x, by.y β€” ИмСна столбцов для объСдинСния, Π² случаС Ссли Π² Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ… ΠΎΠ½ΠΈ ΠΈΠΌΠ΅ΡŽΡ‚ Ρ€Π°Π·Π½ΠΎΠ΅ Π½Π°Π·Π²Π°Π½ΠΈΠ΅
  • all, all.x, all.y β€” Π’ΠΈΠΏ соСдинСния, all Π²Π΅Ρ€Π½Ρ‘Ρ‚ всС строки ΠΈΠ· ΠΎΠ±Π΅ΠΈΡ… Ρ‚Π°Π±Π»ΠΈΡ†, all.x соотвСтствуСт ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ LEFT JOIN (оставит всС строки ΠΏΠ΅Ρ€Π²ΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹), all.y β€” соотвСтствуСт ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ RIGHT JOIN (оставит всС строки Π²Ρ‚ΠΎΡ€ΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹).

Π“ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΡŒΠ½ΠΎΠ΅ объСдинСниС Ρ‚Π°Π±Π»ΠΈΡ† Π² R: data.table

# объСдиняСм Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹
merge(titanic, gender, by.x = "Sex", by.y = "id", all.x = T)

Π“ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΡŒΠ½ΠΎΠ΅ объСдинСниС Ρ‚Π°Π±Π»ΠΈΡ† Π² Python: pandas

Π’Π°ΠΊ ΠΆΠ΅ ΠΊΠ°ΠΊ ΠΈ Π² data.table, Π² pandas для объСдинСния Ρ‚Π°Π±Π»ΠΈΡ† ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ функция merge().

АргумСнты Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ merge() Π² pandas

  • how β€” Π’ΠΈΠΏ соСдинСния: left, right, outer, inner
  • on β€” Π‘Ρ‚ΠΎΠ»Π±Π΅Ρ†, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ являСтся ΠΊΠ»ΡŽΡ‡ΠΎΠΌ, Π² случаС Ссли ΠΈΠΌΠ΅Π΅Ρ‚ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎΠ΅ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Π² ΠΎΠ±Π΅ΠΈΡ… Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ…
  • left_on, right_on β€” ИмСна столбцов ΠΊΠ»ΡŽΡ‡Π΅ΠΉ, Π² случаС Ссли ΠΎΠ½ΠΈ ΠΈΠΌΠ΅ΡŽΡ‚ Ρ€Π°Π·Π½Ρ‹Π΅ ΠΈΠΌΠ΅Π½Π° Π² Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ…

Π“ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΡŒΠ½ΠΎΠ΅ объСдинСниС Ρ‚Π°Π±Π»ΠΈΡ† Π² Python: pandas

# объСдиняСм ΠΏΠΎ ΠΊΠ»ΡŽΡ‡Ρƒ
titanic.merge(gender, how = "left", left_on = "Sex", right_on = "id")

ΠŸΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠΈΠ΅ ΠΎΠΊΠΎΠ½Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ вычисляСмыС столбцы

ΠžΠΊΠΎΠ½Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΠΎ смыслу ΠΏΠΎΡ…ΠΎΠΆΠΈ Π½Π° Π°Π³Ρ€Π΅Π³ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠ΅, ΠΈ Ρ‚Π°ΠΊ ΠΆΠ΅ часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π² Π°Π½Π°Π»ΠΈΠ·Π΅ Π΄Π°Π½Π½Ρ‹Ρ…. Но Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ Π°Π³Ρ€Π΅Π³ΠΈΡ€ΡƒΡŽΡ‰ΠΈΡ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΎΠΊΠΎΠ½Π½Ρ‹Π΅ Π½Π΅ ΠΌΠ΅Π½ΡΡŽΡ‚ количСство строк исходящСго Π΄Π°Ρ‚Π°Ρ„Ρ€Π΅ΠΉΠΌΠ°.

Какой язык Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ — R ΠΈΠ»ΠΈ Python? Оба! ΠœΠΈΠ³Ρ€ΠΈΡ€ΡƒΠ΅ΠΌ с pandas Π½Π° tidyverse ΠΈ data.table ΠΈ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ

По сути с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠΊΠΎΠ½Π½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΌΡ‹ Ρ€Π°Π·Π±ΠΈΠ²Π°Π΅ΠΌ входящий Π΄Π°Ρ‚Π°Ρ„Ρ€Π΅ΠΉΠΌ Π½Π° части ΠΏΠΎ ΠΊΠ°ΠΊΠΎΠΌΡƒ-Ρ‚ΠΎ ΠΏΡ€ΠΈΠ·Π½Π°ΠΊΡƒ, Ρ‚.Π΅. ΠΏΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ поля, ΠΈΠ»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΏΠΎΠ»Π΅ΠΉ. И ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΠΌ Π½Π°Π΄ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΌ ΠΎΠΊΠ½ΠΎΠΌ арифмСтичСскиС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ этих ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Π±ΡƒΠ΄Π΅Ρ‚ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Ρ‘Π½ Π² ΠΊΠ°ΠΆΠ΄ΡƒΡŽ строку, Ρ‚.Π΅. Π½Π΅ измСняя ΠΎΠ±Ρ‰Π΅Π³ΠΎ количСства строк Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅.

Для ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° Π²ΠΎΠ·ΡŒΠΌΡ‘ΠΌ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ titanic. ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΊΠ°ΠΊΠΎΠΉ ΠΏΡ€ΠΎΡ†Π΅Π½Ρ‚ составила ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π±ΠΈΠ»Π΅Ρ‚Π° Π² Ρ€Π°ΠΌΠΊΠ°Ρ… Π΅Π³ΠΎ класса ΠΊΠ°ΡŽΡ‚.

Для этого Π½Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ строкС ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΎΠ±Ρ‰ΡƒΡŽ ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒ Π±ΠΈΠ»Π΅Ρ‚Π° ΠΏΠΎ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌΡƒ классу ΠΊΠ°ΡŽΡ‚, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ относится Π±ΠΈΠ»Π΅Ρ‚ Π² Π΄Π°Π½Π½ΠΎΠΉ строкС, ΠΏΠΎΡ‚ΠΎΠΌ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π±ΠΈΠ»Π΅Ρ‚Π° Π½Π° ΠΎΠ±Ρ‰ΡƒΡŽ ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒ всСх Π±ΠΈΠ»Π΅Ρ‚ΠΎΠ² этого ΠΆΠ΅ класса ΠΊΠ°ΡŽΡ‚.

ΠžΠΊΠΎΠ½Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² R: tidyverse, dplyr

Для добавлСния Π½ΠΎΠ²Ρ‹Ρ… столбцов, Π±Π΅Π· примСнСния Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²ΠΊΠΈ строк, Π² dplyr слуТит функция mutate().

Π Π΅ΡˆΠΈΡ‚ΡŒ ΠΎΠΏΠΈΡΠ°Π½Π½ΡƒΡŽ Π²Ρ‹ΡˆΠ΅ Π·Π°Π΄Π°Ρ‡Ρƒ ΠΌΠΎΠΆΠ½ΠΎ сгруппировав Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΠΎ полю Pclass ΠΈ просуммировав Π² Π½ΠΎΠ²ΠΎΠΌ столбцС ΠΏΠΎΠ»Π΅ Fare. Π”Π°Π»Π΅Π΅ Ρ€Π°Π·Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²Ρ‹Π²Π°Π΅ΠΌ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ ΠΈ Π΄Π΅Π»ΠΈΠΌ значСния поля Fare Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΎΡΡŒ Π² ΠΏΡ€ΠΎΡˆΠ»ΠΎΠΌ шагС.

ΠžΠΊΠΎΠ½Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² R: dplyr

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

ΠžΠΊΠΎΠ½Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² R: data.table

Алгоритм Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ остаётся Ρ‚Π°ΠΊΠΎΠΉ ΠΆΠ΅, ΠΊΠ°ΠΊ Π² dplyr, Π½Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Ρ€Π°Π·Π±ΠΈΡ‚ΡŒ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ Π½Π° ΠΎΠΊΠ½Π° ΠΏΠΎ полю Pclass. ВывСсти Π² Π½ΠΎΠ²ΠΎΠΌ столбцС сумму ΠΏΠΎ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ строкС Π³Ρ€ΡƒΠΏΠΏΠ΅, ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ столбСц Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΌΡ‹ рассчитаСм долю стоимости ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π±ΠΈΠ»Π΅Ρ‚Π° Π² Π΅Π³ΠΎ Π³Ρ€ΡƒΠΏΠΏΠ΅.

Для добавлСния Π½ΠΎΠ²Ρ‹Ρ… столбцов Π² data.table присутствуСт ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ :=. НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Π½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π·Π°Π΄Π°Ρ‡ΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΠ°ΠΊΠ΅Ρ‚Π° data.table

ΠžΠΊΠΎΠ½Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² R: data.table

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

ΠžΠΊΠΎΠ½Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² Python: pandas

Один ΠΈΠ· способов Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ столбСц Π² pandas β€” ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ assign(). Для суммирования стоимости Π±ΠΈΠ»Π΅Ρ‚ΠΎΠ² ΠΏΠΎ классу ΠΊΠ°ΡŽΡ‚, Π±Π΅Π· Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²ΠΊΠΈ строк ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ transform().

НиТС ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΌΡ‹ добавляСм Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ titanic Ρ‚Π΅ ΠΆΠ΅ 2 столбца.

ΠžΠΊΠΎΠ½Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² Python: pandas

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

Π’Π°Π±Π»ΠΈΡ†Π° соотвСтствия Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ²

Π”Π°Π»Π΅Π΅ ΠΏΡ€ΠΈΠ²ΠΎΠΆΡƒ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ соотвСтствия ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² для выполнСния Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ Π² рассмотрСнных Π½Π°ΠΌΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚Π°Ρ….

ОписаниС
tidyverse
data.table
pandas

Π—Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Π΄Π°Π½Π½Ρ‹Ρ…
vroom()/ readr::read_csv() / readr::read_tsv()
fread()
read_csv()

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π΄Π°Ρ‚Π°Ρ„Ρ€Π΅ΠΉΠΌΠΎΠ²
tibble()
data.table()
dict() + from_dict()

Π’Ρ‹Π±ΠΎΡ€ столбцов
select()
Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ j, вторая позиция Π² ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Ρ… скобках
ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‘ΠΌ список Π½ΡƒΠΆΠ½Ρ‹Ρ… столбцов Π² ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Ρ… скобках / drop() / filter() / select_dtypes()

Π€ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΡ строк
filter()
Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ i, пСрвая позиция Π² ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Ρ… скобках
пСрСчисляСм условия Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΠΈ Π² ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Ρ… скобках / filter()

Π“Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²ΠΊΠ° ΠΈ агрСгация
group_by() + summarise()
Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ j + by
groupby() + agg()

Π’Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠ΅ объСдинСниС Ρ‚Π°Π±Π»ΠΈΡ† (UNION)
bind_rows()
rbind()
concat()

Π“ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΡŒΠ½ΠΎΠ΅ объСдинСниС Ρ‚Π°Π±Π»ΠΈΡ† (JOIN)
left_join() / *_join()
merge()
merge()

ΠŸΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠΈΠ΅ ΠΎΠΊΠΎΠ½Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ рассчитываСмых столбцов
group_by() + mutate()
Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ j с использованиСм ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° := + Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ by
transform() + assign()

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π² ΡΡ‚Π°Ρ‚ΡŒΠ΅ я описал Π½Π΅ самыС ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹Π΅ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ…, поэтому Π±ΡƒΠ΄Ρƒ Ρ€Π°Π΄ Ссли исправитС ΠΌΠΎΠΈ ошибки Π² коммСнтариях, ΠΈΠ»ΠΈ ΠΆΠ΅ просто Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Π½Π½ΡƒΡŽ Π² ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ ΠΏΡ€ΠΈΡ‘ΠΌΠ°ΠΌΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ Π² R / Python.

Как я ΡƒΠΆΠ΅ писал Π²Ρ‹ΡˆΠ΅, Ρ†Π΅Π»ΡŒ ΡΡ‚Π°Ρ‚ΡŒΠΈ Π·Π°ΠΊΠ»ΡŽΡ‡Π°ΡΡŒ Π½Π΅ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π±Ρ‹ Π½Π°Π²ΡΠ·Ρ‹Π²Π°Ρ‚ΡŒ своё ΠΌΠ½Π΅Π½ΠΈΠ΅ ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊΠΎΠΉ ΠΈΠ· языков Π»ΡƒΡ‡ΡˆΠ΅, Π° ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΈΠ·ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΎΠ±Π° языка, Π»ΠΈΠ±ΠΎ ΠΏΠΎ нСобходимости ΠΌΠΈΠ³Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅ΠΆΠ΄Ρƒ Π½ΠΈΠΌΠΈ.

Если Π²Π°ΠΌ ΠΏΠΎΠ½Ρ€Π°Π²ΠΈΠ»Π°ΡΡŒ ΡΡ‚Π°Ρ‚ΡŒΡ Π±ΡƒΠ΄Ρƒ Ρ€Π°Π΄ Π½ΠΎΠ²Ρ‹ΠΌ подписчикам Π½Π° ΠΌΠΎΠΈΡ… youtube ΠΈ Ρ‚Π΅Π»Π΅Π³Ρ€Π°ΠΌ ΠΊΠ°Π½Π°Π»Π°Ρ….

ΠžΠΏΡ€ΠΎΡ

А ΠΊΠ°ΠΊΠΈΠ΅ ΠΈΠ· пСрСчислСнных ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Π² Ρ€Π°Π±ΠΎΡ‚Π΅?

Π’ коммСнтариях ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρƒ своСго Π²Ρ‹Π±ΠΎΡ€Π°.

Волько зарСгистрированныС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΡƒΡ‡Π°ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Π² опросС. Π’ΠΎΠΉΠ΄ΠΈΡ‚Π΅, поТалуйста.

Какой ΠΏΠ°ΠΊΠ΅Ρ‚ для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ… Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ (ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ нСсколько Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ²)

  • 45,2%tidyverse19

  • 33,3%data.table14

  • 54,8%pandas23

ΠŸΡ€ΠΎΠ³ΠΎΠ»ΠΎΡΠΎΠ²Π°Π»ΠΈ 42 ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ. Π’ΠΎΠ·Π΄Π΅Ρ€ΠΆΠ°Π»ΠΈΡΡŒ 9 ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: habr.com

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ