Visualização Dinâmica da Evolução dos Rankings de Linguagens de Programação com Python

Ferramentas Utilizadas

Python 3
Pyecharts
Requests
Expressões Regulares

Aquisição de Dados

A fonte de dados utilizada é o Índice TIOBE, que registra o posicionamento anual de diversas linguagens de programação.

O processo de obtenção dos dados é realizado através de uma requisição HTTP:

def obter_dados_fonte(url): try: resposta = requests.get(url, timeout=10) resposta.raise_for_status() return resposta.text except requests.exceptions.RequestException as e: print(f"Erro ao obter dados: {e}") return None



</div>### Processamento dos Dados

Após a obtenção do conteúdo HTML, utilizamos expressões regulares para extrair as informações relevantes sobre os rankings históricos.

<div>

def processar_dados_html(conteudo_html): lista_datas = [] dados_retorno = [] nomes_linguagens = []

# Extrai a série de dados do conteúdo HTML
serie_dados = ''.join(re.findall(r'series: (.*?)\}\);', conteudo_html, re.DOTALL))
pontos_dados = re.findall(r'({.*?})', serie_dados, re.DOTALL)

for item in pontos_dados:
    # Extrai o nome da linguagem
    linguagem = ''.join(re.findall(r"{name : '(.*?)'", item))
    nomes_linguagens.append(linguagem)
    
    # Extrai os dados de data e valor
    informacoes_temporais = re.findall(r"\[Date.UTC(.*?)\]", item)
    for info_tempo in informacoes_temporais:
        info_limpa = re.sub(r'[()]', "", info_tempo)
        valor = info_limpa.split(',')[-1].strip()
        data = '-'.join(map(lambda x: x.strip(), info_limpa.split(',')[:-1]))
        
        if linguagem == "Java":
            lista_datas.append(data)
        dados_retorno.append({data: {linguagem: valor}})

# Estruturação dos dados em um dicionário organizado
estrutura_dados = {data: {lingua: 0 for lingua in nomes_linguagens} for data in lista_datas}

# Preenchimento com os valores reais
for chave, valor in estrutura_dados.items():
    for item in dados_retorno:
        for item_chave, item_valor in item.items():
            if chave == item_chave:
                valor.update(item_valor)

return estrutura_dados


</div>### Geração da Visualização

Utilizando a biblioteca Pyecharts, criamos uma visualização interativa que mostra a evolução do ranking das linguagens ao longo do tempo.

<div>

def criar_grafico_temporal(dados_estruturados): # Configuração da linha do tempo linha_tempo = Timeline().add_schema(play_interval=300, width="100%", height="500px")

# Linguagens a serem exibidas no gráfico
linguagens_exibidas = ['C', 'Java', 'Python', 'C++', 'C#', 'Visual Basic', 
                      'JavaScript', 'PHP', 'SQL', 'Assembly language']

# Geração de um gráfico para cada ano
for data, valores in dados_estruturados.items():
    grafico_barras = (
        Bar()
        .add_xaxis(linguagens_exibidas)
        .add_yaxis("Popularidade", [valores.get(ling, 0) for ling in linguagens_exibidas], 
                  label_opts=opts.LabelOpts(position="right"))
        .reversal_axis()
        .set_global_opts(
            title_opts=opts.TitleOpts(f"Ranking de Linguagens de Programação - {data}"),
            legend_opts=opts.LegendOpts(is_show=False),
            tooltip_opts=opts.TooltipOpts(trigger="axis", axis_pointer_type="shadow")
        )
    )
    linha_tempo.add(grafico_barras, data)

# Renderização do gráfico final
linha_tempo.render("evolucao_ranking_linguagens.html")
print("Visualização gerada com sucesso: evolucao_ranking_linguagens.html")


</div>### Integração do Processo

Para executar todo o fluxo de trabalho, podemos criar uma função principal que coordnea todas as etapas:

<div>

def main(): # URL do índice TIOBE url_tiobe = "https://www.tiobe.com/tiobe-index/"

# 1. Obter dados da fonte
html_conteudo = obter_dados_fonte(url_tiobe)
if not html_conteudo:
    return

# 2. Processar os dados obtidos
dados_processados = processar_dados_html(html_conteudo)

# 3. Gerar visualização interativa
criar_grafico_temporal(dados_processados)

if name == "main": main()



</div>O resultado final é um arquivo HTML interativo que permite visualizar a evolução do posicionamento das linguagens de programação ao longo dos últimos 20 anos, com uma animação suave que mostra as mudanças de popularidade temporalmente.

</div>

Tags: Python Pyecharts Visualização de Dados TIOBE Análise de Tendências

Publicado em 5-30 03:04 por Thomas