As 10 principais funções do Pandas que todo iniciante deve conhecer

Python, 19 de dezembro de 20245 minutos de leitura

O Pandas é a biblioteca ideal para analistas de dados e programadores Python que se aventuram no mundo da manipulação e análise de dados. Sua sintaxe intuitiva e estruturas de dados poderosas tornam o manuseio de vastos conjuntos de dados não apenas gerenciável, mas também eficiente. Quer você esteja importando arquivos CSV, limpando conjuntos de dados desorganizados ou analisando tendências de dados, o Pandas tem as ferramentas de que você precisa.

Se você está apenas começando sua jornada de aprendizado do Pandas, esta postagem apresentará 10 funções e métodos essenciais que todo iniciante deve master. Essas funções o ajudarão a carregar, inspecionar, limpar e analisar dados com facilidade.
Aqui está uma visão geral rápida de cada método e o que ele faz:

  • read_csv(): Carrega dados de um arquivo CSV em um DataFrame do Pandas.
  • head(): Exibe as primeiras linhas do DataFrame.
  • info(): Fornece um resumo conciso do DataFrame, incluindo tipos de colunas e valores ausentes.
  • describe(): Gera estatísticas descritivas para colunas numéricas.
  • isnull(): Identifica dados ausentes no DataFrame.
  • dropna(): Remove linhas ou colunas com dados ausentes.
  • fillna(): Substitui os dados ausentes pelos valores especificados.
  • groupby(): Agrupa dados com base em uma ou mais colunas e aplica funções de agregação.
  • sort_values(): Classifica o DataFrame por uma ou mais colunas.
  • aplicar(): Aplica funções personalizadas a linhas ou colunas do DataFrame.

Pré-requisitos

Primeiro, verifique se o Python está instalado em seu computador. Se não estiver, você pode baixá-lo neste link.
Depois que o Python estiver configurado, confirme se a biblioteca Pandas está instalada. Se não estiver, você pode adicioná-la facilmente usando o seguinte comando:

pip install pandas

Usaremos o seguinte conjunto de dados fictícios de imóveis para nossos exemplos:

ID da propriedadeLocalizaçãoQuartosBanheirosPreçoSquareFootageData da listagem
101Nova York3275000018002023-05-15
102São Francisco2185000014002023-06-01
103Los Angeles4325002023-04-10
104Chicago326500001700
105Miami54120000035002023-03-22
106Houston4345000020002023-07-01

As 10 principais funções e métodos do Pandas

1. read_csv(): Carrega dados de um arquivo CSV em um DataFrame do Pandas.

A primeira etapa do uso do pandas é carregar seus dados para prepará-los para processamento ou análise. Um dos métodos mais comuns de importação de dados para um DataFrame do pandas é a função read_csv().

Exemplo de código:

importar pandas como pd
# Carregar o conjunto de dados em um DataFrame do Pandas
file_path = "real_estate_listings.csv" # Substitua pelo caminho real do arquivo

# Criar o DataFrame
df = pd.read_csv(file_path)

Primeiro, começamos importando a biblioteca pandas. Usando como pd é uma convenção comum entre os desenvolvedores para simplificar o código. Por exemplo, em vez de escrever pandas.read_csv()podemos simplesmente usar pd.read_csv()tornando o código mais conciso e fácil de ler.

Em seguida, especifique o caminho para o arquivo CSV que você deseja carregar em um Pandas DataFrame. Em seguida, crie uma variável e use a função read_csv para carregar o arquivo no DataFrame.

Principais parâmetros:

Agora vamos explorar alguns parâmetros importantes que seguem esse método:

  • delimitador: Especifique o delimitador usado no arquivo CSV (por exemplo, ,, ;, \t).
df = pd.read_csv(file_path, delimiter=',')
  • índice_col: Em nossa tabela, cada listagem de propriedades é identificada por um ID encontrado no campo "ID da propriedade". Para garantir que o pandas use essa coluna como o identificador exclusivo de cada propriedade, podemos defini-la explicitamente como a coluna ID. Caso contrário, o pandas gerará e atribuirá automaticamente seus próprios valores de ID a cada listagem.
df = pd.read_csv(file_path, index_col='PropertyID')
  • usecols: Se o seu arquivo CSV contiver várias colunas, mas você precisar apenas de algumas, o pandas permite que você faça isso facilmente usando um parâmetro específico.
