【Gradio】从 BigQuery 数据创建实时仪表板

Google BigQuery 是一个基于云的服务,用于处理非常大的数据集。它是一个无服务器且高度可扩展的数据仓库解决方案,使用户能够使用类 SQL 查询分析数据。

在本教程中,我们将向您展示如何在 Python 中查询 BigQuery 数据集,并使用 gradio 实时更新的仪表板显示数据。仪表板将如下所示:

b1318773215632d1eecf923dc689c4b3.gif

我们将在本指南中介绍以下步骤:

  1. 设置您的 BigQuery 凭据

  2. 使用 BigQuery 客户端

  3. 仅用 7 行 Python 代码构建实时仪表板

我们将使用纽约时报的 COVID 数据集,该数据集作为公共数据集在 BigQuery 上可用。该数据集名为 covid19_nyt.us_counties ,包含了美国各县市最新的 COVID 确诊病例和死亡人数的信息。

先决条件:本指南使用 Gradio Blocks,因此请确保您熟悉 Blocks 类。

设置您的 BigQuery 凭证 

要将 Gradio 与 BigQuery 一起使用,您需要获取您的 BigQuery 凭证,并将其与 BigQuery Python 客户端一起使用。如果您已经有了 BigQuery 凭证(作为 .json 文件),您可以跳过这一部分。如果没有,您可以在短短几分钟内免费完成此操作。

  1. 首先,登录您的谷歌云账户,然后前往谷歌云控制台 ( https://console.cloud.google.com/)

  2. 在云控制台中,点击左上角的汉堡菜单,然后从菜单中选择“API 与服务”。如果您还没有现有的项目,您将需要创建一个。

  3. 然后,点击“+ 启用 API 与服务”按钮,这将允许您为您的项目启用特定服务。搜索“BigQuery API”,点击它,然后点击“启用”按钮。如果您看到“管理”按钮,那么 BigQuery 已经启用,一切就绪。

  4. 在 API 与服务菜单中,点击“凭证”标签,然后点击“创建凭证”按钮。

  5. 在“创建凭证”对话框中,选择“服务账户密钥”作为要创建的凭证类型,并给它命名。同时通过赋予它如“BigQuery 用户”这样的角色来授予服务账户权限,这将允许您运行查询。

  6. 在选择服务账户后,选择“JSON”密钥类型,然后点击“创建”按钮。这将下载包含您凭证的 JSON 密钥文件到您的电脑。它看起来会是这样的:

{"type": "service_account","project_id": "your project","private_key_id": "your private key id","private_key": "private key","client_email": "email","client_id": "client id","auth_uri": "https://accounts.google.com/o/oauth2/auth","token_uri": "https://accounts.google.com/o/oauth2/token","auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs","client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/email_id"
}

使用 BigQuery 客户端 

一旦你拥有了凭证,你将需要使用 BigQuery Python 客户端来使用你的凭证进行认证。为此,你需要通过在终端运行以下命令来安装 BigQuery Python 客户端:

pip install google-cloud-bigquery[pandas]

你会注意到我们已经安装了 pandas 附加组件,这将有助于将 BigQuery 数据集作为 pandas 数据框进行处理。客户端安装后,您可以通过运行以下代码使用您的凭证进行认证:

from google.cloud import bigqueryclient = bigquery.Client.from_service_account_json("path/to/key.json")

凭借您的凭证经过认证后,您现在可以使用 BigQuery Python 客户端与您的 BigQuery 数据集进行交互。

这是一个函数的例子,它查询 BigQuery 中的 covid19_nyt.us_counties 数据集,以显示截至当天确诊病例最多的前 20 个县:

import numpy as np# 定义查询语句,用于从 bigquery-public-data.covid19_nyt.us_counties 这个数据集中选取所有列的数据,
# 并按日期和确诊病例数降序排序,只取前20条记录
QUERY = ('SELECT * FROM `bigquery-public-data.covid19_nyt.us_counties` ''ORDER BY date DESC,confirmed_cases DESC ''LIMIT 20')# 定义查询函数
def run_query():# 使用BigQuery客户端执行查询任务query_job = client.query(QUERY)# 获取查询结果query_result = query_job.result()# 将查询结果转换成DataFramedf = query_result.to_dataframe()# 选择一部分列,只包含"confirmed_cases","deaths","county","state_name"的数据df = df[["confirmed_cases", "deaths", "county", "state_name"]]# 将"deaths","confirmed_cases"两列数据类型转换为numpy的int64类型df = df.astype({"deaths": np.int64, "confirmed_cases": np.int64})# 返回处理后的DataFramereturn df

这段代码查询了最近的20条疫情数据,并且选择了确诊病例数、死亡人数、县名和州名这四列数据,以便进行进一步的分析和处理。重点在于后续如何利用这个数据帧进行有所发现或解析出有用的信息。

建设实时仪表板 

一旦你有了一个查询数据的函数,你就可以使用 Gradio 库中的 gr.DataFrame 组件以表格格式显示结果。这是检查数据并确保已正确查询的一种有用方法。

这里是一个如何使用 gr.DataFrame 组件来显示结果的例子。通过将 run_query 函数传递给 gr.DataFrame ,我们指示 Gradio 在页面加载时立即运行该函数并显示结果。此外,您还需要传入关键字 every ,以告诉仪表板每小时刷新一次(60*60 秒)。

# 导入gradio库
import gradio as gr# 利用gradio的Blocks类创建交互界面
with gr.Blocks() as demo:# 在交互界面上创建一个数据框组件,每60分钟运行一次run_query函数并显示函数返回的数据gr.DataFrame(run_query, every=60*60)# 使用队列方式运行demo
demo.queue().launch(

‍这段代码在Gradio UI上创建了一个表格,该表格每小时更新一次,显示了由run_query函数返回的最新数据。这种方式可以在数据发生变化时,提供一个可视化的、实时更新的界面,让用户能够持续跟踪数据的变化。

也许您想在我们的仪表板中添加一个可视化。您可以使用 gr.ScatterPlot() 组件将数据以散点图的形式进行可视化。这使您能够看到数据集中不同变量(如病例数和病例死亡数)之间的关系,这对于探索数据和获得洞察力非常有用。同样,我们可以通过传入 every 参数来实时完成这一操作。

这里有一个完整的例子,展示了如何使用 gr.ScatterPlot 来进行可视化,除了用 gr.DataFrame 显示数据

# 导入gradio库
import gradio as gr# 利用gradio的Blocks类创建交互界面
with gr.Blocks() as demo:# 在交互界面上添加Markdown组件,显示标题"Covid Dashboard (Updated Hourly)"gr.Markdown("# 💉 Covid Dashboard (Updated Hourly)")# 添加一个行组件,可以在这个行上添加其他的组件with gr.Row():# 在行组件上添加一个数据框组件,每60分钟运行一次run_query函数并显示函数返回的数据gr.DataFrame(run_query, every=60*60)# 在行组件上添加一个散点图组件,横坐标为"confirmed_cases",纵坐标为"deaths",提示信息为对应的"county",每60分钟运行一次run_query函数并生成散点图gr.ScatterPlot(run_query, every=60*60, x="confirmed_cases",y="deaths", tooltip="county", width=500, height=500)# 使用队列方式运行demo
demo.queue().launch()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/32306.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SpringBoot 快速入门(保姆级详细教程)

目录 一、Springboot简介 二、SpringBoot 优点: 三、快速入门 1、新建工程 方式2:使用Spring Initializr创建项目 写在前面: SpringBoot 是 Spring家族中的一个全新框架,用来简化spring程序的创建和开发过程。SpringBoot化繁…

Bootloader -- U-Boot 介绍

Bootloader -- U-Boot 介绍 1 介绍1.1 概述1.2 知名 BootloaderLILO (Linux Loader)GRUB (GNU GRand Unified Bootloader)LoadlinROLO (Rockbox Loader)EtherbootLinuxBIOS (现在叫 coreboot)BLOBU-BootRedBoot 1.3 BootLoader 和 Monitor 区别1.4 U-Boot 的源码结构1.5 U-Boot…

idea导入文件里面的子模块maven未识别处理解决办法

1、File → Project Structure → 点击“Modules” → 点击“” → “Import Model” 2、可以看到很多子模块,选择子模块下的 pom.xml 文件导入一个一个点累死了,父目录下也没有pom文件 解决办法:找到子模块中有一个pom.xml文件,…

colima配置docker镜像源

只在 colima ssh 环境下修改 docker 配置文件是无效的,我们需要修改 colima 配置文件才能使 docker 镜像源生效。 此时你需要进入到~/.colima/default目录下编辑colima.yaml文件。该文件是 colima 的配置文件。内容如下图所示,我这里配置了许多家的镜像源…

rockchip linux sdk指定编译配置文件

SDK&#xff1a;rk3568_linux4.19_V1.4.0 硬件平台&#xff1a;RK3566 一、指定板级配置文件 板级配置文件在<SDK>/device/rockchip/rk3566_rk3568目录下。 1、方法1 ./build.sh后⾯加上板级配置⽂件&#xff0c;例如&#xff1a; ./build.sh /device/rockchip/rk3…

vmware虚拟机安装ubuntu20.04

1.下载Ubuntu 20.04的ISO镜像 Index of /ubuntu-releases/ 2.安装VMware 3.创建新的虚拟机&#xff1a;打开VMware&#xff0c;选择“创建新的虚拟机”或通过文件菜单新建虚拟机。 4.选择典型&#xff0c;然点点击下一步&#xff1a; 5.选择稍后安装操作系统&#xff1a; 6.…

密码学及其应用 —— 密码学概述

1 安全属性和机制 1.1 基本概念 1.1.1 三个核心概念 在讨论信息安全时&#xff0c;我们通常会谈到三个核心概念&#xff1a;保密性、完整性和可用性。这三个概念共同构成了信息安全的基础。 保密性&#xff1a;指的是确保信息只能被授权的人员访问。这就意味着信息在存储、传…

【软件工程】【22.04】p1

关键字&#xff1a; 软件需求规约基本性质、数据字典构成、内聚程度最高功能内聚、公有属性、RUP实体类、评审、测试序列、软件确认过程、CMMI能力等级 软件需求分类、DFD数据流图组成&#xff08;实体&#xff09;、经典详细设计、数据耦合、关联多重性、状态图、黑盒测试、…

设计模式——设计模式原则

设计模式 设计模式示例代码库地址&#xff1a; https://gitee.com/Jasonpupil/designPatterns 设计模式原则 单一职责原则&#xff08;SPS&#xff09;&#xff1a; 又称单一功能原则&#xff0c;面向对象五个基本原则&#xff08;SOLID&#xff09;之一 原则定义&#xf…

方法区讲解

栈、堆、方法区三者之间的关系如上图所示&#xff0c; 第一个Student代表类型&#xff0c;存放在方法区中&#xff0c; student 变量是在虚拟机栈中&#xff0c;最后 new 出来的Student对象放在堆中。本篇主要讲一下有关方法区中的知识。 文章目录 概念方法区的内部结构方法区的…

6.25世界白癜风日·成都博润白癜风医院获评“成都市医学重点专科”

夏日热情如江潮&#xff0c;勇攀高峰正当时。为激发新质生产力&#xff0c;驱动学术研究引领医院发展&#xff0c;也为了迎接 6.25 世界白癜风日。 6月22日&#xff0c;成都博润白癜风医院隆重举行成都市医学重点专科授牌新闻发布会暨成都市市级继续医学教育项目《难治性白癜风…

【招聘贴】JAVA后端·唯品会·BASE新加坡

作者|老夏&#xff08;题图&#xff1a;公司业务介绍页&#xff09; “ 请注意&#xff0c;这两个岗是BASE新加坡的&#xff0c;欢迎推荐给身边需要的朋友&#xff08;特别是在新加坡的&#xff09;。” VIP海外业务-产品技术团队&#xff0c;这两个岗位属于后端工程组的岗&…

每日待办事项提醒用什么便签app比较好?

在快节奏的现代生活中&#xff0c;我们经常需要记住各种事项&#xff0c;如会议、预约、购物清单等。这时&#xff0c;一个高效的便签App就显得尤为重要&#xff0c;可以帮助我们有效地管理日常任务和待办事项。而每日待办事项提醒用什么便签app比较好&#xff1f;面对市场上众…

C++程序设计基础实践:学生信息管理系统

目录 1 系统介绍 2 系统设计 3 设计结果 4 源代码 近来有空闲&#xff0c;把前几个学期做的实验上传上来。如有错误的地方欢迎大佬批评指正&#xff0c;有更好的方法也期待您的分享~ 实验要求 本课程要完成一个学生信息管理系统的设计与实现&#xff0c;可实现对于学生信息…

“三巫日”大结局:标普500尾盘成交量飙升,英伟达“过山车”终以下跌收盘

内容提要 隔夜“美股三巫日”&#xff0c;美国证券交易所迎来了180亿股的换手&#xff0c;较过去三个月的平均水平激增55%&#xff0c;标普500尾盘成交量比平日激增30%。在周五到期的5.5万亿美元各类证券衍生品里&#xff0c;与英伟达相关的衍生品合约价值高居第二&#xff0c…

upload-labs实验过程中遇到的问题

第6题问题&#xff1a;500异常码 发现500异常码&#xff0c;这个应该是apache版本问题&#xff0c;可更换其他版本&#xff0c;或者更换为nginx 12题问题&#xff1a;上传出错 出现上传错误&#xff0c;大概率是php版本问题&#xff0c;需要下载php5.2.17版本的php或者更换其他…

编程书籍的枯燥真相:你也有同样的感受吗?

讲动人的故事,写懂人的代码 我得实话实说,你可能已经发现市面上的大部分编程入门书籍有些枯燥。这个问题的根源在于许多作者把本应该充满乐趣和吸引力的入门指南,写得就像一本沉闷的参考手册。这就好比把一本充满冒险和乐趣的旅行日记,写成了一本单调乏味的字典。 我完全理…

开放式耳机有什么好处?推荐几款开放式蓝牙耳机

现在开放式蓝牙耳机面市,迅速占领了市场一席之地后。各大品牌商纷纷参与研制,开放蓝牙耳机与的竞争日趋激烈。这种开放式耳机崛起的速度,连我作为一个数码博主都得感叹一句绝了&#xff0c;所以我花了大几千块&#xff0c;又买了现在很热门的五款开放式耳机&#xff0c;这篇收集…

揭秘古代手术工具与技术:从中国起源的医疗奇迹

在人类历史的长河中&#xff0c;医学的发展一直是推动社会进步的重要力量。而手术作为医学的一个重要分支&#xff0c;其发展历程同样充满了传奇色彩。今天&#xff0c;我们将带您走进古代手术的世界&#xff0c;揭秘那些令人惊叹的手术工具和技术。 这把手术刀出土于河北西村遗…

【SkiaSharp绘图09】SKBitmap属性详解

文章目录 SKBitmap与Bitmap性能对比对比结果 构造函数SKBitmap()SKBitmap(SKImageInfo)SKBitmap(Int32, Int32, SKColorType, SKAlphaType, SKColorSpace) SKBitmap属性AlphaTypeByteCountBytesBytesPerPixelColorSpaceColorTypeDrawsNothingInfoIsEmptyIsImmutableIsNullPixel…