90 lines
3.5 KiB
Python
90 lines
3.5 KiB
Python
#!/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)
|