πŸ” Как ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ нСсколько Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π°Π³Ρ€Π΅Π³Π°Ρ†ΠΈΠΈ ΠΊ ΠΎΠ΄Π½ΠΎΠΌΡƒ столбцу pandas?

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ нСсколько Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π°Π³Ρ€Π΅Π³Π°Ρ†ΠΈΠΈ ΠΊ ΠΎΠ΄Π½ΠΎΠΌΡƒ столбцу Π² Pandas, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ agg для Π²Ρ‹Π·ΠΎΠ²Π° Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π°Π³Ρ€Π΅Π³Π°Ρ†ΠΈΠΈ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ.

import pandas as pd

# Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ DataFrame
data = {'Name': ['John', 'Emma', 'Mark', 'Sophia'],
        'Age': [25, 28, 30, 27],
        'Height': [170, 165, 180, 175]}
df = pd.DataFrame(data)

# ΠŸΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π°Π³Ρ€Π΅Π³Π°Ρ†ΠΈΠΈ ΠΊ столбцу 'Age'
result = df['Age'].agg(['mean', 'min', 'max'])
print(result)

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ создаСм DataFrame с ΠΈΠΌΠ΅Π½Π΅ΠΌ, возрастом ΠΈ ростом. Π—Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ примСняСм ΠΌΠ΅Ρ‚ΠΎΠ΄ agg ΠΊ столбцу 'Age' ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅ΠΌ список Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π°Π³Ρ€Π΅Π³Π°Ρ†ΠΈΠΈ, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ 'mean', 'min' ΠΈ 'max'. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ Π±ΡƒΠ΄Π΅Ρ‚ Series, содСрТащий срСднСС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, минимальноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈ максимальноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ столбца 'Age'.

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

Как ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ нСсколько Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π°Π³Ρ€Π΅Π³Π°Ρ†ΠΈΠΈ ΠΊ ΠΎΠ΄Π½ΠΎΠΌΡƒ столбцу Π² pandas

Когда Ρ€Π°Π±ΠΎΡ‚Π°Π΅ΠΌ с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ Π² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ pandas Π² Python, ΠΈΠ½ΠΎΠ³Π΄Π° Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ нСсколько Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π°Π³Ρ€Π΅Π³Π°Ρ†ΠΈΠΈ ΠΊ ΠΎΠ΄Π½ΠΎΠΌΡƒ столбцу. НапримСр, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Ρ…ΠΎΡ‚Π΅Ρ‚ΡŒ Π½Π°ΠΉΡ‚ΠΈ срСднСС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, максимальноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈ минимальноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π² ΠΎΠ΄Π½ΠΎΠΌ запросС. Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ я расскаТу, ΠΊΠ°ΠΊ это ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° agg() Π² pandas.

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

ΠœΠ΅Ρ‚ΠΎΠ΄ agg() Π² pandas позволяСт ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΎΠ΄Π½Ρƒ ΠΈΠ»ΠΈ нСсколько Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π°Π³Ρ€Π΅Π³Π°Ρ†ΠΈΠΈ ΠΊ ΠΎΠ΄Π½ΠΎΠΌΡƒ ΠΈΠ»ΠΈ нСскольким столбцам Π² DataFrame. Он ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠΌ ΡΠ»ΠΎΠ²Π°Ρ€ΡŒ, Π³Π΄Π΅ ΠΊΠ»ΡŽΡ‡Π°ΠΌΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΈΠΌΠ΅Π½Π° столбцов, Π° значСниями - Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π°Π³Ρ€Π΅Π³Π°Ρ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ.

Допустим, Ρƒ нас Π΅ΡΡ‚ΡŒ DataFrame с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΎ ΠΏΡ€ΠΎΠ΄Π°ΠΆΠ°Ρ…:

import pandas as pd

data = {
    'product': ['A', 'B', 'C', 'A', 'B', 'C'],
    'quantity': [10, 5, 8, 3, 6, 2],
    'price': [10, 20, 30, 15, 25, 35]
}

df = pd.DataFrame(data)
print(df)

