mdbq 3.8.7__py3-none-any.whl → 3.8.9__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/__version__.py CHANGED
@@ -1 +1 @@
1
- VERSION = '3.8.7'
1
+ VERSION = '3.8.9'
@@ -1909,6 +1909,17 @@ class MysqlDatasQuery:
1909
1909
  projection=projection,
1910
1910
  )
1911
1911
  __res.append(df)
1912
+ # 新增加自营店数据 2025-03-19
1913
+ for year in range(2025, datetime.datetime.today().year + 1):
1914
+ df = self.download.data_to_df(
1915
+ db_name='京东数据3',
1916
+ table_name=f'推广数据_京准通_自营店_{year}',
1917
+ start_date=start_date,
1918
+ end_date=end_date,
1919
+ projection=projection,
1920
+ )
1921
+ __res.append(df)
1922
+
1912
1923
  df = pd.concat(__res, ignore_index=True)
1913
1924
  df = df.groupby(
1914
1925
  ['日期', '店铺名称', '产品线', '触发sku_id', '跟单sku_id', 'spu_id', '花费', '展现数', '点击数'],
mdbq/other/otk.py ADDED
@@ -0,0 +1,81 @@
1
+ import re
2
+ import calendar
3
+ import datetime
4
+ from dateutil.relativedelta import relativedelta
5
+ import pandas as pd
6
+ import numpy as np
7
+
8
+
9
+ def first_and_last_day(date):
10
+ """
11
+ 返回指定日期当月的第一天和最后一天
12
+ """
13
+ date = pd.to_datetime(date) # n 月以前的今天
14
+ _, _lastDay = calendar.monthrange(date.year, date.month) # 返回月的第一天的星期和当月总天数
15
+ _firstDay = datetime.date(date.year, date.month, day=1)
16
+ _lastDay = datetime.date(date.year, date.month, day=_lastDay)
17
+ return _firstDay, _lastDay
18
+
19
+
20
+ def get_day_of_month(num: int, fm=None):
21
+ """
22
+ num: 获取n月以前的第一天和最后一天, num=0时, 返回当月第一天和最后一天
23
+ fm: 日期输出格式
24
+ """
25
+ if not fm:
26
+ fm ='%Y%m%d'
27
+ _today = datetime.date.today()
28
+ months_ago = _today - relativedelta(months=num) # n 月以前的今天
29
+ _, _lastDay = calendar.monthrange(months_ago.year, months_ago.month) # 返回月的第一天的星期和当月总天数
30
+ _firstDay = datetime.date(months_ago.year, months_ago.month, day=1).strftime(fm)
31
+ _lastDay = datetime.date(months_ago.year, months_ago.month, day=_lastDay).strftime(fm)
32
+ return _firstDay, _lastDay
33
+
34
+
35
+ def dates_between(start_date, end_date, fm=None) -> list:
36
+ """
37
+ 获取两个日期之间的所有日期, 返回 list
38
+ fm: 日期输出格式
39
+ """
40
+ if not fm:
41
+ fm ='%Y%m%d'
42
+ start_date = pd.to_datetime(start_date)
43
+ end_date = pd.to_datetime(end_date)
44
+ dates = []
45
+ current_date = start_date
46
+ while current_date <= end_date:
47
+ dates.append(current_date.strftime(fm))
48
+ current_date += datetime.timedelta(days=1)
49
+ return dates
50
+
51
+
52
+ def cover_df(df):
53
+ df.replace([np.inf, -np.inf], '0', inplace=True) # 清理一些非法值
54
+ df.replace(to_replace=['\\N', '-', '--', '', 'nan', 'NAN'], value='0', regex=False, inplace=True) # 替换掉特殊字符
55
+ df.replace(to_replace=[','], value='', regex=True, inplace=True)
56
+ df.replace(to_replace=['="'], value='', regex=True, inplace=True) # ="和"不可以放在一起清洗, 因为有: id=86785565
57
+ df.replace(to_replace=['"'], value='', regex=True, inplace=True)
58
+ cols = df.columns.tolist()
59
+ for col in cols:
60
+ df[col] = df[col].apply(
61
+ lambda x: float(float((str(x).rstrip("%"))) / 100) if re.findall(r'^\d+\.?\d*%$', str(x)) else x)
62
+
63
+ new_col = col.lower()
64
+ new_col = re.sub(r'[()\-,,&~^、 ()\"\'“”=·/。》《><!!`]', '_', new_col, re.IGNORECASE)
65
+ new_col = new_col.replace(')', '')
66
+ new_col = re.sub(r'_{2,}', '_', new_col)
67
+ new_col = re.sub(r'_+$', '', new_col)
68
+ df.rename(columns={col: new_col}, inplace=True)
69
+ df.fillna(0, inplace=True)
70
+ return df
71
+
72
+
73
+ def translate_keys(original_dict:dict, translation_dict:dict) -> dict:
74
+ """
75
+ original_dict键名翻译, 若键存在则返回翻译值,否则返回原键
76
+ """
77
+ return {translation_dict.get(k, k): v for k, v in original_dict.items()}
78
+
79
+
80
+ if __name__ == '__main__':
81
+ pass
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: mdbq
3
- Version: 3.8.7
3
+ Version: 3.8.9
4
4
  Home-page: https://pypi.org/project/mdbq
5
5
  Author: xigua,
6
6
  Author-email: 2587125111@qq.com
@@ -1,7 +1,7 @@
1
1
  mdbq/__init__.py,sha256=Il5Q9ATdX8yXqVxtP_nYqUhExzxPC_qk_WXQ_4h0exg,16
2
- mdbq/__version__.py,sha256=xgAQewNcn3lb29mZiGYsscX0Lf0Dp7ABpyCaiKdp67I,17
2
+ mdbq/__version__.py,sha256=E8rRFwMQu5_V1MLnewKHH2bjyE5z26xpE7uPdYE9lKA,17
3
3
  mdbq/aggregation/__init__.py,sha256=EeDqX2Aml6SPx8363J-v1lz0EcZtgwIBYyCJV6CcEDU,40
4
- mdbq/aggregation/query_data.py,sha256=qvFaPKUjUPVX-bNmmoMULWFFS2kCg-PNQpLuOmEKLMk,185381
4
+ mdbq/aggregation/query_data.py,sha256=-4HWC1HZmgqUAuvcRiHZU4FLtI70nRq_Hp3eXVZTyH8,185843
5
5
  mdbq/bdup/__init__.py,sha256=AkhsGk81SkG1c8FqDH5tRq-8MZmFobVbN60DTyukYTY,28
6
6
  mdbq/bdup/bdup.py,sha256=hJs815hGFwm_X5bP2i9XugG2w2ZY_F0n3-Q0hVpIPPw,4892
7
7
  mdbq/config/__init__.py,sha256=jso1oHcy6cJEfa7udS_9uO5X6kZLoPBF8l3wCYmr5dM,18
@@ -19,6 +19,7 @@ mdbq/mysql/s_query.py,sha256=09Dp7DrVXui6dAI6zFDfrsUOdjPblF_oYUpgqbZMhXg,8757
19
19
  mdbq/mysql/year_month_day.py,sha256=VgewoE2pJxK7ErjfviL_SMTN77ki8GVbTUcao3vFUCE,1523
20
20
  mdbq/other/__init__.py,sha256=jso1oHcy6cJEfa7udS_9uO5X6kZLoPBF8l3wCYmr5dM,18
21
21
  mdbq/other/download_sku_picture.py,sha256=YU8DxKMXbdeE1OOKEA848WVp62jYHw5O4tXTjUdq9H0,44832
22
+ mdbq/other/otk.py,sha256=yU02wmuCtsy4tndlJ8YSaQPxa05ZtNnhc6-dcepFFkQ,3064
22
23
  mdbq/other/porxy.py,sha256=UHfgEyXugogvXgsG68a7QouUCKaohTKKkI4RN-kYSdQ,4961
23
24
  mdbq/other/pov_city.py,sha256=AEOmCOzOwyjHi9LLZWPKi6DUuSC-_M163664I52u9qw,21050
24
25
  mdbq/other/ua_sj.py,sha256=JuVYzc_5QZ9s_oQSrTHVKkQv4S_7-CWx4oIKOARn_9U,22178
@@ -29,7 +30,7 @@ mdbq/redis/__init__.py,sha256=YtgBlVSMDphtpwYX248wGge1x-Ex_mMufz4-8W0XRmA,12
29
30
  mdbq/redis/getredis.py,sha256=Uk8-cOWT0JU1qRyIVqdbYokSLvkDIAfcokmYj1ebw8k,24104
30
31
  mdbq/spider/__init__.py,sha256=RBMFXGy_jd1HXZhngB2T2XTvJqki8P_Fr-pBcwijnew,18
31
32
  mdbq/spider/aikucun.py,sha256=bUjjPjNoW3EL6H89nnBdFEwnWgGuEB2CENuBxcvx0Kw,20284
32
- mdbq-3.8.7.dist-info/METADATA,sha256=9pSdiPkVEyauuRMZcrDjdPHzmTD4RJqMCArXT2sF83I,363
33
- mdbq-3.8.7.dist-info/WHEEL,sha256=jB7zZ3N9hIM9adW7qlTAyycLYW9npaWKLRzaoVcLKcM,91
34
- mdbq-3.8.7.dist-info/top_level.txt,sha256=2FQ-uLnCSB-OwFiWntzmwosW3X2Xqsg0ewh1axsaylA,5
35
- mdbq-3.8.7.dist-info/RECORD,,
33
+ mdbq-3.8.9.dist-info/METADATA,sha256=dt6p97jqoVL81l6Jh4uh8dizVPxsNfnV-y5Tl04GZtA,363
34
+ mdbq-3.8.9.dist-info/WHEEL,sha256=jB7zZ3N9hIM9adW7qlTAyycLYW9npaWKLRzaoVcLKcM,91
35
+ mdbq-3.8.9.dist-info/top_level.txt,sha256=2FQ-uLnCSB-OwFiWntzmwosW3X2Xqsg0ewh1axsaylA,5
36
+ mdbq-3.8.9.dist-info/RECORD,,
File without changes