Função Pandas cut

Suraj Joshi 30 janeiro 2023
  1. Sintaxe da função pandas.cut()
  2. Exemplo: Distribuir valores de coluna de um DataFrame em compartimentos usando o método pandas.cut()
  3. Exemplo: Distribuir valores em caixas e atribuir um rótulo a cada caixa usando o método pandas.cut()
  4. Exemplo: Defina retbins=True no método pandas.cut() para retornar os valores bin
Função Pandas cut

A função pandas.cut() pode distribuir os dados fornecidos em intervalos, também chamados de bins.

Usaremos o DataFrame abaixo neste artigo.

import pandas as pd

df = pd.DataFrame(
    {
        "Name": ["Anish", "Birat", "Chirag", "Kabin", "Sachin"],
        "Age": [23, 34, 38, 45, 27],
        "Score": [316, 322, 332, 330, 325],
    }
)

print(df)

Resultado:

     Name  Age  Score
0   Anish   23    316
1   Birat   34    322
2  Chirag   38    332
3   Kabin   45    330
4  Sachin   27    325

Sintaxe da função pandas.cut()

pandas.cut(
    x,
    bins,
    right=True,
    labels=None,
    retbins=False,
    precision=3,
    include_lowest=False,
    duplicates="raise",
    ordered=True,
)

Parâmetros

x A matriz fornecida
bins Os critérios para armazenar os dados
right Boleano. Se for True, inclua também o número mais à direita da caixa.
labels Variedade. Etiquetas para as caixas.
retbins Boleano. Se True, devolva os caixotes do lixo.
precision Inteiro. Precisão para armazenar e exibir caixas
ordered Boleano. Se for verdadeiro, os rótulos resultantes serão ordenados

Retornar

Ele retorna un array que consiste em valores bin para cada elemento no array x. Ele também retorna os bins se tivermos definido retbins=True.

Exemplo: Distribuir valores de coluna de um DataFrame em compartimentos usando o método pandas.cut()

import pandas as pd

df = pd.DataFrame(
    {
        "Name": ["Anish", "Birat", "Chirag", "Kabin", "Sachin"],
        "Age": [23, 34, 38, 45, 27],
        "Score": [316, 322, 332, 330, 325],
    }
)

print("Initial DataFrame:")
print(df, "\n")

df["Age-Range"] = pd.cut(x=df["Age"], bins=[20, 30, 40, 50])

print("DataFrame with Age-Range:")
print(df)

Resultado:

Initial DataFrame:
     Name  Age  Score
0   Anish   23    316
1   Birat   34    322
2  Chirag   38    332
3   Kabin   45    330
4  Sachin   27    325

DataFrame with Age-Range:
     Name  Age  Score Age-Range
0   Anish   23    316  (20, 30]
1   Birat   34    322  (30, 40]
2  Chirag   38    332  (30, 40]
3   Kabin   45    330  (40, 50]
4  Sachin   27    325  (20, 30]

Ele separa os valores da coluna Age no DataFrame df nas faixas etárias calculadas usando o valor do argumento bins no método pandas.cut() e finalmente exibe DataFrame com o valor Age-Range para cada linha.

Aqui, (20,30] representa os valores de 20 a 30, excluindo 20 e incluindo 30.

Exemplo: Distribuir valores em caixas e atribuir um rótulo a cada caixa usando o método pandas.cut()

Por padrão, o rótulo atribuído a cada compartimento será o intervalo do compartimento. Podemos definir os rótulos de bin personalizados usando o parâmetro labels na função pandas.cut().

import pandas as pd

df = pd.DataFrame(
    {
        "Name": ["Anish", "Birat", "Chirag", "Kabin", "Sachin"],
        "Age": [23, 34, 38, 45, 27],
        "Score": [316, 322, 332, 330, 325],
    }
)

print("Initial DataFrame:")
print(df, "\n")

bin_labels = labels = ["21 to 30", "31 to 40", "41 to 50"]
df["Age-Range"] = pd.cut(x=df["Age"], bins=[20, 30, 40, 50], labels=bin_labels)

print("DataFrame with Age-Range:")
print(df)

Resultado:

Initial DataFrame:
     Name  Age  Score
0   Anish   23    316
1   Birat   34    322
2  Chirag   38    332
3   Kabin   45    330
4  Sachin   27    325

DataFrame with Age-Range:
     Name  Age  Score Age-Range
0   Anish   23    316  21 to 30
1   Birat   34    322  31 to 40
2  Chirag   38    332  31 to 40
3   Kabin   45    330  41 to 50
4  Sachin   27    325  21 to 30

Ele atribui cada valor da coluna Age em compartimentos e adiciona um rótulo a cada compartimento exclusivo.

Exemplo: Defina retbins=True no método pandas.cut() para retornar os valores bin

import pandas as pd

df = pd.DataFrame(
    {
        "Name": ["Anish", "Birat", "Chirag", "Kabin", "Sachin"],
        "Age": [23, 34, 38, 45, 27],
        "Score": [316, 322, 332, 330, 325],
    }
)

print("Initial DataFrame:")
print(df, "\n")

bin_labels = labels = ["21 to 30", "31 to 40", "41 to 50"]
df["Age-Range"], bin_values = pd.cut(
    x=df["Age"], bins=[20, 30, 40, 50], labels=bin_labels, retbins=True
)

print("DataFrame with Age-Range:")
print(df, "\n")

print("The bin values are:")
print(bin_values)

Resultado:

Initial DataFrame:
     Name  Age  Score
0   Anish   23    316
1   Birat   34    322
2  Chirag   38    332
3   Kabin   45    330
4  Sachin   27    325

DataFrame with Age-Range:
     Name  Age  Score Age-Range
0   Anish   23    316  21 to 30
1   Birat   34    322  31 to 40
2  Chirag   38    332  31 to 40
3   Kabin   45    330  41 to 50
4  Sachin   27    325  21 to 30

The bin values are:
[20 30 40 50]

Ele exibe o DataFrame com valores Age-Range junto com os valores bin.

Suraj Joshi avatar Suraj Joshi avatar

Suraj Joshi is a backend software engineer at Matrice.ai.

LinkedIn

Artigo relacionado - Pandas DataFrame