df = pd.read_csv(file_path, usecols=['Location', 'Price', 'Bedrooms'])

2. head() e tail(): Inspecionar dados

Agora que os dados estão carregados no DataFrame, podemos começar a explorá-los. Para isso, o Pandas fornece dois métodos muito úteis: head() e cauda(). Esses métodos são essenciais para inspecionar rapidamente as primeiras ou últimas linhas do seu conjunto de dados.

  • head(): Esse método mostra as primeiras 5 linhas do conjunto de dados por padrão. É particularmente útil para verificar se os dados foram carregados corretamente e para verificar sua estrutura.
  • tail(): Esse método funciona de forma semelhante a head(), mas exibe as últimas linhas. É útil para examinar o final do conjunto de dados, especialmente ao verificar se os dados estão completos ou se os registros finais têm valores ausentes.

Exemplo de código:

# Exibir as primeiras 5 linhas
print(df.head())
# Exibir as últimas 3 linhas
print(df.tail(3))

Saída de head():

ID da propriedadeLocalizaçãoQuartosBanheirosPreçoSquareFootageData da listagem
101Nova York3275000018002023-05-15
102São Francisco2185000014002023-06-01
103Los Angeles4325002023-04-10
104Chicago326500001700
105Miami54120000035002023-03-22

Saída de cauda():

ID da propriedadeLocalizaçãoQuartosBanheirosPreçoSquareFootageData da listagem
104Chicago326500001700
105Miami54120000035002023-03-22
106Houston4345000020002023-07-01

3. info() - Compreender a estrutura do DataFrame

A função info() fornece um resumo conciso do DataFrame. Ela inclui detalhes como:

  • O número de linhas e colunas.
  • Nomes de colunas e seus tipos de dados.
  • A contagem de valores não nulos em cada coluna.

Esse método é útil para entender rapidamente a estrutura do seu conjunto de dados e identificar problemas como valores ausentes ou tipos de dados incorretos.

Exemplo de código:

# Obter um resumo conciso do DataFrame
print(df.info())

O código acima produz o seguinte resultado:

<class 'pandas.core.frame.DataFrame'>
RangeIndex: 6 entries, 0 to 5
Data columns (total 7 columns):
#   Column          Non-Null Count  Dtype 
---  ------          --------------  ----- 
0   PropertyID      6 non-null      int64 
1   Location        6 non-null      object
2   Bedrooms        6 non-null      int64 
3   Bathrooms       6 non-null      int64 
4   Price           5 non-null      float64
5   SquareFootage   6 non-null      int64 
6   ListingDate     5 non-null      object
dtypes: float64(1), int64(4), object(2)
memory usage: 464.0+ bytes

4. describe(): Gera estatísticas resumidas

O describe() fornece um resumo rápido das principais métricas estatísticas, como média, desvio padrão, percentise muito mais. Por padrão, describe() funciona com dados numéricos, mas também pode lidar com dados categóricos, oferecendo insights personalizados com base no tipo de dados.

Principais parâmetros:

  • percentis: Uma lista de números entre 0 e 1, especificando quais percentis devem ser retornados. O padrão é None, que retorna os percentis 25, 50 e 75. Leia mais aqui.
  • incluir: Uma lista de tipos de dados a serem incluídos no resumo. Você pode especificar tipos de dados como int, float, object (para strings), etc. O padrão é None, o que significa que todos os tipos numéricos estão incluídos.
  • excluir: Uma lista de tipos de dados a serem excluídos do resumo. Esse parâmetro também é Nenhum por padrão, o que significa que nenhum tipo é excluído.

Exemplo de código:

imprimir(df.describe())

O resultado do código é o seguinte:

       PropertyID Localização Quartos ...         Preço SquareFootage ListingDate
contagem 6.000000 6 6.000000... 5.000000e+00 6.000000 5
unique NaN 6 NaN ...           NaN NaN 5
top NaN Nova York NaN ...           NaN NaN 2023-05-15
freq NaN 1 NaN ...           NaN NaN 1
média 103,500000 NaN 3,500000... 7,800000e+05 2150,000000 NaN
std 1,870829 NaN 1,048809... 2,774887e+05 755,645419 NaN
min 101,000000 NaN 2,000000... 4.500000e+05 1400.000000 NaN
25% 102,250000 NaN 3,000000... 6,500000e+05 1725,000000 NaN
50% 103,500000 NaN 3,500000... 7,500000e+05 1900,000000 NaN
75% 104,750000 NaN 4,000000... 8.500000e+05 2375,000000 NaN
máximo 106,000000 NaN 5,000000... 1.200000e+06 3500,000000 NaN

