mdbq 2.6.5__tar.gz → 2.6.6__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (52) hide show
  1. {mdbq-2.6.5 → mdbq-2.6.6}/PKG-INFO +1 -1
  2. {mdbq-2.6.5 → mdbq-2.6.6}/mdbq/aggregation/aggregation.py +1 -1
  3. {mdbq-2.6.5 → mdbq-2.6.6}/mdbq/aggregation/query_data.py +24 -24
  4. {mdbq-2.6.5 → mdbq-2.6.6}/mdbq/clean/clean_upload.py +9 -8
  5. {mdbq-2.6.5 → mdbq-2.6.6}/mdbq/dataframe/converter.py +4 -1
  6. {mdbq-2.6.5 → mdbq-2.6.6}/mdbq.egg-info/PKG-INFO +1 -1
  7. {mdbq-2.6.5 → mdbq-2.6.6}/setup.py +1 -1
  8. {mdbq-2.6.5 → mdbq-2.6.6}/README.txt +0 -0
  9. {mdbq-2.6.5 → mdbq-2.6.6}/mdbq/__init__.py +0 -0
  10. {mdbq-2.6.5 → mdbq-2.6.6}/mdbq/__version__.py +0 -0
  11. {mdbq-2.6.5 → mdbq-2.6.6}/mdbq/aggregation/__init__.py +0 -0
  12. {mdbq-2.6.5 → mdbq-2.6.6}/mdbq/aggregation/df_types.py +0 -0
  13. {mdbq-2.6.5 → mdbq-2.6.6}/mdbq/aggregation/mysql_types.py +0 -0
  14. {mdbq-2.6.5 → mdbq-2.6.6}/mdbq/aggregation/optimize_data.py +0 -0
  15. {mdbq-2.6.5 → mdbq-2.6.6}/mdbq/bdup/__init__.py +0 -0
  16. {mdbq-2.6.5 → mdbq-2.6.6}/mdbq/bdup/bdup.py +0 -0
  17. {mdbq-2.6.5 → mdbq-2.6.6}/mdbq/clean/__init__.py +0 -0
  18. {mdbq-2.6.5 → mdbq-2.6.6}/mdbq/clean/data_clean.py +0 -0
  19. {mdbq-2.6.5 → mdbq-2.6.6}/mdbq/company/__init__.py +0 -0
  20. {mdbq-2.6.5 → mdbq-2.6.6}/mdbq/company/copysh.py +0 -0
  21. {mdbq-2.6.5 → mdbq-2.6.6}/mdbq/company/home_sh.py +0 -0
  22. {mdbq-2.6.5 → mdbq-2.6.6}/mdbq/config/__init__.py +0 -0
  23. {mdbq-2.6.5 → mdbq-2.6.6}/mdbq/config/get_myconf.py +0 -0
  24. {mdbq-2.6.5 → mdbq-2.6.6}/mdbq/config/products.py +0 -0
  25. {mdbq-2.6.5 → mdbq-2.6.6}/mdbq/config/set_support.py +0 -0
  26. {mdbq-2.6.5 → mdbq-2.6.6}/mdbq/config/update_conf.py +0 -0
  27. {mdbq-2.6.5 → mdbq-2.6.6}/mdbq/dataframe/__init__.py +0 -0
  28. {mdbq-2.6.5 → mdbq-2.6.6}/mdbq/log/__init__.py +0 -0
  29. {mdbq-2.6.5 → mdbq-2.6.6}/mdbq/log/mylogger.py +0 -0
  30. {mdbq-2.6.5 → mdbq-2.6.6}/mdbq/mongo/__init__.py +0 -0
  31. {mdbq-2.6.5 → mdbq-2.6.6}/mdbq/mongo/mongo.py +0 -0
  32. {mdbq-2.6.5 → mdbq-2.6.6}/mdbq/mysql/__init__.py +0 -0
  33. {mdbq-2.6.5 → mdbq-2.6.6}/mdbq/mysql/mysql.py +0 -0
  34. {mdbq-2.6.5 → mdbq-2.6.6}/mdbq/mysql/s_query.py +0 -0
  35. {mdbq-2.6.5 → mdbq-2.6.6}/mdbq/mysql/year_month_day.py +0 -0
  36. {mdbq-2.6.5 → mdbq-2.6.6}/mdbq/other/__init__.py +0 -0
  37. {mdbq-2.6.5 → mdbq-2.6.6}/mdbq/other/porxy.py +0 -0
  38. {mdbq-2.6.5 → mdbq-2.6.6}/mdbq/other/pov_city.py +0 -0
  39. {mdbq-2.6.5 → mdbq-2.6.6}/mdbq/other/sku_picture.py +0 -0
  40. {mdbq-2.6.5 → mdbq-2.6.6}/mdbq/other/ua_sj.py +0 -0
  41. {mdbq-2.6.5 → mdbq-2.6.6}/mdbq/pbix/__init__.py +0 -0
  42. {mdbq-2.6.5 → mdbq-2.6.6}/mdbq/pbix/pbix_refresh.py +0 -0
  43. {mdbq-2.6.5 → mdbq-2.6.6}/mdbq/pbix/refresh_all.py +0 -0
  44. {mdbq-2.6.5 → mdbq-2.6.6}/mdbq/pbix/refresh_all_old.py +0 -0
  45. {mdbq-2.6.5 → mdbq-2.6.6}/mdbq/req_post/__init__.py +0 -0
  46. {mdbq-2.6.5 → mdbq-2.6.6}/mdbq/req_post/req_tb.py +0 -0
  47. {mdbq-2.6.5 → mdbq-2.6.6}/mdbq/spider/__init__.py +0 -0
  48. {mdbq-2.6.5 → mdbq-2.6.6}/mdbq/spider/aikucun.py +0 -0
  49. {mdbq-2.6.5 → mdbq-2.6.6}/mdbq.egg-info/SOURCES.txt +0 -0
  50. {mdbq-2.6.5 → mdbq-2.6.6}/mdbq.egg-info/dependency_links.txt +0 -0
  51. {mdbq-2.6.5 → mdbq-2.6.6}/mdbq.egg-info/top_level.txt +0 -0
  52. {mdbq-2.6.5 → mdbq-2.6.6}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: mdbq
