forked from pythonstock/stock
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathquarter_job.py
89 lines (76 loc) · 3.49 KB
/
quarter_job.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
#!/usr/local/bin/python3
# -*- coding: utf-8 -*-
import libs.common as common
import sys
import time
import pandas as pd
import tushare as ts
from sqlalchemy.types import NVARCHAR
from sqlalchemy import inspect
import datetime
# 增加一个新quarter列,用来存储季度信息。
def concat_quarter(year, quarter, data_array):
print(len(data_array))
quarter_str = str(year) + str("%02d" % quarter) # 格式化季度数据。2位。
# 增加到列。
quarter_col = pd.DataFrame([quarter_str for _ in range(len(data_array))], columns=["quarter"])
return pd.concat([quarter_col, data_array], axis=1)
#############################基本面数据 http://tushare.org/fundamental.html
def stat_all(tmp_datetime):
# 返回 31 天前的数据,做上个季度数据统计。
tmp_datetime_1month = tmp_datetime + datetime.timedelta(days=-31)
year = int((tmp_datetime_1month).strftime("%Y"))
quarter = int(pd.Timestamp(tmp_datetime_1month).quarter) # 获得上个季度的数据。
print("############ year %d, quarter %d", year, quarter)
# 业绩报告(主表)
data = ts.get_report_data(year, quarter)
# 增加季度字段。
data = concat_quarter(year, quarter, data)
# 处理重复数据,保存最新一条数据。最后一步处理,否则concat有问题。
data = data.drop_duplicates(subset="code", keep="last")
# 插入数据库。
common.insert_db(data, "ts_report_data", False, "`quarter`,`code`")
# 盈利能力
data = ts.get_profit_data(year, quarter)
# 增加季度字段。
data = concat_quarter(year, quarter, data)
# 处理重复数据,保存最新一条数据。
data = data.drop_duplicates(subset="code", keep="last")
# 插入数据库。
common.insert_db(data, "ts_profit_data", False, "`quarter`,`code`")
# 营运能力
data = ts.get_operation_data(year, quarter)
# 增加季度字段。
data = concat_quarter(year, quarter, data)
# 处理重复数据,保存最新一条数据。最后一步处理,否则concat有问题。
data = data.drop_duplicates(subset="code", keep="last")
# 插入数据库。
common.insert_db(data, "ts_operation_data", False, "`quarter`,`code`")
# 成长能力
data = ts.get_growth_data(year, quarter)
# 增加季度字段。
data = concat_quarter(year, quarter, data)
# 处理重复数据,保存最新一条数据。最后一步处理,否则concat有问题。
data = data.drop_duplicates(subset="code", keep="last")
# 插入数据库。
common.insert_db(data, "ts_growth_data", False, "`quarter`,`code`")
# 偿债能力
data = ts.get_debtpaying_data(year, quarter)
# 增加季度字段。
data = concat_quarter(year, quarter, data)
# 处理重复数据,保存最新一条数据。最后一步处理,否则concat有问题。
data = data.drop_duplicates(subset="code", keep="last")
# 插入数据库。
common.insert_db(data, "ts_debtpaying_data", False, "`quarter`,`code`")
# 现金流量
data = ts.get_cashflow_data(year, quarter)
# 增加季度字段。
data = concat_quarter(year, quarter, data)
# 处理重复数据,保存最新一条数据。最后一步处理,否则concat有问题。
data = data.drop_duplicates(subset="code", keep="last")
# 插入数据库。
common.insert_db(data, "ts_cashflow_data", False, "`quarter`,`code`")
# main函数入口
if __name__ == '__main__':
# 使用方法传递。
tmp_datetime = common.run_with_args(stat_all)