Pular para conteúdo

Explorando o Dataset GovBrNews

Guia prático para explorar e analisar o dataset de notícias governamentais brasileiras. Do básico ao intermediário, com exemplos em Jupyter Notebook e scripts Python.


Nível: Iniciante a Intermediário Tempo estimado: 2-3 horas Pré-requisitos: Python básico, familiaridade com Pandas


Visão Geral do Dataset

O dataset nitaibezerra/govbrnews contém aproximadamente 300.000 documentos de notícias oficiais do governo brasileiro, coletados de 156 órgãos governamentais e classificados em 25 temas hierárquicos.

flowchart TB
    subgraph "Dataset GovBrNews"
        A[~300k Documentos]
        A --> B[156 Órgãos]
        A --> C[25 Temas]
        A --> D[3 Níveis Hierárquicos]
    end

    B --> E[Ministérios]
    B --> F[Autarquias]
    B --> G[Secretarias]

    C --> H[Economia]
    C --> I[Saúde]
    C --> J[Educação]
    C --> K[...]

Parte 1: Nível Básico

Estrutura do Dataset

O dataset possui 26+ colunas organizadas em categorias:

Colunas de Identificação

Coluna Tipo Descrição
unique_id string Identificador único do documento
agency string Órgão governamental de origem
url string URL original da notícia

Colunas de Conteúdo

Coluna Tipo Descrição
title string Título da notícia
subtitle string Subtítulo (quando disponível)
content string Texto completo da notícia
summary string Resumo gerado automaticamente

Colunas Temporais

Coluna Tipo Descrição
published_at datetime Data de publicação
scraped_at datetime Data de coleta

Colunas de Classificação Temática

Coluna Tipo Descrição
theme_1_level_1 string Tema principal - nível 1
theme_1_level_2 string Tema principal - nível 2
theme_1_level_3 string Tema principal - nível 3
theme_2_level_1 string Tema secundário - nível 1
theme_2_level_2 string Tema secundário - nível 2
theme_2_level_3 string Tema secundário - nível 3
flowchart LR
    subgraph "Hierarquia Temática"
        A[Nível 1: Economia] --> B[Nível 2: Política Fiscal]
        B --> C[Nível 3: Orçamento Federal]
    end

Carregando o Dataset

Instalação das Dependências

pip install datasets pandas matplotlib seaborn altair plotly wordcloud

Carregando com a Biblioteca datasets

# Célula 1: Importações
from datasets import load_dataset
import pandas as pd

# Célula 2: Carregar dataset
dataset = load_dataset("nitaibezerra/govbrnews")

# Célula 3: Converter para DataFrame
df = dataset['train'].to_pandas()

# Célula 4: Verificar tamanho
print(f"Total de documentos: {len(df):,}")
print(f"Colunas disponíveis: {df.columns.tolist()}")
# explorar_dataset.py
from datasets import load_dataset
import pandas as pd

def carregar_dataset():
    """Carrega o dataset GovBrNews do HuggingFace."""
    print("Carregando dataset...")
    dataset = load_dataset("nitaibezerra/govbrnews")
    df = dataset['train'].to_pandas()
    print(f"Dataset carregado: {len(df):,} documentos")
    return df

if __name__ == "__main__":
    df = carregar_dataset()
    print(df.info())

Output esperado:

Carregando dataset...
Dataset carregado: 298,547 documentos
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 298547 entries, 0 to 298546
Columns: 26 entries, unique_id to scraped_at
dtypes: datetime64[ns](2), object(24)
memory usage: 59.2+ MB

Análise Exploratória Básica

Primeiras Visualizações dos Dados

# Visualizar primeiras linhas
df.head()

# Informações gerais
df.info()

# Estatísticas descritivas para colunas numéricas
df.describe()

# Verificar valores nulos
df.isnull().sum()

Estatísticas Descritivas

# Contagem por órgão
print("=== Top 10 Órgãos por Volume ===")
print(df['agency'].value_counts().head(10))

# Contagem por tema nível 1
print("\n=== Distribuição por Tema (Nível 1) ===")
print(df['theme_1_level_1'].value_counts())

# Período temporal
print(f"\n=== Período do Dataset ===")
print(f"Data mais antiga: {df['published_at'].min()}")
print(f"Data mais recente: {df['published_at'].max()}")

Output esperado:

=== Top 10 Órgãos por Volume ===
Ministério da Saúde              45230
Ministério da Economia           38102
Ministério da Educação           29845
Ministério da Justiça            22103
...

=== Distribuição por Tema (Nível 1) ===
Economia           52340
Saúde              48201
Governo            41523
Infraestrutura     35892
...

=== Período do Dataset ===
Data mais antiga: 2019-01-01 00:00:00
Data mais recente: 2024-12-31 23:59:59

Verificando a Qualidade dos Dados

# Verificar duplicatas
duplicatas = df.duplicated(subset=['unique_id']).sum()
print(f"Documentos duplicados: {duplicatas}")

# Verificar campos vazios
campos_vazios = df[['title', 'content', 'summary']].isnull().sum()
print("\n=== Campos Vazios ===")
print(campos_vazios)

# Verificar tamanho médio do conteúdo
df['content_length'] = df['content'].str.len()
print(f"\nTamanho médio do conteúdo: {df['content_length'].mean():.0f} caracteres")

Este módulo está dividido em três partes para facilitar o aprendizado:

Parte Conteúdo Nível
Parte 1 (esta página) Estrutura, Carregamento e Análise Exploratória Básica Iniciante
Parte 2: Análise Temática Distribuição por Tema, Análise Temporal, Órgãos Intermediário
Parte 3: Análise de Texto Estatísticas de Texto, Nuvem de Palavras, Exercícios Intermediário

Próximos Passos

Continue para a Parte 2: Análise Temática para aprender sobre distribuição por tema, análise temporal e órgãos governamentais.

Ou volte para:


Próximo: Análise Temática