Commit f0876a65 authored by zhangshuo's avatar zhangshuo

备注

parent 91c7d6fb
### python3环境
> pip3 install -r requirements.txt
入口文件 main_analysis.py
from load_data import LoadData
###
# 分析策略相关的集合类
###
def count_in_dict(data_dict, dict_key, step_value=1):
if dict_key in data_dict:
......
import pyecharts.options as opts
from pyecharts.charts import Line, Pie, Page
# 相关的配置地址:https://pyecharts.org/#/zh-cn/intro
# 用于封装 pyecharts 相关的方法
class EChartDraw(object):
def __init__(self, result_path):
self.page = Page(layout=Page.DraggablePageLayout)
self.result_path = result_path
# 绘制饼状图
def draw_pie_chart(self, title_name, data_dict):
x_data = sorted(data_dict)
y_data = []
......@@ -19,6 +22,7 @@ class EChartDraw(object):
pie.set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {c}({d}%)"))
self.page.add(pie)
# 绘制折线图
def draw_line_chart(self, title_name, data_dict):
x_data = sorted(data_dict)
y_data = []
......
......@@ -4,7 +4,6 @@ import csv
# 读取数据
class LoadData(object):
def __init__(self, file_path):
self.file_path = file_path
......@@ -18,12 +17,16 @@ class LoadData(object):
# 去除0元领,1元抽奖,服务费
self.real_data_dict = []
# 初始化处理原始数据
def __build_re_buy_data(self):
print("初始化数据>", self.title_list)
# 需要去除价格为0的
for data in self.data_list:
# 服务费等这些0元的数据删除
if float(data['价格']) == 0.0:
print("删除价格为0 ", data)
self.data_list.remove(data)
# 识别一口价212商品还是拍卖212商品
if data['itemtype'] == '53':
data['商品类型'] = '212商品_一口价'
elif data['itemtype'] == '51':
......@@ -55,6 +58,7 @@ class LoadData(object):
sorted(item_list, key=lambda item: item['付费时间'])
self.real_data_dict[user_id] = item_list
# 读取csv文件(私有方法)
def __load_csv(self):
with open(self.file_path) as file:
file_csv = csv.reader(file)
......@@ -66,15 +70,13 @@ class LoadData(object):
self.data_list.append(data)
self.__build_re_buy_data()
# 读取xlsx文件(私有方法)
def __load_xlsx(self):
workbook = xlrd.open_workbook(self.file_path)
sheet = workbook.sheet_by_index(0)
print('行数:', sheet.nrows, "列数:", sheet.ncols)
# 获取标题
for column in range(sheet.ncols):
self.title_list.append(sheet.cell(0, column).value)
print('标题:', self.title_list)
for row in range(1, sheet.nrows, 1):
data = {}
for colum in range(sheet.ncols):
......@@ -82,6 +84,7 @@ class LoadData(object):
self.data_list.append(data)
self.__build_re_buy_data()
# 读取数据(判断文件格式,加载不同读取方法)
def load(self):
self.title_list = []
self.data_list = []
......@@ -94,6 +97,7 @@ class LoadData(object):
else:
print("读取失败,不支持该文件类型>>", self.file_path)
# 是否是0元领或者其他非常规的商品
def is_zero_buy(self, data):
data_name = data['订单名称']
data_price = float(data['价格'])
......
......@@ -5,6 +5,7 @@ from echart_draw import EChartDraw
from load_data import LoadData
# 分析数据的方法集合
def analysis_list(load_data, result_path):
chart = EChartDraw('./result/' + result_path)
analysis_classify(load_data, chart)
......@@ -16,11 +17,14 @@ def analysis_list(load_data, result_path):
if __name__ == "__main__":
# 读取文件
# 遍历当前文件夹下所有文件
for root, dirs, files in os.walk('csv'):
for file in files:
# 当前需要处理的文件
csv_path = os.path.join(root, file)
result_file_name = file.replace('.csv', '_result.html')
# 读取数据(支持csv和xlsx两个文件格式)
load_data = LoadData(csv_path)
load_data.load()
# 分析数据
analysis_list(load_data, result_file_name)
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment