Tutorial de Pandas (parte 2)
Objetivos
- Carregar e inspecionar arquivos CSV com pandas
- Limpar e normalizar datasets
- Transformar e remodelar dados
- Combinar dois conjuntos em um DataFrame unificado
- Realizar análise exploratória básica com pandas
- Responder a perguntas analíticas usando operações do pandas
Pré-requisitos
- Python 3.x instalado
- Biblioteca pandas (
pip install pandas
) - Ambiente de desenvolvimento (Jupyter Notebook, VS Code, etc.)
- Arquivos
datasets/myanimelist.csv
edatasets/crunchyroll.csv
disponíveis localmente.
Configuração do ambiente
Certifique-se de que seu diretório de trabalho aponte para onde está a pasta datasets/.
Carregamento e inspeção dos dados
Inspecione as primeiras linhas e as informações gerais:
Limpeza dos dados
MyAnimeList
- Remover duplicatas pelo título
- Padronizar títulos para minúsculas
- Eliminar caracteres não alfabéticos
Python
mal_clean = mal.drop_duplicates(subset='title').copy()
mal_clean['title'] = (
mal_clean['title']
.str.lower()
.str.replace(r'[^a-z\s]', '', regex=True)
)
Crunchyroll
- Renomear
anime
→title
- Padronizar títulos para minúsculas
- Selecionar colunas relevantes
Python
cr_clean = (
cr
.rename(columns={'anime': 'title'})
.copy()
)
cr_clean['title'] = (
cr_clean['title']
.str.lower()
.str.replace(r'[^a-z\s]', '', regex=True)
)
Transformação dos dados
Adicionar identificador da fonte
Selecionar e alinhar colunas para união
Python
mal_sel = mal_clean[['title', 'episodes', 'members', 'popularity', 'ranked', 'source']]
cr_sel = cr_clean[['title', 'episodes', 'votes', 'votes_weight', 'rate', 'source']]
Combinação e exploração dos dados
Unir os DataFrames
Análise exploratória básica
Perguntas
Utilize o DataFrame stacked_df
para responder:
1. Qual anime possui o maior número de membros no MyAnimeList?
Resposta
2. Qual anime apresenta a maior avaliação média no Crunchyroll?
Resposta
3. Qual anime tem o maior número de episódios?
4. Qual o top 3 animes mais populares por ano no MyAnimeList?
Resposta
Python
mal_clean['start_date'] = pd.to_datetime(
mal_clean['aired'].str.split(' to ').str[0],
format='%b %d, %Y',
errors='coerce'
)
mal_clean['year'] = mal_clean['start_date'].dt.year
top3_pop_per_year = (
mal_clean
.sort_values(['year', 'popularity'])
.groupby('year')
.head(3)
[['year', 'title', 'popularity']]
.reset_index(drop=True)
)