πŸ”§ ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π°Ρ инструкция: Как ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ индСксы Π² pandas

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ индСксы Π² Pandas, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ set_index(). Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ позволяСт Π²Π°ΠΌ Π·Π°Π΄Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ индСкс для DataFrame, ΡƒΠΊΠ°Π·Π°Π² столбСц ΠΈΠ»ΠΈ столбцы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² качСствС индСкса. Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ΄Π°:

  import pandas as pd

  # Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ DataFrame
  df = pd.DataFrame({'Π‘Ρ‚Ρ€Π°Π½Π°': ['Россия', 'БША', 'ΠšΠΈΡ‚Π°ΠΉ'],
                    'Π“ΠΎΡ€ΠΎΠ΄': ['Москва', 'Π’Π°ΡˆΠΈΠ½Π³Ρ‚ΠΎΠ½', 'ПСкин'],
                    'НасСлСниС': [144.5, 328.2, 144.4]})

  # ИзмСняСм индСкс Π½Π° столбСц "Π‘Ρ‚Ρ€Π°Π½Π°"
  df.set_index('Π‘Ρ‚Ρ€Π°Π½Π°', inplace=True)

  print(df)
  
Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ использовали set_index('Π‘Ρ‚Ρ€Π°Π½Π°') для установки столбца "Π‘Ρ‚Ρ€Π°Π½Π°" Π² качСствС Π½ΠΎΠ²ΠΎΠ³ΠΎ индСкса для DataFrame. ΠœΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ использовали ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ inplace=True, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ DataFrame Π±Π΅Π· создания Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. НадСюсь, это ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚!

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

Как ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ индСксы Π² pandas

Если Π²Π°ΠΌ ΠΊΠΎΠ³Π΄Π°-Π»ΠΈΠ±ΠΎ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΠ»ΠΎΡΡŒ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ Π² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ pandas, Π²Ρ‹, навСрняка, ΡΡ‚Π°Π»ΠΊΠΈΠ²Π°Π»ΠΈΡΡŒ с индСксами. Π˜Π½Π΄Π΅ΠΊΡΡ‹ Π² pandas ΠΈΠ³Ρ€Π°ΡŽΡ‚ Π²Π°ΠΆΠ½ΡƒΡŽ Ρ€ΠΎΠ»ΡŒ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Π²Π°ΠΌ быстро ΠΈ ΡƒΠ΄ΠΎΠ±Π½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ, Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ поиск ΠΈ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΡŽ, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ аналитичСскиС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ. Иногда, ΠΎΠ΄Π½Π°ΠΊΠΎ, Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ стандартныС индСксы, Ρ‡Ρ‚ΠΎΠ±Ρ‹ привСсти Π΄Π°Π½Π½Ρ‹Π΅ Π² Π±ΠΎΠ»Π΅Π΅ ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΉ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚. Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ рассмотрим Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ способы измСнСния индСксов Π² pandas.

1. ИзмСнСниС индСкса Π½Π° основС ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ столбца

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

import pandas as pd

# Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ DataFrame
data = {'Name': ['John', 'Emma', 'Mike'],
        'Age': [25, 28, 32],
        'Country': ['USA', 'Canada', 'UK']}

df = pd.DataFrame(data)

# ИзмСним индСкс Π½Π° основС столбца 'Name'
df.set_index('Name', inplace=True)

print(df)

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния ΠΊΠΎΠ΄Π°:

       Age Country
Name               
John    25     USA
Emma    28  Canada
Mike    32      UK

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ использовали ΠΌΠ΅Ρ‚ΠΎΠ΄ set_index() для измСнСния индСкса Π½Π° основС столбца 'Name'. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ являСтся DataFrame с индСксом 'Name', ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΠ±Π»Π΅Π³Ρ‡Π°Π΅Ρ‚ доступ ΠΊ Π΄Π°Π½Π½Ρ‹ΠΌ ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ.

2. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠ³ΠΎ индСкса Π½Π° основС Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ

Если Ρƒ вас Π½Π΅Ρ‚ подходящСго столбца для использования Π² качСствС индСкса, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ индСкс Π½Π° основС Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ. Π’ pandas это ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ pd.RangeIndex().

import pandas as pd

# Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ DataFrame
data = {'Name': ['John', 'Emma', 'Mike'],
        'Age': [25, 28, 32],
        'Country': ['USA', 'Canada', 'UK']}

df = pd.DataFrame(data)

# Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠ³ΠΎ индСкса Π½Π° основС Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ
df.index = pd.RangeIndex(start=1, stop=len(df)+1)

print(df)

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния ΠΊΠΎΠ΄Π°:

   Name  Age Country
