Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
B
Buu
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
zhangshuo
Buu
Commits
f0876a65
Commit
f0876a65
authored
May 23, 2022
by
zhangshuo
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
备注
parent
91c7d6fb
Changes
5
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
25 additions
and
5 deletions
+25
-5
Readme.md
Readme.md
+5
-0
analysis_strategy.py
analysis_strategy.py
+3
-0
echart_draw.py
echart_draw.py
+4
-0
load_data.py
load_data.py
+8
-4
main_analysis.py
main_analysis.py
+5
-1
No files found.
Readme.md
0 → 100644
View file @
f0876a65
### python3环境
> pip3 install -r requirements.txt
入口文件 main_analysis.py
analysis_strategy.py
View file @
f0876a65
from
load_data
import
LoadData
from
load_data
import
LoadData
###
# 分析策略相关的集合类
###
def
count_in_dict
(
data_dict
,
dict_key
,
step_value
=
1
):
def
count_in_dict
(
data_dict
,
dict_key
,
step_value
=
1
):
if
dict_key
in
data_dict
:
if
dict_key
in
data_dict
:
...
...
echart_draw.py
View file @
f0876a65
import
pyecharts.options
as
opts
import
pyecharts.options
as
opts
from
pyecharts.charts
import
Line
,
Pie
,
Page
from
pyecharts.charts
import
Line
,
Pie
,
Page
# 相关的配置地址:https://pyecharts.org/#/zh-cn/intro
# 用于封装 pyecharts 相关的方法
class
EChartDraw
(
object
):
class
EChartDraw
(
object
):
def
__init__
(
self
,
result_path
):
def
__init__
(
self
,
result_path
):
self
.
page
=
Page
(
layout
=
Page
.
DraggablePageLayout
)
self
.
page
=
Page
(
layout
=
Page
.
DraggablePageLayout
)
self
.
result_path
=
result_path
self
.
result_path
=
result_path
# 绘制饼状图
def
draw_pie_chart
(
self
,
title_name
,
data_dict
):
def
draw_pie_chart
(
self
,
title_name
,
data_dict
):
x_data
=
sorted
(
data_dict
)
x_data
=
sorted
(
data_dict
)
y_data
=
[]
y_data
=
[]
...
@@ -19,6 +22,7 @@ class EChartDraw(object):
...
@@ -19,6 +22,7 @@ class EChartDraw(object):
pie
.
set_series_opts
(
label_opts
=
opts
.
LabelOpts
(
formatter
=
"{b}: {c}({d}%)"
))
pie
.
set_series_opts
(
label_opts
=
opts
.
LabelOpts
(
formatter
=
"{b}: {c}({d}%)"
))
self
.
page
.
add
(
pie
)
self
.
page
.
add
(
pie
)
# 绘制折线图
def
draw_line_chart
(
self
,
title_name
,
data_dict
):
def
draw_line_chart
(
self
,
title_name
,
data_dict
):
x_data
=
sorted
(
data_dict
)
x_data
=
sorted
(
data_dict
)
y_data
=
[]
y_data
=
[]
...
...
load_data.py
View file @
f0876a65
...
@@ -4,7 +4,6 @@ import csv
...
@@ -4,7 +4,6 @@ import csv
# 读取数据
# 读取数据
class
LoadData
(
object
):
class
LoadData
(
object
):
def
__init__
(
self
,
file_path
):
def
__init__
(
self
,
file_path
):
self
.
file_path
=
file_path
self
.
file_path
=
file_path
...
@@ -18,12 +17,16 @@ class LoadData(object):
...
@@ -18,12 +17,16 @@ class LoadData(object):
# 去除0元领,1元抽奖,服务费
# 去除0元领,1元抽奖,服务费
self
.
real_data_dict
=
[]
self
.
real_data_dict
=
[]
# 初始化处理原始数据
def
__build_re_buy_data
(
self
):
def
__build_re_buy_data
(
self
):
print
(
"初始化数据>"
,
self
.
title_list
)
# 需要去除价格为0的
# 需要去除价格为0的
for
data
in
self
.
data_list
:
for
data
in
self
.
data_list
:
# 服务费等这些0元的数据删除
if
float
(
data
[
'价格'
])
==
0.0
:
if
float
(
data
[
'价格'
])
==
0.0
:
print
(
"删除价格为0 "
,
data
)
print
(
"删除价格为0 "
,
data
)
self
.
data_list
.
remove
(
data
)
self
.
data_list
.
remove
(
data
)
# 识别一口价212商品还是拍卖212商品
if
data
[
'itemtype'
]
==
'53'
:
if
data
[
'itemtype'
]
==
'53'
:
data
[
'商品类型'
]
=
'212商品_一口价'
data
[
'商品类型'
]
=
'212商品_一口价'
elif
data
[
'itemtype'
]
==
'51'
:
elif
data
[
'itemtype'
]
==
'51'
:
...
@@ -55,6 +58,7 @@ class LoadData(object):
...
@@ -55,6 +58,7 @@ class LoadData(object):
sorted
(
item_list
,
key
=
lambda
item
:
item
[
'付费时间'
])
sorted
(
item_list
,
key
=
lambda
item
:
item
[
'付费时间'
])
self
.
real_data_dict
[
user_id
]
=
item_list
self
.
real_data_dict
[
user_id
]
=
item_list
# 读取csv文件(私有方法)
def
__load_csv
(
self
):
def
__load_csv
(
self
):
with
open
(
self
.
file_path
)
as
file
:
with
open
(
self
.
file_path
)
as
file
:
file_csv
=
csv
.
reader
(
file
)
file_csv
=
csv
.
reader
(
file
)
...
@@ -66,15 +70,13 @@ class LoadData(object):
...
@@ -66,15 +70,13 @@ class LoadData(object):
self
.
data_list
.
append
(
data
)
self
.
data_list
.
append
(
data
)
self
.
__build_re_buy_data
()
self
.
__build_re_buy_data
()
# 读取xlsx文件(私有方法)
def
__load_xlsx
(
self
):
def
__load_xlsx
(
self
):
workbook
=
xlrd
.
open_workbook
(
self
.
file_path
)
workbook
=
xlrd
.
open_workbook
(
self
.
file_path
)
sheet
=
workbook
.
sheet_by_index
(
0
)
sheet
=
workbook
.
sheet_by_index
(
0
)
print
(
'行数:'
,
sheet
.
nrows
,
"列数:"
,
sheet
.
ncols
)
# 获取标题
# 获取标题
for
column
in
range
(
sheet
.
ncols
):
for
column
in
range
(
sheet
.
ncols
):
self
.
title_list
.
append
(
sheet
.
cell
(
0
,
column
).
value
)
self
.
title_list
.
append
(
sheet
.
cell
(
0
,
column
).
value
)
print
(
'标题:'
,
self
.
title_list
)
for
row
in
range
(
1
,
sheet
.
nrows
,
1
):
for
row
in
range
(
1
,
sheet
.
nrows
,
1
):
data
=
{}
data
=
{}
for
colum
in
range
(
sheet
.
ncols
):
for
colum
in
range
(
sheet
.
ncols
):
...
@@ -82,6 +84,7 @@ class LoadData(object):
...
@@ -82,6 +84,7 @@ class LoadData(object):
self
.
data_list
.
append
(
data
)
self
.
data_list
.
append
(
data
)
self
.
__build_re_buy_data
()
self
.
__build_re_buy_data
()
# 读取数据(判断文件格式,加载不同读取方法)
def
load
(
self
):
def
load
(
self
):
self
.
title_list
=
[]
self
.
title_list
=
[]
self
.
data_list
=
[]
self
.
data_list
=
[]
...
@@ -94,6 +97,7 @@ class LoadData(object):
...
@@ -94,6 +97,7 @@ class LoadData(object):
else
:
else
:
print
(
"读取失败,不支持该文件类型>>"
,
self
.
file_path
)
print
(
"读取失败,不支持该文件类型>>"
,
self
.
file_path
)
# 是否是0元领或者其他非常规的商品
def
is_zero_buy
(
self
,
data
):
def
is_zero_buy
(
self
,
data
):
data_name
=
data
[
'订单名称'
]
data_name
=
data
[
'订单名称'
]
data_price
=
float
(
data
[
'价格'
])
data_price
=
float
(
data
[
'价格'
])
...
...
main_analysis.py
View file @
f0876a65
...
@@ -5,6 +5,7 @@ from echart_draw import EChartDraw
...
@@ -5,6 +5,7 @@ from echart_draw import EChartDraw
from
load_data
import
LoadData
from
load_data
import
LoadData
# 分析数据的方法集合
def
analysis_list
(
load_data
,
result_path
):
def
analysis_list
(
load_data
,
result_path
):
chart
=
EChartDraw
(
'./result/'
+
result_path
)
chart
=
EChartDraw
(
'./result/'
+
result_path
)
analysis_classify
(
load_data
,
chart
)
analysis_classify
(
load_data
,
chart
)
...
@@ -16,11 +17,14 @@ def analysis_list(load_data, result_path):
...
@@ -16,11 +17,14 @@ def analysis_list(load_data, result_path):
if
__name__
==
"__main__"
:
if
__name__
==
"__main__"
:
#
读取
文件
#
遍历当前文件夹下所有
文件
for
root
,
dirs
,
files
in
os
.
walk
(
'csv'
):
for
root
,
dirs
,
files
in
os
.
walk
(
'csv'
):
for
file
in
files
:
for
file
in
files
:
# 当前需要处理的文件
csv_path
=
os
.
path
.
join
(
root
,
file
)
csv_path
=
os
.
path
.
join
(
root
,
file
)
result_file_name
=
file
.
replace
(
'.csv'
,
'_result.html'
)
result_file_name
=
file
.
replace
(
'.csv'
,
'_result.html'
)
# 读取数据(支持csv和xlsx两个文件格式)
load_data
=
LoadData
(
csv_path
)
load_data
=
LoadData
(
csv_path
)
load_data
.
load
()
load_data
.
load
()
# 分析数据
analysis_list
(
load_data
,
result_file_name
)
analysis_list
(
load_data
,
result_file_name
)
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment