大数据可视化|Python疫情数据可视化分析+数据预测(pandas+pyecharts+statsmodels+matplotlib+sql)
1、MySQL数据库获取数据 此处的原始数据表是全国各省的实时数据集,现在只获取江苏省份的数据
engine = create_engine(mysq_conn) # 具体内容以自己上就可以为准
select_data = "https://www.it610.com/article/select * from table_data where area='江苏'order by local_time desc"
df = pd.read_sql(sql=select_data, con=engine)
df.head()
文章图片
2、转存数据集至本地csv,以免每次都要从数据库读取数据
文章图片
3、日期字符串字段,数据清洗
#转化获取年-月-日
new_df['日期'] = new_df['local_time'].dt.year.map(str)+'-'+new_df['local_time'].dt.month.map(str)+'-'+new_df['local_time'].dt.day.map(str)
文章图片
4、数据可视化
from pyecharts import options as opts
from pyecharts.charts import Bar,Line,Pie,WordCloud,EffectScatter
from pyecharts.charts import PictorialBar
from pyecharts.globals import SymbolType
from pyecharts.globals import ThemeType
c = (
Line(init_opts=opts.InitOpts(theme=ThemeType.MACARONS))
.add_xaxis(x_label)
.add_yaxis(
"新增确诊",
is_smooth=True,
symbol="emptyCircle",
is_symbol_show=False,
color="#6e9ef1",
y_axis=y_data,
label_opts=opts.LabelOpts(is_show=False),
)
.set_series_opts(
label_opts=opts.LabelOpts(
is_show=False,
position="inside",
formatter="{c}",
)
)
.set_global_opts(
title_opts=opts.TitleOpts(title="江苏省日新增确诊趋势图"),
tooltip_opts=opts.TooltipOpts(is_show=True,axis_pointer_type= "cross",trigger="axis"),
xaxis_opts=opts.AxisOpts(
name_rotate=60,axislabel_opts={"rotate":45},
axispointer_opts=opts.AxisPointerOpts(
is_show=True,
),
),
)
)c.render_notebook()
文章图片
line=(
Line()
.add_xaxis(xaxis_data=https://www.it610.com/article/x_label)
.add_yaxis(
series_name="最高新增城市",
is_smooth=True,
symbol="emptyCircle",
is_symbol_show=False,
color="#d14a61",
y_axis=y_data,
)
.add_yaxis(
series_name="全省新增",
is_smooth=True,
symbol="emptyCircle",
is_symbol_show=False,
color="#6e9ef1",
y_axis=y_data2,
)
.set_global_opts(
title_opts=opts.TitleOpts(title="江苏省日新增确诊突然增原因"),
legend_opts=opts.LegendOpts(),
xaxis_opts=opts.AxisOpts(
type_="category",
axistick_opts=opts.AxisTickOpts(is_align_with_label=True),
axisline_opts=opts.AxisLineOpts(
is_on_zero=False, linestyle_opts=opts.LineStyleOpts(color="#d14a61")
),
axispointer_opts=opts.AxisPointerOpts(
is_show=True, label=opts.LabelOpts(formatter=JsCode(js_formatter))
),
),
yaxis_opts=opts.AxisOpts(
type_="value",
splitline_opts=opts.SplitLineOpts(
is_show=True, linestyle_opts=opts.LineStyleOpts(opacity=1)
),
),
)
)
line.render_notebook()
文章图片
def line_charts()->Line:
line1 = (
Line(init_opts=opts.InitOpts(width='1000px',height='500px'))# 示例对象
.add_xaxis(x_label)# x轴数据
.add_yaxis(
"治愈率",# 图例名称
is_smooth=True,
is_symbol_show=False,
color="#6e9ef1",
y_axis=y_label, # y轴数据
label_opts=opts.LabelOpts(is_show=False),
linestyle_opts=opts.LineStyleOpts(width=2),
yaxis_index=0,
)
# 全局配置:标题/副标题
.set_global_opts(
title_opts=opts.TitleOpts(title="全国治愈率/死亡率趋势图"),# 标题
xaxis_opts=opts.AxisOpts(
name_rotate=60,axislabel_opts={"rotate":45},
),
yaxis_opts=opts.AxisOpts(
name='治愈率(%)',
min_=70,
max_=100,
interval=10,
axislabel_opts=opts.LabelOpts(formatter='{value}%')
),
toolbox_opts=opts.ToolboxOpts( # 工具栏
is_show = True,
pos_top="top",
pos_left="right",
feature={
"saveAsImage": {} ,
"dataZoom":{"yAxisIndex": "none"},
"restore": {} ,
"magicType":{"show": True, "type":["line","bar"]},
"dataView": {}
},
))
# bar 拓展
.extend_axis(
yaxis=opts.AxisOpts(
name='死亡率(%)',
type_='value',# 类型
min_=3,
max_=6,
interval=1,
)
)
)
return line1def line2_charts()->Line():
line1=(
Line()
.add_xaxis(x_label)
.add_yaxis(
'死亡率',
y_axis=y_label1,
is_smooth=True, # 设置线为平滑的
symbol="emptyCircle",# 悬浮数据样式
is_symbol_show=False,# 显示数据
color="#6e9ef1",
)
)
return line1line1=line_charts()
line2=line2_charts()line1.overlap(line2).render_notebook()
文章图片
bar = (
Line()
.add_xaxis(xaxis_data=https://www.it610.com/article/x_data)
.add_yaxis(
series_name="累计确诊",
y_axis=evaporation_capacity,
yaxis_index=0,
color=colors[1],
label_opts=opts.LabelOpts(is_show=True),
is_smooth=True,
symbol="emptyCircle",
is_symbol_show=False,
linestyle_opts=opts.LineStyleOpts(width=2),
)
.add_yaxis(
series_name="累计死亡",
y_axis=rainfall_capacity,
yaxis_index=1,
color=colors[0],
label_opts=opts.LabelOpts(is_show=True),
is_smooth=True,
symbol="emptyCircle",
is_symbol_show=False,
linestyle_opts=opts.LineStyleOpts(width=2),
)
.extend_axis(
yaxis=opts.AxisOpts(
name="死亡",
type_="value",
min_=50000,
max_=4000000,
position="right",
axisline_opts=opts.AxisLineOpts(
linestyle_opts=opts.LineStyleOpts(color=colors[1])
),
axislabel_opts=opts.LabelOpts(formatter="{value}"),
)
)
.extend_axis(
yaxis=opts.AxisOpts(type_="value",
name="治愈",
min_=50000,
max_=150000000,
position="left",
axisline_opts=opts.AxisLineOpts(
linestyle_opts=opts.LineStyleOpts(color=colors[2])
),
axislabel_opts=opts.LabelOpts(formatter="{value}"),
splitline_opts=opts.SplitLineOpts(
is_show=True,
linestyle_opts=opts.LineStyleOpts(opacity=1)
),
)
)
.set_global_opts(
yaxis_opts=opts.AxisOpts(
type_="value",
name="确诊",
min_=50000,
max_=170000000,
position="right",
offset=20,
axisline_opts=opts.AxisLineOpts(
linestyle_opts=opts.LineStyleOpts(color=colors[0])
),
axislabel_opts=opts.LabelOpts(formatter="{value}"),
),
)
)line = (
Line()
.add_xaxis(xaxis_data=https://www.it610.com/article/x_data)
.add_yaxis(
series_name="累计治愈",
y_axis=average_temperature,
color=colors[2],
label_opts=opts.LabelOpts(is_show=True),
is_smooth=True,
)
)bar.overlap(line).render_notebook()
文章图片
5、预测 【大数据可视化|Python疫情数据可视化分析+数据预测(pandas+pyecharts+statsmodels+matplotlib+sql)】
文章图片
推荐阅读
- 抖音解析|短视频搬运软件(抖音批量解析下载一个作者所有视频)
- HaaS解决方案|看屏幕眼睛干(没问题 用ESP32和 HaaS Python做一个 全自动加湿器)
- HaaS解决方案|开工大吉,ESP32 + HaaS Python为您送上久坐提醒器,好好工作更要注意健康哦
- HaaS解决方案|用ESP32打造一个物联网红外测温打卡机/春节结束急着上班(哒咩,再努力奋斗也要先测体温)
- HaaS解决方案|绿色节能,怎么用ESP32 + HaaS Python怎么做一个起夜小灯(接上个“智慧路灯”案例中的留下的地下室人体感应亮灭灯)
- python|Python灰帽子——黑客与逆向工程师的Python编程之道
- 图形界面设计|PyQt5设计GUI(一)pycharm中配置pyqt5
- 有趣的控制台玩法(一行代码绘制控制台图像!)
- Python算数运算符分类和使用方法是什么()