Python面向對象實現(xiàn)數(shù)據(jù)分析的實例詳解
案例
某公司,有2份數(shù)據(jù)文件,現(xiàn)需要對其進行分析處理,計算每日的銷售額并以柱狀圖表的形式進行展示。



需求分析

實現(xiàn)步驟
- 設計一個類,可以完成數(shù)據(jù)的封裝
- 設計一個抽象類,定義文件讀取的相關功能,并使用子類實現(xiàn)具體功能
- 讀取文件,生產(chǎn)數(shù)據(jù)對象
- 進行數(shù)據(jù)需求的邏輯計算(計算每一天的銷售額)
- 通過PyEcharts進行圖形繪制
代碼
實例1
"""
數(shù)據(jù)定義的類
"""
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):
#讀取文件的數(shù)據(jù),讀取到的每一條數(shù)據(jù)都轉換為Record對象,將它們都封裝到list內返回即可
pass
class TextFileReader(FileReader):
def __init__(self,path):
self.path=path
#復寫(實現(xiàn)抽象方法)父類的方法
def read_data(self):
f=open(self.path,"r",encoding="utf-8")
record_list=[]
for line in f.readlines():
line=line.strip()#消除讀取到的每一行數(shù)據(jù)中的“\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
#復寫(實現(xiàn)抽象方法)父類的方法
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月銷售數(shù)據(jù).txt")
list1=text_file_reader.read_data()
for l in list1:
print(l)
print("========================================================================")
json_file_reader=JsonFileReader("D:/2011年2月銷售數(shù)據(jù)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月銷售數(shù)據(jù).txt")
json_file_reader=JsonFileReader("D:/2011年2月銷售數(shù)據(jù)JSON.txt")
jan_data=text_file_reader.read_data()
feb_data=json_file_reader.read_data()
all_data:list[Record]=jan_data+feb_data
#開始進行數(shù)據(jù)計算
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")

可視化

數(shù)據(jù)集
鏈接:https://pan.baidu.com/s/1P3n-gvooVvmHEPak-xmkKg
提取碼:hxvn
到此這篇關于Python面向對象實現(xiàn)數(shù)據(jù)分析的實例詳解的文章就介紹到這了,更多相關Python數(shù)據(jù)分析內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Python爬蟲爬取美劇網(wǎng)站的實現(xiàn)代碼
一直在學習Python爬蟲,所以今天就心血來潮來寫了個爬蟲,抓取該網(wǎng)站上所有美劇鏈接,并保存在文本文檔中,想要哪部劇就直接打開復制鏈接到迅雷就可以下載啦2016-09-09
探秘TensorFlow 和 NumPy 的 Broadcasting 機制
這篇文章主要介紹了探秘TensorFlow 和 NumPy 的 Broadcasting 機制,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-03-03
Python工廠模式實現(xiàn)封裝Webhook群聊機器人詳解
企業(yè)存在給 特定群組 自動推送消息的需求,你可以在群聊中添加一個自定義機器人,通過服務端調用 webhook 地址,即可將外部系統(tǒng)的通知消息即時推送到群聊中。本文就來和大家聊聊具體實現(xiàn)方法2023-02-02
python實現(xiàn)圖像處理之PiL依賴庫的案例應用詳解
這篇文章主要介紹了python實現(xiàn)圖像處理之PiL依賴庫的案例應用詳解,本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內容,需要的朋友可以參考下2021-07-07
基于python連接oracle導并出數(shù)據(jù)文件
這篇文章主要介紹了基于python連接oracle導并出數(shù)據(jù)文件,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-04-04
Python利用Rasa框架和SMTPlib庫實現(xiàn)郵件回復助手
在現(xiàn)代辦公場景中,處理大量郵件是一項既耗時又容易出錯的任務,本文將詳細介紹如何使用Python的Rasa框架和SMTPlib庫建一個智能的郵件自動回復助手,感興趣的可以了解下2025-04-04
編寫Python腳本把sqlAlchemy對象轉換成dict的教程
這篇文章主要介紹了編寫Python腳本把sqlAlchemy對象轉換成dict的教程,主要是基于Python的model類構建一個轉換的方法,需要的朋友可以參考下2015-05-05
Python數(shù)據(jù)分析之雙色球統(tǒng)計兩個紅和藍球哪組合比例高的方法
這篇文章主要介紹了Python數(shù)據(jù)分析之雙色球統(tǒng)計兩個紅和藍球哪組合比例高的方法,涉及Python數(shù)值運算及圖形繪制相關操作技巧,需要的朋友可以參考下2018-02-02

