前言:数据分析中,传统描述性统计(即没有用到machine learning)还是在日常工作中占了很大一部分比重(或者说99%。。。),而同/环比分析更是占了绝大多数。
而传统处理中,一般都是用excel的vlookup先处理好数据并合并表,再用数据透视表进行分析,这样的操作虽然也很快,但是感觉很无脑;虽然现在可以用power query对上述工作也进行模板化,但是具体的分析还是稍显薄弱(比如要筛选出到底哪些影响占比较高等,如果条件约束一多可能就比较无力)。
所以由上,想到了用pandas做一个简易版的同/环比分析器,后续的优化空间很大,具体还在思考中,先把70行写完的代码抛出来,供大家参考,也希望能有人给我一些优化思路。
7月21日更新:考虑到有一个月当中做环比的需要,所以加入了日均的环比代码
一、数据准备
我是用平时工作的清单做的环比分析(同比也是类似),两份清单的格式是一模一样的,里面的字段如下:
print(old_file.columns)
Index(['行号', '统计日期', '产品名称', '促销员工工号', '发展渠道小类', '发展部门名称', '受理员工工号', '套餐名称',
'客户标识', '新客户类型(1家庭、2政企、3个人、4其他)', '用户标识', '订单号', '销售区局', '销售策略描述',
'发展渠道销售管理责任部门', '渠道管理细分', '是否实名补录标志', '补录资料受理工号', '资料补录部门',
'Unnamed: 19'],
dtype='object')
其中,大部分字段都是无用的,“渠道管理细分”有点小问题,需要修改一下;“销售区局”需要提前做好筛选;还要通过“发展部门名称”和“渠道细分”匹配出“所属部门”和“所属代理商”,通过“套餐名称”匹配出“套餐归类(日报)”。
在这里,我考虑了一下代码的延展性,我常用的清单有3种,每种清单中有些字段含义类似,但是字段名称却不同,所以也需要初始化/标准化,使得即使我换了一种清单,这个分析程序也能继续使用
def get_file(orignal_file):
'''获得处理完毕的清单'''
orignal_file_columns = orignal_file.columns.tolist()
temp_file = orignal_file
#销售/发展区局名字判断和处理
for key, value in councilName_dict.items():
if key in orignal_file_columns:
temp_file = temp_file[temp_file[key] == value]
# print(temp_file[key].unique())
break
#渠道管理细分名字判断和处理
if '渠道统计归类' in orignal_file_columns:
if '渠道管理细分' in orignal_file_columns:
temp_file.drop('渠道管理细分', axis=1, inplace=True)
temp_file.rename(columns={'渠道统计归类': '渠道管理细分'}, inplace=True)
elif '渠道管理细分' not in orignal_file_columns:
for qdxl in qdxl_list:
if qdxl in orignal_file_columns:
temp_file = pd.merge(temp_file, qd_match_table[['渠道小类', '渠道管理细分']], how='left',
left_on=qdxl, right_on='渠道小类')
break
elif '渠道管理细分' in orignal_file_columns:
for qdxl in qdxl_list:
if qdxl in orignal_file_columns:
temp_file.loc[temp_file[qdxl] == '终端零售店(开放)', '渠道管理细分'] = '中小渠道'
break
#发展/促销部门名字判断和处理
for storeName in storeName_list:
if storeName in orignal_file_columns:
temp_file = pd.merge(temp_file, store_match_table[['发展部门名称', '渠道管理细分', '所属部门', '所属代理商', '所属分局']], how='left',
left_on=[storeName, '渠道管理细分'], right_on=['发展部门名称', '渠道管理细分'])
temp_file.rename(columns={'所属部门': '部门', '所属代理商': '代理商', '所属分局': '分局'}, inplace=True)
break
#套餐分类处理
for key, value in tcName_dict.items():
if key in orignal_file_columns:
if value == 'cdma':
temp_file = pd.merge(temp_file, tc_match_table[['套餐名称(移动)', '套餐归类1']], how='left', left_on=key, right_on='套餐名称(移动)')
temp_file.rename(columns={'套餐归类1': '套餐归类'}, inplace=True)
elif value == 'kd':
temp_file = pd.merge(temp_file, tc_match_table[['套餐名称(宽带)', '套餐归类']], how='left', left_on=key,
right_on='套餐名称(宽带)')
temp_file.rename(columns={key: '套餐全称'}, inplace=True)
break
#日期标准化
for dateName in dateName_list:
if dateName in orignal_file_columns:
temp_file.loc[:, dateName] = pd.to_datetime(temp_file[dateName], format="%Y" + '-' + "%m" + '-' + "%d") # 把统计日期进行标准化(2019-04-25)
# temp_file[dateName] = pd.to_datetime(temp_file[dateName]).dt.normalize() # 另一种日期标准化的方法
# print(temp_file[dateName].dt.day) # 显示天
break
origin_dict = {'渠道管理细分': '未匹配渠道', '部门': '未匹配部门', '代理商': '未匹配代理商', '分局': '未匹配分局', '套餐归类': '未匹配套餐归类', '套餐全称': '未匹配套餐全称'}
temp_file_columns = temp_file.columns.tolist()
for key in origin_dict.keys():
if key not in temp_file_columns: origin_dict.pop(key)
temp_file = temp_file.fillna(origin_dict)
return temp_file
二、获得总体提升率
我们要先了解一下总体的提升率是怎么样,可以将该数据作为参数传到后面函数中(这里我没用)。
def get_total_upgrade(old_file, new_file):
'''获得总体提升率'''
old_total = old_file.shape[0]
new_total = new_file.shape[0]
total_upgrade = new_total - old_total
total_upgrade_rate = new_total / old_total - 1 #总体提升率
day_upgrade = new_total/new_days - old_total/old_days
day_upgrade_rate = day_upgrade / (old_total/old_days) #日均提升率
print('本月提升{},提升百分比为:{:.1%}'.format(total_upgrade, total_upgrade_rate))
print('日均提升{:.1f},提升百分比为:{:.1%}'.format(day_upgrade, day_upgrade_rate))
三、获得新旧两个渠道的销量对比
1、我先要建立一个我想要的分析顺序,比如“渠道管理细分”是我主要分析的对象,就把它作为字典的key,另外再传入几个需要具体分析的元素作为value:
analyze_dict = {'渠道管理细分': ['所属代理商', '套餐归类1', '套餐名称']}
2、对同/环比的分析,如果单纯地只是把所有数据展现出来,用excel或power query就可以了,但是我们要知道在当前分类中,哪些部门/套餐等对我的提升率影响是比较大的呢?这里就需要自己建立一套规则:
1)、先把当前分类的新老两份数据通过value_counts()进行数量展现,再通过concat把两份series进行合并;
2)、计算出“原销量占比”、“新销量占比”、“销量提升数”、“销量提升占比”、“销量提升率”这些字段;
3)、根据我传入的min_increase_percent(最小提升占比)参数(在所有销量变化程度中,该项的变化幅度,低于该值的认定为不重要因素,默认10%),再配合1/当前分类中元素数量,求2者较小值,作为最终的min_increase_percent;
4)、同理,计算出min_percent(最小销量占比);
5)、求出good和bad清单,good是指:“销量提升占比”大于等于“最小提升占比”
且
(“原销量占比”大于等于“最小销量占比”
或
“新销量占比”大于等于“最小销量占比”);
6)、把“分类中的元素名称”、“销量提升数”和“销量提升率”组合成一个新的column,并通过tolist()转变成list,最后导出/打印出来。
打印出来的结果如下:
C:\ProgramData\Anaconda3\python.exe C:/Users/Administrator/Desktop/销量同比环比自动分析/销量同比环比自动分析.py
本月提升-17398,提升百分比为:-35.9%
日均提升110.3,提升百分比为:6.8%
在渠道管理细分中,提升幅度较大的包括:['营维渠道,162.2,168.4%', '开放渠道,33.3,16.5%'];下降幅度较大的包括:['专营渠道,-107.4,-9.4%']
1、在营维渠道中:
(1)、在分局中,日均提升幅度较大的包括:['三林,44.8,355.5%', '外金,40.6,172.4%', '川祝,32.1,157.4%', '惠南,13.8,129.9%', '张江,13.1,196.0%', '周康,9.0,159.9%'];日均下降幅度较大的包括:[]
(2)、在代理商中,日均提升幅度较大的包括:['仲诚,75.4,142.0%', '华为,44.8,355.5%', '老南汇,28.9,120.6%', '伟琳,13.1,196.0%'];日均下降幅度较大的包括:[]
(3)、在套餐归类中,日均提升幅度较大的包括:['其他,151.7,622.5%', '未匹配套餐归类,9.0,46.6%'];日均下降幅度较大的包括:[]
(4)、在套餐全称中,日均提升幅度较大的包括:['201901-新全家享固话老用户专享融合套餐,158.0,876.3%'];日均下降幅度较大的包括:[]
2、在开放渠道中:
(1)、在分局中,日均提升幅度较大的包括:['周康,12.8,20.4%', '外金,8.4,30.5%', '川祝,8.4,28.1%', '陆家嘴,6.0,49.3%', '三林,4.3,37.1%'];日均下降幅度较大的包括:['临港,-8.9,-66.4%']
(2)、在代理商中,日均提升幅度较大的包括:['苏宁,14.9,666.2%', '柠维,11.8,47.6%', '茗神,10.2,48.6%', '筠翌,5.6,59.1%'];日均下降幅度较大的包括:['骈叠,-7.0,-51.9%']
(3)、在套餐归类中,日均提升幅度较大的包括:['其他,12.6,490.9%', '新魔都,12.0,9.9%', '易通/大众/日租卡,10.8,808.3%'];日均下降幅度较大的包括:['不限量,-5.0,-7.2%']
(4)、在套餐全称中,日均提升幅度较大的包括:['2019年新移动30大流量套餐,13.4,12.1%', '201802-上海大流量50元套餐2018版,12.6,490.9%', '201706-流量日租卡套餐,10.8,808.3%'];日均下降幅度较大的包括:['201802-天翼畅享99元套餐201802,-4.0,-5.8%']
3、在专营渠道中:
(1)、在分局中,日均提升幅度较大的包括:[];日均下降幅度较大的包括:['三林,-22.9,-11.9%', '临港,-22.7,-32.5%', '川祝,-18.2,-9.0%', '周康,-16.1,-10.8%', '外金,-15.8,-9.6%', '张江,-7.9,-8.7%', '惠南,-6.5,-4.0%']
(2)、在代理商中,日均提升幅度较大的包括:['自营,11.7,3.5%'];日均下降幅度较大的包括:['千秋,-38.1,-11.3%', '汉启,-28.4,-28.4%', '易贝,-25.9,-26.3%']
(3)、在套餐归类中,日均提升幅度较大的包括:['新魔都,83.6,73.0%'];日均下降幅度较大的包括:['副卡,-188.4,-23.6%']
(4)、在套餐全称中,日均提升幅度较大的包括:['201812-新魔都30元套餐,168.7,10120.0%', '201802-十全十美99元套餐2018版(专营),15.9,18.5%'];日均下降幅度较大的包括:['201706-畅享(十全十美)5元副卡(乐享家),-158.7,-42.4%', '201812-新移动30元套餐,-79.0,-100.0%', '201812-新移动48元套餐,-25.6,-100.0%', '201802-畅享5元副卡加装包201802,-22.6,-5.6%']
Process finished with exit code 0
全部代码如下:
import pandas as pd
import warnings
def get_file(orignal_file):
'''获得处理完毕的清单'''
orignal_file_columns = orignal_file.columns.tolist()
temp_file = orignal_file
#销售/发展区局名字判断和处理
for key, value in councilName_dict.items():
if key in orignal_file_columns:
temp_file = temp_file[temp_file[key] == value]
# print(temp_file[key].unique())
break
#渠道管理细分名字判断和处理
if '渠道统计归类' in orignal_file_columns:
if '渠道管理细分' in orignal_file_columns:
temp_file.drop('渠道管理细分', axis=1, inplace=True)
temp_file.rename(columns={'渠道统计归类': '渠道管理细分'}, inplace=True)
elif '渠道管理细分' not in orignal_file_columns:
for qdxl in qdxl_list:
if qdxl in orignal_file_columns:
temp_file = pd.merge(temp_file, qd_match_table[['渠道小类', '渠道管理细分']], how='left',
left_on=qdxl, right_on='渠道小类')
break
elif '渠道管理细分' in orignal_file_columns:
for qdxl in qdxl_list:
if qdxl in orignal_file_columns:
temp_file.loc[temp_file[qdxl] == '终端零售店(开放)', '渠道管理细分'] = '中小渠道'
break
#发展/促销部门名字判断和处理
for storeName in storeName_list:
if storeName in orignal_file_columns:
temp_file = pd.merge(temp_file, store_match_table[['发展部门名称', '渠道管理细分', '所属部门', '所属代理商', '所属分局']], how='left',
left_on=[storeName, '渠道管理细分'], right_on=['发展部门名称', '渠道管理细分'])
temp_file.rename(columns={'所属部门': '部门', '所属代理商': '代理商', '所属分局': '分局'}, inplace=True)
break
#套餐分类处理
for key, value in tcName_dict.items():
if key in orignal_file_columns:
if value == 'cdma':
temp_file = pd.merge(temp_file, tc_match_table[['套餐名称(移动)', '套餐归类1']], how='left', left_on=key,
right_on='套餐名称(移动)')
temp_file.rename(columns={'套餐归类1': '套餐归类'}, inplace=True)
elif value == 'kd':
temp_file = pd.merge(temp_file, tc_match_table[['套餐名称(宽带)', '套餐归类']], how='left', left_on=key,
right_on='套餐名称(宽带)')
temp_file.rename(columns={key: '套餐全称'}, inplace=True)
break
#无效套餐剔除
for useless_tc in useless_tcs:
temp_file = temp_file[temp_file['套餐全称'] != useless_tc]
#日期标准化
for dateName in dateName_list:
if dateName in orignal_file_columns:
temp_file.loc[:, dateName] = pd.to_datetime(temp_file[dateName], format="%Y" + '-' + "%m" + '-' + "%d") # 把统计日期进行标准化(2019-04-25)
# temp_file[dateName] = pd.to_datetime(temp_file[dateName]).dt.normalize() # 另一种日期标准化的方法
# print(temp_file[dateName].dt.day) # 显示天
break
origin_dict = {'渠道管理细分': '未匹配渠道', '部门': '未匹配部门', '代理商': '未匹配代理商', '分局': '未匹配分局', '套餐归类': '未匹配套餐归类', '套餐全称': '未匹配套餐全称'}
temp_file_columns = temp_file.columns.tolist()
for key in origin_dict.keys():
if key not in temp_file_columns: origin_dict.pop(key)
temp_file = temp_file.fillna(origin_dict)
return temp_file
def get_total_upgrade(old_file, new_file):
'''获得总体提升率'''
old_total = old_file.shape[0]
new_total = new_file.shape[0]
total_upgrade = new_total - old_total
total_upgrade_rate = new_total / old_total - 1 #总体提升率
day_upgrade = new_total/new_days - old_total/old_days
day_upgrade_rate = day_upgrade / (old_total/old_days) #日均提升率
print('本月提升{},提升百分比为:{:.1%}'.format(total_upgrade, total_upgrade_rate))
print('日均提升{:.1f},提升百分比为:{:.1%}'.format(day_upgrade, day_upgrade_rate))
def get_days(file_name):
'''获得清单的统计天数,为日环比/同比增长做准备'''
for dateName in dateName_list:
orignal_file_columns = file_name.columns.tolist()
if dateName in orignal_file_columns:
return len(file_name[dateName].unique())
def compare(compare_column_name, old_file, new_file, min_percent=0.05, min_increase_percent=0.05):
'''
获得新旧两个渠道的销量对比
:param compare_column_name: 需要对比的列名,比如“渠道细分”
:param min_percent: 在所有销量中的占比,低于该值的认定为不重要因素,默认5%
:param min_increase_percent: 在所有销量变化程度中,该项的变化幅度,低于该值的认定为不重要因素,默认5%
:param old_file: 旧数据内容
:param new_file: 新数据内容
:return: increase_list, decrease_list
'''
old_sum = old_file[compare_column_name].value_counts().rename('原销量合计')
new_sum = new_file[compare_column_name].value_counts().rename('新销量合计')
sum_compare = pd.concat([old_sum, new_sum], axis=1).fillna(0)
sum_compare.reset_index(level=0, inplace=True) #把索引变成一列
sum_compare.rename(columns={'index': compare_column_name}, inplace=True) #把索引重命名
sum_compare['原销量占比'] = sum_compare['原销量合计'] / sum_compare['原销量合计'].sum() #旧数据中每个元素的占比
sum_compare['新销量占比'] = sum_compare['新销量合计'] / sum_compare['新销量合计'].sum() #新数据中每个元素的占比
sum_compare_columns = sum_compare.shape[0]
min_percent = min(1/sum_compare_columns, min_percent)
min_increase_percent = min(1/sum_compare_columns, min_increase_percent)
#如果是月环比/同比:
# sum_compare['销量提升数'] = sum_compare['新销量合计'] - sum_compare['原销量合计'] #涨跌幅数量
# sum_compare['销量提升数'] = sum_compare['销量提升数'].astype(int)
# sum_compare['销量提升占比'] = sum_compare['销量提升数'] / abs(sum_compare['销量提升数']).sum() #涨跌幅占比
# sum_compare['销量提升率'] = sum_compare['销量提升数'] / sum_compare['原销量合计'] #相对于旧数据来说的同/环比提升率
# increase = sum_compare[(sum_compare['销量提升占比'] >= min_increase_percent) & ((sum_compare['原销量占比'] >= min_percent) | (sum_compare['新销量占比'] >= min_percent))]
# decrease = sum_compare[(sum_compare['销量提升占比'] <= -min_increase_percent) & ((sum_compare['原销量占比'] >= min_percent) | (sum_compare['新销量占比'] >= min_percent))]
# increase.loc[:, '销量提升率'] = increase.loc[:, '销量提升率'].apply(lambda x: format(x, '.1%')) #转化成百分比形式
# decrease.loc[:, '销量提升率'] = decrease.loc[:, '销量提升率'].apply(lambda x: format(x, '.1%')) # 转化成百分比形式
# increase.loc[:, '销量提升占比'] = increase.loc[:, '销量提升占比'].apply(lambda x: format(x, '.1%')) #转化成百分比形式
# decrease.loc[:, '销量提升占比'] = decrease.loc[:, '销量提升占比'].apply(lambda x: format(x, '-.1%')) # 转化成百分比形式
# increase.loc[:, '结果'] = increase.loc[:, compare_column_name] + ',' + increase.loc[:, '销量提升数'].map(str) + ',' \
# + increase.loc[:, '销量提升率'].map(str) + ',' + increase.loc[:, '销量提升占比'].map(str)
# decrease.loc[:, '结果'] = decrease.loc[:, compare_column_name] + ',' + decrease.loc[:, '销量提升数'].map(str) + ',' \
# + decrease.loc[:, '销量提升率'].map(str) + ',' + decrease.loc[:, '销量提升占比'].map(str)
# increase.sort_values(by='销量提升数', ascending=False, inplace=True)
# decrease.sort_values(by='销量提升数', ascending=True, inplace=True)
#如果是日均环比/同比:
sum_compare['日均销量提升数'] = sum_compare['新销量合计']/new_days - sum_compare['原销量合计']/old_days
sum_compare['日均销量提升占比'] = sum_compare['日均销量提升数'] / abs(sum_compare['日均销量提升数']).sum() # 涨跌幅占比
sum_compare['日均销量提升率'] = sum_compare['日均销量提升数']/(sum_compare['原销量合计']/old_days)
sum_compare['日均销量提升数'] = sum_compare['日均销量提升数'].round(1)
increase = sum_compare[(sum_compare['日均销量提升占比'] >= min_increase_percent) & ((sum_compare['原销量占比'] >= min_percent) | (sum_compare['新销量占比'] >= min_percent))]
decrease = sum_compare[(sum_compare['日均销量提升占比'] <= -min_increase_percent) & ((sum_compare['原销量占比'] >= min_percent) | (sum_compare['新销量占比'] >= min_percent))]
increase.loc[:, '日均销量提升率'] = increase.loc[:, '日均销量提升率'].apply(lambda x: format(x, '.1%')) #转化成百分比形式
decrease.loc[:, '日均销量提升率'] = decrease.loc[:, '日均销量提升率'].apply(lambda x: format(x, '.1%')) # 转化成百分比形式
increase.loc[:, '日均销量提升占比'] = increase.loc[:, '日均销量提升占比'].apply(lambda x: format(x, '.1%')) #转化成百分比形式
decrease.loc[:, '日均销量提升占比'] = decrease.loc[:, '日均销量提升占比'].apply(lambda x: format(x, '-.1%')) # 转化成百分比形式
increase.loc[:, '结果'] = increase.loc[:, compare_column_name] + ',' + increase.loc[:, '日均销量提升数'].map(str) + ',' \
+ increase.loc[:, '日均销量提升率'].map(str) + ',' + increase.loc[:, '日均销量提升占比'].map(str)
decrease.loc[:, '结果'] = decrease.loc[:, compare_column_name] + ',' + decrease.loc[:, '日均销量提升数'].map(str) + ',' \
+ decrease.loc[:, '日均销量提升率'].map(str) + ',' + decrease.loc[:, '日均销量提升占比'].map(str)
increase.sort_values(by='日均销量提升数', ascending=False, inplace=True)
decrease.sort_values(by='日均销量提升数', ascending=True, inplace=True)
#最后返回结果
increase_list = increase['结果'].tolist()
decrease_list = decrease['结果'].tolist()
if not increase_list: increase_list = []
if not decrease_list: decrease_list = []
return increase_list, decrease_list
def get_deep_reason(list, value, old_file, new_file):
'''根据传入的参数,获得进一步分析'''
for i in range(len(list)):
temp_answer = list[i]
name = temp_answer.split(',')[0]
print('{}、在{}中:'.format(i+1, name))
old_file_temp = old_file[old_file.loc[:, key] == name]
new_file_temp = new_file[new_file.loc[:, key] == name]
for j in range(len(value)):
element = value[j]
increase_list, decrease_list = compare(element, old_file=old_file_temp, new_file=new_file_temp)
if increase_list == []: increase_list = '无'
if decrease_list == []: decrease_list = '无'
# if increase_list and decrease_list:
print('({})、在{}中,日均提升幅度较大的包括:{};日均下降幅度较大的包括:{}'.format(j+1, element, increase_list, decrease_list))
# elif increase_list and not decrease_list:
# print('({})、在{}中,日均提升幅度较大的包括:{};无{}日均下降幅度较大'.format(j + 1, element, increase_list, element))
# elif not increase_list and decrease_list:
# print('({})、在{}中,无{}日均提升幅度较大;日均下降幅度较大的包括:{}'.format(j + 1, element, element, decrease_list))
if __name__ == "__main__":
warnings.filterwarnings("ignore")
# 第一步:导入文件
orignal_old_file = pd.read_table('old_file.xls', engine='python')
orignal_new_file = pd.read_table('new_file.xls', engine='python')
store_match_table = pd.read_excel(r"C:\Users\Administrator\Desktop\报表\数据\数据说明与匹配公式.xlsx", '部门匹配表')
tc_match_table = pd.read_excel(r"C:\Users\Administrator\Desktop\报表\数据\数据说明与匹配公式.xlsx", '套餐匹配表')
qd_match_table = pd.read_excel(r"C:\Users\Administrator\Desktop\报表\数据\数据说明与匹配公式.xlsx", '渠道大小类对应表')
# print(old_file.columns)
#第二步:初始化条件列表
councilName_dict = {'销售区局': '浦东电信局', '促销区局': '浦东电信局', '(初始)发展区局': '浦东', '区局': '浦东'}
tcName_dict = {'套餐名称': 'cdma', '统计月营销活动名称': 'kd', '营销活动名称': 'kd'}
storeName_list = ['发展部门名称', '促销部门', '(初始)发展部门名称', '发展部门统计门店名称']
dateName_list = ['统计日期', '完工日期', '安装日期']
qdxl_list = ['发展渠道小类', '(初始)发展渠道小类描述', '发展渠道小类描述']
useless_tcs = ['2014校园积木宽带体验套餐,0元/月']
number_dict = {1: '一、', 2: '二、', 3: '三、', 4: '四、', 5: '五、', 6: '六、'}
#第三步:设定需要分析的主字段(key)和辅助字段(value)
analyze_dict = {'渠道管理细分': ['代理商', '部门', '套餐归类', '套餐全称'], '代理商': ['部门', '套餐归类']}
# analyze_dict = {'渠道管理细分': []}
#第三步:获得整理好的清单
old_file = get_file(orignal_old_file)
new_file = get_file(orignal_new_file)
global old_days
old_days = get_days(old_file) #旧数据中的统计天数
global new_days
new_days = get_days(new_file) #新数据中的统计天数
get_total_upgrade(old_file, new_file)
# print('下列展现的列表中,第一个是对象名,第二个是提升/下降量,第三个是提升/下降比,第四个是提升/下降在这一层因素中的占比')
#第四步:进行分析(分析目的:获知不同渠道的提升/下降中,哪个渠道为主要因素,且获知在这个渠道中各项子主要因素是什么)
n = 1
for key, value in analyze_dict.items():
increase_list, decrease_list = compare(key, old_file=old_file, new_file=new_file)
fact_list = increase_list + decrease_list
if increase_list == []: increase_list = '无'
if decrease_list == []: decrease_list = '无'
number = number_dict[n]
print('{}在{}中,日均提升幅度较大的包括:{};日均下降幅度较大的包括:{}'.format(number, key, increase_list, decrease_list))
get_deep_reason(fact_list, value, old_file, new_file)
n += 1
print('-'*200)