🐼Как ΠΈΠ·Π±Π°Π²ΠΈΡ‚ΡŒΡΡ ΠΎΡ‚ ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΈΠ½Π΄Π΅ΠΊΡΠ° Π² pandas?πŸ˜€

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π°Π²ΠΈΡ‚ΡŒΡΡ ΠΎΡ‚ ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΈΠ½Π΄Π΅ΠΊΡΠ° Π² Pandas, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ reset_index(). Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ сбрасываСт ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΈΠ½Π΄Π΅ΠΊΡ ΠΈ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ Π΅Π³ΠΎ Π² стандартный ΠΎΠ΄Π½ΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹ΠΉ индСкс.

        
import pandas as pd

# ΠŸΡ€ΠΈΠΌΠ΅Ρ€ DataFrame с ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΈΠ½Π΄Π΅ΠΊΡΠΎΠΌ
data = {
    ('A', 'X'): [1, 2, 3],
    ('A', 'Y'): [4, 5, 6],
    ('B', 'X'): [7, 8, 9],
    ('B', 'Y'): [10, 11, 12]
}

df = pd.DataFrame(data, index=[1, 2, 3])

# Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ reset_index() для удалСния ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΈΠ½Π΄Π΅ΠΊΡΠ°
df_reset = df.reset_index()

print(df_reset)
        
    

Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ ΠΊΠΎΠ΄Π° Π²Ρ‹ΡˆΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π²Π΅Π΄Π΅Π½Π° DataFrame Π±Π΅Π· ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΈΠ½Π΄Π΅ΠΊΡΠ°:

        
   index  (A, X)  (A, Y)  (B, X)  (B, Y)
0      1       1       4       7      10
1      2       2       5       8      11
2      3       3       6       9      12
        
    

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

ΠŸΡ€ΠΈΠ²Π΅Ρ‚! БСгодня я расскаТу Ρ‚Π΅Π±Π΅, ΠΊΠ°ΠΊ ΠΈΠ·Π±Π°Π²ΠΈΡ‚ΡŒΡΡ ΠΎΡ‚ ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΈΠ½Π΄Π΅ΠΊΡΠ° Π² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ pandas. Π­Ρ‚ΠΎ ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΉ Π½Π°Π²Ρ‹ΠΊ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ Ρ‚Π΅Π±Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с ΠΎΠ±ΡˆΠΈΡ€Π½Ρ‹ΠΌΠΈ ΠΈ слоТными Π½Π°Π±ΠΎΡ€Π°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ….

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

Π’ΠΎΡ‚ нСсколько способов, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·Π±Π°Π²ΠΈΡ‚ΡŒΡΡ ΠΎΡ‚ ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΈΠ½Π΄Π΅ΠΊΡΠ° ΠΈ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ Π±ΠΎΠ»Π΅Π΅ плоской.

ΠœΠ΅Ρ‚ΠΎΠ΄ reset_index()

Один ΠΈΠ· простых способов ΡΠ½ΡΡ‚ΡŒ ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΈΠ½Π΄Π΅ΠΊΡ - ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ reset_index(). Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π½ΠΎΠ²ΡƒΡŽ DataFrame с ΡΠ±Ρ€ΠΎΡˆΠ΅Π½Π½Ρ‹ΠΌΠΈ индСксами ΠΈ Π½ΠΎΠ²ΠΎΠΉ структурой.


import pandas as pd

# Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ DataFrame с ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΈΠ½Π΄Π΅ΠΊΡΠΎΠΌ
data = {'Index 1': [1, 1, 2, 2], 'Index 2': [1, 2, 1, 2], 'Value': [10, 20, 30, 40]}
df = pd.DataFrame(data)
df = df.set_index(['Index 1', 'Index 2'])

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

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ создаСм DataFrame с ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΈΠ½Π΄Π΅ΠΊΡΠΎΠΌ ΠΏΠΎ столбцам "Index 1" ΠΈ "Index 2". Π—Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ reset_index(), Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠ½ΡΡ‚ΡŒ ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΈΠ½Π΄Π΅ΠΊΡ ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ DataFrame с плоской структурой.

