Python面向对象实现数据分析的实例详解

目录
  • 案例
  • 需求分析
  • 实现步骤
  • 代码
    • 实例1
    • 实例2
    • 实例3
  • 可视化
  • 数据集

案例

某公司,有2份数据文件,现需要对其进行分析处理,计算每日的销售额并以柱状图表的形式进行展示。

需求分析

实现步骤

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

代码

实例1

"""
数据定义的类
"""

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}"

实例2

"""
和文件相关的类定义
"""
import json

from data_define import Record

class FileReader:
    def read_data(self):
        #读取文件的数据,读取到的每一条数据都转换为Record对象,将它们都封装到list内返回即可
        pass

class TextFileReader(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=Record(data_list[0],data_list[1],int(data_list[2]),data_list[3])
            record_list.append(record)
        f.close()
        return record_list

class JsonFileReader(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=Record(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=TextFileReader("D:/2011年1月销售数据.txt")
    list1=text_file_reader.read_data()
    for l in list1:
        print(l)
    print("========================================================================")
    json_file_reader=JsonFileReader("D:/2011年2月销售数据JSON.txt")
    list2=json_file_reader.read_data()
    for l in list2:
        print(l)

实例3

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

from file_define import FileReader,TextFileReader,JsonFileReader
from data_define import Record

text_file_reader=TextFileReader("D:/2011年1月销售数据.txt")
json_file_reader=JsonFileReader("D:/2011年2月销售数据JSON.txt")

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

all_data:list[Record]=jan_data+feb_data

#开始进行数据计算
data_dict={}
for record in all_data:
    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="每日销售额")
)
bar.render("每日销售额柱状图.html")

可视化

数据集

链接:https://pan.baidu.com/s/1P3n-gvooVvmHEPak-xmkKg

提取码:hxvn

到此这篇关于Python面向对象实现数据分析的实例详解的文章就介绍到这了,更多相关Python数据分析内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • python文件数据分析治理提取

    目录 前提提要 要求 思路 代码 运行结果 分析 1)读取文件 2)读取数据 3)数据整理 4)正则表达式匹配外加数据去重 6)数据导出保存 前提提要 python2.0有无法直接读取中文路径的问题,需要另外写函数.python3.0在2018年的时候也无法直接读取. 现在使用的时候,发现python3.0是可以直接读取中文路径的. 需要自带或者创建几个txt文件,里面最好写几个数据(姓名,手机号,住址) 要求 写代码的时候最好,自己设几个要求,明确下目的: 需要读取对应目录路径的所有对应文件

  • Python数据分析之Matplotlib数据可视化

    目录 1.前言 2.Matplotlib概念 3.Matplotlib.pyplot基本使用 3.数据展示 3.1如何选择展示方式 3.2绘制折线图 3.3绘制柱状图 3.3.1普通柱状图 3.3.2堆叠柱状图 3.3.3分组柱状图 3.3.4饼图 4.绘制子图 1.前言 数据展示,即数据可视化,是数据分析的第五个步骤,大部分人对图形敏感度高于数字,好的数据展示方式能让人快速发现问题或规律,找到数据背后隐藏的价值. 2.Matplotlib概念 Matplotlib 是 Python 中常用的

  • Python利用Pandas进行数据分析的方法详解

    目录 Series 代码 #1 代码 #2 代码#3 代码 #4 数据框 代码 #1 代码 #2 代码 #3 代码 #4 Pandas是最流行的用于数据分析的 Python 库.它提供高度优化的性能,后端源代码完全用C或Python编写. 我们可以通过以下方式分析 pandas 中的数据: 1.Series 2.数据帧 Series Series 是 pandas 中定义的一维(1-D)数组,可用于存储任何数据类型. 代码 #1 创建 Series # 创建 Series 的程序 # 导入 Pa

  • Python实现数据可视化案例分析

    目录 1. 问题描述 2. 实验环境 3. 实验步骤及结果 1. 问题描述 对右图进行修改: 请更换图形的风格 请将 x 轴的数据改为-10 到 10 请自行构造一个 y 值的函数 将直方图上的数字,位置改到柱形图的内部垂直居中的位置 对成绩数据 data1402.csv 进行分段统计:每 5 分作为一个分数段,展示出每个分数段的人数直方图. 自行创建出 10 个学生的 3 个学期排名数据,并通过直方图进行对比展示. 线图 把这个图像做一些调整,要求出现 5 个完整的波峰. 调大 cos 波形的

  • Python制作数据分析透视表的方法详解

    目录 1.pivot_table函数index属性 2.pivot_table函数values属性 3.pivot_table函数aggfunc属性 4.pivot_table函数columns属性 透视表是一种可以对数据动态排布并且分类汇总的表格格式,在常用的python的数据分析非标准库pandas中体现为pivot_table模块. pivot_table数据透视表可以灵活的定制数据分析需求进行汇总,当然在Excel办公操作中早就存在了数据透视表的工具.如今,数据透视表被应用在python

  • Python面向对象之类和对象实例详解

    本文实例讲述了Python面向对象之类和对象.分享给大家供大家参考,具体如下: 类和对象(1) 对象是什么? 对象=属性(静态)+方法(动态): 属性一般是一个个变量:方法是一个个函数: #类的属性 就是 类变量 #实例变量:定义在方法中的变量,只作用于当前实例的类. 例子: class Turtle:#python 中类名约定以大写字母开头 '''关于类的简单例子...''' #属性 == 类变量 color ="green" weight="10kg" legs

  • Python面向对象类的继承实例详解

    本文实例讲述了Python面向对象类的继承.分享给大家供大家参考,具体如下: 一.概述 面向对象编程 (OOP) 语言的一个主要功能就是"继承".继承是指这样一种能力:它可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展. 通过继承创建的新类称为"子类"或"派生类",被继承的类称为"基类"."父类"或"超类",继承的过程,就是从一般到特殊的过程.在某些 OOP

  • Python面向对象编程repr方法示例详解

    目录 为什么要讲 __repr__ 重写 __repr__ 方法 str() 和 repr() 的区别 为什么要讲 __repr__ 在 Python 中,直接 print 一个实例对象,默认是输出这个对象由哪个类创建的对象,以及在内存中的地址(十六进制表示) 假设在开发调试过程中,希望使用 print 实例对象时,输出自定义内容,就可以用 __repr__ 方法了 或者通过 repr() 调用对象也会返回 __repr__ 方法返回的值 是不是似曾相识....没错..和 __str__ 一样的

  • Python 通过URL打开图片实例详解

    Python 通过URL打开图片实例详解 不论是用OpenCV还是PIL,skimage等库,在之前做图像处理的时候,几乎都是读取本地的图片.最近尝试爬虫爬取图片,在保存之前,我希望能先快速浏览一遍图片,然后有选择性的保存.这里就需要从url读取图片了.查了很多资料,发现有这么几种方法,这里做个记录. 本文用到的图片URL如下: img_src = 'http://wx2.sinaimg.cn/mw690/ac38503ely1fesz8m0ov6j20qo140dix.jpg' 1.用Open

  • Python命令启动Web服务器实例详解

    Python命令启动Web服务器实例详解 利用Python自带的包可以建立简单的web服务器.在DOS里cd到准备做服务器根目录的路径下,输入命令: python -m Web服务器模块 [端口号,默认8000] 例如: python -m SimpleHTTPServer 8080 然后就可以在浏览器中输入 http://localhost:端口号/路径 来访问服务器资源. 例如: http://localhost:8080/index.htm(当然index.htm文件得自己创建) 其他机器

  • python 二分查找和快速排序实例详解

    思想简单,细节颇多:本以为很简单的两个小程序,写起来发现bug频出,留此纪念. #usr/bin/env python def binary_search(lst,t): low=0 height=len(lst)-1 quicksort(lst,0,height) print lst while low<=height: mid = (low+height)/2 if lst[mid] == t: return lst[mid] elif lst[mid]>t: height=mid-1 e

  • Python探索之URL Dispatcher实例详解

    URL dispatcher简单点理解就是根据URL,将请求分发到相应的方法中去处理,它是对URL和View的一个映射,它的实现其实也很简单,就是一个正则匹配的过程,事先定义好正则表达式和该正则表达式对应的view方法,如果请求的URL符合这个正则表达式,那么就分发这个请求到这个view方法中. 有了这个base,我们先抛出几个问题,提前思考一下: 这个映射定义在哪里?当映射很多时,如果有效的组织? URL中的参数怎么获取,怎么传给view方法? 如何在view或者是template中反解出UR

  • Python 中迭代器与生成器实例详解

    Python 中迭代器与生成器实例详解 本文通过针对不同应用场景及其解决方案的方式,总结了Python中迭代器与生成器的一些相关知识,具体如下: 1.手动遍历迭代器 应用场景:想遍历一个可迭代对象中的所有元素,但是不想用for循环 解决方案:使用next()函数,并捕获StopIteration异常 def manual_iter(): with open('/etc/passwd') as f: try: while True: line=next(f) if line is None: br

  • python 换位密码算法的实例详解

     python 换位密码算法的实例详解 一前言: 换位密码基本原理:先把明文按照固定长度进行分组,然后对每一组的字符进行换位操作,从而实现加密.例如,字符串"Error should never pass silently",使用秘钥1432进行加密时,首先将字符串分成若干长度为4的分组,然后对每个分组的字符进行换位,第1个和第3个字符位置不变,把第2个字符和第4个字符交换位置,得到"Eorrrs shluoden v repssa liseltny" 二 代码:

  • Python 高级专用类方法的实例详解

    Python 高级专用类方法的实例详解 除了 __getitem__ 和 __setitem__ 之外 Python 还有更多的专用函数.某些可以让你模拟出你甚至可能不知道的功能.下面的例子将展示 UserDict 一些其他专用方法. def __repr__(self): return repr(self.data) (1) def __cmp__(self, dict): (2) if isinstance(dict, UserDict): return cmp(self.data, dic

随机推荐