Explicação de cada estatística

  • Contagem: O número de entradas não ausentes para cada coluna.
    • Exemplo: contagem = 6 para Quartosindicando que todas as linhas têm dados válidos.
  • Média: O valor médio da coluna.
    • Exemplo: média = 3,5 para Quartosindicando uma média de 3,5 dormitórios por propriedade.
  • Padrão: O desvio padrão, que mostra a dispersão dos valores em relação à média.
    • Exemplo: std = 1,048809 para Quartosou seja, há uma variação moderada no número de quartos.
  • Mínimo/Máximo: O menor e o maior valor.
    • Exemplo: min = 2 e max = 5 para Quartos.
  • 25%, 50%, 75% (quartis): Representam a propagação dos dados:
    • 25%: O valor abaixo do qual 25% dos dados se enquadram (primeiro quartil).
    • 50%: O valor mediano.
    • 75%: O valor abaixo do qual 75% dos dados se enquadram (terceiro quartil).

5. isnull(): Identificar dados ausentes

O isnull() ajuda a identificar dados ausentes em um DataFrame. Ela retorna um DataFrame com o mesmo formato do original, com Verdadeiro onde faltam dados NaN e Falso de outra forma. É comumente usado com outras funções como sum() para contar valores ausentes em colunas ou linhas.

Exemplo de código:

# Identificar valoresausentes
print(df.isnull())
# Contar os valores ausentes para cada coluna
print(df.isnull().sum())

df.isnull() Saída:

  ID da propriedade  Localização do imóvel  Quartos  Banheiros  Preço  Metragem quadrada  Data da listagem
0       Falso     Falso     Falso      False  Falso          Falso        Falso
1       Falso     Falso     Falso      Falso  Falso          Falso        Falso
2       Falso     Falso     Falso      Falso   Verdadeiro          Falso        Falso
3       Falso     Falso     Falso      Falso  Falso          Falso         Verdadeiro
4       Falso     Falso     Falso      Falso  Falso          Falso        Falso
5       Falso     Falso     Falso      Falso  Falso          Falso        Falso

df.isnull().sum() Saída:

PropertyID 0
Localização 0
Quartos 0
Banheiros 0
Preço 1
SquareFootage 0
ListingDate 1
dtype: int64

6. dropna(): Remove dados ausentes

O dropna() A função remove linhas ou colunas com dados ausentes NaN do DataFrame. Por padrão, ele remove as linhas com valores ausentes. Você pode personalizar seu comportamento para remover somente colunas ou para remover linhas/colunas em que todos ou um subconjunto específico de valores estejam ausentes

Exemplo de código:

# Eliminar as linhas com valores ausentes 
df_dropped_rows = df.dropna()
print(df_dropped_rows)

# Eliminar colunas com valores ausentes 
df_dropped_columns = df.dropna(axis=1)
print(df_dropped_columns)

Esta é a aparência do DataFrame depois de remover todos os linhas contendo NaN valores:

ID da propriedadeLocalizaçãoQuartosBanheirosPreçoSquareFootageData da listagem
101Nova York3275000018002023-05-15
102São Francisco2185000014002023-06-01
105Miami54120000035002023-03-22
106Houston4345000020002023-07-01

Aqui está o quadro de dados com colunas contendo NaN valores removidos.

ID da propriedadeLocalizaçãoQuartosBanheirosSquareFootage
101Nova York321800
102São Francisco211400
103Los Angeles432500
104Chicago321700
105Miami543500
106Houston432000

7. fillna(): Substituir dados ausentes

O fillna() substitui os dados ausentes NaN com valores especificados. O pandas dropna() trata e remove com eficiência os valores nulos de um DataFrame, enquanto o método fillna() O método oferece uma solução flexível para a substituição de NaN com um valor especificado de sua escolha. Esse método oferece uma abordagem flexível para o gerenciamento de dados ausentes, permitindo que você preencha as lacunas usando um valor fixo, o média, mediana, modoou outras estatísticas calculadas.

