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

Python, Dez-19-20245 minutos de leitura

Pandas é a biblioteca de referência para analistas de dados e programadores Python que se aventuram no mundo da manipulação e análise de dados. A sua sintaxe intuitiva e as estruturas de dados poderosas tornam o manuseamento de vastos conjuntos de dados não só gerível, mas também eficiente. Quer esteja a importar ficheiros CSV, a limpar conjuntos de dados desorganizados ou a analisar tendências de dados, o Pandas tem as ferramentas de que necessita.

Se está a iniciar a sua jornada de aprendizagem do Pandas, este post irá apresentar-lhe 10 funções e métodos essenciais que todos os principiantes devem dominar. Estas funções irão ajudá-lo a carregar, inspecionar, limpar e analisar dados com facilidade.
Aqui está uma breve descrição geral de cada método e do que faz:

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

Pré-requisitos

Primeiro, certifique-se de que o Python está instalado na sua máquina. Se não estiver, pode descarregá-lo a partir desta ligação.
Quando o Python estiver configurado, confirme se a biblioteca Pandas está instalada. Se não estiver, pode adicioná-la facilmente utilizando o seguinte comando:

pip install pandas

Utilizaremos o seguinte conjunto de dados fictícios do sector imobiliário para os nossos exemplos:

ID do imóvelLocalizaçãoQuartos de dormirCasas de banhoPreçoMetragem quadradaData da listagem
101Nova Iorque3275000018002023-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 ficheiro CSV para um Pandas DataFrame.

O primeiro passo na utilização do pandas é carregar os seus dados para os preparar para processamento ou análise. Um dos métodos mais comuns para importar dados para um DataFrame do pandas é a função read_csv().

Exemplo de código:

importar pandas como pd
# Carregar o conjunto de dados num DataFrame do Pandas
file_path = "real_estate_listings.csv" # Substituir pelo caminho real do ficheiro

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

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

Em seguida, especifique o caminho para o ficheiro CSV que pretende carregar para um Pandas DataFrame. Em seguida, crie uma variável e use a função ler_csv para carregar o ficheiro no DataFrame.

Parâmetros-chave:

Vamos agora explorar alguns parâmetros importantes que seguem este método:

  • delimitador: Especifique o delimitador utilizado no ficheiro CSV (por exemplo, ,, ;, \t).
df = pd.read_csv(file_path, delimiter=',')
  • índice_col: Na nossa tabela, cada listagem de imóveis é identificada por um ID que se encontra na secção "ID do imóvel". 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 irá gerar e atribuir automaticamente os seus próprios valores de ID a cada listagem.
df = pd.read_csv(file_path, index_col='PropertyID')
  • usecols: Se o seu ficheiro CSV contiver numerosas colunas, mas só precisar de algumas, o pandas permite-lhe conseguir isso facilmente utilizando 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: cabeça() e cauda(). Estes métodos são essenciais para inspecionar rapidamente as primeiras ou últimas linhas do seu conjunto de dados.

  • head(): Este método mostra as primeiras 5 linhas do conjunto de dados por defeito. É particularmente útil para verificar se os dados foram carregados corretamente e para verificar a sua estrutura.
  • tail(): Este método funciona de forma semelhante a head() mas apresenta as últimas linhas. É útil para examinar o fim do conjunto de dados, especialmente quando se verifica se os dados estão completos ou se os registos finais têm valores em falta.

Exemplo de código:

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

Saída de cabeça():

ID do imóvelLocalizaçãoQuartos de dormirCasas de banhoPreçoMetragem quadradaData da listagem
101Nova Iorque3275000018002023-05-15
102São Francisco2185000014002023-06-01
103Los Angeles4325002023-04-10
104Chicago326500001700
105Miami54120000035002023-03-22

Saída de cauda():

ID do imóvelLocalizaçãoQuartos de dormirCasas de banhoPreçoMetragem quadradaData 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. Inclui pormenores como:

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

Este método é útil para compreender rapidamente a estrutura do seu conjunto de dados e detetar problemas como valores em falta ou tipos de dados incorrectos.

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(): Gerar estatísticas resumidas

O descrever() O método fornece um resumo rápido das principais métricas estatísticas, como média, desvio padrão, percentise muito mais. Por defeito, descrever() funciona com dados numéricos, mas também pode tratar dados categóricos, oferecendo informações personalizadas com base no tipo de dados.

