# big-data-and-visualization
## <b>2022年广东新冠肺炎疫情数据可视化</b>
## 案例背景
2022年初以来,新冠肺炎疫情对我省有较大影响,为了给疫情防控提供参考,需对全省包括各市的疫情传播情况有宏观的了解。在此背景下,我们小组参考了已有项目,制作了本案例。
## 案例涉及到的知识点
- Python 编程基础
- Pandas 统计分析基础
- Pandas 数据载入与预处理
- Seaborn 可视化
- pyecharts 可视化
- 时间序列数据分析
## 案例设计流程
1. 收集新冠疫情数据
2. 提取相关数据
3. 数据预处理
4. 绘制折线图
5. 绘制动态地图
6. 分析可视化数据
## 案例实现过程
1. 收集新冠疫情数据
数据来源:[DXY-COVID-19-Data](https://github.com/BlankerL/DXY-COVID-19-Data/releases/tag/2022.05.20)
2. 提取相关数据
2.1 读取数据
```Python
data = pd.read_csv('data/DXYArea.csv')
```
2.2 查看列名
```Python
print(list(data.columns))
```
```Python
['continentName', 'continentEnglishName', 'countryName', 'countryEnglishName', 'provinceName', 'provinceEnglishName', 'province_zipCode', 'province_confirmedCount', 'province_suspectedCount', 'province_curedCount', 'province_deadCount', 'cityName', 'cityEnglishName', 'city_zipCode', 'city_confirmedCount', 'city_suspectedCount', 'city_curedCount', 'city_deadCount', 'updateTime']
```
分别表示洲名、洲英文名、国家名、国家英文名、省名、省英文名、省邮编、省累计确诊数、省疑似人数、省累计治愈数、省累计死亡数、市名、市英文名、市邮编、市累计确诊数、市疑似人数、市累计治愈数、市累计死亡数、更新时间
我们只需要省名、省累计确诊数、省累计治愈数、省累计死亡数、市名、市累计确诊数、市累计治愈数、市累计死亡数、更新时间。
2.3 删除冗余列
```Python
data.drop(columns=['continentName', 'continentEnglishName', 'countryName', 'countryEnglishName', 'provinceEnglishName',
'province_zipCode', 'cityEnglishName', 'city_zipCode', 'province_suspectedCount', 'city_suspectedCount'], inplace=True)
```
2.4 筛选出广东省的数据
```Python
data = data[data['provinceName'] == '广东省']
```
2.5 筛选出2022年的数据
```Python
data = data[data['updateTime'] >= '2022-01-01']
```
3. 数据预处理
3.1 修改列名
英文名太长,改成中文名。
```Python
data.rename(columns={'provinceName': '省名', 'province_confirmedCount': '省累计确诊', 'province_curedCount': '省累计治愈', 'province_deadCount': '省累计死亡',
'cityName': '市名', 'city_confirmedCount': '市累计确诊', 'city_curedCount': '市累计治愈', 'city_deadCount': '市累计死亡', 'updateTime': '更新时间'}, inplace=True)
```
3.2 新增现有确诊列
```Python
data['省现有确诊'] = data['省累计确诊'] - data['省累计治愈'] - data['省累计死亡']
data['市现有确诊'] = data['市累计确诊'] - data['市累计治愈'] - data['市累计死亡']
```
3.3 按市名分组
```Python
cites = set(data['市名'])
cites -= {'待明确地区'}
print(cites)
cites_data = dict()
for city in cites:
cites_data[city] = data[data['市名'] == city].copy()
# print(f'查看{city}更新时间:\n',cites_data[city]['更新时间'].values)
# 发现更新日期不连续,且有的日期重复,需要进行处理
```
3.4 处理重复日期数据,保留更新时间最新的数据
```Python
for city in cites:
temp_date = '2022-05-20'
for i, row in cites_data[city].iterrows():
if row['更新时间'][:10] == temp_date:
cites_data[city].drop(i, inplace=True)
else:
temp_date = row['更新时间'][:10]
cites_data[city].loc[:, '更新时间'] = pd.to_datetime(
cites_data[city]['更新时间'].apply(lambda x: x[:10])).values
cites_data[city].reset_index(inplace=True, drop=True)
```
3.5 处理不连续日期数据,根据前后最近数据进行填充
```Python
for city in cites:
# 新开一个DataFrame用于存放填充的数据
new_data = pd.DataFrame(columns=cites_data[city].columns)
current_date = datetime.datetime(2022, 5, 20)
current_index = 0
for i, row in cites_data[city].iterrows():
next_date = row['更新时间']
days = (current_date-next_date).days
if days > 1:
for j in range(1, days):
new_row = row.copy()
new_row['省累计确诊'] = round(
(cites_data[city].iloc[current_index]['省累计确诊'] - row['省累计确诊']) / days * j + row['省累计确诊'])
new_row['省累计治愈'] = round(
(cites_data[city].iloc[current_index]['省累计治愈'] - row['省累计治愈']) / days * j + row['省累计治愈'])
new_row['省累计死亡'] = round(
(cites_data[city].iloc[current_index]['省累计死亡'] - row['省累计死亡']) / days * j + row['省累计死亡'])
new_row['省现有确诊'] = new_row['省累计确诊'] - \
new_row['省累计治愈'] - new_row['省累计死亡']
new_row['市累计确诊'] = round(
(cites_data[city].iloc[current_index]['市累计确诊'] - row['市累计确诊']) / days * j + row['市累计确诊'])
new_row['市累计治愈'] = round(
(cites_data[city].iloc[current_index]['市累计治愈'] - row['市累计治愈']) / days * j + row['市累计治愈'])
new_row['市累计死亡'] = round(
(cites_data[city].iloc[current_index]['市累计死亡'] - row['市累计死亡']) / days * j + row['市累计死亡'])
new_row['市现有确诊'] = new_row['市累计确诊'] - \
new_row['市累计治愈'] - new_row['市累计死亡']
new_row['更新时间'] = next_date + datetime.timedelta(days=j)
new_row = new_row.to_frame().T
new_row['更新时间'] = pd.to_datetime(
new_row['更新时间'].apply(lambda x: str(x)[:10])).values
# 填充的数据放到新的DataFrame
new_data = pd.concat([new_data, new_row], ignore_index=True)
current_index = i
current_date = next_date
else:
current_index = i
current_date = next_date
# 将新填充的数据添加到原数据中
cites_data[city] = pd.concat(
[cites_data[city], new_data], ignore_index=True)
# 按日期顺序排序
cites_data[city].sort_values(by='更新时间', inplace=True)
cites_data[city].loc[:, '更新时间'] = pd.to_datetime(
cites_data[city]['更新时间'].apply(lambda x: str(x)[:10])).values
# 重建索引
cites_data[city].reset_index(inplace=True, drop=True)
```
3.6 增加省、市每日新增确诊数
```Python
for city in cites:
for i, row in cites_data[city].iterrows():
if i == 0:
cites_data[city]['省新增确诊'] = ''
cites_data[city]['市新增确诊'] = ''
cites_data[city].loc[0, '省新增确诊'] = 0
cites_data[city].loc[0, '市新增确诊'] = 0
else:
没有合适的资源?快使用搜索试试~ 我知道了~
2022年广东新冠疫情分析与可视化项目源码.zip
共39个文件
sample:13个
jpg:6个
head:4个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 200 浏览量
2023-03-14
16:37:04
上传
评论
收藏 31.01MB ZIP 举报
温馨提示
2022年广东新冠疫情分析与可视化项目源码.zip
资源推荐
资源详情
资源评论
收起资源包目录
2022年广东新冠疫情分析与可视化项目源码.zip (39个子文件)
main.py 16KB
screenshot
Screenshot_2022年广东省每日现有确诊动态地图.png 137KB
Screenshot_2022年广东省每日新增确诊动态地图.png 135KB
data
DXYArea.csv 93.08MB
.git
index 2KB
HEAD 21B
refs
heads
main 41B
remotes
origin
HEAD 30B
objects
pack
pack-53141f9fcad234e4d021e9087e49787779114785.pack 15.55MB
pack-53141f9fcad234e4d021e9087e49787779114785.idx 4KB
description 73B
packed-refs 112B
info
exclude 240B
logs
HEAD 204B
refs
heads
main 204B
remotes
origin
HEAD 204B
hooks
post-update.sample 189B
prepare-commit-msg.sample 1KB
commit-msg.sample 896B
pre-receive.sample 544B
update.sample 4KB
pre-commit.sample 2KB
pre-rebase.sample 5KB
applypatch-msg.sample 478B
fsmonitor-watchman.sample 5KB
push-to-checkout.sample 3KB
pre-applypatch.sample 424B
pre-push.sample 1KB
pre-merge-commit.sample 416B
config 320B
output
各市新增确诊数.jpg 1.68MB
省现有确诊数.jpg 1.3MB
2022年广东省每日现有确诊动态地图.html 1.19MB
省累计确诊数.jpg 1.29MB
各市累计确诊数.jpg 1.61MB
各市现有确诊数.jpg 1.57MB
省新增确诊数.jpg 1.4MB
2022年广东省每日新增确诊动态地图.html 1.19MB
README.md 18KB
共 39 条
- 1
资源评论
oligaga
- 粉丝: 52
- 资源: 2万+
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功