mdbq 0.4.0__py3-none-any.whl → 0.4.2__py3-none-any.whl

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.
@@ -272,7 +272,7 @@ class GroupBy:
272
272
  elif '宝贝指标' in tabel_name:
273
273
  """ 聚合时不可以加商家编码,编码有些是空白,有些是 0 """
274
274
  df.fillna(0, inplace=True)
275
- df = df[(df['销售额'] != 0) | (df['退款额'] != 0)]
275
+ # df = df[(df['销售额'] != 0) | (df['退款额'] != 0)] # 注释掉, 因为后续使用生意经作为基准合并推广表,需确保所有商品id 齐全
276
276
  df = df.groupby(['日期', '宝贝id', '行业类目'], as_index=False).agg(
277
277
  **{'销售额': ('销售额', np.min),
278
278
  '销售量': ('销售量', np.min),
@@ -354,7 +354,7 @@ class GroupBy:
354
354
  print(f'<{tabel_name}>: Groupby 类尚未配置,数据为空')
355
355
  return pd.DataFrame({})
356
356
 
357
- def performance(self):
357
+ def performance(self, bb_tg=True):
358
358
  # print(self.data_tgyj)
359
359
  tg, syj, idbm, pic, cost = (
360
360
  self.data_tgyj['推广数据_宝贝主体报表'],
@@ -369,14 +369,16 @@ class GroupBy:
369
369
  df = df[['宝贝id', '商家编码', '商品图片', '成本价']]
370
370
  df = pd.merge(tg, df, how='left', left_on='商品id', right_on='宝贝id')
371
371
  df.drop(labels='宝贝id', axis=1, inplace=True)
372
- # 生意经合并推广表,完整的数据表,包含所有推广、销售数据
373
- df = pd.merge(syj, df, how='left', left_on=['日期', '宝贝id'], right_on=['日期', '商品id'])
374
- # # 推广表合并生意经 , 以推广数据为基准,销售数据可能不齐全
375
- # df = pd.merge(df, syj, how='left', left_on=['日期', '商品id'], right_on=['日期', '宝贝id'])
372
+ if bb_tg is True:
373
+ # 生意经合并推广表,完整的数据表,包含全店所有推广、销售数据
374
+ df = pd.merge(syj, df, how='left', left_on=['日期', '宝贝id'], right_on=['日期', '商品id'])
375
+ else:
376
+ # 推广表合并生意经 , 以推广数据为基准,销售数据不齐全
377
+ df = pd.merge(df, syj, how='left', left_on=['日期', '商品id'], right_on=['日期', '宝贝id'])
376
378
  df.drop(labels='宝贝id', axis=1, inplace=True)
377
379
  df.drop_duplicates(subset=['日期', '商品id', '花费', '销售额'], keep='last', inplace=True, ignore_index=True)
378
- df['商品成本'] = df.apply(lambda x: x['成本价'] + x['销售额']/x['销售量'] * 0.11 + 6 if x['销售量'] > 0 else 0, axis=1)
379
- df['商品毛利'] = df.apply(lambda x: x['销售额'] - x['商品成本'] * x['销售量'], axis=1)
380
+ df['商品成本'] = df.apply(lambda x: (x['成本价'] + x['销售额']/x['销售量'] * 0.11 + 6) * x['销售量'] if x['销售量'] > 0 else 0, axis=1)
381
+ df['商品毛利'] = df.apply(lambda x: x['销售额'] - x['商品成本'], axis=1)
380
382
  df['毛利率'] = df.apply(lambda x: round((x['销售额'] - x['商品成本']) / x['销售额'], 4) if x['销售额'] > 0 else 0, axis=1)
381
383
  df['盈亏'] = df.apply(lambda x: x['商品毛利'] - x['花费'], axis=1)
382
384
  return df
@@ -514,11 +516,14 @@ def data_aggregation(service_databases=[{}]):
514
516
  df = g.groupby(df=df, tabel_name=tabel_name, is_maximize=True) # 2. 聚合数据
515
517
  # g.as_csv(df=df, filename=tabel_name + '.csv')
516
518
  m.df_to_mysql(df=df, db_name=db_name, tabel_name=tabel_name) # 3. 回传数据库
517
- res = g.performance() # 盈亏表,依赖其他表,单独做
518
- m.df_to_mysql(df=res, db_name='聚合数据', tabel_name='商品销售')
519
+ res = g.performance(bb_tg=True) # 盈亏表,依赖其他表,单独做
520
+ m.df_to_mysql(df=res, db_name='聚合数据', tabel_name='_全店商品销售')
521
+ res = g.performance(bb_tg=False) # 盈亏表,依赖其他表,单独做
522
+ m.df_to_mysql(df=res, db_name='聚合数据', tabel_name='_推广商品销售')
519
523
 
520
524
  # optimize_data.op_data(service_databases=service_databases, days=3650) # 立即启动对聚合数据的清理工作
521
525
 
522
526
 
523
527
  if __name__ == '__main__':
524
528
  data_aggregation(service_databases=[{'home_lx': 'mysql'}])
529
+ # optimize_data.op_data(service_databases=[{'company': 'mysql'}], days=3650) # 立即启动对聚合数据的清理工作
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: mdbq
3
- Version: 0.4.0
3
+ Version: 0.4.2
4
4
  Home-page: https://pypi.org/project/mdbsql
5
5
  Author: xigua,
6
6
  Author-email: 2587125111@qq.com
@@ -3,7 +3,7 @@ mdbq/__version__.py,sha256=y9Mp_8x0BCZSHsdLT_q5tX9wZwd5QgqrSIENLrb6vXA,62
3
3
  mdbq/aggregation/__init__.py,sha256=EeDqX2Aml6SPx8363J-v1lz0EcZtgwIBYyCJV6CcEDU,40
4
4
  mdbq/aggregation/aggregation.py,sha256=TkxyIBowTuoNrhVkrgnYNXwNQXCX_xjh7wcYXdP65-E,58496
5
5
  mdbq/aggregation/optimize_data.py,sha256=jLAWtxPUuhpo4XTVrhKtT4xK3grs7r73ePQfLhxlu1I,779
6
- mdbq/aggregation/query_data.py,sha256=FEr1IWxMoxdEQSblQ7bu-hcHnpOmaFl5sZyjeqZSJDA,23992
6
+ mdbq/aggregation/query_data.py,sha256=0i9aF63O-E_SGdJ_09-pAOvAGOzJBIQOzv29dLlwruA,24491
7
7
  mdbq/bdup/__init__.py,sha256=AkhsGk81SkG1c8FqDH5tRq-8MZmFobVbN60DTyukYTY,28
8
8
  mdbq/bdup/bdup.py,sha256=LAV0TgnQpc-LB-YuJthxb0U42_VkPidzQzAagan46lU,4234
9
9
  mdbq/clean/__init__.py,sha256=A1d6x3L27j4NtLgiFV5TANwEkLuaDfPHDQNrPBbNWtU,41
@@ -33,7 +33,7 @@ mdbq/pbix/__init__.py,sha256=Trtfaynu9RjoTyLLYBN2xdRxTvm_zhCniUkVTAYwcjo,24
33
33
  mdbq/pbix/pbix_refresh.py,sha256=JUjKW3bNEyoMVfVfo77UhguvS5AWkixvVhDbw4_MHco,2396
34
34
  mdbq/pbix/refresh_all.py,sha256=USe3s5ws2Q-Gp9yUoFOAXJ4t0KVaekFULtAJaZkp448,5976
35
35
  mdbq/spider/__init__.py,sha256=RBMFXGy_jd1HXZhngB2T2XTvJqki8P_Fr-pBcwijnew,18
36
- mdbq-0.4.0.dist-info/METADATA,sha256=5-qsRRrPT1OGYLWlVQlj3dnJZURPqK2EVVWzvMSjV_c,245
37
- mdbq-0.4.0.dist-info/WHEEL,sha256=eOLhNAGa2EW3wWl_TU484h7q1UNgy0JXjjoqKoxAAQc,92
38
- mdbq-0.4.0.dist-info/top_level.txt,sha256=2FQ-uLnCSB-OwFiWntzmwosW3X2Xqsg0ewh1axsaylA,5
39
- mdbq-0.4.0.dist-info/RECORD,,
36
+ mdbq-0.4.2.dist-info/METADATA,sha256=B0CWlkNoeloPjR6p2Z5YPwqbLNNRhWygNAlq98TBzRc,245
37
+ mdbq-0.4.2.dist-info/WHEEL,sha256=eOLhNAGa2EW3wWl_TU484h7q1UNgy0JXjjoqKoxAAQc,92
38
+ mdbq-0.4.2.dist-info/top_level.txt,sha256=2FQ-uLnCSB-OwFiWntzmwosW3X2Xqsg0ewh1axsaylA,5
39
+ mdbq-0.4.2.dist-info/RECORD,,
File without changes