Exemplo de código:

# Preencher os valores ausentes na coluna "Price" com o preço médio df['Price'] = 
df['Price'].fillna(df['Price'].mean()) 
print(df)

A saída do código demonstra que o NaN foi substituído com sucesso pelo preço médio.

ID da propriedadeLocalizaçãoQuartosBanheirosPreçoSquareFootageData da listagem
101Nova York3275000018002023-05-15
102São Francisco2185000014002023-06-01
103Los Angeles4378000025002023-04-10
104Chicago326500001700NaN
105Miami54120000035002023-03-22
106Houston4345000020002023-07-01

O Data da listagem também contém uma coluna NaN valor. Em vez de realizar um cálculo, podemos simplesmente usar um espaço reservado, como "desconhecido. Veja como fazer isso;

# Preencher os valores ausentes na coluna "ListingDate" com um espaço reservado
df['ListingDate'] = df['ListingDate'].fillna('Unknown')
print(df)

O Dataframe agora tem a seguinte aparência:

ID da propriedadeLocalizaçãoQuartosBanheirosPreçoSquareFootageData da listagem
101Nova York3275000018002023-05-15
102São Francisco21NaN14002023-06-01
103Los Angeles4378000025002023-04-10
104Chicago326500001700Desconhecido
105Miami54120000035002023-03-22
106Houston4345000020002023-07-01

8. groupby(): Agrupar e agregar dados

A função groupby() do Pandas é uma ferramenta versátil e poderosa para dividir um DataFrame em grupos com base em uma ou mais colunas, permitindo análise e agregação eficientes de dados.
Ela opera com base em um princípio de dividir-aplicar-combinar:
primeiro, os dados são divididos em grupos;
depois, uma função específica é aplicada a cada grupo;
finalmente, os resultados são combinados em um novo DataFrame.
Essa abordagem otimizada simplifica tarefas complexas de manipulação de dados e aumenta a eficiência analítica.

Exemplo de código:

Por exemplo, você pode calcular o preço médio das propriedades por local ou contar o número de listagens por categoria de quarto.

# Agrupar por "Localização" e calcular o preço médio
avg_price_by_location = df.groupby('Location')['Price'].mean()
print(avg_price_by_location)
# Agrupar por "Quartos" e calcular a metragem quadrada total
total_sqft_by_bedrooms = df.groupby('Bedrooms')['SquareFootage'].sum()
print(total_sqft_by_bedrooms)
# Agrupar por várias colunas e calcular a contagem
count_by_location_bedrooms = df.groupby(['Location', 'Bedrooms']).size()
print(count_by_location_bedrooms)

Preço médio por localidade:

Localização
Chicago 650000.0
Houston 450000.0
Los Angeles NaN
Miami 1200000.0
Nova York 750000.0
São Francisco 850000.0
Nome: Price, dtype: float64

Metragem quadrada total por dormitórios:

Quartos
2    1400
3    3500
4    4500
5    3500

Contagem por localização e dormitórios:

Localização Quartos
Chicago 3 1
Houston 4 1
Los Angeles 4 1
Miami 5 1
Nova York 3 1
São Francisco 2 1
dtype: int64

9. sort_values(): Classificar dados

A função sort_values() é usada para classificar seu DataFrame por uma ou mais colunas, em ordem crescente ou decrescente. A classificação é essencial para classificar dados, identificar extremos (por exemplo, as propriedades de preço mais alto) ou simplesmente organizar o conjunto de dados para facilitar a leitura.

Exemplo de código:

# Ordenar por "Price" em ordem decrescente
df_sorted_by_price = df.sort_values(by='Price', ascending=False)
print(df_sorted_by_price)
# Ordenar por "Location" em ordem crescente
df_sorted_by_location = df.sort_values(by='Location')
print(df_sorted_by_location)
# Ordenar por várias colunas: primeiro por 'Bedrooms' (crescente) e depois por 'Price' (decrescente)
df_sorted_by_bedrooms_price = df.sort_values(by=['Bedrooms', 'Price'], ascending=[True, False])
print(df_sorted_by_bedrooms_price)

