Python数据分析 之 制作酷炫的可视化大屏,特简单,手撕面试官

本文介绍如何利用Python进行数据获取和数据库操作,制作实时更新的可视化大屏。通过爬虫获取博客数据并存储在数据库中,利用Dash和Plotly库创建交互式图表,包括柱状图、饼图、热力图等,实现60秒和60分钟间隔的数据刷新,确保数据的实时性。此外,还讨论了如何通过回调函数响应用户交互,更新图表和文章列表,提供流畅的用户体验。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

获取大屏第一列信息数据, 并写入my_database数据库的info表中, 如若表已存在, 删除覆盖

df_info = get_info()

print(df_info)

df_info.to_sql(“info”, con=engine, if_exists=‘replace’, index=False)

获取大屏第二、三列信息数据, 并写入my_database数据库的日期表中, 如若表已存在, 删除覆盖

df_article = get_blog()

print(df_article)

df_article.to_sql(today, con=engine, if_exists=‘replace’, index=True)

运行成功后,就可以去数据库查询信息了。

info表,包含日期、头图、博客名、文章数、粉丝数、点赞数、评论数、等级数、访问数、积分数、排名数。

用 Python 制作酷炫的可视化大屏,特简单

日期表,包含文章地址、标题、日期、阅读数、评论数、类型。

用 Python 制作酷炫的可视化大屏,特简单

其中爬虫代码可设置定时运行,info表为60秒,日期表为60分钟。

尽量不要太频繁,容易被封IP,或者选择使用代理池。

这样便可以做到数据实时更新。

既然数据已经有了,下面就可以来编写页面了。

02. 大屏搭建

导入相关的Python库,同样可以通过pip进行安装。

from spider_py import get_info, get_blog

from dash import dcc

import dash

from dash import html

import pandas as pd

import plotly.graph_objs as go

from dash.dependencies import Input, Output

import datetime as dt

from sqlalchemy import create_engine

from flask_caching import Cache

import numpy as np

设置一些基本的配置参数,如数据库连接、网页样式、Dash实例、图表颜色。

今天的时间

today = dt.datetime.today().strftime(“%Y-%m-%d”)

连接数据库

engine = create_engine(‘mysql+pymysql://root:123456@localhost/my_database?charset=utf8’)

导入css样式

external_css = [

“https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css”,

“https://cdnjs.cloudflare.com/ajax/libs/skeleton/2.0.4/skeleton.min.css”

]

创建一个实例

app = dash.Dash(name, external_stylesheets=external_css)

server = app.server

可以选择使用缓存, 减少频繁的数据请求

cache = Cache(app.server, config={

‘CACHE_TYPE’: ‘filesystem’,

‘CACHE_DIR’: ‘cache-directory’

})

读取info表的数据

info = pd.read_sql(‘info’, con=engine)

图表颜色

color_scale = [‘#2c0772’, ‘#3d208e’, ‘#8D7DFF’, ‘#CDCCFF’, ‘#C7FFFB’, ‘#ff2c6d’, ‘#564b43’, ‘#161d33’]

这里将缓存代码注释掉了,如有频繁的页面刷新请求,就可以选择使用。

def indicator(text, id_value):

“”“第一列的文字及数字信息显示”“”

return html.Div([

html.P(text, className=“twelve columns indicator_text”),

html.P(id=id_value, className=“indicator_value”),

], className=“col indicator”)

def get_news_table(data):

“”“获取文章列表, 根据阅读排序”“”

df = data.copy()

df.so

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值