Python
Dominando df.mean: Um Guia Iniciante para Calcular Médias

Dominando df.mean: Um Guia Iniciante para Calcular Médias

MoeNagy Dev

Definindo a média no contexto de data frames

A média, também conhecida como a média aritmética, é uma medida de tendência central amplamente utilizada na análise de dados. No contexto de data frames, a média representa o valor médio de uma determinada coluna ou conjunto de colunas. Ela é calculada somando-se todos os valores em uma coluna e dividindo o resultado pelo número de valores não ausentes.

Calculando a média de um data frame

Calculando a média de uma única coluna

Para calcular a média de uma única coluna em um data frame, você pode usar a função mean(). Aqui está um exemplo:

import pandas as pd
 
# Criar um data frame de exemplo
data = {'Idade': [25, 32, 41, 28, 35],
        'Salário': [50000, 60000, 70000, 55000, 65000]}
df = pd.DataFrame(data)
 
# Calcular a média da coluna 'Idade'
media_idade = df['Idade'].mean()
print(f"A média de idade é: {media_idade}")

Saída:

A média de idade é: 32.2

Calculando a média de múltiplas colunas

Você também pode calcular a média de múltiplas colunas em um data frame. Para fazer isso, você pode passar uma lista de nomes de colunas para a função mean():

# Calcular a média das colunas 'Idade' e 'Salário'
medias = df[['Idade', 'Salário']].mean()
print(medias)

Saída:

Idade     32.2
Salário  60000.0
dtype: float64

Lidando com valores ausentes ao calcular a média

Se o seu data frame contiver valores ausentes (representados por NaN ou None), a função mean() excluirá automaticamente esses valores do cálculo. No entanto, você também pode especificar como lidar com valores ausentes usando o parâmetro skipna.

# Criar um dataframe com valores ausentes
data = {'Idade': [25, 32, 41, 28, 35, None],
        'Salário': [50000, 60000, 70000, 55000, 65000, None]}
df = pd.DataFrame(data)
 
# Calcular a média, incluindo valores ausentes
media_idade = df['Idade'].mean(skipna=False)
print(f"A média de idade (incluindo valores ausentes): {media_idade}")
 
# Calcular a média, excluindo valores ausentes
media_idade = df['Idade'].mean(skipna=True)
print(f"A média de idade (excluindo valores ausentes): {media_idade}")

Saída:

A média de idade (incluindo valores ausentes): nan
A média de idade (excluindo valores ausentes): 32.2

Aplicando a média a diferentes tipos de dados

Tipos de dados numéricos

A função mean() funciona perfeitamente com tipos de dados numéricos, como inteiros e números de ponto flutuante. Ela calcula a média aritmética dos valores na(s) coluna(s) selecionada(s).

# Exemplo com dados numéricos
data = {'Idade': [25, 32, 41, 28, 35],
        'Salário': [50000, 60000, 70000, 55000, 65000]}
df = pd.DataFrame(data)
 
media_idade = df['Idade'].mean()
media_salario = df['Salário'].mean()
 
print(f"A média de idade é: {media_idade}")
print(f"A média de salário é: {media_salario}")

Saída:

A média de idade é: 32.2
A média de salário é: 60000.0

Tipos de dados não numéricos

A função mean() também pode ser aplicada a tipos de dados não numéricos, como strings ou variáveis categóricas, mas a interpretação do resultado pode não ser significativa. Nesses casos, a função mean() tentará converter os valores não numéricos em valores numéricos antes de calcular a média.

# Exemplo com dados não numéricos
data = {'Nome': ['João', 'Maria', 'Pedro', 'Alice', 'Tomás'],
        'Gênero': ['M', 'F', 'M', 'F', 'M']}
df = pd.DataFrame(data)
 
media_genero = df['Gênero'].mean()
print(f"A média de gênero é: {media_genero}")

Saída:

A média de gênero é: 0.6

Neste exemplo, a função mean() converte os valores 'M' e 'F' em valores numéricos (0 e 1, respectivamente) e calcula a média, que é.## Interpretando os resultados do cálculo da média

Entendendo o significado do valor médio

O valor médio representa a tendência central dos dados, fornecendo uma estimativa do valor "médio" ou "típico" no conjunto de dados. É calculado somando todos os valores e dividindo pelo número de valores não ausentes.

A interpretação do valor médio depende do contexto dos dados e do problema específico que você está tentando resolver. Por exemplo, no caso da coluna 'Idade', a idade média de 32,2 anos lhe dá uma ideia da idade típica no conjunto de dados. Para a coluna 'Salário', o salário médio de $60.000 fornece informações sobre o nível salarial médio.