Parâmetros-chave:

  • percentis: Uma lista de números entre 0 e 1, especificando os percentis a serem retornados. O padrão é Nenhum, que retorna os percentis 25, 50 e 75. Ler mais aqui.
  • incluir: Uma lista de tipos de dados a incluir no resumo. Pode especificar tipos de dados como int, float, object (para cadeias de caracteres), etc. A predefinição é Nenhum, o que significa que todos os tipos numéricos são incluídos.
  • excluir: Uma lista de tipos de dados a excluir do resumo. Este parâmetro também é Nenhum por defeito, o que significa que nenhum tipo é excluído.

Exemplo de código:

imprimir(df.describe())

O resultado do código é o seguinte:

       PropriedadeID Localização Quartos ...         Preço SquareFootage ListingDate
contagem 6.000000 6 6.000000... 5.000000e+00 6.000000 5
único NaN 6 NaN ...           NaN NaN 5
top NaN Nova Iorque 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
max 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 omissas para cada coluna.
    • Exemplo: contagem = 6 para Quartos de dormirindicando que todas as linhas têm dados válidos.
  • Média: O valor médio da coluna.
    • Exemplo: média = 3,5 para Quartos de dormirindicando uma média de 3,5 quartos por propriedade.
  • Std: O desvio padrão, que mostra a dispersão dos valores em relação à média.
    • Exemplo: std = 1,048809 para Quartos de dormirou seja, há uma variação moderada no número de quartos.
  • Mín/Máx: O menor e o maior valor.
    • Exemplo: min = 2 e max = 5 para Quartos de dormir.
  • 25%, 50%, 75% (quartis): Representam a dispersão dos dados:
    • 25%: O valor abaixo do qual se situam 25% dos dados (primeiro quartil).
    • 50%: O valor mediano.
    • 75%: O valor abaixo do qual se situam 75% dos dados (terceiro quartil).

5. isnull(): Identificar dados em falta

O isnull() ajuda a identificar dados em falta num DataFrame. Devolve um DataFrame com a mesma forma que o original, com Verdadeiro quando faltam dados NaN e Falso de outra forma. É normalmente utilizada com outras funções como soma() para contar os valores em falta nas colunas ou linhas.

Exemplo de código:

# Identificar valoresem falta
print(df.isnull())
# Contar os valores em falta para cada coluna
print(df.isnull().sum())

df.isnull() Saída:

  ID do imóvel  Localização do imóvel  Quartos de dormir  Casas de banho  Preço  Metragem quadrada  Data do Anúncio
0       Falso     Falso     Falso      Falso  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:

ID do imóvel 0
Localização 0
Quartos 0
Casas de banho 0
Preço 1
SquareFootage 0
ListingDate 1
dtype: int64

6. dropna(): Remover dados em falta

O dropna() função remove linhas ou colunas com dados em falta NaN do DataFrame. Por predefinição, remove as linhas com quaisquer valores em falta. É possível personalizar o seu comportamento para remover apenas colunas ou para eliminar linhas/colunas em que todos ou um subconjunto específico de valores estejam em falta

Exemplo de código:

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

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

Este é o aspeto do DataFrame depois de remover todos os linhas contendo NaN valores:

ID do imóvelLocalizaçãoQuartos de dormirCasas de banhoPreçoMetragem quadradaData da listagem
101Nova Iorque3275000018002023-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 do imóvelLocalizaçãoQuartos de dormirCasas de banhoMetragem quadrada
101Nova Iorque321800
102São Francisco211400
103Los Angeles432500
104Chicago321700
105Miami543500
106Houston432000

7. fillna(): Substituir dados em falta

O fillna() função substitui os dados em falta NaN com valores especificados. O programa pandas dropna() trata e remove eficazmente os valores nulos de um DataFrame, enquanto o método fillna() oferece uma solução flexível para a substituição de NaN com um valor especificado à escolha do utilizador. Este método oferece uma abordagem flexível para gerir dados em falta, permitindo-lhe preencher lacunas utilizando um valor fixo, o média, mediana, modoou outras estatísticas calculadas.

Exemplo de código:

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