1  John   25     USA
2  Emma   28  Canada
3  Mike   32      UK

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ использовали Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ pd.RangeIndex() для создания Π½ΠΎΠ²ΠΎΠ³ΠΎ индСкса Π½Π° основС Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΎΡ‚ 1 Π΄ΠΎ количСства строк Π² DataFrame. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ - DataFrame с Π½ΠΎΠ²Ρ‹ΠΌ числовым индСксом.

3. Установка индСкса Π½Π° основС условия

Иногда Π²Π°ΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ индСкс Π½Π° основС ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ условия. НапримСр, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Ρ…ΠΎΡ‚Π΅Ρ‚ΡŒ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ индСкс Π½Π° основС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ столбца, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌΡƒ ΠΊΡ€ΠΈΡ‚Π΅Ρ€ΠΈΡŽ.

import pandas as pd

# Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ DataFrame
data = {'Name': ['John', 'Emma', 'Mike'],
        'Age': [25, 28, 32],
        'Country': ['USA', 'Canada', 'UK']}

df = pd.DataFrame(data)

# Установка индСкса Π½Π° основС условия
df.set_index(df['Age'] > 26, inplace=True)

print(df)

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния ΠΊΠΎΠ΄Π°:

       Name  Age Country
False  John   25     USA
True   Emma   28  Canada
True   Mike   32      UK

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ использовали условиС df['Age'] > 26 для установки индСкса. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ являСтся DataFrame с Π±ΡƒΠ»Π΅Π²Ρ‹ΠΌ индСксом, Π³Π΄Π΅ значСния True ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‚ строкам, ΡƒΠ΄ΠΎΠ²Π»Π΅Ρ‚Π²ΠΎΡ€ΡΡŽΡ‰ΠΈΠΌ Π·Π°Π΄Π°Π½Π½ΠΎΠΌΡƒ ΡƒΡΠ»ΠΎΠ²ΠΈΡŽ.

4. ИзмСнСниС индСкса Π½Π° основС ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ индСкса

Иногда Π²Π°ΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ индСкс, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ нСсколько ΡƒΡ€ΠΎΠ²Π½Π΅ΠΉ индСксации ΠΈΠ»ΠΈ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π² Π΄Ρ€ΡƒΠ³ΡƒΡŽ Ρ„ΠΎΡ€ΠΌΡƒ.

import pandas as pd

# Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ DataFrame с ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΈΠ½Π΄Π΅ΠΊΡΠΎΠΌ
data = {'Name': ['John', 'John', 'Emma', 'Emma', 'Mike', 'Mike'],
        'Subject': ['Math', 'Science', 'Math', 'Science', 'Math', 'Science'],
        'Grade': [90, 85, 95, 88, 91, 89]}

df = pd.DataFrame(data)
df.set_index(['Name', 'Subject'], inplace=True)

# ИзмСнСниС индСкса Π½Π° основС ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ индСкса
df.reset_index(level=[1], inplace=True)

print(df)

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния ΠΊΠΎΠ΄Π°:

         Subject  Grade
Name                   
John        Math     90
John     Science     85
Emma        Math     95
Emma     Science     88
Mike        Math     91
Mike     Science     89

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Ρƒ нас Π΅ΡΡ‚ΡŒ DataFrame с ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΈΠ½Π΄Π΅ΠΊΡΠΎΠΌ, состоящим ΠΈΠ· столбцов 'Name' ΠΈ 'Subject'. ΠœΡ‹ использовали ΠΌΠ΅Ρ‚ΠΎΠ΄ reset_index() для удалСния ΠΎΠ΄Π½ΠΎΠ³ΠΎ уровня индСксации, Π² Π΄Π°Π½Π½ΠΎΠΌ случаС уровня 'Subject'. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ DataFrame с ΠΎΠ΄Π½ΠΈΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅ΠΌ индСксации ΠΈ двумя столбцами 'Name' ΠΈ 'Grade'.

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

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

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

Pandas Π‘Π°Π·ΠΎΠ²Ρ‹ΠΉ β„–6. Π˜Π½Π΄Π΅ΠΊΡΡ‹

β–Ί 5. Π˜ΠΠ”Π•ΠšΠ‘Π«. Доступ ΠΊ Π΄Π°Π½Π½Ρ‹ΠΌ | ΠšΡƒΡ€Ρ ΠΏΠΎ Pandas.

Π£Ρ€ΠΎΠΊ 10 Π‘Ρ‚Ρ€ΠΎΠΊΠΈ: индСксы ΠΈ срСзы Python

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

πŸ”§ ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π°Ρ инструкция: Как ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ индСксы Π² pandas

πŸ”Ž Как Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ нСсколько столбцов pandas: Π»Π΅Π³ΠΊΠΈΠΉ Π³ΠΈΠ΄