parent
08562d4362
commit
b8587416a3
@ -0,0 +1,100 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
Created on Thu Dec 1 11:48:04 2022
|
||||
|
||||
@author: 2602103447
|
||||
"""
|
||||
|
||||
##### 代码窗口
|
||||
#导入库
|
||||
from bs4 import BeautifulSoup
|
||||
import requests
|
||||
import pandas as pd
|
||||
import matplotlib.pyplot as plt
|
||||
|
||||
# 请求的url
|
||||
url = 'https://www.bitpush.news/covid19/'
|
||||
# 使用reqeusts模快发起 GET 请求
|
||||
result = requests.get(url)
|
||||
#逐一解析数据
|
||||
doc = BeautifulSoup(result.text, 'html.parser')
|
||||
tbody = doc.find_all("tbody")
|
||||
us = tbody[1]
|
||||
table = us.find_all('tr')
|
||||
s = []
|
||||
c = []
|
||||
d = []
|
||||
|
||||
for tr in table:
|
||||
#爬取州
|
||||
state = tr.find('span').string
|
||||
#爬取确诊病例
|
||||
cases = tr.find(attrs={'class':'table_card_cell_col_1 table_card_cell_int_type'}).string.replace(',','')
|
||||
#爬取死亡人数
|
||||
deaths = tr.find(attrs={'class':'table_card_cell_col_2 table_card_cell_float_type'}).string.replace(',','')
|
||||
s.append(state)
|
||||
c.append(int(cases))
|
||||
d.append(int(deaths))
|
||||
#查找数据
|
||||
df = pd.DataFrame(list(zip(s, c, d)),
|
||||
columns =['州', '确诊病例', '死亡人数'])
|
||||
df1 = df.sort_values(by=['确诊病例'], ascending=False).head(15)
|
||||
df2 = df.sort_values(by=['死亡人数'], ascending=False).head(15)
|
||||
print('确诊病例top15排行')
|
||||
print(df1)
|
||||
print('死亡病例top15排行')
|
||||
print(df2)
|
||||
#添加搜索州的疫情情况
|
||||
state = input("请输入你要查询的州的名称: ")
|
||||
for i in df.values:
|
||||
|
||||
if i[0] == state:
|
||||
print("查询结果如下:")
|
||||
print('州名称:',end =' ')
|
||||
print(i[0])
|
||||
print('确诊人数:',end =' ')
|
||||
print(i[1])
|
||||
print('死亡人数:',end =' ')
|
||||
print(i[2])
|
||||
print('查询完成')
|
||||
break
|
||||
else:
|
||||
print("抱歉,没有查到相关的信息。")
|
||||
|
||||
|
||||
#数据可视化
|
||||
%matplotlib inline
|
||||
plt.rcParams['font.sans-serif'] = ['SimHei']
|
||||
plt.rcParams['figure.figsize'] = (16,5)
|
||||
#绘制确诊人数柱形图
|
||||
x = df1['州'].values
|
||||
y = df1['确诊病例'].values
|
||||
plt.bar(x,y,width=0.6)
|
||||
plt.xlabel('州',fontsize = 14)
|
||||
plt.ylabel('确诊病例',fontsize = 14)
|
||||
plt.title('疫情确诊人数排名 top15')
|
||||
plt.show()
|
||||
#绘制死亡人数柱形图
|
||||
x = df2['州'].values
|
||||
y = df2['死亡人数'].values
|
||||
plt.bar(x,y,width=0.6)
|
||||
plt.xlabel('州',fontsize = 14)
|
||||
plt.ylabel('死亡人数',fontsize = 14)
|
||||
plt.title('死亡人数人数排名 top15')
|
||||
plt.show()
|
||||
|
||||
#绘制确诊人数top15饼图
|
||||
labels = df1['州'].values
|
||||
oppcy = df1['确诊病例'].values
|
||||
plt.pie(oppcy,labels=labels,autopct='%1.2f%%',radius=2)
|
||||
plt.savefig("确诊人数top15饼图.jpg",dpi=200)
|
||||
plt.title('确诊人数top15饼图')
|
||||
plt.show()
|
||||
|
||||
#绘制死亡人数top15饼图
|
||||
labels = df2['州'].values
|
||||
oppcy = df2['死亡人数'].values
|
||||
plt.pie(oppcy,labels=labels,autopct='%1.2f%%',radius=2)
|
||||
plt.savefig("死亡人数top15饼图.jpg",dpi=200)
|
||||
plt.title('死亡人数top15饼图')
|
||||
plt.show()
|
Loading…
Reference in new issue