O Pandas é uma biblioteca de código aberto para análise de dados em Python. Ela fornece estruturas de dados e ferramentas poderosas para manipular, analisar e visualizar dados de forma eficiente. Este guia prático é direcionado a você, que deseja:
- Desvendar os segredos da análise de dados: Aprenda os fundamentos do Pandas e domine as técnicas para transformar dados brutos em insights acionáveis.
- Superar desafios com maestria: Abordaremos desde a leitura e escrita de dados em diferentes formatos até a manipulação complexa de DataFrames, explorando um universo de possibilidades.
- Elevar seu nível de conhecimento: Domine as ferramentas do Pandas para realizar análises estatísticas, visualizar dados de forma criativa e tomar decisões mais inteligentes.
Junte-se a mim nesta jornada!
Ao longo deste guia, você encontrará:
- Explicações claras e concisas: Conceitos complexos descomplicados para que você aprenda de forma rápida e eficiente.
- Exemplos práticos e relevantes: Reforce seu aprendizado com aplicações reais do Pandas em diferentes áreas.
Ao final deste guia, você estará pronto para:
- Ler e escrever dados em diversos formatos: Domine a importação e exportação de dados de diferentes fontes.
- Manipular DataFrames com destreza: Utilize as ferramentas do Pandas para transformar, limpar e organizar seus dados.
- Realizar análises estatísticas robustas: Explore medidas descritivas, agrupamentos e agregações para extrair insights valiosos.
- Visualizar dados de forma criativa: Crie gráficos e tabelas para comunicar suas descobertas de forma clara e impactante.
Então, o que você está esperando?
Abra suas asas e voe alto no mundo da análise de dados com Pandas!
Manipulação de Dados com DataFrames
Domine os DataFrames, o coração do Pandas!
O DataFrame é uma estrutura de dados bidimensional similar a uma planilha do Excel, com linhas, colunas e índices. É a principal ferramenta do Pandas para manipular e analisar dados.
Nesta seção, você aprenderá a:
- Criar DataFrames: A partir de listas, dicionários, arrays NumPy e outras estruturas de dados.
- Selecionar e acessar dados: Use
loc
,iloc
, colunas e índices para navegar com precisão no DataFrame. - Filtrar e ordenar dados: Utilize expressões booleanas e funções como
sort_values()
para encontrar e organizar as informações que você precisa. - Agrupar e agregar dados: Explore as funções
groupby()
eagg()
para realizar análises estatísticas e identificar padrões. - Combinar DataFrames: Junte dados de diferentes fontes usando
merge()
ejoin
. - Manipular strings: Utilize funções como
str.upper()
,str.lower()
estr.replace()
para transformar e limpar dados textuais. - Calcular estatísticas descritivas: Obtenha medidas como média, mediana, desvio padrão e outras informações relevantes com a função
describe()
. - Visualizar dados: Crie gráficos e tabelas com
plot()
,hist()
escatter()
para visualizar seus dados de forma clara e impactante.
Domine estas habilidades e torne-se um mestre em manipulação de dados!
Vamos começar?
1. Criando DataFrames
Existem diversas maneiras de criar um DataFrame:
Estes são exemplos de como criar um DataFrame usando diferentes tipos de dados estruturados em Python: uma lista, um dicionário e um array NumPy. Aqui está uma explicação detalhada de cada um desses casos:
- A partir de uma lista:
import pandas as pd
# Criando uma lista de listas contendo os dados
data = [["João", 20, "M"], ["Maria", 25, "F"]]
# Criando o DataFrame a partir da lista
df = pd.DataFrame(data)
# Exibindo o DataFrame
print(df)
Neste exemplo, primeiro importamos a biblioteca pandas. Em seguida, criamos uma lista de listas chamada data
, onde cada lista interna representa uma linha de dados. Depois, usamos pd.DataFrame()
para criar um DataFrame a partir dessa lista. O DataFrame resultante terá colunas numeradas automaticamente.
- A partir de um dicionário:
import pandas as pd
# Criando um dicionário contendo os dados
data = {
"Nome": ["João", "Maria"],
"Idade": [20, 25],
"Sexo": ["M", "F"]
}
# Criando o DataFrame a partir do dicionário
df = pd.DataFrame(data)
# Exibindo o DataFrame
print(df)
Neste exemplo, criamos um dicionário chamado data
onde as chaves são os nomes das colunas e os valores são listas dos dados correspondentes a essas colunas. Em seguida, usamos pd.DataFrame()
para criar um DataFrame a partir desse dicionário. O DataFrame resultante terá as colunas nomeadas conforme as chaves do dicionário.
- A partir de um array NumPy:
import pandas as pd
import numpy as np
# Criando um array NumPy
array = np.array([[1, 2, 3], [4, 5, 6]])
# Criando o DataFrame a partir do array NumPy
df = pd.DataFrame(array)
# Exibindo o DataFrame
print(df)
Neste exemplo, primeiro importamos as bibliotecas pandas e NumPy. Em seguida, criamos um array NumPy chamado array
. Depois, usamos pd.DataFrame()
para criar um DataFrame a partir desse array. O DataFrame resultante terá as colunas numeradas automaticamente.
Independentemente do método utilizado para criar o DataFrame, o resultado final será um objeto DataFrame do pandas contendo os dados especificados.
2. Selecionando e Acessando Dados
Vamos entender cada uma dessas operações:
- Selecionar colunas:
import pandas as pd
# Dados dos clientes
dados = {
'Nome': ['João', 'Maria', 'Pedro', 'Ana', 'Luiz'],
'Idade': [30, 25, 40, 35, 28],
'Sexo': ['M', 'F', 'M', 'F', 'M'],
'Cidade': ['São Paulo', 'Rio de Janeiro', 'Belo Horizonte', 'Salvador', 'Brasília']
}
# Criando o DataFrame
df = pd.DataFrame(dados)
# Exibindo o DataFrame
print(df)
Este código cria um DataFrame chamado df_clientes
com cinco clientes, onde cada cliente tem informações sobre nome, idade, sexo e cidade. O DataFrame é criado a partir de um dicionário onde as chaves são os nomes das colunas e os valores são listas correspondentes aos dados de cada coluna. Ao exibir o DataFrame, você verá uma tabela com os dados dos clientes.
print(df[["Nome", "Idade"]])
Neste trecho de código, estamos selecionando apenas as colunas “Nome” e “Idade” do DataFrame df
e atribuindo o resultado de volta à variável df
.
- Selecionar linhas por índice:
print(df.iloc[0:2])
Com o método iloc
, estamos selecionando as linhas do DataFrame df
do índice 0 (inclusivo) ao índice 2 (exclusivo). Portanto, isso selecionará as primeiras duas linhas do DataFrame.
- Selecionar linhas por valor:
print((df[df["Idade"] > 20]))
Aqui, estamos filtrando o DataFrame df
com base em uma condição específica. Estamos selecionando apenas as linhas onde o valor na coluna “Idade” é maior que 20. O resultado conterá apenas as linhas que atendem à condição especificada.
- Acessar um único valor:
valor = df.loc[0, 1]
print(valor)
Com o método loc
, estamos acessando um único valor do DataFrame df
. Aqui, 0
é o índice da linha e 1
é o índice da coluna. Portanto, estamos acessando o valor localizado na linha com índice 0
e coluna com índice 1
. O valor resultante é atribuído à variável valor
.
No entanto, há um erro neste código. O método loc
aceita rótulos de linha e coluna, não índices. Portanto, o correto seria:
valor = df.loc[0, "Nome"]
print(valor)
Assumindo que queremos acessar o valor da coluna “Nome” na primeira linha do DataFrame.
3. Filtrando e Ordenando Dados
Vamos entender cada uma dessas operações:
- Filtrar por expressão booleana:
print(df[df["Sexo"] == "M"])
Neste trecho de código, estamos filtrando o DataFrame df
com base em uma expressão booleana. Estamos selecionando apenas as linhas onde o valor na coluna “Sexo” é igual a “M”. O DataFrame resultado conterá apenas as linhas onde o sexo é masculino.
- Ordenar por coluna:
print(df.sort_values("Idade", ascending=False))
Com o método sort_values
, estamos ordenando o DataFrame df
com base nos valores da coluna “Idade”. O parâmetro ascending=False
indica que a ordenação será feita de forma descendente, ou seja, os maiores valores de idade aparecerão primeiro. O resultado é o DataFrame ordenado em ordem decrescente com base na coluna “Idade”.
4. Agrupando e Agregando Dados
Vamos analisar cada uma dessas operações:
- Agrupar por coluna:
# Agrupando por sexo e calculando a média da idade em cada grupo
grupo_sexo = df.groupby("Sexo")["Idade"].mean()
# Exibindo o resultado do agrupamento
print(grupo_sexo)
Com o método groupby
, estamos agrupando o DataFrame df
com base nos valores únicos da coluna “Sexo”. Isso significa que os dados serão divididos em grupos distintos, onde cada grupo contém todas as linhas que têm o mesmo valor na coluna “Sexo”.
- Calcular média por grupo:
media_idade = df["Idade"].mean()
print(media_idade)
Depois de agrupar o DataFrame por sexo, estamos calculando a média das idades em cada grupo. O resultado será uma série pandas contendo a média das idades para cada grupo (no caso, grupo de sexo masculino e grupo de sexo feminino).
Aqui, é importante notar que após a operação de agrupamento, a coluna “Idade” torna-se a única coluna disponível para cálculos agregados. Portanto, aplicamos a função mean()
diretamente a esta coluna dentro de cada grupo.
5. Combinando DataFrames
- Combinar por coluna em comum:
# Criando o primeiro DataFrame df1
df1 = pd.DataFrame({"Nome": ["João ", " Maria"], "Idade": [20, 25]})
# Criando o segundo DataFrame df2
df2 = pd.DataFrame({"Cidade": ["São Paulo", "Rio de Janeiro"]})
# Combinando os DataFrames com base nos índices
df_combinado = pd.merge(df1, df2, left_index=True, right_index=True)
print(df_combinado)
- Criando o primeiro DataFrame (df1):
df1 = pd.DataFrame({"Nome": ["João", "Maria"], "Idade": [20, 25]})
Aqui, estamos criando um DataFrame df1
com duas colunas: “Nome” e “Idade”. Os valores das colunas são fornecidos como listas de Python.
- Criando o segundo DataFrame (df2):
df2 = pd.DataFrame({"Cidade": ["São Paulo", "Rio de Janeiro"]})
Aqui, estamos criando um DataFrame df2
com uma coluna “Cidade” contendo os valores “São Paulo” e “Rio de Janeiro”.
- Combinando os DataFrames (df_combinado):
df_combinado = pd.merge(df1, df2, on="Nome")
Usando o método merge()
, estamos combinando os DataFrames df1
e df2
com base na coluna em comum “Nome”. Isso significa que estamos juntando os DataFrames quando o valor na coluna “Nome” for o mesmo em ambos os DataFrames. O resultado é armazenado no DataFrame df_combinado
.
O resultado final será um DataFrame contendo as colunas “Nome”, “Idade” (do df1
) e “Cidade” (do df2
). Como o DataFrame df2
não possui uma coluna “Nome”, ele será combinado com base na coluna “Nome” do df1
.
6. Manipulando Strings
- Converter para letras maiúsculas:
df_combinado["Nome"] = df_combinado["Nome"].str.upper()
print(df_combinado)
Com df["Nome"].str.upper()
, estamos aplicando o método upper()
a cada elemento da coluna “Nome” do DataFrame df
. Este método converte todas as letras da string para maiúsculas. O resultado é atribuído de volta à coluna “Nome”, substituindo os valores anteriores.
- Remover espaços em branco:
df_combinado["Nome"] = df_combinado["Nome"].str.strip()
Com df["Nome"].str.strip()
, estamos aplicando o método strip()
a cada elemento da coluna “Nome” do DataFrame df
. Este método remove os espaços em branco no início e no final de cada string. O resultado é atribuído de volta à coluna “Nome”, substituindo os valores anteriores.
Essas operações são úteis para manipular strings em DataFrames, permitindo limpar e normalizar os dados de acordo com as necessidades específicas.
7. Calculando Estatísticas Descritivas
df_combinado.describe()
O método describe()
é uma função conveniente em Pandas para gerar estatísticas descritivas de um DataFrame ou de uma Series. Vamos entender o que ele faz e como é útil:
- DataFrame.describe():
O método describe()
é usado para gerar estatísticas descritivas que resumem a tendência central, a dispersão e a forma da distribuição de um conjunto de dados. Ele calcula várias estatísticas para cada coluna numérica no DataFrame, como contagem de valores não nulos, média, desvio padrão, valores mínimos e máximos, quartis e assim por diante.
Aqui está uma explicação dos principais resultados que o método describe()
retorna:
- Contagem (count): O número de observações não nulas em cada coluna.
- Média (mean): A média aritmética dos valores em cada coluna.
- Desvio padrão (std): O desvio padrão dos valores em cada coluna, que mede a dispersão dos dados em torno da média.
- Valor mínimo (min): O menor valor encontrado em cada coluna.
- Quartis (25%, 50%, 75%): Os valores que dividem os dados em quartis (Q1, Q2 e Q3), representando o primeiro, o segundo (mediana) e o terceiro quartis dos dados, respectivamente.
- Valor máximo (max): O maior valor encontrado em cada coluna.
Essas estatísticas são muito úteis para entender a distribuição e a natureza dos dados em um DataFrame. Elas fornecem uma visão geral rápida das propriedades numéricas dos dados e podem ajudar na identificação de possíveis problemas, como valores ausentes, outliers ou inconsistências nos dados.
É importante ressaltar que o método describe()
só retorna estatísticas para as colunas numéricas do DataFrame. As colunas categóricas ou não numéricas são excluídas automaticamente da saída. Se desejar incluir todas as colunas, incluindo as não numéricas, você pode especificar include='all'
como argumento, como em df_combinado.describe(include='all')
.
8. Visualizando Dados
- Criar um gráfico de linhas:
df_combinado.plot()
df.plot()
Com este código, estamos criando um gráfico de linhas com todas as colunas do DataFrame df_combinado
e df
. Cada coluna será representada por uma linha no gráfico, onde o eixo x (horizontal) representará os índices do DataFrame e o eixo y (vertical) representará os valores das colunas. Este tipo de gráfico é útil para visualizar tendências ao longo do tempo ou relações entre diferentes séries de dados.
- Criar um histograma:
df["Idade"].hist()
df_combinado["Idade"].hist()
Com este código, estamos criando um histograma da coluna “Idade” do DataFrame df_combinado
e df
. Um histograma é uma representação gráfica da distribuição de frequência dos dados. No eixo x, temos os valores da variável (nesse caso, idades), e no eixo y, temos a contagem de observações para cada intervalo de valores. Isso nos ajuda a entender a distribuição dos dados e identificar padrões, como concentração em torno de certos valores ou presença de outliers.
- Criar um diagrama de dispersão:
df.plot.scatter("Idade", "Sexo")
df_combinado.plot.scatter("Idade", "Cidade")
Com este código, estamos criando um diagrama de dispersão com os dados das colunas “Idade” e “Sexo” e “Idade”, “Cidade” do DataFrame df_combinado
e df
. Um diagrama de dispersão é usado para visualizar a relação entre duas variáveis numéricas. Cada ponto no gráfico representa uma observação e sua posição é determinada pelo valor das duas variáveis. Isso nos ajuda a identificar padrões, tendências ou correlações entre as variáveis representadas nos eixos x e y. No caso específico deste código, estamos explorando a relação entre idade e altura.
Exemplos Práticos e Relevantes
Domine o Pandas com exemplos reais!
Nesta seção, você encontrará exemplos práticos e relevantes de como utilizar o Pandas para manipular e analisar dados em diferentes áreas.
1. Análise de Vendas:
- Importação de bibliotecas: No início do código, importamos a biblioteca
pandas
para lidar com os dados em formato de DataFrame e a bibliotecamatplotlib.pyplot
para plotar gráficos.
import pandas as pd
import matplotlib.pyplot as plt
- Criação dos dados de vendas: Definimos os dados de vendas como uma lista de listas, onde cada lista interna representa uma linha de dados contendo informações sobre o nome do cliente, produto vendido, valor da venda e região onde ocorreu a venda.
dados_vendas = [
["João", "Camisa", 100, "Sul"],
["Maria", "Calça", 150, "Sudeste"],
["Pedro", "Tênis", 200, "Nordeste"],
["Ana", "Vestido", 300, "Centro-Oeste"],
["Bruno", "Casaco", 250, "Sul"],
["Camila", "Blusa", 120, "Sudeste"],
["Daniel", "Boné", 50, "Nordeste"],
["Eduarda", "Chinelos", 40, "Centro-Oeste"],
["Felipe", "Meias", 30, "Sul"],
["Fernanda", "Cinto", 60, "Sudeste"],
]
- Criação do DataFrame: Utilizando a lista
dados_vendas
, criamos um DataFrame do pandas. Especificamos os nomes das colunas como “Nome”, “Produto”, “Valor” e “Região”.
df_vendas = pd.DataFrame(
dados_vendas,
columns=["Nome", "Produto", "Valor", "Região"],
)
- Salvando o DataFrame em um arquivo CSV: O DataFrame
df_vendas
é salvo como um arquivo CSV chamado “vendas.csv” utilizando o métodoto_csv
.
df_vendas.to_csv("vendas.csv", index=False)
- Cálculo da receita total por produto: Utilizando o método
groupby
, agrupamos os dados por produto e somamos os valores das vendas ("Valor"
) para cada produto. Depois, ordenamos os resultados em ordem decrescente utilizando o métodosort_values
.
receita_por_produto = df_vendas.groupby("Produto")["Valor"].sum().sort_values(ascending=False)
print("Receita total por produto:")
print(receita_por_produto)
- Visualização da distribuição das vendas por região: Utilizamos
value_counts()
para contar o número de vendas por região eplot(kind='bar')
para plotar um gráfico de barras. Adicionamos título, rótulos de eixos e ajustamos o layout do gráfico para melhor visualização.
plt.figure(figsize=(8, 6))
df_vendas["Região"].value_counts().plot(kind='bar', rot=45)
plt.title('Distribuição das vendas por região')
plt.xlabel('Região')
plt.ylabel('Número de Vendas')
plt.tight_layout()
plt.show()
Essas são as principais etapas do código, que incluem desde a criação dos dados até a visualização das análises realizadas.
import pandas as pd
import matplotlib.pyplot as plt
# Criando a lista de dados
dados_vendas = [
["João", "Camisa", 100, "Sul"],
["Maria", "Calça", 150, "Sudeste"],
["Pedro", "Tênis", 200, "Nordeste"],
["Ana", "Vestido", 300, "Centro-Oeste"],
["Bruno", "Casaco", 250, "Sul"],
["Camila", "Blusa", 120, "Sudeste"],
["Daniel", "Boné", 50, "Nordeste"],
["Eduarda", "Chinelos", 40, "Centro-Oeste"],
["Felipe", "Meias", 30, "Sul"],
["Fernanda", "Cinto", 60, "Sudeste"],
]
# Criando o DataFrame
df_vendas = pd.DataFrame(
dados_vendas,
columns=["Nome", "Produto", "Valor", "Região"],
)
# Salvando o DataFrame em um arquivo CSV
df_vendas.to_csv("vendas.csv", index=False)
# Calcular a receita total por produto e ordenar os resultados
receita_por_produto = df_vendas.groupby("Produto")["Valor"].sum().sort_values(ascending=False)
print("Receita total por produto:")
print(receita_por_produto)
# Visualizar a distribuição das vendas por região
plt.figure(figsize=(8, 6))
df_vendas["Região"].value_counts().plot(kind='bar', rot=45)
plt.title('Distribuição das vendas por região')
plt.xlabel('Região')
plt.ylabel('Número de Vendas')
plt.tight_layout()
plt.show()
2. Análise de Redes Sociais
import pandas as pd
from textblob import TextBlob
from wordcloud import WordCloud
import matplotlib.pyplot as plt
# Criando a lista de dados
dados_tweets = [
{
"Texto": "O novo álbum da banda X é incrível! #música #novalbum #bandaX",
"Data": "2024-04-09",
},
{
"Texto": "Estou muito feliz com a nova promoção no trabalho! #promovido #felicidade #novatrabalho",
"Data": "2024-04-08",
},
{
"Texto": "O jogo de ontem foi emocionante! #futebol #esporte #emoção",
"Data": "2024-04-07",
},
{
"Texto": "O clima hoje está muito bonito! #sol #calor #diaperfeito",
"Data": "2024-04-06",
},
{
"Texto": "Estou ansioso para o fim de semana! #feriado #descanso #viagem",
"Data": "2024-04-05",
},
]
# Criando o DataFrame
df_tweets = pd.DataFrame(dados_tweets)
# Salvando o DataFrame em um arquivo JSON
df_tweets.to_json("tweets.json", orient="records")
# Análise de sentimentos
try:
df_tweets["Sentimento"] = df_tweets["Texto"].apply(lambda text: TextBlob(text).sentiment.polarity)
except Exception as e:
print("Erro ao analisar sentimentos:", e)
# Visualizar a nuvem de palavras dos tweets
wordcloud = WordCloud().generate(" ".join(df_tweets["Texto"]))
plt.imshow(wordcloud, interpolation='bilinear')
plt.axis("off")
plt.show()
Este código em Python realiza algumas etapas:
- Importação de bibliotecas:
pandas
é uma biblioteca para análise de dados.TextBlob
é uma biblioteca para processamento de linguagem natural, utilizada para análise de sentimentos.WordCloud
é uma biblioteca para criar nuvens de palavras.matplotlib.pyplot
é uma biblioteca para plotagem de gráficos em Python.
- Criação da lista de dados:
dados_tweets
é uma lista de dicionários. Cada dicionário representa um tweet com duas chaves: “Texto” e “Data”.
- Criação do DataFrame:
df_tweets
é criado utilizando a bibliotecapandas
. Ele converte a lista de dicionáriosdados_tweets
em um DataFrame, que é uma estrutura de dados tabular.
- Salvando o DataFrame em um arquivo JSON:
- O DataFrame
df_tweets
é salvo em um arquivo JSON chamado “tweets.json”.
- O DataFrame
- Análise de sentimentos:
- Utilizando uma expressão lambda e o método
apply
dopandas
, o código calcula o sentimento de cada tweet. Ele aplica a funçãoTextBlob(text).sentiment.polarity
a cada texto do DataFrame, que retorna um valor de polaridade do sentimento. - A polaridade é um valor contínuo entre -1 e 1, onde valores negativos indicam sentimentos negativos, valores positivos indicam sentimentos positivos e 0 indica neutralidade.
- Utilizando uma expressão lambda e o método
- Visualização da nuvem de palavras dos tweets:
- Utilizando a biblioteca
WordCloud
, o código gera uma nuvem de palavras a partir dos textos dos tweets. - O método
generate
da classeWordCloud
recebe uma string contendo todos os textos dos tweets concatenados. - Em seguida, o código utiliza
matplotlib.pyplot
para mostrar a nuvem de palavras em uma imagem.
- Utilizando a biblioteca
Portanto, esse código basicamente cria uma lista de tweets, armazena-os em um DataFrame, realiza uma análise de sentimentos em cada tweet e gera uma nuvem de palavras com os textos dos tweets.
3. Análise de Dados Climáticos
- Importar dados de temperatura:
import pandas as pd
# Criando a lista de dados
dados_temperatura = [
["Janeiro", 22],
["Fevereiro", 24],
["Março", 26],
["Abril", 28],
["Maio", 30],
["Junho", 28],
["Julho", 26],
["Agosto", 24],
["Setembro", 22],
["Outubro", 20],
["Novembro", 18],
["Dezembro", 20],
]
# Criando o DataFrame
df_temperatura = pd.DataFrame(
dados_temperatura, columns=["Mês", "Temperatura"]
)
# Salvando o DataFrame em um arquivo CSV
df_temperatura.to_csv("temperatura.csv", index=False)
import pandas as pd
import matplotlib.pyplot as plt
# Importar dados de temperatura
df_temperatura = pd.read_csv("temperatura.csv")
# Calcular a temperatura média por mês
df_media_por_mes = df_temperatura.groupby("Mês")["Temperatura"].mean()
# Visualizar a tendência da temperatura ao longo do tempo
df_media_por_mes.plot(kind='line', marker='o')
plt.title('Temperatura Média por Mês')
plt.xlabel('Mês')
plt.ylabel('Temperatura (°C)')
plt.grid(True)
plt.xticks(rotation=45)
plt.show()
# Calcular temperatura média anual
temperatura_media_anual = df_temperatura["Temperatura"].mean()
print("Temperatura média anual:", temperatura_media_anual)
# Identificar o mês mais quente
mes_mais_quente = df_temperatura[df_temperatura["Temperatura"] == df_temperatura["Temperatura"].max()]["Mês"].values[0]
print("Mês mais quente:", mes_mais_quente)
# Identificar o mês mais frio
mes_mais_frio = df_temperatura[df_temperatura["Temperatura"] == df_temperatura["Temperatura"].min()]["Mês"].values[0]
print("Mês mais frio:", mes_mais_frio)
Vamos analisar o código em detalhes:
- Importações de bibliotecas:
import pandas as pd
import matplotlib.pyplot as plt
pandas
é uma biblioteca em Python usada para manipulação e análise de dados.
matplotlib.pyplot
é uma biblioteca para criação de gráficos em Python.
- Importar dados de temperatura:
df_temperatura = pd.read_csv("temperatura.csv")
Carrega os dados de temperatura do arquivo CSV “temperatura.csv” para um DataFrame chamado df_temperatura
.
- Calcular a temperatura média por mês:
df_media_por_mes = df_temperatura.groupby("Mês")["Temperatura"].mean()
Usa o método groupby()
para agrupar os dados por mês e, em seguida, calcula a média da temperatura para cada mês.
- Visualizar a tendência da temperatura ao longo do tempo:
df_media_por_mes.plot(kind='line', marker='o')
plt.title('Temperatura Média por Mês')
plt.xlabel('Mês')
plt.ylabel('Temperatura (°C)')
plt.grid(True)
plt.xticks(rotation=45)
plt.show()
Plota um gráfico de linha mostrando a temperatura média por mês.
kind='line'
especifica que queremos um gráfico de linha.
marker='o'
adiciona marcadores circulares nos pontos da linha.
plt.title()
, plt.xlabel()
, e plt.ylabel()
definem o título e os rótulos dos eixos X e Y do gráfico.
plt.grid(True)
adiciona linhas de grade ao gráfico.
plt.xticks(rotation=45)
rotaciona os rótulos do eixo X em 45 graus para melhorar a legibilidade.
- Calcular temperatura média anual:
temperatura_media_anual = df_temperatura["Temperatura"].mean()
Calcula a temperatura média anual usando a função mean()
no DataFrame original.
- Identificar o mês mais quente:
mes_mais_quente = df_temperatura[df_temperatura["Temperatura"] == df_temperatura["Temperatura"].max()]["Mês"].values[0]
Filtra o DataFrame para encontrar o mês com a temperatura máxima e extrai o nome do mês correspondente.
- Identificar o mês mais frio:
mes_mais_frio = df_temperatura[df_temperatura["Temperatura"] == df_temperatura["Temperatura"].min()]["Mês"].values[0]
Filtra o DataFrame para encontrar o mês com a temperatura mínima e extrai o nome do mês correspondente.
Essas etapas fornecem uma análise detalhada dos dados climáticos, incluindo a visualização da tendência da temperatura ao longo do tempo, a temperatura média anual e a identificação dos meses mais quente e mais frio.
4. Análise de Desempenho Esportivo
Primeiro, vou criar uma base de dados fictícia com informações como data do jogo, oponente, gols marcados pelo time, gols marcados pelo oponente e se o time venceu, perdeu ou empatou.
import pandas as pd
# Criando a base de dados
data = {
'Data do Jogo': ['2024-01-01', '2024-01-08', '2024-01-15', '2024-01-22', '2024-01-29'],
'Oponente': ['Time A', 'Time B', 'Time C', 'Time D', 'Time E'],
'Gols do Time': [2, 1, 3, 0, 2],
'Gols do Oponente': [1, 2, 2, 1, 1],
'Resultado': ['Vitória', 'Derrota', 'Empate', 'Derrota', 'Vitória']
}
df = pd.DataFrame(data)
# Convertendo a coluna 'Data do Jogo' para o tipo datetime
df['Data do Jogo'] = pd.to_datetime(df['Data do Jogo'])
# Exibindo a base de dados
print(df)
Agora, vamos fazer algumas análises básicas:
- Média de gols marcados pelo time:
media_gols_time = df['Gols do Time'].mean()
print("Média de gols marcados pelo time:", media_gols_time)
- Total de vitórias, derrotas e empates:
resultados = df['Resultado'].value_counts()
print("Total de vitórias, derrotas e empates:\\\\n", resultados)
- Porcentagem de vitórias:
porcentagem_vitorias = (resultados['Vitória'] / df.shape[0]) * 100
print("Porcentagem de vitórias:", porcentagem_vitorias)
- Máximo e mínimo de gols marcados pelo time em uma partida:
max_gols = df['Gols do Time'].max()
min_gols = df['Gols do Time'].min()
print("Máximo de gols marcados pelo time em uma partida:", max_gols)
print("Mínimo de gols marcados pelo time em uma partida:", min_gols)
Essas são apenas algumas análises básicas que você pode fazer com Pandas. Você pode expandir essas análises e criar visualizações mais complexas conforme necessário.
5. Análise de Dados de Mercado Acionário:
Para criar uma base de dados sobre Análise de Dados de Mercado Acionário em Pandas no Python, primeiro, precisamos obter os dados de alguma fonte. Vou usar a biblioteca yfinance para obter dados do Yahoo Finance para algumas ações. Em seguida, faremos análises básicas sobre esses dados. Vamos começar:
import pandas as pd
import yfinance as yf
# Lista de tickers de algumas empresas
tickers = ['AAPL', 'MSFT', 'GOOGL', 'AMZN', 'FB']
# Obtendo dados do Yahoo Finance
stocks_data = yf.download(tickers, start='2021-01-01', end='2022-01-01')
# Exibindo as primeiras linhas dos dados
print(stocks_data.head())
# Salvando os dados em um arquivo CSV
stocks_data.to_csv('dados_acoes.csv')
# Lendo os dados do arquivo CSV
dados_acoes = pd.read_csv('dados_acoes.csv', header=[0, 1], index_col=0)
# Analisando os dados
print("\\\\nAnálise Descritiva dos Dados:")
print(dados_acoes.describe())
# Correlação entre os preços de fechamento das ações
print("\\\\nCorrelação entre os preços de fechamento das ações:")
print(dados_acoes['Close'].corr())
# Gráfico de linhas dos preços de fechamento das ações
dados_acoes['Close'].plot(title='Preços de Fechamento das Ações')
plt.ylabel('Preço de Fechamento')
plt.xlabel('Data')
plt.show()
Neste código, estamos baixando dados de cinco ações diferentes (AAPL, MSFT, GOOGL, AMZN e FB) do Yahoo Finance para o período de 1º de janeiro de 2021 a 1º de janeiro de 2022. Depois, fazemos algumas análises básicas, como descrição estatística dos dados, correlação entre os preços de fechamento das ações e plotagem de um gráfico de linha dos preços de fechamento das ações ao longo do tempo.
Ao longo desta jornada, exploramos o poder do Pandas para manipular e analisar dados de forma eficiente. Desde a criação e estruturação de DataFrames até técnicas avançadas de filtragem, agregação e visualização, você adquiriu habilidades essenciais para dominar seus dados.
Relembrando os pontos-chave:
- Domínio de DataFrames: Dominamos a estrutura fundamental do Pandas, aprendendo a criar, selecionar e acessar dados com precisão.
- Filtragem e Ordenação: Exploramos diversas técnicas para encontrar e organizar as informações relevantes, utilizando expressões booleanas e funções como
sort_values()
. - Agrupamento e Agregação: Desvendamos o poder do
groupby()
eagg()
para realizar análises estatísticas e identificar padrões em seus dados. - Combinação de DataFrames: Aprendemos a combinar dados de diferentes fontes com
merge()
ejoin
, expandindo as possibilidades de análise. - Manipulação de Strings: Aperfeiçoamos a manipulação de dados textuais com funções como
str.upper()
estr.replace()
, limpando e transformando dados para análises mais precisas. - Cálculo de Estatísticas Descritivas: Obtivemos medidas como média, mediana e desvio padrão com a função
describe()
, sintetizando informações relevantes sobre seus dados. - Visualização de Dados: Criamos gráficos e tabelas com
plot()
,hist()
escatter()
para visualizar seus dados de forma clara e impactante, facilitando a identificação de insights.
Aplicações práticas e relevantes:
Em seguida, mergulhamos em exemplos práticos de diferentes áreas, demonstrando como o Pandas pode ser aplicado em:
- Análise de Vendas: Calculamos receita total, comparamos produtos e visualizamos a distribuição das vendas.
- Análise de Redes Sociais: Analisamos sentimentos de tweets e criamos nuvens de palavras para entender melhor o que as pessoas estão dizendo.
- Análise de Dados Climáticos: Calculamos a temperatura média por mês e visualizamos a tendência ao longo do tempo.
- Análise de Desempenho Esportivo: Compartilharammos o desempenho de jogadores por posição e visualizamos a relação entre altura e pontos marcados.
- Análise de Dados de Mercado Acionário: Calculamos o retorno de investimento e visualizamos a evolução do preço de ações.
Explorando e personalizando:
Os exemplos apresentados servem como base para você explorar e personalizar suas análises. A comunidade Pandas é vibrante e oferece suporte online em diversos fóruns e canais.
Lembre-se:
- A prática leva à perfeição. Quanto mais você usar o Pandas, mais familiarizado você se tornará com suas ferramentas.
- Não tenha medo de experimentar e explorar novas técnicas.
- A comunidade Pandas está pronta para te ajudar!
Conclusão:
O Pandas é uma ferramenta poderosa que abre um mundo de possibilidades para a manipulação e análise de dados. Com as habilidades adquiridas nesta jornada, você está pronto para explorar seus dados e extrair insights valiosos para tomar decisões mais inteligentes e eficazes.
Continue aprendendo e explorando!
A jornada no mundo do Pandas está apenas começando. Explore a documentação oficial, tutoriais online e cursos especializados para aprofundar seus conhecimentos e se tornar um mestre em manipulação de dados.
Com o Pandas, as possibilidades são infinitas!
Blog: https://cienciadedadosbrasil.com.br/
Podcast: https://podcasters.spotify.com/pod/show/ciencia-de-dados-brasil
Spotify: https://open.spotify.com/show/3XbIBG6Ch5ZKYWWlLmQRFw?si=46153590bc304068
Newsletter: https://cinciadedadosbrasil.substack.com/
LinkedIn: https://www.linkedin.com/company/ciência-de-dados-brasil/?viewAsMember=true
Instagram: https://www.instagram.com/cienciadedadosbrasil_cdbr/