数据可视化——结合面向对象的思想实现数据可视化

这篇具有很好参考价值的文章主要介绍了数据可视化——结合面向对象的思想实现数据可视化。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

数据可视化——结合面向对象的思想实现数据可视化,python,信息可视化,python

前言

前面我们已经学习了如何使用 python 的 pyecharts 模块来实现数据可视化,将数据经过处理后以折线图、地图以及柱状图的形式展现出来,那么这篇文章我将以一个例子为大家分享如何结合 面向对象 的思想来实现数据可视化。

实现数据可视化的过程

  1. 收集数据:收集需要进行可视化的数据,并确保数据的准确性和完整性。数据可以来源于各种渠道,如数据库、日志文件、API等。

  2. 清洗和整理数据:对收集到的数据进行清洗和整理,包括去除重复值、处理缺失数据、处理异常值等。确保数据的质量和一致性。

  3. 选择合适的可视化工具:根据数据的类型和需求,选择合适的可视化工具。常见的可视化工具包括Tableau、Power BI、matplotlib、D3.js等。

  4. 选择可视化类型:根据数据的特点和表达需求,选择合适的可视化类型。常见的可视化类型包括条形图、折线图、散点图、饼图、雷达图等。

  5. 设计可视化界面:根据数据的特点和可视化类型,设计出合适的可视化界面。界面应该简洁明了,注重重点数据的展示和对比。

  6. 绘制图表:使用选择的可视化工具,绘制出设计好的可视化图表。根据需求,添加合适的图例、标签、标题等,以增加图表的可读性和易理解性。

  7. 数据交互和分析:为可视化界面添加交互功能,如鼠标悬停显示数据详情、点击图表元素进行筛选等。通过交互功能,用户可以进行数据的进一步分析和探索。

  8. 调整和优化:根据用户反馈和需求变化,对可视化界面进行调整和优化。可以修改图表样式、改进交互功能、添加新的数据维度等。

  9. 分享和发布:将完成的可视化结果分享和发布,可以通过导出静态图片、生成报告、嵌入网页等方式进行展示和共享。

  10. 监控和更新:定期监控可视化结果,及时更新数据和调整可视化界面,保持可视化结果的时效性和准确性。

我们实现的是简单的数据可视化,今天主要针对收集数据、清洗和整理数、选择可视化类型、绘制图表几个方面来讲解。

实现数据可视化

数据可视化——结合面向对象的思想实现数据可视化,python,信息可视化,python
数据可视化——结合面向对象的思想实现数据可视化,python,信息可视化,python

我们以两个月的销售额来举例,将两个月的销售额以图像的形式展现出来。

读取数据

这里我们已经将数据打包放进了文件中,所以我们需要做的就是将数据从文件中读取出来。由于两个文件的格式是不同的,一种是 csv 格式,一个是 JSON 格式,所以读取和处理数据的方式也是不同的,这里分两个方法来分别读取和处理不同的数据。

这里提供一个接口来方便后面两个类的使用。

class FileReader():

    def reader(self) -> list[Record]:
        pass

什么是接口?接口是指类当中的方法都没有具体的方法体,用 pass 来表示方法体,而具体的方法实现由继承他的子类来实现。

读取文件的方式基本相同,但是为了后面的处理数据操作,我们还是分两个类来实现。

读取csv格式文件数据

class TestFileReader(FileReader):
    def __init__(self,path):
        self.path = path

    def reader(self) -> list[Record]:
        f = open(self.path,"r",encoding="UTF8")
        data_lines = f.readlines()
        f.close()

读取JSON格式文件数据

class JsonFileReader(FileReader):
    def __init__(self,path):
        self.path = path

    def reader(self) -> list[Record]:
        f = open(self.path,"r",encoding="UTF8")
        data_lines = f.readlines()
        f.close()

创建对象

将每一条销售信息当作对象。

class Record():
    def __init__(self,data,order_id,money,province):
        self.data = data
        self.order_id = order_id
        self.money = money
        self.province = province

    def __str__(self):
        return f'{self.data},{self.order_id},{self.money},{self.province}'

__ init __ 构造方法来对属性进行初始化。
__ str __ 方法来方便我们的打印。

处理数据

我们将数据数据都转换为对象,每个对象代表一条销售信息,然后将这些对象都存储在列表中。

TestFileReader 类

class TestFileReader(FileReader):
    def __init__(self,path):
        self.path = path

    def reader(self) -> list[Record]:
        f = open(self.path,"r",encoding="UTF8")
        data_lines = f.readlines()
        f.close()
        list1 : list[Record] = []
        for line in data_lines:
            line = line.strip()  # strip方法用来处理每一行数据后面的 \n
            data_list = line.split(",")
            record = Record(data_list[0],data_list[1],int(data_list[2]),data_list[3])
            list1.append(record)
        return list1