3
- Version: 2.6.5
3
+ Version: 2.6.6
4
4
  Home-page: https://pypi.org/project/mdbsql
5
5
  Author: xigua,
6
6
  Author-email: 2587125111@qq.com
@@ -1329,7 +1329,7 @@ if __name__ == '__main__':
1329
1329
  db_name = '京东数据3'
1330
1330
  table_name = '京东商智_spu_商品明细'
1331
1331
  upload_dir(
1332
- path='/Users/xigua/数据中心/原始文件3/京东报表/spu_商品明细',
1332
+ path='/Users/xigua/数据中心/原始文件3/京东报表/spu_商品明细qwqw',
1333
1333
  db_name=db_name,
1334
1334
  collection_name=table_name,
1335
1335
  dbs={'mysql': True, 'mongodb': False},
@@ -423,7 +423,6 @@ class MysqlDatasQuery:
423
423
  '总订单行': 1,
424
424
  '总订单金额': 1,
425
425
  '总加购数': 1,
426
- '下单新客数(去重)': 1,
427
426
  '领券数': 1,
428
427
  '商品关注数': 1,
429
428
  '店铺关注数': 1,
@@ -493,24 +492,26 @@ class MysqlDatasQuery:
493
492
  return pd.to_datetime(start_date), pd.to_datetime(end_date)
494
493
 
495
494
  @try_except
496
- def tm_search(self):
495
+ def se_search(self):
497
496
  start_date, end_date = self.months_data(num=self.months)
498
497
  projection = {
499
498
  '日期': 1,
500
- '关键词': 1,
499
+ '店铺名称': 1,
500
+ '搜索词': 1,
501
+ '词类行': 1,
501
502
  '访客数': 1,
503
+ '加购人数': 1,
504
+ '商品收藏人数': 1,
502
505
  '支付转化率': 1,
503
- '支付金额': 1,
504
- '下单金额': 1,
505
506
  '支付买家数': 1,
506
- '下单买家数': 1,
507
- '加购人数': 1,
507
+ '支付金额': 1,
508
508
  '新访客': 1,
509
- '店铺名称': 1,
509
+ '客单价': 1,
510
+ 'uv价值': 1,
510
511
  }
511
512
  df = self.download.data_to_df(
512
513
  db_name='生意参谋3',
513
- table_name='店铺来源_手淘搜索',
514
+ table_name='手淘搜索_本店引流词',
514
515
  start_date=start_date,
515
516
  end_date=end_date,
516
517
  projection=projection,
@@ -1462,7 +1463,6 @@ class GroupBy:
1462
1463
  '总订单行': ('总订单行', np.max),
1463
1464
  '总订单金额': ('总订单金额', np.max),
1464
1465
  '总加购数': ('总加购数', np.max),
1465
- '下单新客数': ('下单新客数(去重)', np.max),
1466
1466
  '领券数': ('领券数', np.max),
1467
1467
  '商品关注数': ('商品关注数', np.max),
1468
1468
  '店铺关注数': ('店铺关注数', np.max)
@@ -1476,17 +1476,16 @@ class GroupBy:
1476
1476
  return df
1477
1477
  elif '天猫店铺来源_手淘搜索' in table_name:
1478
1478
  df = df.groupby(
1479
- ['日期', '关键词', '店铺名称'],
1479
+ ['日期', '店铺名称', '搜索词'],
1480
1480
  as_index=False).agg(
1481
1481
  **{
1482
1482
  '访客数': ('访客数', np.max),
1483
- '支付转化率': ('支付转化率', np.max),
1483
+ '加购人数': ('加购人数', np.max),
1484
1484
  '支付金额': ('支付金额', np.max),
1485
- '下单金额': ('下单金额', np.max),
1485
+ '支付转化率': ('支付转化率', np.max),
1486
1486
  '支付买家数': ('支付买家数', np.max),
1487
- '下单买家数': ('下单买家数', np.max),
1488
- '加购人数': ('加购人数', np.max),
1489
- '新访客': ('新访客', np.max),
1487
+ '客单价': ('客单价', np.max),
1488
+ 'uv价值': ('uv价值', np.max)
1490
1489
  }
1491
1490
  )
1492
1491
  return df
@@ -2077,6 +2076,7 @@ def data_aggregation(service_databases=[{}], months=1, is_juhe=True):
2077
2076
  2. 数据聚合清洗
2078
2077
  3. 统一回传数据库: <聚合数据> (不再导出为文件)
2079
2078
  公司台式机调用
2079
+ months: 1+,写 0 表示当月数据,但在每月 1 号时可能会因为返回空数据出错
2080
2080
  """
2081
2081
  for service_database in service_databases:
2082
2082
  for service_name, database in service_database.items():
@@ -2183,14 +2183,14 @@ def data_aggregation(service_databases=[{}], months=1, is_juhe=True):
2183
2183
  '数据库名': '聚合数据',
2184
2184
  '集合名': '天猫店铺来源_手淘搜索', # 暂缺
2185
2185
  '唯一主键': ['日期', '关键词', '访客数'],
2186
- '数据主体': sdq.tm_search(),
2187
- },
2188
- {
2189
- '数据库名': '聚合数据',
2190
- '集合名': '生意参谋_直播场次分析', # 暂缺
2191
- '唯一主键': ['场次id'],
2192
- '数据主体': sdq.zb_ccfx(),
2186
+ '数据主体': sdq.se_search(),
2193
2187
  },
2188
+ # {
2189
+ # '数据库名': '聚合数据',
2190
+ # '集合名': '生意参谋_直播场次分析', # 暂缺
2191
+ # '唯一主键': ['场次id'],
2192
+ # '数据主体': sdq.zb_ccfx(),
2193
+ # },
2194
2194
  {
2195
2195
  '数据库名': '聚合数据',
2196
2196
  '集合名': '多店推广场景_按日聚合',
@@ -2304,6 +2304,6 @@ def main():
2304
2304
 
2305
2305
 
2306
2306
  if __name__ == '__main__':
2307
- data_aggregation(service_databases=[{'company': 'mysql'}], months=0, is_juhe=True) # 正常的聚合所有数据
2307
+ data_aggregation(service_databases=[{'company': 'mysql'}], months=1, is_juhe=True) # 正常的聚合所有数据
2308
2308
  # data_aggregation_one(service_databases=[{'company': 'mysql'}], months=1) # 单独聚合某一个数据库,具体库进函数编辑
2309
2309
  # optimize_data.op_data(service_databases=[{'company': 'mysql'}], days=3650) # 立即启动对聚合数据的清理工作
@@ -151,7 +151,7 @@ class DataClean:
151
151
  self.save_to_csv(df, root, new_name, encoding='utf-8_sig')
152
152
  os.remove(os.path.join(root, name))
153
153
  elif name.endswith('.xls') and '手淘搜索_本店引流词_' in name:
154
- df = pd.read_excel(os.path.join(root, name), header=5)
154
+ df = pd.read_excel(os.path.join(root, name), header=5, engine='xlrd')
155
155
  if len(df) == 0:
156
156
  print(f'{name} 报表数据不能为空')
157
157
  continue
@@ -382,7 +382,7 @@ class DataClean:
382
382
  sheets4 = ['账户', '推广计划', '推广单元', '创意', '品牌流量包', '定向人群'] # 品销宝
383
383
  file_name4 = os.path.splitext(name)[0] # 明星店铺报表
384
384
  for sheet4 in sheets4:
385
- df = pd.read_excel(os.path.join(root, name), sheet_name=sheet4, header=0, engine='openpyxl')
385
+ df = pd.read_excel(os.path.join(root, name), sheet_name=sheet4, header=0, engine='xlrd')
386
386
  if len(df) == 0:
387
387
  print(f'{name} 报表数据为空')
388
388
  os.remove(os.path.join(root, name))
@@ -765,11 +765,11 @@ class DataClean:
765
765
  continue
766
766
 
767
767
  if name.endswith('.xlsx') and '京东推广_' in name:
768
- df = pd.read_excel(os.path.join(root, name), header=0)
768
+ df = pd.read_excel(os.path.join(root, name), header=0, engine='openpyxl')
769
769
  new_name = f'py_xg_{name}'
770
770
  os.rename(os.path.join(root, name), os.path.join(root, new_name))
771
771
  elif name.endswith('.xlsx') and '京东商智_sku_商品明细' in name:
772
- df = pd.read_excel(os.path.join(root, name), header=0)
772
+ df = pd.read_excel(os.path.join(root, name), header=0, engine='openpyxl')
773
773
  df.replace(to_replace=['-'], value='', regex=False, inplace=True)
774
774
  pattern = re.findall(r'_(\d{4}-\d{2}-\d{2})', name)[0]
775
775
  df.insert(loc=0, column='日期', value=pattern)
@@ -780,7 +780,7 @@ class DataClean:
780
780
  index=False, header=True, engine='openpyxl', freeze_panes=(1, 0))
781
781
  os.remove(os.path.join(root, name))
782
782
  elif name.endswith('.xlsx') and '京东商智_spu_商品明细' in name:
783
- df = pd.read_excel(os.path.join(root, name), header=0)
783
+ df = pd.read_excel(os.path.join(root, name), header=0, engine='openpyxl')
784
784
  df.replace(to_replace=['-'], value='', regex=False, inplace=True)
785
785
  pattern = re.findall(r'_(\d{4}-\d{2}-\d{2})', name)[0]
786
786
  df.insert(loc=0, column='日期', value=pattern)
@@ -791,7 +791,7 @@ class DataClean:
791
791
  index=False, header=True, engine='openpyxl', freeze_panes=(1, 0))
792
792
  os.remove(os.path.join(root, name))
793
793
  elif name.endswith('.xlsx') and '京东商智_店铺来源_三级来源' in name:
794
- df = pd.read_excel(os.path.join(root, name), header=0)
794
+ df = pd.read_excel(os.path.join(root, name), header=0, engine='openpyxl')
795
795
  df.replace(to_replace=['-'], value='', regex=False, inplace=True)
796
796
  df.rename(columns={'时间': '日期'}, inplace=True)
797
797
  for col in df.columns.tolist():
@@ -870,7 +870,7 @@ class DataClean:
870
870
 
871
871
  if name.endswith('.xlsx') and '商品素材_' in name:
872
872
  shop_name = re.findall(r'_([\u4e00-\u9fffA-Za-z]+店)_', name)[0]
873
- df = pd.read_excel(os.path.join(root, name), header=0)
873
+ df = pd.read_excel(os.path.join(root, name), header=0, engine='xlrd')
874
874
  if '日期' not in df.columns.tolist():
875
875
  df.insert(loc=0, column='日期', value=datetime.datetime.today().strftime('%Y-%m-%d'))
876
876
  if '店铺名称' not in df.columns.tolist():
@@ -1276,7 +1276,7 @@ class DataClean:
1276
1276
  new_path = os.path.join(root, zip_name_1) # 拼接解压后的文件路径
1277
1277
  if os.path.isfile(new_path) and '全部渠道_商品明细' in new_path: # 是否存在和包内同名的文件
1278
1278
  # 专门处理京东文件, 已过期可删
1279
- df = pd.read_excel(new_path)
1279
+ df = pd.read_excel(new_path, engine='xlrd')
1280
1280
  try:
1281
1281
  pattern1 = re.findall(r'\d{8}_(\d{4})(\d{2})(\d{2})_全部渠道_商品明细',
1282
1282
  name)
@@ -1564,3 +1564,4 @@ if __name__ == '__main__':
1564
1564
 
1565
1565
 
1566
1566
  # test()
1567
+
@@ -37,6 +37,7 @@ class DataFrameConverter(object):
37
37
  df.replace(to_replace=['="'], value='', regex=True, inplace=True) # ="和"不可以放在一起清洗, 因为有: id=86785565
38
38
  df.replace(to_replace=['"'], value='', regex=True, inplace=True)
39
39
  cols = df.columns.tolist()
40
+
40
41
  df.reset_index(inplace=True, drop=True) # 重置索引,避免下面的 df.loc[0, col] 会出错
41
42
 
42
43
  for col in cols:
@@ -81,7 +82,9 @@ class DataFrameConverter(object):
81
82
  df[col] = df[col].apply(lambda x: pd.to_datetime(x))
82
83
  except:
83
84
  pass
84
- new_col = col.lower()
85
+ new_col = re.sub(r'[()()-,,$%&~^、* ]', '_', col.lower())
86
+ new_col = re.sub(r'_{2,}', '_', new_col)
87
+ new_col = re.sub(r'_+$', '', new_col)
85
88
  df.rename(columns={col: new_col}, inplace=True)
86
89
  df.fillna(0, inplace=True)
87
90
  return df
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: mdbq
3
- Version: 2.6.5
3
+ Version: 2.6.6
4
4
  Home-page: https://pypi.org/project/mdbsql
5
5
  Author: xigua,
6
6
  Author-email: 2587125111@qq.com
@@ -3,7 +3,7 @@
3
3
  from setuptools import setup, find_packages
4
4
 
5
5
  setup(name='mdbq',
6
- version='2.6.5',
6
+ version='2.6.6',
7
7
  author='xigua, ',
8
8
  author_email="2587125111@qq.com",
9
9
  url='https://pypi.org/project/mdbsql',
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes