πŸ”₯Как эффСктивно Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΈΠ½Π΄Π΅ΠΊΡΠΎΠΌ Π² pandas: Π»ΡƒΡ‡ΡˆΠΈΠ΅ совСты ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹

Для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΈΠ½Π΄Π΅ΠΊΡΠΎΠΌ Π² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ pandas Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ set_index() для установки ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΈΠ½Π΄Π΅ΠΊΡΠ° Π½Π° ΠΎΠ΄ΠΈΠ½ ΠΈΠ»ΠΈ нСсколько столбцов, Π° Ρ‚Π°ΠΊΠΆΠ΅ reset_index() для сброса ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΈΠ½Π΄Π΅ΠΊΡΠ° ΠΈ возвращСния ΠΊ ΠΎΠ΄Π½ΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²ΠΎΠΌΡƒ индСксу.

import pandas as pd

# Установка ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΈΠ½Π΄Π΅ΠΊΡΠ°
df.set_index(['столбСц1', 'столбСц2'], inplace=True)

# Бброс ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΈΠ½Π΄Π΅ΠΊΡΠ°
df.reset_index(inplace=True)

Π’Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΈΠ½Π΄Π΅ΠΊΡ для выполнСния ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ ΠΏΠΎ индСксу, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ срСзы ΠΈ Π²Ρ‹Π±ΠΎΡ€ΠΊΠ° Π΄Π°Π½Π½Ρ‹Ρ…. Для доступа ΠΊ значСниям ΠΏΠΎ ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΈΠ½Π΄Π΅ΠΊΡΡƒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ loc[].

# Π’Ρ‹Π±ΠΎΡ€ΠΊΠ° Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠΎ ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΈΠ½Π΄Π΅ΠΊΡΡƒ
df.loc[('Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅1', 'Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅2')]

Π”Π΅Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΎΡ‚Π²Π΅Ρ‚

Как Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΈΠ½Π΄Π΅ΠΊΡΠΎΠΌ pandas

Pandas - это мощная Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° для Π°Π½Π°Π»ΠΈΠ·Π° Π΄Π°Π½Π½Ρ‹Ρ… Π½Π° языкС Python, которая прСдоставляСт Π³ΠΈΠ±ΠΊΠΈΠ΅ ΠΈ ΡƒΠ΄ΠΎΠ±Π½Ρ‹Π΅ возмоТности для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ. Она Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ для создания, манипулирования ΠΈ Π°Π½Π°Π»ΠΈΠ·Π° Ρ‚Π°Π±Π»ΠΈΡ† Π΄Π°Π½Π½Ρ‹Ρ…. Одним ΠΈΠ· Π²Π°ΠΆΠ½Ρ‹Ρ… инструмСнтов Pandas являСтся ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΈΠ½Π΄Π΅ΠΊΡ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ, ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠΌΠΈ нСсколько ΡƒΡ€ΠΎΠ²Π½Π΅ΠΉ ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠΈ.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΈΠ½Π΄Π΅ΠΊΡ?

ΠœΡƒΠ»ΡŒΡ‚ΠΈΠΈΠ½Π΄Π΅ΠΊΡ прСдставляСт собой инструмСнт, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ иСрархичСскиС структуры Π΄Π°Π½Π½Ρ‹Ρ… Π² Pandas. Он Π΄Π°Π΅Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΠΎ нСскольким уровням индСксации, Ρ‡Ρ‚ΠΎ обСспСчиваСт Π±ΠΎΠ»Π΅Π΅ Π³ΠΈΠ±ΠΊΡƒΡŽ ΠΈ ΡƒΠ΄ΠΎΠ±Π½ΡƒΡŽ Ρ€Π°Π±ΠΎΡ‚Ρƒ с Π½ΠΈΠΌΠΈ. ΠœΡƒΠ»ΡŒΡ‚ΠΈΠΈΠ½Π΄Π΅ΠΊΡ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ ΠΊ Π»ΡŽΠ±ΠΎΠΌΡƒ Ρ‚ΠΈΠΏΡƒ Π΄Π°Π½Π½Ρ‹Ρ…, Π³Π΄Π΅ трСбуСтся иСрархичСская организация.

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΈΠ½Π΄Π΅ΠΊΡΠ°

ΠœΡƒΠ»ΡŒΡ‚ΠΈΠΈΠ½Π΄Π΅ΠΊΡ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ способами. Один ΠΈΠ· способов - ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ `MultiIndex` модуля `pandas`.


import pandas as pd

# Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΈΠ½Π΄Π΅ΠΊΡΠ° с двумя уровнями
index = pd.MultiIndex.from_tuples([('A', 'X'), ('A', 'Y'), ('B', 'X'), ('B', 'Y')], names=['Π“Ρ€ΡƒΠΏΠΏΠ°', 'Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅'])

# Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ с ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΈΠ½Π΄Π΅ΠΊΡΠΎΠΌ
data = pd.DataFrame({'Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 1': [10, 20, 30, 40], 'Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 2': [50, 60, 70, 80]}, index=index)

# Π’Ρ‹Π²ΠΎΠ΄ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹
data
    

Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ выполнСния ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠ³ΠΎ Π²Ρ‹ΡˆΠ΅ ΠΊΠΎΠ΄Π° Π±ΡƒΠ΄Π΅Ρ‚ создана Ρ‚Π°Π±Π»ΠΈΡ†Π° с ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΈΠ½Π΄Π΅ΠΊΡΠΎΠΌ, Π³Π΄Π΅ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ индСксации - 'Π“Ρ€ΡƒΠΏΠΏΠ°', Π° Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ - 'Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅'. Π’Π°Π±Π»ΠΈΡ†Π° Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π΄Π²Π° столбца: 'Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 1' ΠΈ 'Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 2'.

Π˜Π½Π΄Π΅ΠΊΡΠ°Ρ†ΠΈΡ с использованиСм ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΈΠ½Π΄Π΅ΠΊΡΠ°

ПослС создания ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΈΠ½Π΄Π΅ΠΊΡΠ° ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ индСксации для получСния Π½ΡƒΠΆΠ½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…. Для этого ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ `loc` ΠΈ `iloc`. ΠœΠ΅Ρ‚ΠΎΠ΄ `loc` позволяСт Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΈΠ½Π΄Π΅ΠΊΡΠ°Ρ†ΠΈΡŽ ΠΏΠΎ ΠΌΠ΅Ρ‚ΠΊΠ°ΠΌ индСкса, Π° ΠΌΠ΅Ρ‚ΠΎΠ΄ `iloc` - ΠΏΠΎ позициям индСкса.


# Π˜Π½Π΄Π΅ΠΊΡΠ°Ρ†ΠΈΡ ΠΏΠΎ ΠΌΠ΅Ρ‚ΠΊΠ°ΠΌ индСкса
data.loc['A', 'X']
    

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π΅Π½ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ для Π³Ρ€ΡƒΠΏΠΏΡ‹ 'A' ΠΈ значСния 'X'.


# Π˜Π½Π΄Π΅ΠΊΡΠ°Ρ†ΠΈΡ ΠΏΠΎ позициям индСкса
data.iloc[0, 1]
    

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π΅Π½ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ для ΠΏΠ΅Ρ€Π²ΠΎΠΉ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ индСкса ΠΏΠΎ ΠΏΠ΅Ρ€Π²ΠΎΠΌΡƒ ΠΈ Π²Ρ‚ΠΎΡ€ΠΎΠΌΡƒ уровням.

ΠœΠ°Π½ΠΈΠΏΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΈΠ½Π΄Π΅ΠΊΡΠΎΠΌ

ΠœΡƒΠ»ΡŒΡ‚ΠΈΠΈΠ½Π΄Π΅ΠΊΡ позволяСт Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΏΠΎ Π΅Π³ΠΎ ΠΌΠ°Π½ΠΈΠΏΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ. НСкоторыС ΠΈΠ· Π½ΠΈΡ… Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚:

  • ΠŸΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ ΡƒΡ€ΠΎΠ²Π½Π΅ΠΉ индСкса:
  • 
    data.rename(index={'A': 'Group_A', 'B': 'Group_B'}, level='Π“Ρ€ΡƒΠΏΠΏΠ°')
            
  • ΠŸΠ΅Ρ€Π΅Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²ΠΊΠ° Π΄Π°Π½Π½Ρ‹Ρ…:
  • 
    data.stack()
            
  • БлияниС ΡƒΡ€ΠΎΠ²Π½Π΅ΠΉ индСкса:
  • 
    data.reset_index(level='Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅', drop=True)
            

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

ΠœΡƒΠ»ΡŒΡ‚ΠΈΠΈΠ½Π΄Π΅ΠΊΡ позволяСт Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ, ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠΌΠΈ ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ структуру, Π² Pandas. Он прСдоставляСт ΡƒΠ΄ΠΎΠ±Π½Ρ‹Π΅ возмоТности для создания, манипулирования ΠΈ Π°Π½Π°Π»ΠΈΠ·Π° Ρ‚Π°Π±Π»ΠΈΡ† Π΄Π°Π½Π½Ρ‹Ρ… с нСсколькими уровнями индСксации. ΠŸΡ€ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΌ использовании ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΈΠ½Π΄Π΅ΠΊΡ позволяСт ΡΠΎΠΊΡ€Π°Ρ‚ΠΈΡ‚ΡŒ количСство ΠΊΠΎΠ΄Π° ΠΈ ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ слоТных структур Π΄Π°Π½Π½Ρ‹Ρ….

Π’ΠΈΠ΄Π΅ΠΎ ΠΏΠΎ Ρ‚Π΅ΠΌΠ΅

Π€ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΡ Π΄Π°Π½Π½Ρ‹Ρ… Π² Pandas | Анатолий ΠšΠ°Ρ€ΠΏΠΎΠ² | karpov.courses

ΠžΡΠ½ΠΎΠ²Ρ‹ Pandas Python | Series, DataFrame И Анализ Π”Π°Π½Π½Ρ‹Ρ…

Pandas Π‘Π°Π·ΠΎΠ²Ρ‹ΠΉ β„–1. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ DataFrame ΠΈ запись Π² CSV

ΠŸΠΎΡ…ΠΎΠΆΠΈΠ΅ ΡΡ‚Π°Ρ‚ΡŒΠΈ:

πŸ”₯Как эффСктивно Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΈΠ½Π΄Π΅ΠΊΡΠΎΠΌ Π² pandas: Π»ΡƒΡ‡ΡˆΠΈΠ΅ совСты ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