|
|
@@ -0,0 +1,292 @@
|
|
|
+class CustConfig:
|
|
|
+ FEATURE_COLUMNS = [
|
|
|
+ "BB_RETAIL_CUSTOMER_CODE", # 零售户代码
|
|
|
+ "BB_RTL_CUST_GRADE_NAME", # 零售户分档名称
|
|
|
+ "BB_RTL_CUST_MARKET_TYPE_NAME", # 零售户市场类型名称
|
|
|
+ "STORE_AREA", # 店铺经营面积
|
|
|
+ "BB_RTL_CUST_BUSINESS_TYPE_NAME", # 零售户业态名称
|
|
|
+ "OPERATOR_EDU_LEVEL", # 零售客户经营者文化程
|
|
|
+ "OPERATOR_AGE", # 经营者年龄
|
|
|
+ "BB_RTL_CUST_CHAIN_FLAG", # 零售户连锁标识
|
|
|
+ "PRESENT_STAR_TERMINAL", # 终端星级
|
|
|
+ "MD04_MG_RTL_CUST_CREDITCLASS_NAME", # 零售户信用等级名称
|
|
|
+ "MD04_DIR_SAL_STORE_FLAG", # 直营店标识
|
|
|
+ "BB_CUSTOMER_MANAGER_SCOPE_NAME", # 零售户经营范围名称
|
|
|
+ "PRODUCT_INSALE_QTY", # 在销品规数
|
|
|
+ "CUST_INVESTMENT", # 店铺资源投入建设
|
|
|
+
|
|
|
+ # "NEW_PRODUCT_MEMBERS_QTY_SAMEPRICE_OCC", # 新品订货量占同价类比重
|
|
|
+ # "PRODUCT_LISTING_RATE", # 品规上架率
|
|
|
+ # "STOCKOUT_DAYS", # 断货天数
|
|
|
+ # "YLT_TURNOVER_RATE", # 易灵通动销率
|
|
|
+ # "YLT_BAR_PACKAGE_SALE_OCC", # 易灵通条包销售占比
|
|
|
+ # "UNPACKING_RATE", # 拆包率
|
|
|
+
|
|
|
+
|
|
|
+ # "BB_RTL_CUST_POSITION_TYPE_NAME", # 零售户商圈类型名称
|
|
|
+
|
|
|
+ # "BB_RTL_CUST_SUB_BUSI_PLACE_NAME", # 零售户业态细分名称
|
|
|
+
|
|
|
+ # "BB_RTL_CUST_TERMINAL_LEVEL_NAME", # 零售户终端层级名称
|
|
|
+ # "BB_RTL_CUST_TERMINALEVEL_NAME", # 零售户终端层级细分名称
|
|
|
+ # "MD04_MG_SAMPLE_CUST_FLAG", # 样本户标识
|
|
|
+ # "MD07_RTL_CUST_IS_SALE_LARGE_FLAG", # 零售户大户标识
|
|
|
+ # "BB_RTL_CUST_OPERATE_METHOD_NAME", # 零售户经营方式名称
|
|
|
+ # "BB_RTL_CUST_CGT_OPERATE_SCOPE_NAME", # 零售户卷烟经营规模名称
|
|
|
+
|
|
|
+ # "AVERAGE_CONSUMER_FLOW", # 月均消费人流
|
|
|
+ # "NEW_PRODUCT_MEMBERS_QTY", # 新品消费会员数量
|
|
|
+ ]
|
|
|
+ # 数据清洗规则
|
|
|
+ CLEANING_RULES = {
|
|
|
+ "BB_RTL_CUST_GRADE_NAME": {"method": "fillna", "opt": "fill", "value": "十五档", "type": "str"},
|
|
|
+ "BB_RTL_CUST_MARKET_TYPE_NAME": {"method": "fillna", "opt": "fill", "value": "城网", "type": "str"},
|
|
|
+ "STORE_AREA": {"method": "fillna", "opt": "mean", "type": "num"},
|
|
|
+ "BB_RTL_CUST_BUSINESS_TYPE_NAME": {"method": "fillna", "opt": "fill", "value": "其他", "type": "str"},
|
|
|
+ "OPERATOR_EDU_LEVEL": {"method": "fillna", "opt": "fill", "value": "无数据", "type": "str"},
|
|
|
+ "OPERATOR_AGE": {"method": "fillna", "opt": "mean", "type": "num"},
|
|
|
+ "BB_RTL_CUST_CHAIN_FLAG": {"method": "fillna", "opt": "fill", "value": "否", "type": "str"},
|
|
|
+ "PRESENT_STAR_TERMINAL": {"method": "fillna", "opt": "fill", "value": "非星级", "type": "str"},
|
|
|
+ "MD04_MG_RTL_CUST_CREDITCLASS_NAME": {"method": "fillna", "opt": "fill", "value": "B", "type": "str"},
|
|
|
+ "MD04_DIR_SAL_STORE_FLAG": {"method": "fillna", "opt": "fill", "value": "否", "type": "str"},
|
|
|
+ "BB_CUSTOMER_MANAGER_SCOPE_NAME": {"method": "fillna", "opt": "fill", "value": "否", "type": "str"},
|
|
|
+ "PRODUCT_INSALE_QTY": {"method": "fillna", "opt": "mean", "type": "num"},
|
|
|
+ "CUST_INVESTMENT": {"method": "fillna", "opt": "mean", "type": "num"}
|
|
|
+
|
|
|
+
|
|
|
+ # "NEW_PRODUCT_MEMBERS_QTY_SAMEPRICE_OCC": {"method": "fillna", "opt": "mean", "type": "num"},
|
|
|
+ # "PRODUCT_LISTING_RATE": {"method": "fillna", "opt": "mean", "type": "num"},
|
|
|
+ # "STOCKOUT_DAYS": {"method": "fillna", "opt": "mean", "type": "num"},
|
|
|
+ # "YLT_TURNOVER_RATE": {"method": "fillna", "opt": "mean", "type": "num"},
|
|
|
+ # "NEW_PRODUCT_MEMBERS_QTY": {"method": "fillna", "opt": "mean", "type": "num"},
|
|
|
+ # "PRODUCT_INSALE_QTY": {"method": "fillna", "opt": "mean", "type": "num"},
|
|
|
+ # "UNPACKING_RATE": {"method": "fillna", "opt": "mean", "type": "num"},
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ # "BB_RTL_CUST_POSITION_TYPE_NAME": {"method": "fillna", "opt": "fill", "value": "其他", "type": "str"},
|
|
|
+ # "BB_RTL_CUST_SUB_BUSI_PLACE_NAME": {"method": "fillna", "opt": "fill", "value": "其他", "type": "str"},
|
|
|
+ # "BB_RTL_CUST_TERMINALEVEL_NAME": {"method": "fillna", "opt": "replace", "value": "BB_RTL_CUST_TERMINAL_LEVEL_NAME", "type": "str"},
|
|
|
+ # "MD04_MG_SAMPLE_CUST_FLAG": {"method": "fillna", "value": "N", "opt": "fill"},
|
|
|
+ # "MD07_RTL_CUST_IS_SALE_LARGE_FLAG": {"method": "fillna", "value": "N", "opt": "fill"},
|
|
|
+ # "BB_RTL_CUST_CGT_OPERATE_SCOPE_NAME": {"method": "fillna", "value": "中", "opt": "fill"},
|
|
|
+ }
|
|
|
+
|
|
|
+ ONEHOT_CAT = {
|
|
|
+ "BB_RTL_CUST_GRADE_NAME": ['一档', '二档', '三档', '四档', '五档', '六档', '七档', '八档', '九档', '十档', '十一档', '十二档',
|
|
|
+ '十三档', '十四档', '十五档', '十六档', '十七档', '十八档', '十九档', '二十档', '二十一档', '二十二档',
|
|
|
+ '二十三档', '二十四档', '二十五档', '二十六档', '二十七档', '二十八档', '二十九档', '三十档'],
|
|
|
+ "BB_RTL_CUST_MARKET_TYPE_NAME": ["城网", "农网"],
|
|
|
+ "BB_RTL_CUST_BUSINESS_TYPE_NAME": ["便利店", "超市", "烟草专业店", "娱乐服务类", "其他"],
|
|
|
+ "OPERATOR_EDU_LEVEL": [1, 2, 3, 4, 5, 6, 7, "无数据"],
|
|
|
+ "BB_RTL_CUST_CHAIN_FLAG": ["是", "否"],
|
|
|
+ "PRESENT_STAR_TERMINAL": ["一星", "二星", "三星", "四星", "五星", "非星级"],
|
|
|
+ "MD04_MG_RTL_CUST_CREDITCLASS_NAME": ["AAA", "AA", "A", "B", "C", "D"],
|
|
|
+ "MD04_DIR_SAL_STORE_FLAG": ["是", "否"],
|
|
|
+ "BB_CUSTOMER_MANAGER_SCOPE_NAME": ["是", "否"],
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ # "BB_RTL_CUST_POSITION_TYPE_NAME": ["居民区", "商业娱乐区", "交通枢纽区", "旅游景区", "工业区", "集贸区", "院校学区", "办公区", "其他"]
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+class ProductConfig:
|
|
|
+ FEATURE_COLUMNS = [
|
|
|
+ "product_code", # 商品编码
|
|
|
+ "direct_retail_price", # 建议零售价
|
|
|
+ "is_low_tar", # 是否低焦油烟
|
|
|
+ "tar_qty", # 焦油含量
|
|
|
+ "is_exploding_beads", # 是否爆珠
|
|
|
+ "is_shortbranch", # 是否短支烟
|
|
|
+ "is_medium", # 是否中支烟
|
|
|
+ "is_tiny", # 是否细支
|
|
|
+ "product_style_code_name", # 包装类型名称
|
|
|
+ "org_is_abnormity", # 是否异形包装
|
|
|
+ "is_chuangxin", # 是否创新品类
|
|
|
+ "is_key_brand", # 是否重点品牌
|
|
|
+ "foster_level_hy", # 是否行业共育品规
|
|
|
+ "foster_level_sj", # 是否省级共育品规
|
|
|
+ "is_cigar", # 是否雪茄型卷烟
|
|
|
+ "co_qty", # 一氧化碳含量
|
|
|
+ "tbc_total_length", # 烟支总长度
|
|
|
+ "tbc_length", # 烟支长度
|
|
|
+ "filter_length", # 滤嘴长度
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ # "adjust_price", # 含税调拨价
|
|
|
+ # "notwithtax_adjust_price", # 不含税调拨价
|
|
|
+ # "whole_sale_price", # 统一批发价
|
|
|
+ # "allot_price", # 调拨价
|
|
|
+ # "direct_whole_price", # 批发指导价
|
|
|
+ # "retail_price", # 零售价
|
|
|
+ # "price_type_name", # 卷烟价类名称
|
|
|
+ # "gear_type_name", # 卷烟档位名称
|
|
|
+ # "category_type_name", # 卷烟品类名称
|
|
|
+ # "is_high_level", # 是否高端烟
|
|
|
+ # "is_upscale_level", # 是否高端烟不含高价
|
|
|
+ # "is_high_price", # 是否高价烟
|
|
|
+ # "is_low_price", # 是否低价烟
|
|
|
+ # "is_encourage", # 是否全国鼓励品牌
|
|
|
+ # "is_abnormity", # 是否异形包装
|
|
|
+ # "is_intake", # 是否进口烟
|
|
|
+ # "is_short", # 是否紧俏品牌
|
|
|
+ # "is_ordinary_price_type", # 是否普一类烟
|
|
|
+ # "source_type", # 来源类型
|
|
|
+ # "chinese_mix", # 中式混合
|
|
|
+ # "sub_price_type_name", # 细分卷烟价类名称
|
|
|
+ ]
|
|
|
+
|
|
|
+ CLEANING_RULES = {
|
|
|
+ "direct_retail_price": {"method": "fillna", "opt": "mean", "type": "num"},
|
|
|
+ "is_low_tar": {"method": "fillna", "opt": "fill", "type": "str", "value": "否"},
|
|
|
+ "tar_qty": {"method": "fillna", "opt": "mean", "type": "num"},
|
|
|
+ "is_exploding_beads": {"method": "fillna", "opt": "fill", "type": "str", "value": "否"},
|
|
|
+ "is_shortbranch": {"method": "fillna", "opt": "fill", "type": "str", "value": "否"},
|
|
|
+ "is_medium": {"method": "fillna", "opt": "fill", "type": "str", "value": "否"},
|
|
|
+ "is_tiny": {"method": "fillna", "opt": "fill", "type": "str", "value": "否"},
|
|
|
+ "product_style_code_name": {"method": "fillna", "opt": "fill", "type": "str", "value": "其他"},
|
|
|
+ "org_is_abnormity": {"method": "fillna", "opt": "fill", "type": "str", "value": "否"},
|
|
|
+ "is_chuangxin": {"method": "fillna", "opt": "fill", "type": "str", "value": "否"},
|
|
|
+ "is_key_brand": {"method": "fillna", "opt": "fill", "type": "str", "value": "否"},
|
|
|
+ "foster_level_hy": {"method": "fillna", "opt": "fill", "type": "str", "value": "否"},
|
|
|
+ "foster_level_sj": {"method": "fillna", "opt": "fill", "type": "str", "value": "否"},
|
|
|
+ "is_cigar": {"method": "fillna", "opt": "fill", "type": "str", "value": "否"},
|
|
|
+ "co_qty": {"method": "fillna", "opt": "mean", "type": "num"},
|
|
|
+ "tbc_total_length": {"method": "fillna", "opt": "mean", "type": "num"},
|
|
|
+ "tbc_length": {"method": "fillna", "opt": "mean", "type": "num"},
|
|
|
+ "filter_length": {"method": "fillna", "opt": "mean", "type": "num"},
|
|
|
+
|
|
|
+
|
|
|
+ # "adjust_price": {"method": "fillna", "opt": "mean", "type": "num"},
|
|
|
+ # "notwithtax_adjust_price": {"method": "fillna", "opt": "mean", "type": "num"},
|
|
|
+ # "whole_sale_price": {"method": "fillna", "opt": "mean", "type": "num"},
|
|
|
+ # "allot_price": {"method": "fillna", "opt": "fill", "type": "num", "value": 0.0},
|
|
|
+ # "direct_whole_price": {"method": "fillna", "opt": "mean", "type": "num"},
|
|
|
+ # "retail_price": {"method": "fillna", "opt": "mean", "type": "num"},
|
|
|
+ # "price_type_name": {"method": "fillna", "opt": "fill", "type": "str", "value": "一类烟"},
|
|
|
+ # "gear_type_name": {"method": "fillna", "opt": "fill", "type": "str", "value": "其他"},
|
|
|
+ # "category_type_name": {"method": "fillna", "opt": "fill", "type": "str", "value": "其他"},
|
|
|
+ # "is_high_level": {"method": "fillna", "opt": "fill", "type": "str", "value": "否"},
|
|
|
+ # "is_upscale_level": {"method": "fillna", "opt": "fill", "type": "str", "value": "否"},
|
|
|
+ # "is_high_price": {"method": "fillna", "opt": "fill", "type": "str", "value": "否"},
|
|
|
+ # "is_low_price": {"method": "fillna", "opt": "fill", "type": "str", "value": "否"},
|
|
|
+ # "is_encourage": {"method": "fillna", "opt": "fill", "type": "str", "value": "否"},
|
|
|
+ # "is_abnormity": {"method": "fillna", "opt": "fill", "type": "str", "value": "否"},
|
|
|
+ # "is_intake": {"method": "fillna", "opt": "fill", "type": "str", "value": "否"},
|
|
|
+ # "is_short": {"method": "fillna", "opt": "fill", "type": "str", "value": "否"},
|
|
|
+ # "is_ordinary_price_type": {"method": "fillna", "opt": "fill", "type": "str", "value": "否"},
|
|
|
+ # "source_type": {"method": "fillna", "opt": "fill", "type": "str", "value": "其他"},
|
|
|
+ # "chinese_mix": {"method": "fillna", "opt": "fill", "type": "str", "value": "否"},
|
|
|
+ # "sub_price_type_name": {"method": "fillna", "opt": "fill", "type": "str", "value": "普一类烟"},
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ ONEHOT_CAT = {
|
|
|
+ "is_low_tar": ["是", "否"],
|
|
|
+ "is_exploding_beads": ["是", "否"],
|
|
|
+ "is_shortbranch": ["是", "否"],
|
|
|
+ "is_medium": ["是", "否"],
|
|
|
+ "is_tiny": ["是", "否"],
|
|
|
+ "product_style_code_name": ["条盒硬盒", "条包硬盒", "条盒软盒", "条包软盒", "铁盒", "其他"],
|
|
|
+ "org_is_abnormity": ["是", "否"],
|
|
|
+ "is_chuangxin": ["是", "否"],
|
|
|
+ "is_key_brand": ["是", "否"],
|
|
|
+ "foster_level_hy": ["是", "否"],
|
|
|
+ "foster_level_sj": ["是", "否"],
|
|
|
+ "is_cigar": ["是", "否"],
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ # "price_type_name": ["一类烟", "二类烟", "三类烟", "四类烟", "五类烟", "无价类"],
|
|
|
+ # "gear_type_name": ["第一档位", "第二档位", "第三档位", "第四档位", "第五档位", "第六档位", "第七档位", "第八档位", "其他"],
|
|
|
+ # "category_type_name": ["第1品类", "第2品类", "第3品类", "第4品类", "第5品类", "第6品类", "第7品类",
|
|
|
+ # "第8品类", "第9品类", "第10品类", "第11品类", "第12品类", "第13品类", "其他"],
|
|
|
+ # "is_high_level": ["是", "否"],
|
|
|
+ # "is_upscale_level": ["是", "否"],
|
|
|
+ # "is_high_price": ["是", "否"],
|
|
|
+ # "is_low_price": ["是", "否"],
|
|
|
+ # "is_encourage": ["是", "否"],
|
|
|
+ # "is_abnormity": ["是", "否"],
|
|
|
+ # "is_intake": ["是", "否"],
|
|
|
+ # "is_short": ["是", "否"],
|
|
|
+ # "is_ordinary_price_type": ["是", "否"],
|
|
|
+ # "source_type": ["是", "否"],
|
|
|
+ # "chinese_mix": ["是", "否"],
|
|
|
+ # "sub_price_type_name": ["高端烟", "高价位烟", "普一类烟", "二类烟", "三类烟", "四类烟", "五类烟", "无价类"],
|
|
|
+ }
|
|
|
+
|
|
|
+class OrderConfig:
|
|
|
+ FEATURE_COLUMNS = [
|
|
|
+ "BB_RETAIL_CUSTOMER_CODE", # 零售户编码
|
|
|
+ "PRODUCT_CODE", # 卷烟编码
|
|
|
+ "MONTH6_SALE_QTY", # 近半年销量(箱)
|
|
|
+ "MONTH6_SALE_AMT", # 近半年销售额(万元)
|
|
|
+ "MONTH6_GROSS_PROFIT_RATE", # 近半年毛利率
|
|
|
+ "MONTH6_SALE_QTY_YOY", # 销售量同比
|
|
|
+ "MONTH6_SALE_QTY_MOM", # 销售量环比
|
|
|
+ "MONTH6_SALE_AMT_YOY", # 销售额(购进额)同比
|
|
|
+ "MONTH6_SALE_AMT_MOM", # 销售额(购进额)环比
|
|
|
+ "STOCK_QTY", # 库存
|
|
|
+ "ORDER_FULLORDR_RATE", # 订足率
|
|
|
+ "FULL_FILLMENT_RATE", # 订单满足率
|
|
|
+ "ORDER_FULLORDR_RATE_MOM", # 订足率环比
|
|
|
+ "CUSTOMER_REPURCHASE_RATE", # 会员重购率
|
|
|
+ "DEMAND_RATE", # 需求量满足率
|
|
|
+ "LISTING_RATE", # 品规商上架率
|
|
|
+ "PUT_MARKET_FINISH_RATE", # 投放完成率
|
|
|
+ "OUT_STOCK_DAYS", # 断货天数
|
|
|
+ "YLT_TURNOVER_RATE", # 易灵通动销率
|
|
|
+ "YLT_BAR_PACKAGE_SALE_OCC", # 易灵通调包销售占比
|
|
|
+ "UNPACKING_RATE", # 拆包率
|
|
|
+ "POS_PACKAGE_PRICE", # pos机单包价格
|
|
|
+ ]
|
|
|
+
|
|
|
+ WEIGHTS = {
|
|
|
+ "MONTH6_SALE_QTY": 0.15,
|
|
|
+ "MONTH6_SALE_QTY_MOM": 0.2,
|
|
|
+ "ORDER_FULLORDR_RATE": 0.3,
|
|
|
+ "ORDER_FULLORDR_RATE_MOM": 0.35,
|
|
|
+ }
|
|
|
+
|
|
|
+class ImportanceFeaturesMap:
|
|
|
+ CUSTOM_FEATRUES_MAP = {
|
|
|
+ "BB_RTL_CUST_GRADE_NAME": "零售户分档名称",
|
|
|
+ "BB_RTL_CUST_MARKET_TYPE_NAME": "零售户市场类型名称",
|
|
|
+ "STORE_AREA": "店铺经营面积",
|
|
|
+ "BB_RTL_CUST_BUSINESS_TYPE_NAME": "零售户业态名称",
|
|
|
+ "OPERATOR_EDU_LEVEL": "零售客户经营者文化程",
|
|
|
+ "OPERATOR_AGE": "经营者年龄",
|
|
|
+ "BB_RTL_CUST_CHAIN_FLAG": "零售户连锁标识",
|
|
|
+ "PRESENT_STAR_TERMINAL": "终端星级",
|
|
|
+ "MD04_MG_RTL_CUST_CREDITCLASS_NAME": "零售户信用等级名称",
|
|
|
+ "MD04_DIR_SAL_STORE_FLAG": "直营店标识",
|
|
|
+ "BB_CUSTOMER_MANAGER_SCOPE_NAME": "零售户经营范围名称",
|
|
|
+ "PRODUCT_INSALE_QTY": "在销品规数",
|
|
|
+ "CUST_INVESTMENT": "店铺资源投入建设",
|
|
|
+ }
|
|
|
+
|
|
|
+ PRODUCT_FEATRUES_MAP = {
|
|
|
+ # ProductConfig 字段映射
|
|
|
+ "direct_retail_price": "建议零售价",
|
|
|
+ "is_low_tar": "是否低焦油烟",
|
|
|
+ "tar_qty": "焦油含量",
|
|
|
+ "is_exploding_beads": "是否爆珠",
|
|
|
+ "is_shortbranch": "是否短支烟",
|
|
|
+ "is_medium": "是否中支烟",
|
|
|
+ "is_tiny": "是否细支",
|
|
|
+ "product_style_code_name": "包装类型名称",
|
|
|
+ "org_is_abnormity": "是否异形包装",
|
|
|
+ "is_chuangxin": "是否创新品类",
|
|
|
+ "is_key_brand": "是否重点品牌",
|
|
|
+ "foster_level_hy": "是否行业共育品规",
|
|
|
+ "foster_level_sj": "是否省级共育品规",
|
|
|
+ "is_cigar": "是否雪茄型卷烟",
|
|
|
+ "co_qty": "一氧化碳含量",
|
|
|
+ "tbc_total_length": "烟支总长度",
|
|
|
+ "tbc_length": "烟支长度",
|
|
|
+ "filter_length": "滤嘴长度",
|
|
|
+ }
|