mns-scheduler 1.0.4.0__py3-none-any.whl → 1.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.
Potentially problematic release.
This version of mns-scheduler might be problematic. Click here for more details.
- mns_scheduler/concept/clean/ths_concept_clean_api.py +51 -8
- mns_scheduler/zz_task/data_sync_task.py +1 -1
- {mns_scheduler-1.0.4.0.dist-info → mns_scheduler-1.0.4.2.dist-info}/METADATA +1 -1
- {mns_scheduler-1.0.4.0.dist-info → mns_scheduler-1.0.4.2.dist-info}/RECORD +6 -6
- {mns_scheduler-1.0.4.0.dist-info → mns_scheduler-1.0.4.2.dist-info}/WHEEL +0 -0
- {mns_scheduler-1.0.4.0.dist-info → mns_scheduler-1.0.4.2.dist-info}/top_level.txt +0 -0
|
@@ -9,20 +9,63 @@ from mns_common.db.MongodbUtil import MongodbUtil
|
|
|
9
9
|
import pandas as pd
|
|
10
10
|
import mns_common.api.ths.ths_stock_api as ths_stock_api
|
|
11
11
|
import time
|
|
12
|
+
from loguru import logger
|
|
13
|
+
import mns_common.component.company.company_common_service_api as company_common_service_api
|
|
14
|
+
import mns_common.constant.db_name_constant as db_name_constant
|
|
12
15
|
|
|
13
16
|
mongodb_util = MongodbUtil('27017')
|
|
14
17
|
|
|
15
18
|
|
|
16
19
|
# 统计概念数量
|
|
17
20
|
def update_concept_num():
|
|
18
|
-
ths_concept_list = mongodb_util.find_all_data(
|
|
21
|
+
ths_concept_list = mongodb_util.find_all_data(db_name_constant.THS_CONCEPT_LIST)
|
|
19
22
|
for ths_concept_one in ths_concept_list.itertuples():
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
23
|
+
try:
|
|
24
|
+
query = {'concept_code': ths_concept_one.symbol}
|
|
25
|
+
ths_stock_concept_detail_df = (mongodb_util
|
|
26
|
+
.find_query_data(db_name_constant.THS_STOCK_CONCEPT_DETAIL, query))
|
|
27
|
+
concept_count = ths_stock_concept_detail_df.shape[0]
|
|
28
|
+
ths_concept_list_one_df = ths_concept_list.loc[ths_concept_list['symbol'] == ths_concept_one.symbol]
|
|
29
|
+
ths_concept_list_one_df['concept_count'] = concept_count
|
|
30
|
+
|
|
31
|
+
ths_stock_concept_detail_df = ths_stock_concept_detail_df.reset_index(drop=True)
|
|
32
|
+
if 'industry' in ths_stock_concept_detail_df.columns:
|
|
33
|
+
del ths_stock_concept_detail_df['industry']
|
|
34
|
+
|
|
35
|
+
company_info_df = company_common_service_api.get_company_info_industry()
|
|
36
|
+
company_info_df = company_info_df[['_id', 'industry']]
|
|
37
|
+
company_info_df = company_info_df.loc[
|
|
38
|
+
company_info_df['_id'].isin(list(ths_stock_concept_detail_df['symbol']))]
|
|
39
|
+
company_info_df = company_info_df.set_index(['_id'], drop=True)
|
|
40
|
+
|
|
41
|
+
ths_stock_concept_detail_df = ths_stock_concept_detail_df.set_index(['symbol'], drop=False)
|
|
42
|
+
ths_stock_concept_detail_df = pd.merge(ths_stock_concept_detail_df, company_info_df,
|
|
43
|
+
how='outer',
|
|
44
|
+
left_index=True, right_index=True)
|
|
45
|
+
ths_stock_concept_detail_df.dropna(subset=['industry'], axis=0, inplace=True)
|
|
46
|
+
|
|
47
|
+
grouped = ths_stock_concept_detail_df.groupby('industry')
|
|
48
|
+
result_list = grouped.size()
|
|
49
|
+
ths_concept_group = pd.DataFrame(result_list, columns=['number'])
|
|
50
|
+
ths_concept_group['industry'] = ths_concept_group.index
|
|
51
|
+
ths_concept_group = ths_concept_group.sort_values(by=['number'], ascending=False)
|
|
52
|
+
if ths_concept_group.shape[0] >= 2:
|
|
53
|
+
first_relevance_industry = list(ths_concept_group.iloc[0:1]['industry'])[0]
|
|
54
|
+
second_relevance_industry = list(ths_concept_group.iloc[1:2]['industry'])[0]
|
|
55
|
+
else:
|
|
56
|
+
first_relevance_industry = list(ths_concept_group.iloc[0:1]['industry'])[0]
|
|
57
|
+
second_relevance_industry = '无'
|
|
58
|
+
ths_concept_list_one_df['first_relevance_industry'] = first_relevance_industry
|
|
59
|
+
ths_concept_list_one_df['second_relevance_industry'] = second_relevance_industry
|
|
60
|
+
|
|
61
|
+
ths_stock_concept_detail_df['first_relevance_industry'] = first_relevance_industry
|
|
62
|
+
ths_stock_concept_detail_df['second_relevance_industry'] = second_relevance_industry
|
|
63
|
+
|
|
64
|
+
mongodb_util.save_mongo(ths_concept_list_one_df, db_name_constant.THS_CONCEPT_LIST)
|
|
65
|
+
mongodb_util.save_mongo(ths_stock_concept_detail_df, db_name_constant.THS_STOCK_CONCEPT_DETAIL)
|
|
66
|
+
|
|
67
|
+
except BaseException as e:
|
|
68
|
+
logger.error("更新概念信息异常:{},{}", e, ths_concept_one.name)
|
|
26
69
|
|
|
27
70
|
|
|
28
71
|
# 更新空名字
|
|
@@ -58,5 +101,5 @@ def update_null_name():
|
|
|
58
101
|
|
|
59
102
|
|
|
60
103
|
if __name__ == '__main__':
|
|
61
|
-
update_null_name()
|
|
62
104
|
update_concept_num()
|
|
105
|
+
update_null_name()
|
|
@@ -347,7 +347,7 @@ blockingScheduler.add_job(sync_today_trade_k_line_info, 'cron', hour='08', minut
|
|
|
347
347
|
blockingScheduler.add_job(sync_stock_gdfx_free_top_10_one_day, 'cron', hour='08,22', minute='23')
|
|
348
348
|
|
|
349
349
|
# 更新同花顺概念信息
|
|
350
|
-
blockingScheduler.add_job(ths_concept_info_clean, 'cron', hour='9,
|
|
350
|
+
blockingScheduler.add_job(ths_concept_info_clean, 'cron', hour='9,12,20', minute='24')
|
|
351
351
|
|
|
352
352
|
# 更新概念指数下所有股票组成 by 概念代码
|
|
353
353
|
blockingScheduler.add_job(update_one_concept_all_symbol_detail, 'cron', hour='08,18,12', minute='30')
|
|
@@ -15,7 +15,7 @@ mns_scheduler/company_info/company_constant_data.py,sha256=LwyBWLoErAUPXss68ebVj
|
|
|
15
15
|
mns_scheduler/company_info/company_info_sync_api.py,sha256=2sQk197p5qjq2DQlRpVbotSSIN87x43T-RGAtMiXQI4,20332
|
|
16
16
|
mns_scheduler/concept/__init__.py,sha256=QWBdZwBCvQw8aS4hnL9_pg3U3ZiNLUXzlImyy9WhUcI,163
|
|
17
17
|
mns_scheduler/concept/clean/__init__.py,sha256=QWBdZwBCvQw8aS4hnL9_pg3U3ZiNLUXzlImyy9WhUcI,163
|
|
18
|
-
mns_scheduler/concept/clean/ths_concept_clean_api.py,sha256=
|
|
18
|
+
mns_scheduler/concept/clean/ths_concept_clean_api.py,sha256=Pdb5u5qSOVewT-q26S_632BfrjHrVaQUbf3PmXz0OIo,5253
|
|
19
19
|
mns_scheduler/concept/ths/__init__.py,sha256=QWBdZwBCvQw8aS4hnL9_pg3U3ZiNLUXzlImyy9WhUcI,163
|
|
20
20
|
mns_scheduler/concept/ths/common/__init__.py,sha256=QWBdZwBCvQw8aS4hnL9_pg3U3ZiNLUXzlImyy9WhUcI,163
|
|
21
21
|
mns_scheduler/concept/ths/common/ths_concept_sync_common_api.py,sha256=8KOz1AlUFmo0hdlkOuc5rDLKIeYkRK3-ooA5Z_wJX10,6724
|
|
@@ -63,9 +63,9 @@ mns_scheduler/zt/today_high_chg_pool_sync_api.py,sha256=G6FXMH7HnvhyMFoE-RszggkB
|
|
|
63
63
|
mns_scheduler/zt/zt_five_boards_sync_api.py,sha256=HfjPHKD99fU9c37kSenEX2_qNvFAjQGgy8ERuacSxwk,10916
|
|
64
64
|
mns_scheduler/zt/zt_pool_sync_api.py,sha256=tzSCnqAelV7MQBZ3KcpOQQHNYnjFnmvoDFcapBpU_NA,7534
|
|
65
65
|
mns_scheduler/zz_task/__init__.py,sha256=QWBdZwBCvQw8aS4hnL9_pg3U3ZiNLUXzlImyy9WhUcI,163
|
|
66
|
-
mns_scheduler/zz_task/data_sync_task.py,sha256=
|
|
66
|
+
mns_scheduler/zz_task/data_sync_task.py,sha256=jYYED_j4F3jwPnQiRM9kaVzTA-LdrCIBezEPZFESr-M,15511
|
|
67
67
|
mns_scheduler/zz_task/sync_realtime_quotes_task.py,sha256=DN3bq2XCDZC-PHlbD2NTog48bR44EruIEc2QVGKg7Tk,932
|
|
68
|
-
mns_scheduler-1.0.4.
|
|
69
|
-
mns_scheduler-1.0.4.
|
|
70
|
-
mns_scheduler-1.0.4.
|
|
71
|
-
mns_scheduler-1.0.4.
|
|
68
|
+
mns_scheduler-1.0.4.2.dist-info/METADATA,sha256=szaz1VXnlh9rwKYil44ufAby6-RkjsALcpNOEq-TxQs,64
|
|
69
|
+
mns_scheduler-1.0.4.2.dist-info/WHEEL,sha256=oiQVh_5PnQM0E3gPdiz09WCNmwiHDMaGer_elqB3coM,92
|
|
70
|
+
mns_scheduler-1.0.4.2.dist-info/top_level.txt,sha256=PXQDFBGR1pWmsUbH5yiLAh71P5HZODTRED0zJ8CCgOc,14
|
|
71
|
+
mns_scheduler-1.0.4.2.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|