python与其他语言发展趋势动态图

该博客利用Python的requests、re和csv库爬取Tiobe网站的编程语言排名数据,并将数据写入CSV文件。接着,通过pandas和matplotlib库绘制编程语言的排名变化图表,动态展示不同时间段的排名情况。博客内容涵盖了数据爬取、数据处理和数据可视化的全过程。
摘要由CSDN通过智能技术生成
import requests
import re
import os
import csv
url = 'https://www.tiobe.com/tiobe-index/'
f = open('programming.csv', 'w', newline='')
writer = csv.DictWriter(f, ['Programming','Percent','Date'])
writer.writeheader()
response = requests.get(url, )
html = response.text
result = ''.join(re.findall(r'series: (.*?)\}\);', html, re.DOTALL))
result = re.findall(r'({.*?})', result, re.DOTALL)
for item in result:
 name =''.join(re.findall(r"{name : '(.*?)'", item, re.DOTALL))
 data = re.findall(r"\[Date.UTC(.*?)\]", item, re.DOTALL)
 print(name)
 for i in data:
  i = i.replace(' ', '')
  i = re.sub(r'[()]', '', i)
  value = i.split(',')[-1]
  time_list = i.split(',')[:3]
  time = ""
  for index, j in enumerate(time_list):
   if index !=0:
    if len(j) == 1:
     j = '0' + j
   if index == 0:
    time += j
   else:
    time += '-' + j
  temp = {
   'Programming': name,
   'Percent': value,
   'Date': time
  }
  writer.writerow(temp)
f.close()

import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.animation as animation
from IPython.display import HTML

df = pd.read_csv('programming.csv')

colors=dict(zip(['C','Python','Java','C++','C#','Visual Basic','JavaScript','Assembly language','PHP','SQL'],
               ['#adb0ff','#ffb3ff','#90d595','#e48381','#aafbff','#f7bb5f','#eafb50','#23ffab','#abff12','#afbb90']))
current_date='2021-04-02'
fig,ax=plt.subplots(figsize=(15,8))
def draw_barchart(date):
    dff=(df[df['Date'].eq(date)].sort_values(by='Percent',ascending=True).head(10))
    ax.clear()
    ax.barh(dff['Programming'],dff['Percent'],color=[colors[x] for x in dff['Programming']])
    ax.text(1,0.4,date,transform=ax.transAxes,size=46,ha='right')
    
#draw_barchart(current_date)

animator=animation.FuncAnimation(fig,draw_barchart,frames=sorted(list(set(df['Date'].values))))
#animator.save('temp.gif')
#animator.to_html5_video('temp.mp4')
HTML(animator.to_jshtml())


在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值