Π’Ρ‹Π²ΠΎΠ΄:

  product  quantity  price
0       A        10     10
1       B         5     20
2       C         8     30
3       A         3     15
4       B         6     25
5       C         2     35

ΠœΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ Π½Π°ΠΉΡ‚ΠΈ сумму, срСднСС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈ максимальноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ столбца "quantity" ΠΏΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Ρƒ. Для этого ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ agg().

aggregated_data = df.groupby('product')['quantity'].agg({'sum', 'mean', 'max'})
print(aggregated_data)

Π’Ρ‹Π²ΠΎΠ΄:

         sum  mean  max
product                
A         13  6.50   10
B         11  5.50    6
C         10  5.00    8

ΠœΡ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°Π»ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ agg() ΡΠ»ΠΎΠ²Π°Ρ€ΡŒ, Π³Π΄Π΅ ΠΊΠ»ΡŽΡ‡ΠΎΠΌ являСтся имя столбца, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ ΠΌΡ‹ примСняСм Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π°Π³Ρ€Π΅Π³Π°Ρ†ΠΈΠΈ, Π° значСниями ΡΠ²Π»ΡΡŽΡ‚ΡΡ сами Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠ»ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ sum(), mean() ΠΈ max() ΠΊ столбцу "quantity". ΠœΠ΅Ρ‚ΠΎΠ΄ agg() Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π½ΠΎΠ²Ρ‹ΠΉ DataFrame с Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°ΠΌΠΈ Π°Π³Ρ€Π΅Π³Π°Ρ†ΠΈΠΈ.

ΠŸΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π°Π³Ρ€Π΅Π³Π°Ρ†ΠΈΠΈ ΠΊ нСскольким столбцам

ΠœΠ΅Ρ‚ΠΎΠ΄ agg() Ρ‚Π°ΠΊΠΆΠ΅ позволяСт ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ нСсколько Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π°Π³Ρ€Π΅Π³Π°Ρ†ΠΈΠΈ ΠΊ нСскольким столбцам. Для этого ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Π² ΡΠ»ΠΎΠ²Π°Ρ€ΡŒ нСсколько ΠΊΠ»ΡŽΡ‡Π΅ΠΉ.

НапримСр, ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ Π½Π°ΠΉΡ‚ΠΈ сумму ΠΈ срСднСС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ столбца "quantity" ΠΈ максимальноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ столбца "price" ΠΏΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Ρƒ. ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ запрос:

aggregated_data = df.groupby('product').agg({'quantity': ['sum', 'mean'], 'price': 'max'})
print(aggregated_data)

Π’Ρ‹Π²ΠΎΠ΄:

        quantity        price
              sum mean  max
product                     
A             13 6.5   15
B             11 5.5   25
C             10 5.0   35

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

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π»Π΅Π³ΠΊΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ нСсколько Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π°Π³Ρ€Π΅Π³Π°Ρ†ΠΈΠΈ ΠΊ ΠΎΠ΄Π½ΠΎΠΌΡƒ столбцу ΠΈΠ»ΠΈ нСскольким столбцам Π² pandas, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΌΠ΅Ρ‚ΠΎΠ΄ agg(). Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ позволяСт Π½Π°ΠΌ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Π°Π³Ρ€Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· нашСго DataFrame.

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

Python для Data Science: Π£Ρ€ΠΎΠΊ 7:Pandas - GroupBy, Merge, Join

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²ΠΊΠ°, агрСгация, сортировка Π΄Π°Π½Π½Ρ‹Ρ…? | Аналитик Π΄Π°Π½Π½Ρ‹Ρ… | karpov.courses

Pandas Π‘Π°Π·ΠΎΠ²Ρ‹ΠΉ β„–4. ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ со столбцами DataFrame

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

πŸ” Как ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ нСсколько Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π°Π³Ρ€Π΅Π³Π°Ρ†ΠΈΠΈ ΠΊ ΠΎΠ΄Π½ΠΎΠΌΡƒ столбцу pandas?