from django.core.paginator import Paginator
from django.shortcuts import render
from django.contrib import messages
from covin19 import models
import pandas as pd
import akshare as ak
import datetime
import time
import re
import json
import requests
# Create your views here.
# 数据库初始加载数据
def init_DB():#就用一次
df = pd.read_csv('D:\studyDjango\mysite1\mysite\static\data\中国历史累计数据.csv', encoding='gbk')
# print(len(df))
# # print(df)
# print(type(df.iloc[0,4]))
# print(type(str(df.iloc[0, 4])))
# print(str(df.iloc[0, 4].date()))
for i in range(len(df)):
models.CovinHistChina.objects.create(
updateTime=df.iloc[i,0],
sumCount=df.iloc[i, 1],
liveCount=df.iloc[i, 2],
deadCount=df.iloc[i, 3],
foreignConfirm=df.iloc[i, 4])
# 转换时间戳
def timeChange(timeNum,flag):
timeTemp = float(timeNum/1000)
tupTime = time.localtime(timeTemp)
if(flag == 1):
stadardTime = time.strftime("%Y-%m-%d %H:%M:%S", tupTime)
else:
stadardTime = time.strftime("%Y-%m-%d", tupTime)
return stadardTime
# 爬虫间隔时间
def time_sleep(s):
time.sleep(s)
# 更新数据库
def updateDB(sig_str):
try:
if(sig_str == '国内实时数据'):
df = ak.covid_19_dxy(indicator="中国疫情分省统计详情")
# 更新实时数据
for i in range(len(df)):
models.CovinCurrentProvince.objects.filter(areaName=df.iloc[i,0]).update(
currentCount = df.iloc[i,2],
sumCount = df.iloc[i,3],
liveCount = df.iloc[i,4],
deadCount = df.iloc[i,5])
# 查找历史数据中是否有当天数据并添加
time_list = models.CovinHistProvince.objects.values('updateTime')
tl = []
for time in time_list:
tl.append(time['updateTime'])
if (str(datetime.date.today()) not in set(tl)):
# print('各省数据--添加今天数据')
for i in range(len(df)):
models.CovinHistProvince.objects.create(
areaName = df.iloc[i, 0],
sumCount = df.iloc[i, 3],
liveCount = df.iloc[i, 4],
deadCount = df.iloc[i, 5],
updateTime = str(datetime.date.today()))
else:
# print('各省数据--更新今天数据')
for i in range(len(df)):
models.CovinHistProvince.objects.filter(areaName=df.iloc[i, 0],updateTime=str(datetime.date.today())).update(
sumCount=df.iloc[i, 3],
liveCount=df.iloc[i, 4],
deadCount=df.iloc[i, 5],)
# 删除各省历史数据中不在时间区间内的数据(时间区间为60天)
time_list = models.CovinHistProvince.objects.values('updateTime')
tl = []
for time in time_list:
tl.append(time['updateTime'])
ts = pd.DataFrame(set(tl),columns=['updateTime'])
ts['updateTime'] = pd.to_datetime(ts['updateTime'])
ts['updateTime'] = ts['updateTime'].dt.date
ts = ts[ts['updateTime'] < datetime.date.today() - datetime.timedelta(days=59)]
if(len(ts)>0):
for del_time in ts['updateTime']:
models.CovinHistProvince.objects.filter(updateTime=str(del_time)).delete()
elif(sig_str == '国内历史数据'):
req = requests.get("https://lab.isaaclin.cn/nCoV/api/overall")
data = req.text
data = json.loads(data)
time1 = data['results'][0]['updateTime']
updatetime = timeChange(time1,0)
# models.CovinHistChina.objects.filter(updateTime='2021-10-14').delete() 数据源出了问题。
# print('国内历史数据分支')
# df = ak.covid_19_163(indicator="中国历史累计数据")[['confirm','heal','dead','input']]
# # print('国内历史数据分支--读取网络数据成功')
# time_list = list(df.index)
# # print('国内历史数据分支--外部数据时间列表创建成功')
# print(time_list)
# print(df)
DB_time_list = []
times = models.CovinHistChina.objects.values('updateTime')
# # print('国内历史数据分支--内部数据时间列表读取成功')
# # print(times)
for t in times:
DB_time_list.append(t['updateTime'])
if updatetime not in DB_time_list:
models.CovinHistChina.objects.create(
updateTime=updatetime,
sumCount=data['results'][0]['confirmedCount'],
liveCount=data['results'][0]['curedCount'],
deadCount=data['results'][0]['deadCount'],
foreignConfirm=data['results'][0]['suspectedCount']
)
else:
models.CovinHistChina.objects.filter(updateTime=updatetime).update(
sumCount=data['results'][0]['confirmedCount'],
liveCount=data['results'][0]['curedCount'],
deadCount=data['results'][0]['deadCount'],
foreignConfirm=data['results'][0]['suspectedCount']
)
ts = pd.DataFrame(DB_time_list, columns=['updateTime'])
ts['updateTime'] = pd.to_datetime(ts['updateTime'])
ts['updateTime'] = ts['updateTime'].dt.date
ts = ts[ts['updateTime'] < datetime.date.today() - datetime.timedelta(days=59)]
if (len(ts) > 0):
for del_time in ts['updateTime']:
models.CovinHistChina.objects.filter(updateTime=str(del_time)).delete()
# # print('国内历史数据分支--内部数据时间列表创建成功')
# # print(DB_time_list)
# for temp_time in time_list:
# # print(temp_time)
# if temp_time not in DB_time_list:
# # print('国内历史数据分支--找到了外部数据不在内部数据的数据')
# models.CovinHistChina.objects.create(
# updateTime=temp_time,
# sumCount=df.loc[temp_time, 'confirm'],
# liveCount=df.loc[temp_time, 'heal'],
# deadCount=df.loc[temp_time, 'dead'],
# foreignConfirm=df.loc[temp_time, 'input'])
# # print('国内历史数据分支--外部数据添加成功')
# # print('国内历史数据分支--外部数据在内部查找完成')
# for temp_time in DB_time_list:
# # print(temp_time)
# if temp_time not in time_list:
# # print('国内历史数据分支--内部数据不在外部数据')
# models.CovinHistChina.objects.filter(updateTime=temp_time).delete()
# # print('国内历史数据分支--内部数据删除成功')
# # print('国内历史数据分支--内部数据在外部查找完成')
elif(sig_str == '疫情新闻'):
models.CovinNews.objects.all().delete()
# 资讯获取前三页,共30条(这段是获取的github的疫情api网站的数据)
# for num in range(1, 4):
# # print(num)
# req = requests.get('https://lab.isaaclin.cn/nCoV/api/news?page=' + str(num))
# # print(num)
# json_data = req.text
# # print('json提取')
# data = json.loads(json_data)
# # print('json转换')
# data = data['results']
# # print(
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
基于Django的国内疫情数据可视化Web系统源码(95分以上大作业项目).zip 已获导师指导并通过的高分项目,也可作为期末大作业和课程设计,纯手打高分项目,代码完整下载可用,小白也可实战。 基于Django的国内疫情数据可视化Web系统源码(95分以上大作业项目).zip 已获导师指导并通过的高分项目,也可作为期末大作业和课程设计,纯手打高分项目,代码完整下载可用,小白也可实战。基于Django的国内疫情数据可视化Web系统源码(95分以上大作业项目).zip 已获导师指导并通过的高分项目,也可作为期末大作业和课程设计,纯手打高分项目,代码完整下载可用,小白也可实战。基于Django的国内疫情数据可视化Web系统源码(95分以上大作业项目).zip 已获导师指导并通过的高分项目,也可作为期末大作业和课程设计,纯手打高分项目,代码完整下载可用,小白也可实战。基于Django的国内疫情数据可视化Web系统源码(95分以上大作业项目).zip 已获导师指导并通过的高分项目,也可作为期末大作业和课程设计,纯手打高分项目,代码完整下载可用,小白也可实战。基于Django的国内疫情数据可视化
资源推荐
资源详情
资源评论
收起资源包目录
基于Django的国内疫情数据可视化Web系统.zip (84个子文件)
6666666666
professional-practice-master
mysite1
.idea
mysite1.iml 715B
workspace.xml 11KB
misc.xml 299B
modules.xml 266B
mysite
db.sqlite3 268KB
templates
CovinNews.html 3KB
China_confirm.html 7KB
ChinaHist.html 6KB
index.html 4KB
China_current.html 7KB
loading.html 826B
Province.html 7KB
.idea
dictionaries
12718.xml 84B
workspace.xml 37KB
misc.xml 299B
inspectionProfiles
Project_Default.xml 410B
mysite.iml 1KB
modules.xml 264B
manage.py 662B
covin19
__init__.py 0B
tests.py 60B
admin.py 265B
migrations
__init__.py 0B
0003_a.py 554B
0001_initial.py 787B
0006_covinhistprovince.py 902B
0002_auto_20210909_1613.py 898B
0009_auto_20210913_1426.py 1KB
0007_alter_covinhistprovince_updatetime.py 451B
0004_auto_20210909_1644.py 2KB
__pycache__
0001_initial.cpython-39.pyc 816B
0008_covinhistchina.cpython-39.pyc 974B
0004_auto_20210909_1644.cpython-39.pyc 1KB
__init__.cpython-39.pyc 151B
0002_auto_20210909_1613.cpython-39.pyc 737B
0003_a.cpython-39.pyc 686B
0006_covinhistprovince.cpython-39.pyc 940B
0005_delete_a.cpython-39.pyc 481B
0007_alter_covinhistprovince_updatetime.cpython-39.pyc 676B
0009_auto_20210913_1426.cpython-39.pyc 1007B
0008_covinhistchina.py 969B
0005_delete_a.py 290B
apps.py 146B
models.py 2KB
__pycache__
__init__.cpython-39.pyc 140B
models.cpython-39.pyc 2KB
views.cpython-39.pyc 7KB
apps.cpython-39.pyc 419B
admin.cpython-39.pyc 389B
views.py 15KB
static
image
background.jpg 24KB
js
china.js 60KB
window_reload.js 255B
echarts.min.js 988KB
China_confirm.js 3KB
data
中国历史累计数据.csv 2KB
各省历史时间数据.csv 43KB
bootstrap
js
bootstrap.js 74KB
npm.js 484B
bootstrap.min.js 39KB
css
bootstrap-theme.min.css.map 74KB
bootstrap.min.css 119KB
bootstrap-theme.css.map 47KB
bootstrap-theme.css 25KB
bootstrap.css.map 382KB
bootstrap.css 143KB
bootstrap-theme.min.css 23KB
bootstrap.min.css.map 528KB
fonts
glyphicons-halflings-regular.svg 106KB
glyphicons-halflings-regular.ttf 44KB
glyphicons-halflings-regular.woff 23KB
glyphicons-halflings-regular.eot 20KB
glyphicons-halflings-regular.woff2 18KB
css
layout.css 268B
Loading.css 889B
mysite
__init__.py 0B
wsgi.py 389B
urls.py 1KB
settings.py 3KB
__pycache__
urls.cpython-39.pyc 1KB
__init__.cpython-39.pyc 139B
settings.cpython-39.pyc 2KB
wsgi.cpython-39.pyc 540B
asgi.py 389B
共 84 条
- 1
资源评论
- 南不与2023-07-02支持这个资源,内容详细,主要是能解决当下的问题,感谢大佬分享~
不安分的小女孩
- 粉丝: 9495
- 资源: 2152
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功