mdbq 3.0.1__py3-none-any.whl → 3.0.3__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.
- mdbq/aggregation/aggregation.py +11 -27
- mdbq/aggregation/query_data.py +190 -62
- mdbq/config/products.py +3 -3
- mdbq/dataframe/converter.py +2 -2
- mdbq/mysql/mysql.py +5 -5
- {mdbq-3.0.1.dist-info → mdbq-3.0.3.dist-info}/METADATA +1 -1
- {mdbq-3.0.1.dist-info → mdbq-3.0.3.dist-info}/RECORD +9 -9
- {mdbq-3.0.1.dist-info → mdbq-3.0.3.dist-info}/WHEEL +0 -0
- {mdbq-3.0.1.dist-info → mdbq-3.0.3.dist-info}/top_level.txt +0 -0
mdbq/aggregation/aggregation.py
CHANGED
@@ -1238,22 +1238,6 @@ def test():
|
|
1238
1238
|
# df.to_csv(os.path.join(root, name), encoding='utf-8_sig', index=False, header=True)
|
1239
1239
|
# os.remove(os.path.join(root, name))
|
1240
1240
|
# results.append(df)
|
1241
|
-
# df = pd.concat(results)
|
1242
|
-
# df.drop_duplicates(
|
1243
|
-
# subset=[
|
1244
|
-
# '日期',
|
1245
|
-
# '店铺名称',
|
1246
|
-
# '报表类型',
|
1247
|
-
# '消耗',
|
1248
|
-
# '展现量',
|
1249
|
-
# '点击量',
|
1250
|
-
# ], keep='last', inplace=True, ignore_index=True)
|
1251
|
-
# df.fillna(0, inplace=True)
|
1252
|
-
# for col in df.columns.tolist():
|
1253
|
-
# df[col] = df[col].apply(lambda x: 0 if str(x) == '' else x)
|
1254
|
-
# path = '/Users/xigua/Downloads'
|
1255
|
-
# filename = '品销宝_2024年_合并.csv'
|
1256
|
-
# df.to_csv(os.path.join(path, filename), encoding='utf-8_sig', index=False, header=True)
|
1257
1241
|
|
1258
1242
|
|
1259
1243
|
if __name__ == '__main__':
|
@@ -1269,17 +1253,17 @@ if __name__ == '__main__':
|
|
1269
1253
|
# table_name='dmp人群报表',
|
1270
1254
|
# )
|
1271
1255
|
|
1272
|
-
|
1273
|
-
col =
|
1274
|
-
if col:
|
1275
|
-
|
1276
|
-
|
1277
|
-
|
1278
|
-
|
1279
|
-
|
1280
|
-
|
1281
|
-
|
1282
|
-
|
1256
|
+
test()
|
1257
|
+
# col = 0
|
1258
|
+
# if col:
|
1259
|
+
# # 上传一个目录到指定数据库
|
1260
|
+
# db_name = '京东数据3'
|
1261
|
+
# table_name = '推广数据_全站营销'
|
1262
|
+
# upload_dir(
|
1263
|
+
# path=r'/Users/xigua/数据中心/原始文件3/京东报表/京准通_全站营销',
|
1264
|
+
# db_name=db_name,
|
1265
|
+
# collection_name=table_name,
|
1266
|
+
# )
|
1283
1267
|
|
1284
1268
|
|
1285
1269
|
|
mdbq/aggregation/query_data.py
CHANGED
@@ -180,6 +180,56 @@ class MysqlDatasQuery:
|
|
180
180
|
filename=None, # 用来追踪处理进度
|
181
181
|
reset_id=False, # 是否重置自增列
|
182
182
|
set_typ=set_typ,
|
183
|
+
|
184
|
+
)
|
185
|
+
|
186
|
+
# df_pic:商品排序索引表, 给 powerbi 中的主推款排序用的,(从上月1号到今天的总花费进行排序)
|
187
|
+
today = datetime.date.today()
|
188
|
+
last_month = today - datetime.timedelta(days=30)
|
189
|
+
if last_month.month == 12:
|
190
|
+
year_my = today.year - 1
|
191
|
+
else:
|
192
|
+
year_my = today.year
|
193
|
+
# 截取 从上月1日 至 今天的花费数据, 推广款式按此数据从高到低排序(商品图+排序)
|
194
|
+
# df_pic_lin = df[df['店铺名称'] == '万里马官方旗舰店']
|
195
|
+
df_pic = df.groupby(['日期', '店铺名称', '商品id'], as_index=False).agg({'花费': 'sum'})
|
196
|
+
if len(df_pic) == 0:
|
197
|
+
return True
|
198
|
+
df_pic = df_pic[~df_pic['商品id'].isin([''])] # 指定列中删除包含空值的行
|
199
|
+
date_obj = datetime.datetime.strptime(f'{year_my}-{last_month.month}-01', '%Y-%m-%d').date()
|
200
|
+
df_pic = df_pic[(df_pic['日期'] >= date_obj)]
|
201
|
+
df_pic = df_pic.groupby(['店铺名称', '商品id'], as_index=False).agg({'花费': 'sum'})
|
202
|
+
df_pic.sort_values('花费', ascending=False, ignore_index=True, inplace=True)
|
203
|
+
df_pic.reset_index(inplace=True)
|
204
|
+
df_pic['index'] = df_pic['index'] + 100
|
205
|
+
df_pic.rename(columns={'index': '商品索引'}, inplace=True)
|
206
|
+
df_pic['商品索引'].fillna(1000, inplace=True)
|
207
|
+
df_pic.pop('花费')
|
208
|
+
p= df_pic.pop('商品索引')
|
209
|
+
df_pic.insert(loc=2, column='商品索引', value=p) # df中插入新列
|
210
|
+
df_pic['更新时间'] = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
|
211
|
+
set_typ = {
|
212
|
+
'商品id': 'bigint',
|
213
|
+
'店铺名称': 'varchar(100)',
|
214
|
+
'商品索引': 'smallint',
|
215
|
+
'花费': 'decimal(12,2)',
|
216
|
+
'更新时间': 'timestamp',
|
217
|
+
}
|
218
|
+
now = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
|
219
|
+
print(f'{now} 正在更新: mysql ({host}:{port}) 属性设置3/商品索引表_主推排序调用')
|
220
|
+
m_engine.df_to_mysql(
|
221
|
+
df=df_pic,
|
222
|
+
db_name='属性设置3',
|
223
|
+
table_name='商品索引表_主推排序调用',
|
224
|
+
icm_update=['商品id'], # 增量更新, 在聚合数据中使用,其他不要用
|
225
|
+
move_insert=False, # 先删除,再插入
|
226
|
+
df_sql=False, # 值为 True 时使用 df.to_sql 函数上传整个表, 不会排重
|
227
|
+
drop_duplicates=False, # 值为 True 时检查重复数据再插入,反之直接上传,会比较慢
|
228
|
+
count=None,
|
229
|
+
filename=None, # 用来追踪处理进度
|
230
|
+
reset_id=False, # 是否重置自增列
|
231
|
+
set_typ=set_typ,
|
232
|
+
|
183
233
|
)
|
184
234
|
return True
|
185
235
|
|
@@ -267,6 +317,7 @@ class MysqlDatasQuery:
|
|
267
317
|
filename=None, # 用来追踪处理进度
|
268
318
|
reset_id=False, # 是否重置自增列
|
269
319
|
set_typ=set_typ,
|
320
|
+
|
270
321
|
)
|
271
322
|
return True
|
272
323
|
|
@@ -450,6 +501,7 @@ class MysqlDatasQuery:
|
|
450
501
|
filename=None, # 用来追踪处理进度
|
451
502
|
reset_id=False, # 是否重置自增列
|
452
503
|
set_typ=set_typ,
|
504
|
+
|
453
505
|
)
|
454
506
|
return True
|
455
507
|
|
@@ -579,6 +631,7 @@ class MysqlDatasQuery:
|
|
579
631
|
filename=None, # 用来追踪处理进度
|
580
632
|
reset_id=False, # 是否重置自增列
|
581
633
|
set_typ=set_typ,
|
634
|
+
|
582
635
|
)
|
583
636
|
return True
|
584
637
|
|
@@ -697,6 +750,7 @@ class MysqlDatasQuery:
|
|
697
750
|
filename=None, # 用来追踪处理进度
|
698
751
|
reset_id=False, # 是否重置自增列
|
699
752
|
set_typ=set_typ,
|
753
|
+
|
700
754
|
)
|
701
755
|
return True
|
702
756
|
|
@@ -804,6 +858,7 @@ class MysqlDatasQuery:
|
|
804
858
|
filename=None, # 用来追踪处理进度
|
805
859
|
reset_id=False, # 是否重置自增列
|
806
860
|
set_typ=set_typ,
|
861
|
+
|
807
862
|
)
|
808
863
|
return True
|
809
864
|
|
@@ -858,6 +913,7 @@ class MysqlDatasQuery:
|
|
858
913
|
filename=None, # 用来追踪处理进度
|
859
914
|
reset_id=False, # 是否重置自增列
|
860
915
|
set_typ=set_typ,
|
916
|
+
|
861
917
|
)
|
862
918
|
return True
|
863
919
|
|
@@ -915,6 +971,7 @@ class MysqlDatasQuery:
|
|
915
971
|
filename=None, # 用来追踪处理进度
|
916
972
|
reset_id=False, # 是否重置自增列
|
917
973
|
set_typ=set_typ,
|
974
|
+
|
918
975
|
)
|
919
976
|
return True
|
920
977
|
|
@@ -996,6 +1053,7 @@ class MysqlDatasQuery:
|
|
996
1053
|
filename=None, # 用来追踪处理进度
|
997
1054
|
reset_id=False, # 是否重置自增列
|
998
1055
|
set_typ=set_typ,
|
1056
|
+
|
999
1057
|
)
|
1000
1058
|
return True
|
1001
1059
|
|
@@ -1043,6 +1101,7 @@ class MysqlDatasQuery:
|
|
1043
1101
|
filename=None, # 用来追踪处理进度
|
1044
1102
|
reset_id=False, # 是否重置自增列
|
1045
1103
|
set_typ=set_typ,
|
1104
|
+
|
1046
1105
|
)
|
1047
1106
|
return True
|
1048
1107
|
|
@@ -1126,6 +1185,7 @@ class MysqlDatasQuery:
|
|
1126
1185
|
filename=None, # 用来追踪处理进度
|
1127
1186
|
reset_id=False, # 是否重置自增列
|
1128
1187
|
set_typ=set_typ,
|
1188
|
+
|
1129
1189
|
)
|
1130
1190
|
return True
|
1131
1191
|
|
@@ -1192,6 +1252,7 @@ class MysqlDatasQuery:
|
|
1192
1252
|
filename=None, # 用来追踪处理进度
|
1193
1253
|
reset_id=False, # 是否重置自增列
|
1194
1254
|
set_typ=set_typ,
|
1255
|
+
|
1195
1256
|
)
|
1196
1257
|
return True
|
1197
1258
|
|
@@ -1289,6 +1350,7 @@ class MysqlDatasQuery:
|
|
1289
1350
|
filename=None, # 用来追踪处理进度
|
1290
1351
|
reset_id=False, # 是否重置自增列
|
1291
1352
|
set_typ=set_typ,
|
1353
|
+
|
1292
1354
|
)
|
1293
1355
|
return True
|
1294
1356
|
|
@@ -1358,6 +1420,7 @@ class MysqlDatasQuery:
|
|
1358
1420
|
filename=None, # 用来追踪处理进度
|
1359
1421
|
reset_id=False, # 是否重置自增列
|
1360
1422
|
set_typ=set_typ,
|
1423
|
+
|
1361
1424
|
)
|
1362
1425
|
return True
|
1363
1426
|
|
@@ -1419,6 +1482,7 @@ class MysqlDatasQuery:
|
|
1419
1482
|
filename=None, # 用来追踪处理进度
|
1420
1483
|
reset_id=False, # 是否重置自增列
|
1421
1484
|
set_typ=set_typ,
|
1485
|
+
|
1422
1486
|
)
|
1423
1487
|
return True
|
1424
1488
|
|
@@ -1498,6 +1562,7 @@ class MysqlDatasQuery:
|
|
1498
1562
|
filename=None, # 用来追踪处理进度
|
1499
1563
|
reset_id=False, # 是否重置自增列
|
1500
1564
|
set_typ=set_typ,
|
1565
|
+
|
1501
1566
|
)
|
1502
1567
|
return True
|
1503
1568
|
|
@@ -1636,6 +1701,7 @@ class MysqlDatasQuery:
|
|
1636
1701
|
filename=None, # 用来追踪处理进度
|
1637
1702
|
reset_id=False, # 是否重置自增列
|
1638
1703
|
set_typ=set_typ,
|
1704
|
+
|
1639
1705
|
)
|
1640
1706
|
return True
|
1641
1707
|
|
@@ -1644,6 +1710,14 @@ class MysqlDatasQuery:
|
|
1644
1710
|
"""
|
1645
1711
|
汇总各个店铺的推广数据,按日汇总
|
1646
1712
|
"""
|
1713
|
+
df_tm = pd.DataFrame() # 天猫营销场景
|
1714
|
+
df_tb = pd.DataFrame() # 淘宝营销场景
|
1715
|
+
df_tb_qzt = pd.DataFrame() # 淘宝全站推广
|
1716
|
+
df_tm_pxb = pd.DataFrame() # 天猫品销宝
|
1717
|
+
df_tm_living = pd.DataFrame() # 天猫超级直播
|
1718
|
+
df_jd = pd.DataFrame() # 京东推广
|
1719
|
+
df_jd_qzyx = pd.DataFrame() # 京东全站推广
|
1720
|
+
|
1647
1721
|
start_date, end_date = self.months_data(num=self.months)
|
1648
1722
|
projection = {
|
1649
1723
|
'日期': 1,
|
@@ -1663,18 +1737,19 @@ class MysqlDatasQuery:
|
|
1663
1737
|
end_date=end_date,
|
1664
1738
|
projection=projection,
|
1665
1739
|
)
|
1666
|
-
df_tm
|
1667
|
-
|
1668
|
-
|
1669
|
-
|
1670
|
-
|
1671
|
-
|
1672
|
-
|
1673
|
-
|
1674
|
-
|
1675
|
-
|
1676
|
-
|
1677
|
-
|
1740
|
+
if len(df_tm) > 0:
|
1741
|
+
df_tm.rename(columns={'场景名字': '营销场景'}, inplace=True)
|
1742
|
+
df_tm = df_tm.groupby(
|
1743
|
+
['日期', '店铺名称', '营销场景', '花费'],
|
1744
|
+
as_index=False).agg(
|
1745
|
+
**{
|
1746
|
+
'展现量': ('展现量', np.max),
|
1747
|
+
'点击量': ('点击量', np.max),
|
1748
|
+
'加购量': ('总购物车数', np.max),
|
1749
|
+
'成交笔数': ('总成交笔数', np.max),
|
1750
|
+
'成交金额': ('总成交金额', np.max)
|
1751
|
+
}
|
1752
|
+
)
|
1678
1753
|
|
1679
1754
|
df_tb = self.download.data_to_df(
|
1680
1755
|
db_name='推广数据_淘宝店',
|
@@ -1683,22 +1758,69 @@ class MysqlDatasQuery:
|
|
1683
1758
|
end_date=end_date,
|
1684
1759
|
projection=projection,
|
1685
1760
|
)
|
1686
|
-
|
1687
|
-
|
1688
|
-
|
1689
|
-
|
1690
|
-
|
1691
|
-
|
1692
|
-
|
1693
|
-
|
1694
|
-
|
1695
|
-
|
1696
|
-
|
1697
|
-
|
1698
|
-
|
1761
|
+
if len(df_tb) > 0:
|
1762
|
+
df_tb.rename(columns={'场景名字': '营销场景'}, inplace=True)
|
1763
|
+
df_tb = df_tb.groupby(
|
1764
|
+
['日期', '店铺名称', '营销场景', '花费'],
|
1765
|
+
as_index=False).agg(
|
1766
|
+
**{
|
1767
|
+
'展现量': ('展现量', np.max),
|
1768
|
+
'点击量': ('点击量', np.max),
|
1769
|
+
'加购量': ('总购物车数', np.max),
|
1770
|
+
'成交笔数': ('总成交笔数', np.max),
|
1771
|
+
'成交金额': ('总成交金额', np.max)
|
1772
|
+
}
|
1773
|
+
)
|
1774
|
+
|
1775
|
+
# 天猫的全站推广包含在营销场景报表中,淘宝店不包含
|
1776
|
+
df_tb_qzt = pd.DataFrame()
|
1777
|
+
if '全站推广' not in df_tb['营销场景'].tolist():
|
1778
|
+
projection = {
|
1779
|
+
'日期': 1,
|
1780
|
+
'主体id': 1,
|
1781
|
+
'花费': 1,
|
1782
|
+
'展现量': 1,
|
1783
|
+
'点击量': 1,
|
1784
|
+
'总购物车数': 1,
|
1785
|
+
'总成交笔数': 1,
|
1786
|
+
'总成交金额': 1,
|
1787
|
+
'店铺名称': 1,
|
1699
1788
|
}
|
1700
|
-
|
1789
|
+
df_tb_qzt = self.download.data_to_df(
|
1790
|
+
db_name='推广数据_淘宝店',
|
1791
|
+
table_name='全站推广报表',
|
1792
|
+
start_date=start_date,
|
1793
|
+
end_date=end_date,
|
1794
|
+
projection=projection,
|
1795
|
+
)
|
1796
|
+
if len(df_tb_qzt) > 0:
|
1797
|
+
# 这一步是排重
|
1798
|
+
df_tb_qzt = df_tb_qzt.groupby(
|
1799
|
+
['日期', '店铺名称', '主体id', '花费'],
|
1800
|
+
as_index=False).agg(
|
1801
|
+
**{
|
1802
|
+
'展现量': ('展现量', np.max),
|
1803
|
+
'点击量': ('点击量', np.max),
|
1804
|
+
'加购量': ('总购物车数', np.max),
|
1805
|
+
'成交笔数': ('总成交笔数', np.max),
|
1806
|
+
'成交金额': ('总成交金额', np.max)
|
1807
|
+
}
|
1808
|
+
)
|
1809
|
+
# 这一步是继续聚合,因为这个报表统计的是场景维度,不需要商品维度
|
1810
|
+
df_tb_qzt = df_tb_qzt.groupby(
|
1811
|
+
['日期', '店铺名称', '花费'],
|
1812
|
+
as_index=False).agg(
|
1813
|
+
**{
|
1814
|
+
'展现量': ('展现量', np.sum),
|
1815
|
+
'点击量': ('点击量', np.sum),
|
1816
|
+
'加购量': ('总购物车数', np.sum),
|
1817
|
+
'成交笔数': ('总成交笔数', np.sum),
|
1818
|
+
'成交金额': ('总成交金额', np.sum)
|
1819
|
+
}
|
1820
|
+
)
|
1821
|
+
df_tb_qzt['营销场景'] = '全站推广'
|
1701
1822
|
|
1823
|
+
# 品销宝报表
|
1702
1824
|
projection = {
|
1703
1825
|
'日期': 1,
|
1704
1826
|
'报表类型': 1,
|
@@ -1717,20 +1839,21 @@ class MysqlDatasQuery:
|
|
1717
1839
|
end_date=end_date,
|
1718
1840
|
projection=projection,
|
1719
1841
|
)
|
1720
|
-
|
1721
|
-
|
1722
|
-
|
1723
|
-
|
1724
|
-
|
1725
|
-
|
1726
|
-
|
1727
|
-
|
1728
|
-
|
1729
|
-
|
1730
|
-
|
1731
|
-
|
1732
|
-
|
1733
|
-
|
1842
|
+
if len(df_tm_pxb) > 0:
|
1843
|
+
df_tm_pxb = df_tm_pxb[df_tm_pxb['报表类型'] == '账户']
|
1844
|
+
df_tm_pxb = df_tm_pxb.groupby(
|
1845
|
+
['日期', '店铺名称', '报表类型', '消耗'],
|
1846
|
+
as_index=False).agg(
|
1847
|
+
**{
|
1848
|
+
'展现量': ('展现量', np.max),
|
1849
|
+
'点击量': ('点击量', np.max),
|
1850
|
+
'加购量': ('宝贝加购数', np.max),
|
1851
|
+
'成交笔数': ('成交笔数', np.max),
|
1852
|
+
'成交金额': ('成交金额', np.max)
|
1853
|
+
}
|
1854
|
+
)
|
1855
|
+
df_tm_pxb.rename(columns={'报表类型': '营销场景', '消耗': '花费'}, inplace=True)
|
1856
|
+
df_tm_pxb['营销场景'] = '品销宝'
|
1734
1857
|
|
1735
1858
|
# 因为 2024.04.16及之前的营销场景报表不含超级直播,所以在此添加
|
1736
1859
|
if start_date < pd.to_datetime('2024-04-17'):
|
@@ -1765,10 +1888,6 @@ class MysqlDatasQuery:
|
|
1765
1888
|
'成交金额': ('总成交金额', np.max)
|
1766
1889
|
}
|
1767
1890
|
)
|
1768
|
-
else:
|
1769
|
-
df_tm_living = pd.DataFrame()
|
1770
|
-
else:
|
1771
|
-
df_tm_living = pd.DataFrame()
|
1772
1891
|
|
1773
1892
|
projection = {
|
1774
1893
|
'日期': 1,
|
@@ -1794,19 +1913,20 @@ class MysqlDatasQuery:
|
|
1794
1913
|
end_date=end_date,
|
1795
1914
|
projection=projection,
|
1796
1915
|
)
|
1797
|
-
|
1798
|
-
|
1799
|
-
|
1800
|
-
|
1801
|
-
|
1802
|
-
|
1803
|
-
|
1804
|
-
|
1805
|
-
|
1806
|
-
|
1807
|
-
|
1808
|
-
|
1809
|
-
|
1916
|
+
if len(df_jd) > 0:
|
1917
|
+
df_jd = df_jd.groupby(['日期', '店铺名称', '产品线', '触发sku_id', '跟单sku_id', 'spu_id', '花费', '展现数', '点击数'],
|
1918
|
+
as_index=False).agg(
|
1919
|
+
**{'直接订单行': ('直接订单行', np.max),
|
1920
|
+
'直接订单金额': ('直接订单金额', np.max),
|
1921
|
+
'成交笔数': ('总订单行', np.max),
|
1922
|
+
'成交金额': ('总订单金额', np.max),
|
1923
|
+
'直接加购数': ('直接加购数', np.max),
|
1924
|
+
'加购量': ('总加购数', np.max),
|
1925
|
+
}
|
1926
|
+
)
|
1927
|
+
df_jd = df_jd[['日期', '店铺名称', '产品线', '花费', '展现数', '点击数', '加购量', '成交笔数', '成交金额']]
|
1928
|
+
df_jd.rename(columns={'产品线': '营销场景', '展现数': '展现量', '点击数': '点击量'}, inplace=True)
|
1929
|
+
df_jd = df_jd[df_jd['花费'] > 0]
|
1810
1930
|
|
1811
1931
|
projection = {
|
1812
1932
|
'日期': 1,
|
@@ -1843,7 +1963,7 @@ class MysqlDatasQuery:
|
|
1843
1963
|
df_jd_qzyx = df_jd_qzyx[['日期', '店铺名称', '营销场景', '花费', '展现量', '点击量', '成交笔数', '成交金额']]
|
1844
1964
|
df_jd_qzyx = df_jd_qzyx[df_jd_qzyx['花费'] > 0]
|
1845
1965
|
|
1846
|
-
_datas = [item for item in [df_tm, df_tb, df_tm_pxb, df_tm_living, df_jd, df_jd_qzyx] if len(item) > 0] # 阻止空的 dataframe
|
1966
|
+
_datas = [item for item in [df_tm, df_tb, df_tb_qzt, df_tm_pxb, df_tm_living, df_jd, df_jd_qzyx] if len(item) > 0] # 阻止空的 dataframe
|
1847
1967
|
df = pd.concat(_datas, axis=0, ignore_index=True)
|
1848
1968
|
df['日期'] = pd.to_datetime(df['日期'], format='%Y-%m-%d', errors='ignore') # 转换日期列
|
1849
1969
|
df = df.groupby(
|
@@ -1888,6 +2008,7 @@ class MysqlDatasQuery:
|
|
1888
2008
|
filename=None, # 用来追踪处理进度
|
1889
2009
|
reset_id=False, # 是否重置自增列
|
1890
2010
|
set_typ=set_typ,
|
2011
|
+
|
1891
2012
|
)
|
1892
2013
|
return True
|
1893
2014
|
|
@@ -1972,6 +2093,7 @@ class MysqlDatasQuery:
|
|
1972
2093
|
filename=None, # 用来追踪处理进度
|
1973
2094
|
reset_id=False, # 是否重置自增列
|
1974
2095
|
set_typ=set_typ,
|
2096
|
+
|
1975
2097
|
)
|
1976
2098
|
return True
|
1977
2099
|
|
@@ -2024,6 +2146,7 @@ class MysqlDatasQuery:
|
|
2024
2146
|
filename=None, # 用来追踪处理进度
|
2025
2147
|
reset_id=False, # 是否重置自增列
|
2026
2148
|
set_typ=set_typ,
|
2149
|
+
|
2027
2150
|
)
|
2028
2151
|
return True
|
2029
2152
|
|
@@ -2131,6 +2254,7 @@ class MysqlDatasQuery:
|
|
2131
2254
|
filename=None, # 用来追踪处理进度
|
2132
2255
|
reset_id=False, # 是否重置自增列
|
2133
2256
|
set_typ=set_typ,
|
2257
|
+
|
2134
2258
|
)
|
2135
2259
|
return True
|
2136
2260
|
|
@@ -2495,7 +2619,7 @@ class MysqlDatasQuery:
|
|
2495
2619
|
df.drop(labels='宝贝id', axis=1, inplace=True)
|
2496
2620
|
|
2497
2621
|
# df.drop_duplicates(subset=['日期', '店铺名称', '商品id', '花费', '销售额'], keep='last', inplace=True, ignore_index=True)
|
2498
|
-
|
2622
|
+
df.fillna(0, inplace=True)
|
2499
2623
|
df['成本价'] = df['成本价'].astype('float64')
|
2500
2624
|
df['销售额'] = df['销售额'].astype('float64')
|
2501
2625
|
df['销售量'] = df['销售量'].astype('int64')
|
@@ -2541,6 +2665,7 @@ class MysqlDatasQuery:
|
|
2541
2665
|
filename=None, # 用来追踪处理进度
|
2542
2666
|
reset_id=False, # 是否重置自增列
|
2543
2667
|
set_typ=set_typ,
|
2668
|
+
|
2544
2669
|
)
|
2545
2670
|
return True
|
2546
2671
|
|
@@ -2651,6 +2776,7 @@ class MysqlDatasQuery:
|
|
2651
2776
|
filename=None, # 用来追踪处理进度
|
2652
2777
|
reset_id=False, # 是否重置自增列
|
2653
2778
|
set_typ=set_typ,
|
2779
|
+
|
2654
2780
|
)
|
2655
2781
|
return True
|
2656
2782
|
|
@@ -2722,6 +2848,7 @@ class MysqlDatasQuery:
|
|
2722
2848
|
filename=None, # 用来追踪处理进度
|
2723
2849
|
reset_id=False, # 是否重置自增列
|
2724
2850
|
set_typ=set_typ,
|
2851
|
+
|
2725
2852
|
)
|
2726
2853
|
return True
|
2727
2854
|
|
@@ -2780,6 +2907,7 @@ def date_table():
|
|
2780
2907
|
count=None,
|
2781
2908
|
filename=None, # 用来追踪处理进度
|
2782
2909
|
set_typ=set_typ,
|
2910
|
+
|
2783
2911
|
)
|
2784
2912
|
|
2785
2913
|
|
@@ -2851,13 +2979,13 @@ def query_(months=1, less_dict=[]):
|
|
2851
2979
|
|
2852
2980
|
|
2853
2981
|
if __name__ == '__main__':
|
2854
|
-
main(days=
|
2855
|
-
# query_(months=
|
2982
|
+
main(days=130, months=3)
|
2983
|
+
# query_(months=1)
|
2856
2984
|
|
2857
2985
|
# # 4. 清理聚合数据
|
2858
2986
|
# optimize_data.op_data(
|
2859
2987
|
# db_name_lists=['聚合数据'],
|
2860
|
-
# days=
|
2988
|
+
# days=100,
|
2861
2989
|
# is_mongo=False,
|
2862
2990
|
# is_mysql=True,
|
2863
2991
|
# )
|
mdbq/config/products.py
CHANGED
@@ -142,9 +142,9 @@ class Products:
|
|
142
142
|
# icm_update=['日期', '店铺名称', '宝贝id'], # 唯一组合键
|
143
143
|
unique_main_key=['商品id'],
|
144
144
|
set_typ={
|
145
|
-
'商品id': '
|
146
|
-
'平台': '
|
147
|
-
'上市年份': '
|
145
|
+
'商品id': 'bigint',
|
146
|
+
'平台': 'varchar(100)',
|
147
|
+
'上市年份': 'varchar(100)',
|
148
148
|
},
|
149
149
|
)
|
150
150
|
|
mdbq/dataframe/converter.py
CHANGED
@@ -31,8 +31,8 @@ class DataFrameConverter(object):
|
|
31
31
|
return longest_value
|
32
32
|
|
33
33
|
# dtypes = df.dtypes.apply(str).to_dict() # 将 dataframe 数据类型转为字典形式
|
34
|
-
df.replace([np.inf, -np.inf], 0, inplace=True) # 清理一些非法值
|
35
|
-
df.replace(to_replace=['\\N', '-', '--', '', 'nan', 'NAN'], value=0, regex=False, inplace=True) # 替换掉特殊字符
|
34
|
+
df.replace([np.inf, -np.inf], '0', inplace=True) # 清理一些非法值
|
35
|
+
df.replace(to_replace=['\\N', '-', '--', '', 'nan', 'NAN'], value='0', regex=False, inplace=True) # 替换掉特殊字符
|
36
36
|
df.replace(to_replace=[','], value='', regex=True, inplace=True)
|
37
37
|
df.replace(to_replace=['="'], value='', regex=True, inplace=True) # ="和"不可以放在一起清洗, 因为有: id=86785565
|
38
38
|
df.replace(to_replace=['"'], value='', regex=True, inplace=True)
|
mdbq/mysql/mysql.py
CHANGED
@@ -362,8 +362,8 @@ class MysqlUpload:
|
|
362
362
|
|
363
363
|
def cover_df(self, df):
|
364
364
|
""" 清理 df 的值和列名 """
|
365
|
-
df.replace([np.inf, -np.inf], 0, inplace=True) # 清理一些非法值
|
366
|
-
df.replace(to_replace=['\\N', '-', '--', '', 'nan', 'NAN'], value=0, regex=False, inplace=True) # 替换掉特殊字符
|
365
|
+
df.replace([np.inf, -np.inf], '0', inplace=True) # 清理一些非法值
|
366
|
+
df.replace(to_replace=['\\N', '-', '--', '', 'nan', 'NAN'], value='0', regex=False, inplace=True) # 替换掉特殊字符
|
367
367
|
df.replace(to_replace=[','], value='', regex=True, inplace=True)
|
368
368
|
df.replace(to_replace=['="'], value='', regex=True, inplace=True) # ="和"不可以放在一起清洗, 因为有: id=86785565
|
369
369
|
df.replace(to_replace=['"'], value='', regex=True, inplace=True)
|
@@ -411,15 +411,15 @@ class MysqlUpload:
|
|
411
411
|
elif result4: # 小数
|
412
412
|
__res_dict.update({k: 'decimal(12,2)'})
|
413
413
|
elif k == '日期':
|
414
|
-
__res_dict.update({k: '
|
414
|
+
__res_dict.update({k: 'date'})
|
415
415
|
elif k == '更新时间':
|
416
|
-
__res_dict.update({k: '
|
416
|
+
__res_dict.update({k: 'timestamp'})
|
417
417
|
elif v == 'int64':
|
418
418
|
__res_dict.update({k: 'int'})
|
419
419
|
elif v == 'float64':
|
420
420
|
__res_dict.update({k: 'decimal(10,4)'})
|
421
421
|
elif v == 'bool':
|
422
|
-
__res_dict.update({k: '
|
422
|
+
__res_dict.update({k: 'boolean'})
|
423
423
|
elif v == 'datetime64[ns]':
|
424
424
|
__res_dict.update({k: 'datetime'})
|
425
425
|
else:
|
@@ -1,11 +1,11 @@
|
|
1
1
|
mdbq/__init__.py,sha256=Il5Q9ATdX8yXqVxtP_nYqUhExzxPC_qk_WXQ_4h0exg,16
|
2
2
|
mdbq/__version__.py,sha256=y9Mp_8x0BCZSHsdLT_q5tX9wZwd5QgqrSIENLrb6vXA,62
|
3
3
|
mdbq/aggregation/__init__.py,sha256=EeDqX2Aml6SPx8363J-v1lz0EcZtgwIBYyCJV6CcEDU,40
|
4
|
-
mdbq/aggregation/aggregation.py,sha256=
|
4
|
+
mdbq/aggregation/aggregation.py,sha256=mAa4JDFsFRzsM_dFZAkNr_madBB4Ct27-5hDU-21pHM,72861
|
5
5
|
mdbq/aggregation/df_types.py,sha256=U9i3q2eRPTDY8qAPTw7irzu-Tlg4CIySW9uYro81wdk,8125
|
6
6
|
mdbq/aggregation/mysql_types.py,sha256=YTGyrF9vcRgfkQbpT-e-JdJ7c7VF1dDHgyx9YZRES8w,10934
|
7
7
|
mdbq/aggregation/optimize_data.py,sha256=79uwiM2WqNNFxGpE2wKz742PRq-ZGgFjdOV0vgptHdY,3513
|
8
|
-
mdbq/aggregation/query_data.py,sha256=
|
8
|
+
mdbq/aggregation/query_data.py,sha256=zpjxirAf8T4WUfkPIrBzDLVp7ojssViopGUPeORxS9o,132599
|
9
9
|
mdbq/aggregation/query_data_bak.py,sha256=r1FU0C4zjXln7oVSrRkElh4Ehl-9mYhGcq57jLbViUA,104071
|
10
10
|
mdbq/bdup/__init__.py,sha256=AkhsGk81SkG1c8FqDH5tRq-8MZmFobVbN60DTyukYTY,28
|
11
11
|
mdbq/bdup/bdup.py,sha256=LAV0TgnQpc-LB-YuJthxb0U42_VkPidzQzAagan46lU,4234
|
@@ -17,17 +17,17 @@ mdbq/company/copysh.py,sha256=eFu6focRqm2Njn_XN1KW2ZYJiTv6EYgsdBCLokobyxQ,21572
|
|
17
17
|
mdbq/config/__init__.py,sha256=jso1oHcy6cJEfa7udS_9uO5X6kZLoPBF8l3wCYmr5dM,18
|
18
18
|
mdbq/config/get_myconf.py,sha256=cmNvsyoNa0RbZ9FOTjSd3jyyGwkxjUo0phvdHbGlrms,6010
|
19
19
|
mdbq/config/myconfig.py,sha256=EGymTlAimtHIDJ9egCtOehBEPOj6rea504kvsEZu64o,854
|
20
|
-
mdbq/config/products.py,sha256=
|
20
|
+
mdbq/config/products.py,sha256=1W8FBXnnvTC29pBLI8Yp8UwTMhBvoppcJqmniT8rBGU,6295
|
21
21
|
mdbq/config/set_support.py,sha256=xkZCX6y9Bq1ppBpJAofld4B2YtchA7fl0eT3dx3CrSI,777
|
22
22
|
mdbq/config/update_conf.py,sha256=taL3ZqKgiVWwUrDFuaYhim9a72Hm4BHRhhDscJTziR8,4535
|
23
23
|
mdbq/dataframe/__init__.py,sha256=2HtCN8AdRj53teXDqzysC1h8aPL-mMFy561ESmhehGQ,22
|
24
|
-
mdbq/dataframe/converter.py,sha256=
|
24
|
+
mdbq/dataframe/converter.py,sha256=iNzgQOJjjoHb_wYozUh8a0qNvWA3o-u6lW3NWa7Kdps,4604
|
25
25
|
mdbq/log/__init__.py,sha256=Mpbrav0s0ifLL7lVDAuePEi1hJKiSHhxcv1byBKDl5E,15
|
26
26
|
mdbq/log/mylogger.py,sha256=oaT7Bp-Hb9jZt52seP3ISUuxVcI19s4UiqTeouScBO0,3258
|
27
27
|
mdbq/mongo/__init__.py,sha256=SILt7xMtQIQl_m-ik9WLtJSXIVf424iYgCfE_tnQFbw,13
|
28
28
|
mdbq/mongo/mongo.py,sha256=v9qvrp6p1ZRWuPpbSilqveiE0FEcZF7U5xUPI0RN4xs,31880
|
29
29
|
mdbq/mysql/__init__.py,sha256=A_DPJyAoEvTSFojiI2e94zP0FKtCkkwKP1kYUCSyQzo,11
|
30
|
-
mdbq/mysql/mysql.py,sha256=
|
30
|
+
mdbq/mysql/mysql.py,sha256=_6czRjVkAccKykQswv890JEQQ8Mu-FxD9Rg3GOUz-C4,59921
|
31
31
|
mdbq/mysql/recheck_mysql.py,sha256=rgTpvDMWYTyEn7UQdlig-pdXDluTgiU8JG6lkMh8DV0,8665
|
32
32
|
mdbq/mysql/s_query.py,sha256=fnXncwSmA7CB0ELn1a-YxYZDrYkC2Bcgnj2J4dcQ8X8,8481
|
33
33
|
mdbq/mysql/year_month_day.py,sha256=VgewoE2pJxK7ErjfviL_SMTN77ki8GVbTUcao3vFUCE,1523
|
@@ -44,7 +44,7 @@ mdbq/req_post/__init__.py,sha256=jso1oHcy6cJEfa7udS_9uO5X6kZLoPBF8l3wCYmr5dM,18
|
|
44
44
|
mdbq/req_post/req_tb.py,sha256=qg7pet73IgKGmCwxaeUyImJIoeK_pBQT9BBKD7fkBNg,36160
|
45
45
|
mdbq/spider/__init__.py,sha256=RBMFXGy_jd1HXZhngB2T2XTvJqki8P_Fr-pBcwijnew,18
|
46
46
|
mdbq/spider/aikucun.py,sha256=01qJo_Di5Kmi2lG5_HKb0OI283b1-Pgqh-nnA0pX4TY,19038
|
47
|
-
mdbq-3.0.
|
48
|
-
mdbq-3.0.
|
49
|
-
mdbq-3.0.
|
50
|
-
mdbq-3.0.
|
47
|
+
mdbq-3.0.3.dist-info/METADATA,sha256=XjPWfGSiF-THV8JDaOyOqGHhmM9eBYV-dSxtAXB00V8,243
|
48
|
+
mdbq-3.0.3.dist-info/WHEEL,sha256=eOLhNAGa2EW3wWl_TU484h7q1UNgy0JXjjoqKoxAAQc,92
|
49
|
+
mdbq-3.0.3.dist-info/top_level.txt,sha256=2FQ-uLnCSB-OwFiWntzmwosW3X2Xqsg0ewh1axsaylA,5
|
50
|
+
mdbq-3.0.3.dist-info/RECORD,,
|
File without changes
|
File without changes
|