O resultado do código demonstra que o NaN foi substituído com êxito pelo preço médio.

ID do imóvelLocalizaçãoQuartos de dormirCasas de banhoPreçoMetragem quadradaData da listagem
101Nova Iorque3275000018002023-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 efetuar um cálculo, podemos simplesmente utilizar um marcador de posição como "desconhecido. Eis como o fazer;

# Preencher os valores em falta na coluna "ListingDate" com um marcador de posição
df['ListingDate'] = df['ListingDate'].fillna('Unknown')
print(df)

O Dataframe tem agora o seguinte aspeto:

ID do imóvelLocalizaçãoQuartos de dormirCasas de banhoPreçoMetragem quadradaData da listagem
101Nova Iorque3275000018002023-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 numa ou mais colunas, permitindo uma análise e agregação eficientes dos dados.
Funciona segundo o princípio dividir-aplicar-combinar:
primeiro, os dados são divididos em grupos;
depois, uma função especificada é aplicada a cada grupo;
finalmente, os resultados são combinados num novo DataFrame.
Esta abordagem optimizada simplifica tarefas complexas de manipulação de dados e aumenta a eficiência analítica.

Exemplo de código:

Por exemplo, pode calcular o preço médio dos imóveis por localização ou contar o número de anúncios por categoria de quarto.

# Agrupar por 'Localização' e calcular o preço médio
preço_médio_por_localização = df.groupby('Localização')['Preço'].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 localização:

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

Metragem quadrada total por quartos:

Quartos de dormir
2    1400
3    3500
4    4500
5    3500

Contagem por Localização e Quartos:

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

9. sort_values(): Ordenar dados

A função sort_values() é utilizada para ordenar o DataFrame por uma ou mais colunas, em ordem ascendente ou descendente. A ordenação é essencial para classificar dados, identificar extremos (por exemplo, as propriedades de preço mais elevado) ou simplesmente organizar o conjunto de dados para melhor legibilidade.

Exemplo de código:

# Ordenar por 'Preço' por ordem descendente
df_sorted_by_price = df.sort_values(by='Price', ascending=False)
print(df_sorted_by_price)
# Ordenar por 'Localização' em ordem ascendente
df_sorted_by_location = df.sort_values(by='Location')
print(df_sorted_by_location)
# Ordenar por várias colunas: primeiro por 'Quartos' (ascendente) e depois por 'Preço' (descendente)
df_sorted_by_bedrooms_price = df.sort_values(by=['Bedrooms', 'Price'], ascending=[True, False])
print(df_sorted_by_bedrooms_price)

Ordenar por preço (decrescente):

  PropriedadeID 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 Iorque 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

Ordenar por localização (ascendente):

[6 linhas x 7 colunas]
  PropriedadeID Localização Quartos ...      Preço Metragem quadrada Data da listagem
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 Iorque  3 . ..   750000.0  1800  2023-05-15
1  102  São Francisco  2 . ..   850000.0  1400  2023-06-01

Ordenar por Quartos (Ascendente) e Preço (Descendente):

  PropriedadeID Localização Quartos ...      Preço Metragem Quadrada ListagemData
1 102 São Francisco 2...  850000.0 1400 2023-06-01
0 101 Nova Iorque 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-lhe aplicar funções personalizadas a linhas ou colunas de um DataFrame. É um método poderoso para efetuar transformações, cálculos ou operações condicionais que vão para além das funções Pandas incorporadas.

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:

  PropriedadeID 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 maiúsculas;

# Aplicar uma transformação para tornar maiúsculos todos os nomes de localizações
df['Localização'] = df['Localização'].apply(lambda x: x.upper())
print(df)

Eis o seu aspeto:

   PropriedadeID 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...        Nulo 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, explorámos 10 funções essenciais do Pandas para análise de dados, desde o carregamento e inspeção de dados com read_csv() e info() para o limpar e transformar utilizando métodos como isnull(), fillna()e aplicar(). Estas funções constituem a base de qualquer fluxo de trabalho de análise de dados, permitindo-lhe limpar, manipular e resumir conjuntos de dados de forma eficaz. Ao dominá-las, estará a preparar-se para lidar com os desafios de dados do mundo real com confiança. Comece a praticar hoje e explore como estas ferramentas podem simplificar as suas tarefas de análise!