АгрСгированиС ΠΏΠΎ уровням индСкса

Если Ρ‚Π΅Π±Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π°Π³Ρ€Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ Π½Π° основС ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… ΡƒΡ€ΠΎΠ²Π½Π΅ΠΉ ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΈΠ½Π΄Π΅ΠΊΡΠ°, Ρ‚Ρ‹ моТСшь ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ groupby() с Ρ†Π΅Π»ΡŒΡŽ объСдинСния Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ вычислСния Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Π°Π³Ρ€Π΅Π³Π°Ρ‚Π½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ.


import pandas as pd

# Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ DataFrame с ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΈΠ½Π΄Π΅ΠΊΡΠΎΠΌ
data = {'Index 1': [1, 1, 2, 2], 'Index 2': [1, 2, 1, 2], 'Value': [10, 20, 30, 40]}
df = pd.DataFrame(data)
df = df.set_index(['Index 1', 'Index 2'])

# АгрСгированиС ΠΏΠΎ уровням индСкса
grouped_df = df.groupby(level='Index 1').sum()
print(grouped_df)
    

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ использовали ΠΌΠ΅Ρ‚ΠΎΠ΄ groupby() ΠΈ ΡƒΠΊΠ°Π·Π°Π»ΠΈ "Index 1" Π² качСствС уровня индСкса. Π—Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ Π²Ρ‹Π·Π²Π°Π»ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ sum(), Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ сумму Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ значСния "Index 1".

ИспользованиС ΠΌΠ΅Ρ‚ΠΎΠ΄Π° stack() ΠΈ unstack()

Если Ρ‚Π΅Π±Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΡƒΡ€ΠΎΠ²Π½ΠΈ индСкса, Ρ‚Ρ‹ моТСшь ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ stack() ΠΈ unstack(). ΠœΠ΅Ρ‚ΠΎΠ΄ stack() ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ столбцы Π² индСксы, Π° ΠΌΠ΅Ρ‚ΠΎΠ΄ unstack() Π΄Π΅Π»Π°Π΅Ρ‚ ΠΎΠ±Ρ€Π°Ρ‚Π½ΡƒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ.


import pandas as pd

# Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ DataFrame с ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΈΠ½Π΄Π΅ΠΊΡΠΎΠΌ
data = {'Index 1': [1, 1, 2, 2], 'Index 2': [1, 2, 1, 2], 'Value': [10, 20, 30, 40]}
df = pd.DataFrame(data)
df = df.set_index(['Index 1', 'Index 2'])

# ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΈΠ½Π΄Π΅ΠΊΡΠ°
stacked_df = df.stack()  # ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Π² ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΈΠ½Π΄Π΅ΠΊΡ
unstacked_df = stacked_df.unstack(1)  # ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ Π² ΠΎΠ΄ΠΈΠ½ΠΎΡ‡Π½Ρ‹ΠΉ индСкс
print(unstacked_df)
    

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ использовали ΠΌΠ΅Ρ‚ΠΎΠ΄ stack() для прСобразования столбцов "Index 1" ΠΈ "Index 2" Π² ΡƒΡ€ΠΎΠ²Π½ΠΈ индСкса. Π—Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ использовали ΠΌΠ΅Ρ‚ΠΎΠ΄ unstack() для прСобразования ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ Π² ΠΎΠ΄ΠΈΠ½ΠΎΡ‡Π½Ρ‹ΠΉ индСкс.

ИспользованиС ΠΌΠ΅Ρ‚ΠΎΠ΄Π° melt()

Π•Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ способ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΈΠ½Π΄Π΅ΠΊΡ Π² ΠΏΠ»ΠΎΡΠΊΡƒΡŽ структуру - ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ melt(). Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ позволяСт ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ столбцы Π΄Π°Π½Π½Ρ‹Ρ… Π² Π΄Ρ€ΡƒΠ³ΡƒΡŽ структуру.