Classificar por preço (decrescente):

  PropertyID Localização Quartos ...      Preço SquareFootage ListingDate
4 105 Miami 5... 1200000.0 3500 2023-03-22
1 102 São Francisco 2...  850000.0 1400 2023-06-01
0 101 Nova York 3...  750000.0 1800 2023-05-15
3 104 Chicago 3...  650000.0 1700 NaN
5 106 Houston 4...  450000.0 2000 2023-07-01
2 103 Los Angeles 4...        NaN 2500 2023-04-10

Classificar por local (crescente):

[6 linhas x 7 colunas]
  PropertyID Localização Quartos ...      Preço SquareFootage ListingDate
3  104  Chicago  3 . ..   650000.0  1700  NaN
5  106  Houston  4 . ..   450000.0  2000  2023-07-01
2  103  Los Angeles  4 . ..        NaN  2500  2023-04-10
4  105  Miami  5 . ..  1200000.0  3500  2023-03-22
0  101  Nova York  3 . ..   750000.0  1800  2023-05-15
1  102  São Francisco  2 . ..   850000.0  1400  2023-06-01

Classifique por quartos (crescente) e preço (decrescente):

  PropertyID Localização Quartos ...      Preço SquareFootage ListingDate
1 102 São Francisco 2...  850000.0 1400 2023-06-01
0 101 Nova York 3...  750000.0 1800 2023-05-15
3 104 Chicago 3...  650000.0 1700 NaN
5 106 Houston 4...  450000.0 2000 2023-07-01
2 103 Los Angeles 4...        NaN 2500 2023-04-10
4 105 Miami 5... 1200000.0 3500 2023-03-22

10. apply(): Aplicar funções personalizadas aos dados

A função apply() permite que você aplique funções personalizadas a linhas ou colunas em um DataFrame. É um método poderoso para realizar transformações, cálculos ou operações condicionais que vão além das funções integradas do Pandas.

Exemplo de código:

Vejamos um exemplo em que pretendemos criar uma nova coluna para calcular o preço por pé quadrado.

# Definir uma função personalizada para calcular o preço por pé quadrado
def price_per_sqft(price, sqft):
  return price / sqft if sqft != 0 else 0

# Aplicar a função personalizada para criar uma nova coluna
df['PricePerSqFt'] = df.apply(lambda row: price_per_sqft(row['Price'], row['SquareFootage']), axis=1)
print(df)

Aqui está o resultado do código acima:

  PropertyID Localização Quartos ...  SquareFootage ListingDate PricePerSqFt
0 101 New York 3...          1800 2023-05-15 416.666667
1 102 São Francisco 2...          1400 2023-06-01 607.142857
2 103 Los Angeles 4... 2500 2023-04-10 NaN
3 104 Chicago 3...          1700 NaN 382.352941
4 105 Miami 5...          3500 2023-03-22 342.857143
5 106 Houston 4... 2000 2023-07-01 225.000000

Outro exemplo poderia ser a conversão de nomes de locais em letras maiúsculas;

# Aplicar uma transformação para colocar todos os nomes de locais em letras maiúsculas
df['Location'] = df['Location'].apply(lambda x: x.upper())
print(df)

Veja como isso se parece:

   PropertyID Localização Quartos ...      Preço SquareFootage ListingDate
0 101 NEW YORK 3...  750000.0 1800 2023-05-15
1 102 SÃO FRANCISCO 2...  850000.0 1400 2023-06-01
2 103 LOS ANGELES 4...        NaN 2500 2023-04-10
3 104 CHICAGO 3...  650000.0 1700 NaN
4 105 MIAMI 5... 1200000.0 3500 2023-03-22
5 106 HOUSTON 4...  450000.0 2000 2023-07-01

Conclusão

Neste guia, exploramos 10 funções essenciais do Pandas para análise de dados, desde o carregamento e a inspeção de dados com read_csv() e info() para limpá-lo e transformá-lo usando métodos como isnull(), fillna()e aplicar(). Essas funções formam a base de qualquer fluxo de trabalho de análise de dados, permitindo que você limpe, manipule e resuma conjuntos de dados com eficiência. Ao dominá-las, você estará preparado para lidar com os desafios de dados do mundo real com confiança. Comece a praticar hoje mesmo e explore como essas ferramentas podem simplificar suas tarefas de análise!