Identificando possíveis problemas com a média

Embora a média seja uma estatística resumida amplamente utilizada, ela pode ser influenciada por valores atípicos ou distribuições assimétricas. Valores atípicos, que são pontos de dados significativamente diferentes do restante dos dados, podem puxar a média em sua direção e torná-la menos representativa do valor típico.

Além disso, se os dados forem assimétricos (ou seja, a distribuição não for simétrica), a média pode não ser a melhor representação da tendência central, e a mediana pode ser uma medida mais apropriada.

Comparando a média com outras estatísticas resumidas

Diferenças entre a média e a mediana

A mediana é outra medida de tendência central, que representa o valor do meio no conjunto de dados quando os valores são organizados em ordem. Ao contrário da média, a mediana é menos afetada por valores atípicos e distribuições assimétricas.

As principais diferenças entre a média e a mediana são:

  • A média é a média aritmética, enquanto a mediana é o valor do meio.
  • A média é sensível a valores atípicos, enquanto a mediana é mais robusta a valores atípicos.
  • A média é influenciada pela magnitude dos valores, enquanto a mediana não é.
  • A média é afetada pela forma da distribuição, enquanto a mediana não é.### Quando usar a média versus a mediana

A escolha entre usar a média ou a mediana depende das características dos dados e do problema específico que você está tentando resolver. Geralmente:

  • Use a média quando os dados estiverem aproximadamente normalmente distribuídos e você quiser representar o valor "típico" ou "médio".
  • Use a mediana quando os dados estiverem enviesados ou contiverem outliers, pois ela é menos afetada por valores extremos e fornece uma medida mais robusta de tendência central.
  • Use a mediana quando você quiser encontrar o valor "do meio" no conjunto de dados, independentemente da distribuição.

Agrupando dados e calculando a média

Calculando a média para dados agrupados

Você também pode calcular a média para dados agrupados em um dataframe. Isso é útil quando você deseja analisar a média para diferentes subconjuntos de seus dados. Para fazer isso, você pode usar a função groupby() no Pandas.

# Exemplo com dados agrupados
data = {'Nome': ['João', 'Jane', 'Bob', 'Alice', 'Tom'],
        'Idade': [25, 32, 41, 28, 35],
        'Salário': [50000, 60000, 70000, 55000, 65000],
        'Departamento': ['Vendas', 'Marketing', 'TI', 'Vendas', 'TI']}
df = pd.DataFrame(data)
 
# Calcular a média de idade e salário para cada departamento
valores_médios = df.groupby('Departamento')[['Idade', 'Salário']].mean()
print(valores_médios)

Saída:

            Idade   Salário
Departamento               
Marketing     32.0  60000.0
TI            38.0  67500.0
Vendas        26.5  52500.0

Neste exemplo, agrupamos o dataframe pela coluna 'Departamento' e, em seguida, calculamos a média das colunas 'Idade' e 'Salário' para cada departamento.

Aplicando a média a múltiplos grupos

Você também pode aplicar o cálculo da média a vários grupos simultaneamente. Isso pode ser útil quando você deseja comparar os valores médios entre diferentes critérios de agrupamento.

# Exemplo com múltiplos critérios de agrupamento
data = {'Nome': ['João', 'Jane', 'Bob', 'Alice', 'Tom', 'Emily', 'David', 'Sarah'],
        'Idade': [25, 32, 41, 28, 35, 30, 45, 27],
        'Salário': [50000, 60000, 70000, 55000, 65000, 52000, 75000, 48000],
        'Departamento': ['Vendas', 'Marketing', 'TI', 'Vendas', 'TI', 'Marketing', 'TI', 'Vendas'],
        'Gênero': ['Masculino', 'Feminino', 'Masculino', 'Feminino', 'Masculino', 'Feminino', 'Masculino', 'Feminino']}
df = pd.DataFrame(data)
 
# Calcular a média de idade e salário por departamento e gênero
médias_múltiplos_grupos = df.groupby(['Departamento', 'Gênero'])[['Idade', 'Salário']].mean()
print(médias_múltiplos_grupos)

, 35, 30, 38, 27], 'Salário': [50000, 60000, 70000, 55000, 65000, 52000, 68000, 48000], 'Departamento': ['Vendas', 'Marketing', 'TI', 'Vendas', 'TI', 'Marketing', 'TI', 'Vendas'], 'Gênero': ['M', 'F', 'M', 'F', 'M', 'F', 'M', 'F']} df = pd.DataFrame(data)