import pandas as pd

# Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ DataFrame с ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΈΠ½Π΄Π΅ΠΊΡΠΎΠΌ
data = {'Index 1': [1, 1, 2, 2], 'Index 2': [1, 2, 1, 2], 'Value': [10, 20, 30, 40]}
df = pd.DataFrame(data)
df = df.set_index(['Index 1', 'Index 2'])

# ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΈΠ½Π΄Π΅ΠΊΡΠ° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ melt()
melted_df = df.reset_index().melt(id_vars=['Index 1', 'Index 2'], var_name='Attribute', value_name='Value')
print(melted_df)
    

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ melt() послС сброса индСксов с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ reset_index(). ΠœΠ΅Ρ‚ΠΎΠ΄ melt() создаСт Π½ΠΎΠ²Ρ‹ΠΉ DataFrame, Π³Π΄Π΅ столбцы становятся значСниями Π² Π½ΠΎΠ²ΠΎΠΌ столбцС "Attribute".

Π˜Ρ‚ΠΎΠ³ΠΈ

Π’ ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ рассмотрСли нСсколько способов, ΠΊΠ°ΠΊ ΠΈΠ·Π±Π°Π²ΠΈΡ‚ΡŒΡΡ ΠΎΡ‚ ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΈΠ½Π΄Π΅ΠΊΡΠ° Π² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ pandas. ΠœΠ΅Ρ‚ΠΎΠ΄ reset_index() ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ ΡΠ½ΡΡ‚ΡŒ ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΈΠ½Π΄Π΅ΠΊΡ ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π½ΠΎΠ²ΡƒΡŽ ΠΏΠ»ΠΎΡΠΊΡƒΡŽ структуру. Если Ρ‚Ρ‹ Ρ…ΠΎΡ‡Π΅ΡˆΡŒ Π°Π³Ρ€Π΅Π³ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΠΎ уровням ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΈΠ½Π΄Π΅ΠΊΡΠ°, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ groupby(). ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ stack() ΠΈ unstack() ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ ΡƒΡ€ΠΎΠ²Π½ΠΈ индСкса. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΌΠ΅Ρ‚ΠΎΠ΄ melt() позволяСт ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΈΠ½Π΄Π΅ΠΊΡ Π² Π΄Ρ€ΡƒΠ³ΡƒΡŽ структуру Π΄Π°Π½Π½Ρ‹Ρ….

И ΠΏΠΎΠΌΠ½ΠΈ, Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ΅ ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅ - это ΠΊΠ»ΡŽΡ‡ ΠΊ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠΌΡƒ ΡƒΡΠ²ΠΎΠ΅Π½ΠΈΡŽ Π½ΠΎΠ²Ρ‹Ρ… Π½Π°Π²Ρ‹ΠΊΠΎΠ². Π’Π°ΠΊ Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°ΠΉ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΈ ΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ с ΠΊΠΎΠ΄ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΅Ρ‰Π΅ Π»ΡƒΡ‡ΡˆΠ΅ ΠΏΠΎΠ½ΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ с ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΈΠ½Π΄Π΅ΠΊΡΠΎΠΌ Π² pandas. Π£Π΄Π°Ρ‡ΠΈ!

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

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

ΠŸΠΈΡˆΡƒ Ρ€Π΅Π°Π»ΡŒΠ½ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ. ΠŸΠ°Ρ€ΡΠΈΠ½Π³ тСкстового Ρ„Π°ΠΉΠ»Π°. Python + Pandas + Excel.

Pandas - Ρ€Π°Π·Π±ΠΎΡ€ всСх основных возмоТностСй Π½Π° Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΌ датасСтС

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

🐼Как ΠΈΠ·Π±Π°Π²ΠΈΡ‚ΡŒΡΡ ΠΎΡ‚ ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΈΠ½Π΄Π΅ΠΊΡΠ° Π² pandas?πŸ˜€