JsonFileReader 类

class JsonFileReader(FileReader):
    def __init__(self,path):
        self.path = path

    def reader(self) -> list[Record]:
        f = open(self.path,"r",encoding="UTF8")
        data_lines = f.readlines()
        f.close()
        list1 : list[Record] = []
        for line in data_lines:
            line = line.strip()
            data_dict = json.loads(line)  # JSON类型数据转换为python数据类型
            record = Record(data_dict["date"],data_dict["order_id"],int(data_dict["money"]),data_dict["province"])
            list1.append(record)

        return list1

数据分析

将同一天的销售额累加在一起,并且使用字典这种数据类型来存储,为什么要使用字典呢?因为字典的key值不允许出现重复,这也就对应了我们的日期,而值就对应了我们的销售额。

test_file = TestFileReader("D:/桌面/2011年1月销售数据.txt")
json_file = JsonFileReader("D:/桌面/2011年2月销售数据JSON.txt")

list1 = test_file.reader()
list2 = json_file.reader()

data_list = list1 + list2  # 将两天的数据综合到一起
data_dict = {}

for record in data_list:
    if record.data in data_dict.keys():  # 如果该日期已经存储了,那么我们将存储的值与当前值相加之后再存入
        data_dict[record.data] += record.money
    else:  # 如果没有出现,那么就直接存入数据
        data_dict[record.data] = record.money

绘制柱状图

这个例子我们使用柱状图最能显示出数据的差异,随意我们选择柱状图。

bar = Bar(init_opts=InitOpts(theme=ThemeType.LIGHT))
bar.add_xaxis(list(data_dict.keys()))
bar.add_yaxis("销售额",list(data_dict.values()),label_opts=LabelOpts(is_show=False))  # 设置系列配置项来取消柱状图中数据的显示

bar.set_global_opts(
    title_opts=TitleOpts(title="2011年1、2月销售情况")
)

bar.render("2021年1、2月销售情况.html")

整体代码及效果展示

data_define.py 文件

class Record():
    def __init__(self,data,order_id,money,province):
        self.data = data
        self.order_id = order_id
        self.money = money
        self.province = province

    def __str__(self):
        return f'{self.data},{self.order_id},{self.money},{self.province}'

file_define.py 文件

from data_define import Record
import json

class FileReader():

    def reader(self) -> list[Record]:
        pass

class TestFileReader(FileReader):
    def __init__(self,path):
        self.path = path

    def reader(self) -> list[Record]:
        f = open(self.path,"r",encoding="UTF8")
        data_lines = f.readlines()
        f.close()
        list1 : list[Record] = []
        for line in data_lines:
            line = line.strip()
            data_list = line.split(",")
            record = Record(data_list[0],data_list[1],int(data_list[2]),data_list[3])
            list1.append(record)
        return list1

class JsonFileReader(FileReader):
    def __init__(self,path):
        self.path = path

    def reader(self) -> list[Record]:
        f = open(self.path,"r",encoding="UTF8")
        data_lines = f.readlines()
        f.close()
        list1 : list[Record] = []
        for line in data_lines:
            line = line.strip()
            data_dict = json.loads(line)
            record = Record(data_dict["date"],data_dict["order_id"],int(data_dict["money"]),data_dict["province"])
            list1.append(record)

        return list1

main.py 文件

from data_define import Record
from file_define import *
from pyecharts.charts import Bar
from pyecharts.options import TitleOpts,LabelOpts,InitOpts
from pyecharts.globals import ThemeType

test_file = TestFileReader("D:/桌面/2011年1月销售数据.txt")
json_file = JsonFileReader("D:/桌面/2011年2月销售数据JSON.txt")

list1 = test_file.reader()
list2 = json_file.reader()

data_list = list1 + list2
data_dict = {}

for record in data_list:
    if record.data in data_dict.keys():
        data_dict[record.data] += record.money
    else:
        data_dict[record.data] = record.money

bar = Bar(init_opts=InitOpts(theme=ThemeType.LIGHT))
bar.add_xaxis(list(data_dict.keys()))
bar.add_yaxis("销售额",list(data_dict.values()),label_opts=LabelOpts(is_show=False))

bar.set_global_opts(
    title_opts=TitleOpts(title="2011年1、2月销售情况")
)

bar.render("2021年1、2月销售情况.html")


数据可视化——结合面向对象的思想实现数据可视化,python,信息可视化,python文章来源地址https://www.toymoban.com/news/detail-603058.html