Calcular a média de idade e salário para cada departamento e gênero

média_valores = df.groupby(['Departamento', 'Gênero'])[['Idade', 'Salário']].mean() print(média_valores)


Saída:

Idade Salário Departamento Gênero
TI M 39.5 69000.0 F 30.0 52000.0 Marketing F 31.0 60000.0 Vendas F 27.5 51500.0 M 26.0 50000.0


Neste exemplo, agrupamos o dataframe por ambas as colunas 'Departamento' e 'Gênero', e então calculamos a média das colunas 'Idade' e 'Salário' para cada combinação de departamento e gênero.

## Trabalhando com Módulos e Pacotes

O design modular do Python permite que você organize seu código em componentes reutilizáveis chamados módulos. Módulos são arquivos Python que contêm definições e instruções. Importando módulos, você pode acessar a funcionalidade que eles fornecem.

### Importando Módulos

A instrução `import` é usada para trazer a funcionalidade de um módulo. Aqui está um exemplo:

```python
import math
print(math.pi)  # Saída: 3.141592653589793

Você também pode importar funções ou atributos específicos de um módulo:

from math import pi, sqrt
print(pi)       # Saída: 3.141592653589793
print(sqrt(9)) # Saída: 3.0

Criando Módulos

Para criar seu próprio módulo, basta salvar seu código Python em um arquivo .py. Por exemplo, vamos criar um módulo chamado meu_módulo.py:

def cumprimentar(nome):
    print(f"Olá, {nome}!")
 
def quadrado(x):
    return x ** 2

Agora, você pode importar e usar as funções deste módulo:

import meu_módulo
meu_módulo.cumprimentar("Alice")  # Saída: Olá, Alice!
resultado = meu_módulo.quadrado(5)
print(resultado)  # Saída: 25

Pacotes

Pacotes. Os pacotes são uma maneira de organizar módulos em estruturas hierárquicas. Um pacote é uma coleção de módulos armazenados em um diretório. Para criar um pacote, basta criar um diretório e colocar seus arquivos de módulo dentro dele.

Por exemplo, vamos criar um pacote chamado my_package com dois módulos: utils.py e math_functions.py:

my_package/
    __init__.py
    utils.py
    math_functions.py

O arquivo __init__.py é necessário para tornar o diretório um pacote. Ele pode estar vazio ou conter código de inicialização.

Agora, você pode importar módulos do pacote desta forma:

from my_package import utils, math_functions
utils.print_message("Hello, World!")
result = math_functions.add(3, 4)
print(result)  # Saída: 7

Pacotes e Importações Relativas

Dentro de um pacote, você pode usar importações relativas para acessar outros módulos no mesmo pacote. As importações relativas usam a notação . para especificar o caminho relativo.

Por exemplo, vamos dizer que math_functions.py precisa usar uma função de utils.py:

# math_functions.py
from .utils import print_message
 
def add(a, b):
    print_message("Adicionando números...")
    return a + b

O prefixo . na declaração de importação indica que o módulo utils está no mesmo diretório que o módulo atual.

Ambientes Virtuais

Ambientes virtuais permitem criar ambientes Python isolados com suas próprias dependências e instalações de pacotes. Isso ajuda a evitar conflitos entre diferentes projetos e garante ambientes de desenvolvimento consistentes.

Você pode criar e gerenciar ambientes virtuais usando ferramentas como venv (integrado ao Python) ou pipenv.

Aqui está um exemplo usando venv:

# Criar um novo ambiente virtual
python -m venv my_env

# Ativar o ambiente virtual
# (Windows)
my_env\Scripts\activate
# (macOS/Linux)
source my_env/bin/activate

# Instalar pacotes no ambiente virtual
pip install numpy pandas

Quando terminar, você pode desativar o ambiente virtual:

deactivate

###.Conclusão

Neste tutorial, você aprendeu a trabalhar com módulos e pacotes em Python. Você explorou a importação de módulos, a criação de seus próprios módulos, a organização do código usando pacotes e a utilização de importações relativas. Além disso, você aprendeu sobre a importância de ambientes virtuais para gerenciar dependências e garantir ambientes de desenvolvimento consistentes.

Ao dominar esses conceitos, você poderá escrever código Python mais modular, manutenível e escalável. Lembre-se, a chave para um desenvolvimento Python eficaz é aproveitar o poderoso sistema de módulos e pacotes da linguagem para criar componentes reutilizáveis e organizados.

MoeNagy Dev.