python可视化图表

1.测试数据准备

2011年1月销售数据.txt

bash 复制代码
2011-01-01,4b34218c-9f37-4e66-b33e-327ecd5fb897,1689,湖南省
2011-01-01,5b6a6417-9a16-4243-9704-255719074bff,2353,河北省
2011-01-01,ae240260-68a9-4e59-b4c9-206be4c08a8d,2565,湖北省
2011-01-02,c833e851-880f-4e05-9de5-b547fsffc5e1,2877,山东省
2011-01-02,dd27e822-884c-4d20-a309-986f6a90e2b9,9476,安徽省
2011-01-03,b6882f5f-fb10-4210-9e45-288dd2239594,1363,广东省
2011-01-04,fd5056a8-8223-4d02-9988-04e1b41a57e8,2149,江苏省
2011-01-04,d022df35-3c0e-4753-bccb-37e125a5922b,1739,福建省
2011-01-04,a480686a-77ff-497e-9e32-0f6d9ba3eadd,2999,江苏省

2011年2月销售数据JSON.txt

bash 复制代码
{"date":"2011-02-02","order_id":"3dea6f83 a9b2-4197-ba9f-2b25704c530b","money":2547,"province":"广东省"}
{"date":"2011-02-03","order_id":"93cf7a56-3f90-4df9-af76-de7233c1dddb","money":1216,"province":"福建省"}
{"date":"2011-02-04","order_id":"0fbe1745-ac65-48f4-985b-b71875fcfbf7","money":2310,"province":"云南省"}

2.data_define.py

python 复制代码
"""
数据定义的类
"""


class Recort:
    def __init__(self, date, order_id, money, province):
        self.date = date  # 订单日期
        self.order_id = order_id  # 订单id
        self.money = money  # 订单金额
        self.province = province  # 订单省份


    def __str__(self):
        return f"{self.date},{self.order_id},{self.money},{self.province}"

3. file_define.py

python 复制代码
"""
和文件相关的定义类
"""

from data_define import Recort
import json


# 先定义一个抽象类,用来做顶层设计,确定有哪些功能需要实现
class FileReader:
    def read_data(self):
        "读取文件的数据,督导的每一条数据转换未Record对象,将它们都封装到list内返回即可"
        pass


class TextFilReader(FileReader):

    def __init__(self, path):
        self.path = path  # 定义成员变量记录文件的路径

    def read_data(self):
        f = open(self.path, 'r', encoding='utf-8')

        record_list = []
        for line in f.readlines():
            line = line.strip()  # 消除读取到的每一行数据中的\n
            data_list = line.split(',')

            record = Recort(data_list[0], data_list[1], int(data_list[2]), data_list[3])
            record_list.append(record)

        f.close()
        return record_list


class JosnFileReader(FileReader):

    def __init__(self, path):
        self.path = path

    def read_data(self):
        f = open(self.path, 'r', encoding='utf-8')

        record_list = []
        for line in f.readlines():
            data_dict = json.loads(line)

            record = Recort(data_dict['date'], data_dict['order_id'], int(data_dict['money']), data_dict['province'])
            record_list.append(record)

        f.close()

        return record_list


if __name__ == '__main__':
    text_file_reader = TextFilReader('./2011年1月销售数据.txt')
    json_file_reader = JosnFileReader('./2011年2月销售数据JSON.txt')

    list1 = text_file_reader.read_data()
    list2 = json_file_reader.read_data()

    for i in list1:
        print(i)

    for i in list2:
        print(i)

4. main.py

python 复制代码
"""
面相对象,数据分析案例,主业务逻辑代码

实现步骤:
1. 设计一个类,可以完成数据的封装
2. 设计一个抽象类,定义文件读取的相关功能,病使用子类实现具体功能
3. 读取文件,生产数据对象
4. 进行数据的需求的逻辑计算(计算每一天的销售额)
5. 通过PyEcharts 进行图形的绘制
"""

from pyecharts.charts import Bar
from pyecharts.options import *

from file_define import TextFilReader, JosnFileReader

text_file_reader = TextFilReader("./2011年1月销售数据.txt")
json_file_reader = JosnFileReader("./2011年2月销售数据JSON.txt")

jan_data = text_file_reader.read_data()
feb_data = json_file_reader.read_data()

all_data = jan_data + feb_data

# 开始进行数据计算
data_dict = {}
for record in all_data:
    if record.date in data_dict.keys():
        data_dict[record.date] += record.money
    else:
        data_dict[record.date] = record.money

# 可视化图表开发
bar = Bar()

bar.add_xaxis(list(data_dict.keys()))  # 添加x轴的数据
bar.add_yaxis("销售额", list(data_dict.values()), label_opts=LabelOpts(is_show=False))  # 添加y轴数据
bar.set_global_opts(title_opts=TitleOpts(title='每日销售额'))
bar.render("每日销售额柱状图.html")

5.html展示

学习链接

【黑马程序员python教程,8天python从入门到精通,学python看这套就够了】https://www.bilibili.com/video/BV1qW4y1a7fU?p=126\&vd_source=2d34fd2352ae451c4f6d4cb20707e169

相关推荐
梧桐树04292 分钟前
python常用内建模块:collections
python
Dream_Snowar10 分钟前
速通Python 第三节
开发语言·python
高山我梦口香糖1 小时前
[react]searchParams转普通对象
开发语言·前端·javascript
信号处理学渣1 小时前
matlab画图,选择性显示legend标签
开发语言·matlab
红龙创客1 小时前
某狐畅游24校招-C++开发岗笔试(单选题)
开发语言·c++
蓝天星空1 小时前
Python调用open ai接口
人工智能·python
jasmine s2 小时前
Pandas
开发语言·python
郭wes代码2 小时前
Cmd命令大全(万字详细版)
python·算法·小程序
leaf_leaves_leaf2 小时前
win11用一条命令给anaconda环境安装GPU版本pytorch,并检查是否为GPU版本
人工智能·pytorch·python
biomooc2 小时前
R 语言 | 绘图的文字格式(绘制上标、下标、斜体、文字标注等)
开发语言·r语言