到了这里,关于数据可视化——结合面向对象的思想实现数据可视化的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 大数据可视化BI分析工具Apache Superset结合内网穿透实现远程访问

    Superset是一款由中国知名科技公司开源的“现代化的企业级BI(商业智能)Web应用程序”,其通过创建和分享dashboard,为数据分析提供了轻量级的数据查询和可视化方案。Superset在数据处理和可视化方面具有强大的功能,能够满足企业级的数据分析需求,并为用户提供直观、灵

    2024年02月04日
    浏览(45)
  • 面向人群属性关系挖掘的数据可视化———基于美国人口adult数据集

    目录 面向人群属性关系挖掘的数据可视化 一、课程设计内容及目的 二、总体设计 (一)题目需求分析 (二)系统整体流程图或组成框图 三、详细设计 (一)读取数据并导入需要的第三方库 (二)通过判断每个属性的取值范围来估计属性及其类型 (三)除去数据值前的空

    2024年02月10日
    浏览(40)
  • Nginx可视化管理工具结合cpolar实现远程访问内网服务

    Nginx Proxy Manager 是一个开源的反向代理工具,不需要了解太多 Nginx 或 Letsencrypt 的相关知识,即可快速将你的服务暴露到外部环境,并且支持 SSL 配置。基于 Tabler 的美观且安全的管理界面,无需了解 Nginx 即可轻松创建转发域、重定向、流和 404 主机。 下面介绍在Linux 安装Nginx

    2024年02月08日
    浏览(38)
  • 如何使用docker compose结合内网穿透实现公网访问web可视化界面

    Docker Compose UI是Docker Compose的web界面。这个项目的目标是在Docker Compose之上提供一个最小的HTTP API,同时保持与Docker Compose CLI的完全互操作性。 本篇文章将dockercompose结合cpolar内网穿透软件实现公网访问docker compose web可视化界面,更直观的进行远程编写。 本文演示环境:CentOS7,

    2024年02月21日
    浏览(50)
  • GPT模型结合Python-GEE遥感云大数据分析、管理与可视化技术

    查看原文GPT模型支持下的Python-GEE遥感云大数据分析、管理与可视化技术及多领域案例应用 目录 第一章、理论基础 第二章、开发环境搭建 第三章、遥感大数据处理基础与ChatGPT等AI模型交互 第四章、典型案例操作实践 第五章、输入输出及数据资产高效管理 第六章、云端数据

    2024年02月08日
    浏览(87)
  • 面向AI编程:探索可视化分析模型

    大规模语言模型 (LLM) 拥有大量的数据来源,能针对用户提出的问题提供不同形式的回答,但其回答形式仅限于“文本”。尽管文本内容清晰,但在包含复杂逻辑或需要向外展示的场景下,文本表达存在局限性。可以想象,将“文本” 转换为“可视化” 分析模型甚至UI界面将

    2024年02月17日
    浏览(36)
  • 大数据可视化项目—基于Python豆瓣电影数据可视化分析系统的设计与实现

    本项目旨在通过对豆瓣电影数据进行综合分析与可视化展示,构建一个基于Python的大数据可视化系统。通过数据爬取收集、清洗、分析豆瓣电影数据,我们提供了一个全面的电影信息平台,为用户提供深入了解电影产业趋势、影片评价与演员表现的工具。项目的关键步骤包括

    2024年02月04日
    浏览(43)
  • YOLOv5结合GradCAM热力图可视化

    1、更改 main_gradcam.py 文件中的类别 2、更改model-path和img-path路径 3、运行 main_gradcam.py 文件,结果如下   4、如果不想要显示坐标框,可以将 main_gradcam.py 文件中的下面这段代码注释掉   如果以上报错,即为torch版本不对,升级为1.8.0以上就可 也可以将gradcam.py文件中的register_f

    2024年02月12日
    浏览(31)
  • Matplotlib实现数据可视化

    Matplotlib 是Python中应用较为广泛的绘图工具之一,首次发布于2007年。它在函数设计上参考了MATLAB,因此名字以\\\"Mat\\\"开头,中间的\\\"plot\\\"代表绘图功能,结尾的\\\"lib\\\"表示它是一个集合。Matplotlib支持众多 图形的绘制 。 Matplotlib 绘图流程 : 准备数据 添加内容 绘制图形 保存/显示 常

    2024年04月17日
    浏览(24)
  • 如何实现电商数据可视化

    一、什么是API? API,即Application Programming Interface,翻译过来就是“应用程序编程接口”。它是用于不同软件和应用之间进行交互的一种技术规范。通过API,我们可以让两个应用程序之间进行数据和功能的交换和共享,从而实现更加复杂的数据分析和可视化效果。 二、电商A

    2024年02月10日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包