fa45d8aa5f
- health_checklist.json: 192.168.1.122→node122
- ocr_client.py: docstring IP→node122
- docs/market-data-requirements.md: IP→node122
- 所有API调用通过ProxyHandler({})绕过系统代理
Privoxy对node122:18003返回500,直连正常
3962 lines
146 KiB
Python
3962 lines
146 KiB
Python
#!/usr/bin/env python
|
||
# -*- coding:utf-8 -*-
|
||
"""
|
||
Date: 2025/11/12 15:20
|
||
Desc: 宏观数据-中国
|
||
"""
|
||
|
||
import datetime
|
||
import json
|
||
import math
|
||
import ssl
|
||
import time
|
||
|
||
import pandas as pd
|
||
import requests
|
||
from requests.adapters import HTTPAdapter
|
||
from urllib3.poolmanager import PoolManager
|
||
|
||
from akshare.economic.cons import (
|
||
JS_CHINA_ENERGY_DAILY_URL,
|
||
)
|
||
from akshare.utils import demjson
|
||
from akshare.utils.tqdm import get_tqdm
|
||
|
||
|
||
class TLSAdapter(HTTPAdapter):
|
||
def init_poolmanager(self, connections, maxsize, block=False):
|
||
ctx = ssl.create_default_context()
|
||
# 降低安全级别以兼容旧服务器
|
||
ctx.set_ciphers("DEFAULT@SECLEVEL=1")
|
||
# 禁用不安全的协议
|
||
ctx.options |= ssl.OP_NO_SSLv2
|
||
ctx.options |= ssl.OP_NO_SSLv3
|
||
# 指定使用 TLSv1.2
|
||
self.poolmanager = PoolManager(
|
||
num_pools=connections,
|
||
maxsize=maxsize,
|
||
block=block,
|
||
ssl_version=ssl.PROTOCOL_TLSv1_2,
|
||
ssl_context=ctx,
|
||
)
|
||
|
||
|
||
def __macro_china_base_func(symbol: str, params: dict) -> pd.DataFrame:
|
||
"""
|
||
金十数据中心-经济指标-美国-基础函数
|
||
https://datacenter.jin10.com/economic
|
||
:return: 美国经济指标数据
|
||
:rtype: pandas.DataFrame
|
||
"""
|
||
import warnings
|
||
|
||
warnings.filterwarnings(action="ignore", category=FutureWarning)
|
||
headers = {
|
||
"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
|
||
"Chrome/107.0.0.0 Safari/537.36",
|
||
"x-app-id": "rU6QIu7JHe2gOUeR",
|
||
"x-csrf-token": "x-csrf-token",
|
||
"x-version": "1.0.0",
|
||
}
|
||
url = "https://datacenter-api.jin10.com/reports/list_v2"
|
||
params = params
|
||
big_df = pd.DataFrame()
|
||
while True:
|
||
r = requests.get(url, params=params, headers=headers)
|
||
data_json = r.json()
|
||
if not data_json["data"]["values"]:
|
||
break
|
||
temp_df = pd.DataFrame(data_json["data"]["values"])
|
||
big_df = pd.concat(objs=[big_df, temp_df], ignore_index=True)
|
||
last_date_str = temp_df.iat[-1, 0]
|
||
last_date_str = (
|
||
(
|
||
datetime.datetime.strptime(last_date_str, "%Y-%m-%d")
|
||
- datetime.timedelta(days=1)
|
||
)
|
||
.date()
|
||
.isoformat()
|
||
)
|
||
params.update({"max_date": f"{last_date_str}"})
|
||
big_df.columns = [
|
||
"日期",
|
||
"今值",
|
||
"预测值",
|
||
"前值",
|
||
]
|
||
big_df["商品"] = symbol
|
||
big_df = big_df[
|
||
[
|
||
"商品",
|
||
"日期",
|
||
"今值",
|
||
"预测值",
|
||
"前值",
|
||
]
|
||
]
|
||
big_df["日期"] = pd.to_datetime(big_df["日期"], errors="coerce").dt.date
|
||
big_df["今值"] = pd.to_numeric(big_df["今值"], errors="coerce")
|
||
big_df["预测值"] = pd.to_numeric(big_df["预测值"], errors="coerce")
|
||
big_df["前值"] = pd.to_numeric(big_df["前值"], errors="coerce")
|
||
big_df.sort_values(["日期"], inplace=True)
|
||
big_df.reset_index(inplace=True, drop=True)
|
||
return big_df
|
||
|
||
|
||
# 企业商品价格指数
|
||
def macro_china_qyspjg() -> pd.DataFrame:
|
||
"""
|
||
东方财富-经济数据一览-中国-企业商品价格指数
|
||
https://data.eastmoney.com/cjsj/qyspjg.html
|
||
:return: 企业商品价格指数
|
||
:rtype: pandas.DataFrame
|
||
"""
|
||
url = "https://datacenter-web.eastmoney.com/api/data/v1/get"
|
||
params = {
|
||
"columns": "REPORT_DATE,TIME,BASE,BASE_SAME,BASE_SEQUENTIAL,FARM_BASE,FARM_BASE_SAME,"
|
||
"FARM_BASE_SEQUENTIAL,MINERAL_BASE,MINERAL_BASE_SAME,MINERAL_BASE_SEQUENTIAL,"
|
||
"ENERGY_BASE,ENERGY_BASE_SAME,ENERGY_BASE_SEQUENTIAL",
|
||
"pageNumber": "1",
|
||
"pageSize": "2000",
|
||
"sortColumns": "REPORT_DATE",
|
||
"sortTypes": "-1",
|
||
"source": "WEB",
|
||
"client": "WEB",
|
||
"reportName": "RPT_ECONOMY_GOODS_INDEX",
|
||
"p": "1",
|
||
"pageNo": "1",
|
||
"pageNum": "1",
|
||
}
|
||
r = requests.get(url, params=params)
|
||
data_json = r.json()
|
||
temp_df = pd.DataFrame(data_json["result"]["data"])
|
||
temp_df.rename(
|
||
columns={
|
||
"REPORT_DATE": "-",
|
||
"TIME": "月份",
|
||
"BASE": "总指数-指数值",
|
||
"BASE_SAME": "总指数-同比增长",
|
||
"BASE_SEQUENTIAL": "总指数-环比增长",
|
||
"FARM_BASE": "农产品-指数值",
|
||
"FARM_BASE_SAME": "农产品-同比增长",
|
||
"FARM_BASE_SEQUENTIAL": "农产品-环比增长",
|
||
"MINERAL_BASE": "矿产品-指数值",
|
||
"MINERAL_BASE_SAME": "矿产品-同比增长",
|
||
"MINERAL_BASE_SEQUENTIAL": "矿产品-环比增长",
|
||
"ENERGY_BASE": "煤油电-指数值",
|
||
"ENERGY_BASE_SAME": "煤油电-同比增长",
|
||
"ENERGY_BASE_SEQUENTIAL": "煤油电-环比增长",
|
||
},
|
||
inplace=True,
|
||
)
|
||
|
||
temp_df = temp_df[
|
||
[
|
||
"月份",
|
||
"总指数-指数值",
|
||
"总指数-同比增长",
|
||
"总指数-环比增长",
|
||
"农产品-指数值",
|
||
"农产品-同比增长",
|
||
"农产品-环比增长",
|
||
"矿产品-指数值",
|
||
"矿产品-同比增长",
|
||
"矿产品-环比增长",
|
||
"煤油电-指数值",
|
||
"煤油电-同比增长",
|
||
"煤油电-环比增长",
|
||
]
|
||
]
|
||
temp_df["总指数-指数值"] = pd.to_numeric(temp_df["总指数-指数值"], errors="coerce")
|
||
temp_df["总指数-同比增长"] = pd.to_numeric(
|
||
temp_df["总指数-同比增长"], errors="coerce"
|
||
)
|
||
temp_df["总指数-环比增长"] = pd.to_numeric(
|
||
temp_df["总指数-环比增长"], errors="coerce"
|
||
)
|
||
temp_df["农产品-指数值"] = pd.to_numeric(temp_df["农产品-指数值"], errors="coerce")
|
||
temp_df["农产品-同比增长"] = pd.to_numeric(
|
||
temp_df["农产品-同比增长"], errors="coerce"
|
||
)
|
||
temp_df["农产品-环比增长"] = pd.to_numeric(
|
||
temp_df["农产品-环比增长"], errors="coerce"
|
||
)
|
||
temp_df["矿产品-指数值"] = pd.to_numeric(temp_df["矿产品-指数值"], errors="coerce")
|
||
temp_df["矿产品-同比增长"] = pd.to_numeric(
|
||
temp_df["矿产品-同比增长"], errors="coerce"
|
||
)
|
||
temp_df["矿产品-环比增长"] = pd.to_numeric(
|
||
temp_df["矿产品-环比增长"], errors="coerce"
|
||
)
|
||
temp_df["煤油电-指数值"] = pd.to_numeric(temp_df["煤油电-指数值"], errors="coerce")
|
||
temp_df["煤油电-同比增长"] = pd.to_numeric(
|
||
temp_df["煤油电-同比增长"], errors="coerce"
|
||
)
|
||
temp_df["煤油电-环比增长"] = pd.to_numeric(
|
||
temp_df["煤油电-环比增长"], errors="coerce"
|
||
)
|
||
return temp_df
|
||
|
||
|
||
# 外商直接投资数据
|
||
def macro_china_fdi() -> pd.DataFrame:
|
||
"""
|
||
东方财富-经济数据一览-中国-外商直接投资数据
|
||
https://data.eastmoney.com/cjsj/fdi.html
|
||
:return: 外商直接投资数据
|
||
:rtype: pandas.DataFrame
|
||
"""
|
||
url = "https://datacenter-web.eastmoney.com/api/data/v1/get"
|
||
params = {
|
||
"columns": "REPORT_DATE,TIME,ACTUAL_FOREIGN,ACTUAL_FOREIGN_SAME,ACTUAL_FOREIGN_SEQUENTIAL,"
|
||
"ACTUAL_FOREIGN_ACCUMULATE,FOREIGN_ACCUMULATE_SAME",
|
||
"pageNumber": "1",
|
||
"pageSize": "2000",
|
||
"sortColumns": "REPORT_DATE",
|
||
"sortTypes": "-1",
|
||
"source": "WEB",
|
||
"client": "WEB",
|
||
"reportName": "RPT_ECONOMY_FDI",
|
||
"p": "1",
|
||
"pageNo": "1",
|
||
"pageNum": "1",
|
||
}
|
||
r = requests.get(url, params=params)
|
||
data_json = r.json()
|
||
temp_df = pd.DataFrame(data_json["result"]["data"])
|
||
|
||
temp_df.columns = [
|
||
"-",
|
||
"月份",
|
||
"当月",
|
||
"当月-同比增长",
|
||
"当月-环比增长",
|
||
"累计",
|
||
"累计-同比增长",
|
||
]
|
||
temp_df = temp_df[
|
||
[
|
||
"月份",
|
||
"当月",
|
||
"当月-同比增长",
|
||
"当月-环比增长",
|
||
"累计",
|
||
"累计-同比增长",
|
||
]
|
||
]
|
||
temp_df["当月"] = pd.to_numeric(temp_df["当月"], errors="coerce")
|
||
temp_df["当月-同比增长"] = pd.to_numeric(temp_df["当月-同比增长"], errors="coerce")
|
||
temp_df["当月-环比增长"] = pd.to_numeric(temp_df["当月-环比增长"], errors="coerce")
|
||
temp_df["累计"] = pd.to_numeric(temp_df["累计"], errors="coerce")
|
||
temp_df["累计-同比增长"] = pd.to_numeric(temp_df["累计-同比增长"], errors="coerce")
|
||
temp_df.sort_values(["月份"], ignore_index=True, inplace=True)
|
||
return temp_df
|
||
|
||
|
||
# 中国社会融资规模数据
|
||
def macro_china_shrzgm() -> pd.DataFrame:
|
||
"""
|
||
商务数据中心-国内贸易-社会融资规模增量统计
|
||
https://data.mofcom.gov.cn/gnmy/shrzgm.shtml
|
||
:return: 社会融资规模增量统计
|
||
:rtype: pandas.DataFrame
|
||
"""
|
||
session = requests.Session()
|
||
session.mount(prefix="https://", adapter=TLSAdapter())
|
||
url = "https://data.mofcom.gov.cn/datamofcom/front/gnmy/shrzgmQuery"
|
||
r = session.post(url)
|
||
data_json = r.json()
|
||
temp_df = pd.DataFrame(data_json)
|
||
temp_df.columns = [
|
||
"月份",
|
||
"其中-未贴现银行承兑汇票",
|
||
"其中-委托贷款",
|
||
"其中-委托贷款外币贷款",
|
||
"其中-人民币贷款",
|
||
"其中-企业债券",
|
||
"社会融资规模增量",
|
||
"其中-非金融企业境内股票融资",
|
||
"其中-信托贷款",
|
||
]
|
||
temp_df = temp_df[
|
||
[
|
||
"月份",
|
||
"社会融资规模增量",
|
||
"其中-人民币贷款",
|
||
"其中-委托贷款外币贷款",
|
||
"其中-委托贷款",
|
||
"其中-信托贷款",
|
||
"其中-未贴现银行承兑汇票",
|
||
"其中-企业债券",
|
||
"其中-非金融企业境内股票融资",
|
||
]
|
||
]
|
||
temp_df["社会融资规模增量"] = pd.to_numeric(
|
||
temp_df["社会融资规模增量"], errors="coerce"
|
||
)
|
||
temp_df["其中-人民币贷款"] = pd.to_numeric(
|
||
temp_df["其中-人民币贷款"], errors="coerce"
|
||
)
|
||
temp_df["其中-委托贷款外币贷款"] = pd.to_numeric(
|
||
temp_df["其中-委托贷款外币贷款"], errors="coerce"
|
||
)
|
||
temp_df["其中-委托贷款"] = pd.to_numeric(temp_df["其中-委托贷款"], errors="coerce")
|
||
temp_df["其中-信托贷款"] = pd.to_numeric(temp_df["其中-信托贷款"], errors="coerce")
|
||
temp_df["其中-未贴现银行承兑汇票"] = pd.to_numeric(
|
||
temp_df["其中-未贴现银行承兑汇票"], errors="coerce"
|
||
)
|
||
temp_df["其中-企业债券"] = pd.to_numeric(temp_df["其中-企业债券"], errors="coerce")
|
||
temp_df["其中-非金融企业境内股票融资"] = pd.to_numeric(
|
||
temp_df["其中-非金融企业境内股票融资"], errors="coerce"
|
||
)
|
||
temp_df.sort_values(["月份"], inplace=True)
|
||
temp_df.reset_index(drop=True, inplace=True)
|
||
return temp_df
|
||
|
||
|
||
def macro_china_urban_unemployment() -> pd.DataFrame:
|
||
"""
|
||
国家统计局-月度数据-城镇调查失业率
|
||
https://data.stats.gov.cn/dg/website/page.html#/pc/national/monthData
|
||
:return: 城镇调查失业率
|
||
:rtype: pandas.DataFrame
|
||
"""
|
||
url = "https://data.stats.gov.cn/dg/website/publicrelease/web/external/getEsDataByCidAndDt"
|
||
headers = {
|
||
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36",
|
||
"Content-Type": "application/json",
|
||
}
|
||
payload = {
|
||
"cid": "ee3b7046b390415b9b7745e3d16f6052",
|
||
"indicatorIds": [
|
||
"3888eac6062945a79c8a27e5f13d4953",
|
||
"1d550f3ec77a463bb607d4a3427e1465",
|
||
"1c1b2d9ab24048bfadc5c7d9510dc663",
|
||
"3921da310de24f14b6457c235657baf9",
|
||
"bd6da1abb26046c2acb38aa701d90e86",
|
||
"7bc1bd5daeac48ae8bb413c34ece1d08",
|
||
"c03a36c9562246b6bc8aab010951ef1c",
|
||
"1061f276ce354907b0b9900c266cf851",
|
||
"40ab91b1ef4948e89633c5c7f55b9713"
|
||
],
|
||
"daCatalogId": "",
|
||
"das": [
|
||
{
|
||
"text": "全国",
|
||
"value": "000000000000"
|
||
}
|
||
],
|
||
"dts": ["199001MM-203601MM"],
|
||
"showType": "1",
|
||
"rootId": "fc982599aa684be7969d7b90b1bd0e84"
|
||
}
|
||
r = requests.post(url, json=payload, headers=headers, timeout=10)
|
||
data_json = r.json()
|
||
data_list = []
|
||
for month_item in data_json['data']:
|
||
raw_month = month_item['name']
|
||
year_part = raw_month.split('年')[0]
|
||
month_part = raw_month.split('年')[1].replace('月', '')
|
||
month_clean = year_part + month_part.zfill(2)
|
||
for value_item in month_item['values']:
|
||
if value_item['_name'] == '城镇调查失业率':
|
||
rate = value_item['value']
|
||
if rate:
|
||
indicator_clean = value_item['i_showname'].replace(' (%)', '')
|
||
data_list.append([month_clean, indicator_clean, rate])
|
||
temp_df = pd.DataFrame(data_list, columns=['date', 'item', 'value'])
|
||
temp_df.sort_values(by=['date'], ascending=True, inplace=True)
|
||
temp_df.reset_index(drop=True, inplace=True)
|
||
return temp_df
|
||
|
||
|
||
# 金十数据中心-经济指标-中国-国民经济运行状况-经济状况-中国GDP年率报告
|
||
def macro_china_gdp_yearly() -> pd.DataFrame:
|
||
"""
|
||
金十数据中心-中国 GDP 年率报告, 数据区间从 20110120-至今
|
||
https://datacenter.jin10.com/reportType/dc_chinese_gdp_yoy
|
||
:return: 中国 GDP 年率报告
|
||
:rtype: pandas.DataFrame
|
||
"""
|
||
t = time.time()
|
||
params = {
|
||
"max_date": "",
|
||
"category": "ec",
|
||
"attr_id": "57",
|
||
"_": str(int(round(t * 1000))),
|
||
}
|
||
temp_df = __macro_china_base_func(symbol="中国GDP年率报告", params=params)
|
||
return temp_df
|
||
|
||
|
||
# 金十数据中心-经济指标-中国-国民经济运行状况-物价水平-中国CPI年率报告
|
||
def macro_china_cpi_yearly() -> pd.DataFrame:
|
||
"""
|
||
中国年度 CPI 数据, 数据区间从 19860201-至今
|
||
https://datacenter.jin10.com/reportType/dc_chinese_cpi_yoy
|
||
:return: 中国年度 CPI 数据
|
||
:rtype: pandas.DataFrame
|
||
"""
|
||
t = time.time()
|
||
params = {
|
||
"max_date": "",
|
||
"category": "ec",
|
||
"attr_id": "56",
|
||
"_": str(int(round(t * 1000))),
|
||
}
|
||
temp_df = __macro_china_base_func(symbol="中国CPI年率报告", params=params)
|
||
return temp_df
|
||
|
||
|
||
# 金十数据中心-经济指标-中国-国民经济运行状况-物价水平-中国CPI月率报告
|
||
def macro_china_cpi_monthly() -> pd.DataFrame:
|
||
"""
|
||
中国月度 CPI 数据, 数据区间从 19960201-至今
|
||
https://datacenter.jin10.com/reportType/dc_chinese_cpi_mom
|
||
:return: 中国月度 CPI 数据
|
||
:rtype: pandas.DataFrame
|
||
"""
|
||
t = time.time()
|
||
params = {
|
||
"max_date": "",
|
||
"category": "ec",
|
||
"attr_id": "72",
|
||
"_": str(int(round(t * 1000))),
|
||
}
|
||
temp_df = __macro_china_base_func(symbol="中国CPI月率报告", params=params)
|
||
return temp_df
|
||
|
||
|
||
# 金十数据中心-经济指标-中国-国民经济运行状况-物价水平-中国PPI年率报告
|
||
def macro_china_ppi_yearly() -> pd.DataFrame:
|
||
"""
|
||
中国年度 PPI 数据, 数据区间从 19950801-至今
|
||
https://datacenter.jin10.com/reportType/dc_chinese_ppi_yoy
|
||
:return: 中国年度 PPI 数据
|
||
:rtype: pandas.DataFrame
|
||
"""
|
||
t = time.time()
|
||
params = {
|
||
"max_date": "",
|
||
"category": "ec",
|
||
"attr_id": "60",
|
||
"_": str(int(round(t * 1000))),
|
||
}
|
||
temp_df = __macro_china_base_func(symbol="中国PPI年率报告", params=params)
|
||
return temp_df
|
||
|
||
|
||
# 金十数据中心-经济指标-中国-贸易状况-以美元计算出口年率报告
|
||
def macro_china_exports_yoy() -> pd.DataFrame:
|
||
"""
|
||
中国以美元计算出口年率报告, 数据区间从 19820201-至今
|
||
https://datacenter.jin10.com/reportType/dc_chinese_exports_yoy
|
||
:return: 中国以美元计算出口年率报告
|
||
:rtype: pandas.DataFrame
|
||
"""
|
||
t = time.time()
|
||
params = {
|
||
"max_date": "",
|
||
"category": "ec",
|
||
"attr_id": "66",
|
||
"_": str(int(round(t * 1000))),
|
||
}
|
||
temp_df = __macro_china_base_func(
|
||
symbol="中国以美元计算出口年率报告", params=params
|
||
)
|
||
return temp_df
|
||
|
||
|
||
# 金十数据中心-经济指标-中国-贸易状况-以美元计算进口年率
|
||
def macro_china_imports_yoy() -> pd.DataFrame:
|
||
"""
|
||
中国以美元计算进口年率报告, 数据区间从 19960201-至今
|
||
https://datacenter.jin10.com/reportType/dc_chinese_imports_yoy
|
||
https://cdn.jin10.com/dc/reports/dc_chinese_imports_yoy_all.js?v=1578754588
|
||
:return: 中国以美元计算进口年率报告
|
||
:rtype: pandas.DataFrame
|
||
"""
|
||
t = time.time()
|
||
params = {
|
||
"max_date": "",
|
||
"category": "ec",
|
||
"attr_id": "77",
|
||
"_": str(int(round(t * 1000))),
|
||
}
|
||
temp_df = __macro_china_base_func(
|
||
symbol="中国以美元计算进口年率报告", params=params
|
||
)
|
||
return temp_df
|
||
|
||
|
||
# 金十数据中心-经济指标-中国-贸易状况-以美元计算贸易帐(亿美元)
|
||
def macro_china_trade_balance() -> pd.DataFrame:
|
||
"""
|
||
中国以美元计算贸易帐报告, 数据区间从 19810201-至今
|
||
https://datacenter.jin10.com/reportType/dc_chinese_trade_balance
|
||
https://cdn.jin10.com/dc/reports/dc_chinese_trade_balance_all.js?v=1578754677
|
||
:return: 中国以美元计算贸易帐报告
|
||
:rtype: pandas.DataFrame
|
||
"""
|
||
t = time.time()
|
||
params = {
|
||
"max_date": "",
|
||
"category": "ec",
|
||
"attr_id": "61",
|
||
"_": str(int(round(t * 1000))),
|
||
}
|
||
temp_df = __macro_china_base_func(symbol="中国以美元计算贸易帐报告", params=params)
|
||
return temp_df
|
||
|
||
|
||
# 金十数据中心-经济指标-中国-产业指标-规模以上工业增加值年率
|
||
def macro_china_industrial_production_yoy() -> pd.DataFrame:
|
||
"""
|
||
中国规模以上工业增加值年率报告, 数据区间从19900301-至今
|
||
https://datacenter.jin10.com/reportType/dc_chinese_industrial_production_yoy
|
||
https://cdn.jin10.com/dc/reports/dc_chinese_industrial_production_yoy_all.js?v=1578754779
|
||
:return: 中国规模以上工业增加值年率报告
|
||
:rtype: pandas.DataFrame
|
||
"""
|
||
t = time.time()
|
||
params = {
|
||
"max_date": "",
|
||
"category": "ec",
|
||
"attr_id": "58",
|
||
"_": str(int(round(t * 1000))),
|
||
}
|
||
temp_df = __macro_china_base_func(
|
||
symbol="中国规模以上工业增加值年率报告", params=params
|
||
)
|
||
return temp_df
|
||
|
||
|
||
# 金十数据中心-经济指标-中国-产业指标-官方制造业PMI
|
||
def macro_china_pmi_yearly() -> pd.DataFrame:
|
||
"""
|
||
中国年度 PMI 数据, 数据区间从 20050201-至今
|
||
https://datacenter.jin10.com/reportType/dc_chinese_manufacturing_pmi
|
||
:return: 中国年度 PMI 数据
|
||
:return: pandas.DataFrame
|
||
"""
|
||
t = time.time()
|
||
params = {
|
||
"category": "ec",
|
||
"attr_id": "65",
|
||
"max_date": "",
|
||
"_": str(int(round(t * 1000))),
|
||
}
|
||
temp_df = __macro_china_base_func(symbol="中国官方制造业PMI", params=params)
|
||
return temp_df
|
||
|
||
|
||
# 金十数据中心-经济指标-中国-产业指标-财新制造业PMI终值
|
||
def macro_china_cx_pmi_yearly() -> pd.DataFrame:
|
||
"""
|
||
中国年度财新 PMI 数据, 数据区间从 20120120-至今
|
||
https://datacenter.jin10.com/reportType/dc_chinese_caixin_manufacturing_pmi
|
||
:return: 中国年度财新 PMI 数据
|
||
:return: pandas.DataFrame
|
||
"""
|
||
t = time.time()
|
||
params = {
|
||
"max_date": "",
|
||
"category": "ec",
|
||
"attr_id": "73",
|
||
"_": str(int(round(t * 1000))),
|
||
}
|
||
temp_df = __macro_china_base_func(symbol="中国财新制造业PMI终值报告", params=params)
|
||
return temp_df
|
||
|
||
|
||
# 金十数据中心-经济指标-中国-产业指标-财新服务业PMI
|
||
def macro_china_cx_services_pmi_yearly() -> pd.DataFrame:
|
||
"""
|
||
中国财新服务业PMI报告, 数据区间从 20120405-至今
|
||
https://datacenter.jin10.com/reportType/dc_chinese_caixin_services_pmi
|
||
https://cdn.jin10.com/dc/reports/dc_chinese_caixin_services_pmi_all.js?v=1578818109
|
||
:return: pandas.DataFrame
|
||
"""
|
||
t = time.time()
|
||
params = {
|
||
"max_date": "",
|
||
"category": "ec",
|
||
"attr_id": "67",
|
||
"_": str(int(round(t * 1000))),
|
||
}
|
||
temp_df = __macro_china_base_func(symbol="中国财新服务业PMI报告", params=params)
|
||
return temp_df
|
||
|
||
|
||
# 金十数据中心-经济指标-中国-产业指标-中国官方非制造业PMI
|
||
def macro_china_non_man_pmi() -> pd.DataFrame:
|
||
"""
|
||
中国官方非制造业 PMI, 数据区间从 20160101-至今
|
||
https://datacenter.jin10.com/reportType/dc_chinese_non_manufacturing_pmi
|
||
:return: 中国官方非制造业 PMI
|
||
:return: pandas.DataFrame
|
||
"""
|
||
t = time.time()
|
||
params = {
|
||
"max_date": "",
|
||
"category": "ec",
|
||
"attr_id": "75",
|
||
"_": str(int(round(t * 1000))),
|
||
}
|
||
temp_df = __macro_china_base_func(symbol="中国官方非制造业PMI报告", params=params)
|
||
return temp_df
|
||
|
||
|
||
# 金十数据中心-经济指标-中国-金融指标-外汇储备(亿美元)
|
||
def macro_china_fx_reserves_yearly() -> pd.DataFrame:
|
||
"""
|
||
中国年度外汇储备数据, 数据区间从 20140115-至今
|
||
https://datacenter.jin10.com/reportType/dc_chinese_fx_reserves
|
||
:return: 中国年度外汇储备数据
|
||
:return: pandas.DataFrame
|
||
"""
|
||
t = time.time()
|
||
params = {
|
||
"max_date": "",
|
||
"category": "ec",
|
||
"attr_id": "76",
|
||
"_": str(int(round(t * 1000))),
|
||
}
|
||
temp_df = __macro_china_base_func(symbol="中国外汇储备报告", params=params)
|
||
return temp_df
|
||
|
||
|
||
# 金十数据中心-经济指标-中国-金融指标-M2货币供应年率
|
||
def macro_china_m2_yearly() -> pd.DataFrame:
|
||
"""
|
||
中国年度 M2 数据, 数据区间从 19980201-至今
|
||
https://datacenter.jin10.com/reportType/dc_chinese_m2_money_supply_yoy
|
||
:return: 中国年度 M2 数据
|
||
:return: pandas.DataFrame
|
||
"""
|
||
t = time.time()
|
||
params = {
|
||
"max_date": "",
|
||
"category": "ec",
|
||
"attr_id": "59",
|
||
"_": str(int(round(t * 1000))),
|
||
}
|
||
temp_df = __macro_china_base_func(symbol="中国M2货币供应年率报告", params=params)
|
||
return temp_df
|
||
|
||
|
||
# 金十数据中心-经济指标-中国-金融指标-上海银行业同业拆借报告
|
||
def macro_china_shibor_all() -> pd.DataFrame:
|
||
"""
|
||
上海银行业同业拆借报告, 数据区间从20170317-至今
|
||
https://datacenter.jin10.com/reportType/dc_shibor
|
||
https://cdn.jin10.com/dc/reports/dc_shibor_all.js?v=1578755058
|
||
:return: 上海银行业同业拆借报告-今值(%)
|
||
:rtype: pandas.DataFrame
|
||
"""
|
||
import numpy as np
|
||
|
||
t = time.time()
|
||
params = {"_": t}
|
||
res = requests.get(
|
||
url="https://cdn.jin10.com/data_center/reports/il_1.json", params=params
|
||
)
|
||
json_data = res.json()
|
||
temp_df = pd.DataFrame(json_data["values"]).T
|
||
big_df = pd.DataFrame()
|
||
temp_df.fillna(value="--", inplace=True)
|
||
big_df["O/N-定价"] = temp_df["O/N"].apply(lambda x: x[0])
|
||
big_df["O/N-涨跌幅"] = temp_df["O/N"].apply(lambda x: x[1])
|
||
big_df["1W-定价"] = temp_df["1W"].apply(lambda x: x[0])
|
||
big_df["1W-涨跌幅"] = temp_df["1W"].apply(lambda x: x[1])
|
||
big_df["2W-定价"] = temp_df["2W"].apply(lambda x: x[0])
|
||
big_df["2W-涨跌幅"] = temp_df["2W"].apply(lambda x: x[1])
|
||
big_df["1M-定价"] = temp_df["1M"].apply(lambda x: x[0])
|
||
big_df["1M-涨跌幅"] = temp_df["1M"].apply(lambda x: x[1])
|
||
big_df["3M-定价"] = temp_df["3M"].apply(lambda x: x[0])
|
||
big_df["3M-涨跌幅"] = temp_df["3M"].apply(lambda x: x[1])
|
||
big_df["6M-定价"] = temp_df["6M"].apply(lambda x: x[0])
|
||
big_df["6M-涨跌幅"] = temp_df["6M"].apply(lambda x: x[1])
|
||
big_df["9M-定价"] = temp_df["9M"].apply(lambda x: x[0])
|
||
big_df["9M-涨跌幅"] = temp_df["9M"].apply(lambda x: x[1])
|
||
big_df["1Y-定价"] = temp_df["1Y"].apply(lambda x: x[0])
|
||
big_df["1Y-涨跌幅"] = temp_df["1Y"].apply(lambda x: x[1])
|
||
big_df = big_df.apply(lambda x: x.replace("-", np.nan))
|
||
big_df = big_df.apply(lambda x: x.replace([None], np.nan))
|
||
for item in big_df.columns:
|
||
big_df[item] = pd.to_numeric(big_df[item], errors="coerce")
|
||
big_df.sort_index(inplace=True)
|
||
big_df.reset_index(inplace=True)
|
||
big_df.rename(columns={"index": "日期"}, inplace=True)
|
||
return big_df
|
||
|
||
|
||
# 金十数据中心-经济指标-中国-金融指标-人民币香港银行同业拆息
|
||
def macro_china_hk_market_info() -> pd.DataFrame:
|
||
"""
|
||
香港同业拆借报告, 数据区间从 20170320-至今
|
||
https://datacenter.jin10.com/reportType/dc_hk_market_info
|
||
https://cdn.jin10.com/dc/reports/dc_hk_market_info_all.js?v=1578755471
|
||
:return: 香港同业拆借报告-今值(%)
|
||
:rtype: pandas.DataFrame
|
||
"""
|
||
import numpy as np
|
||
|
||
t = time.time()
|
||
params = {"_": t}
|
||
res = requests.get(
|
||
url="https://cdn.jin10.com/data_center/reports/il_2.json", params=params
|
||
)
|
||
json_data = res.json()
|
||
temp_df = pd.DataFrame(json_data["values"]).T
|
||
big_df = pd.DataFrame()
|
||
temp_df.fillna(value="--", inplace=True)
|
||
big_df["1W-定价"] = temp_df["1W"].apply(lambda x: x[0])
|
||
big_df["1W-涨跌幅"] = temp_df["1W"].apply(lambda x: x[1])
|
||
big_df["2W-定价"] = temp_df["2W"].apply(lambda x: x[0])
|
||
big_df["2W-涨跌幅"] = temp_df["2W"].apply(lambda x: x[1])
|
||
big_df["1M-定价"] = temp_df["1M"].apply(lambda x: x[0])
|
||
big_df["1M-涨跌幅"] = temp_df["1M"].apply(lambda x: x[1])
|
||
big_df["3M-定价"] = temp_df["3M"].apply(lambda x: x[0])
|
||
big_df["3M-涨跌幅"] = temp_df["3M"].apply(lambda x: x[1])
|
||
big_df["6M-定价"] = temp_df["6M"].apply(lambda x: x[0])
|
||
big_df["6M-涨跌幅"] = temp_df["6M"].apply(lambda x: x[1])
|
||
big_df["1Y-定价"] = temp_df["1Y"].apply(lambda x: x[0])
|
||
big_df["1Y-涨跌幅"] = temp_df["1Y"].apply(lambda x: x[1])
|
||
big_df["ON-定价"] = temp_df["ON"].apply(lambda x: x[0])
|
||
big_df["ON-涨跌幅"] = temp_df["ON"].apply(lambda x: x[1])
|
||
big_df["2M-定价"] = temp_df["2M"].apply(lambda x: x[0])
|
||
big_df["2M-涨跌幅"] = temp_df["2M"].apply(lambda x: x[1])
|
||
big_df = big_df.apply(lambda x: x.replace("-", np.nan))
|
||
big_df = big_df.apply(lambda x: x.replace([None], np.nan))
|
||
for item in big_df.columns:
|
||
big_df[item] = pd.to_numeric(big_df[item], errors="coerce")
|
||
big_df.sort_index(inplace=True)
|
||
big_df.reset_index(inplace=True)
|
||
big_df.rename(columns={"index": "日期"}, inplace=True)
|
||
return big_df
|
||
|
||
|
||
# 金十数据中心-经济指标-中国-其他-中国日度沿海六大电库存数据
|
||
def macro_china_daily_energy() -> pd.DataFrame:
|
||
"""
|
||
中国日度沿海六大电库存数据, 数据区间从20160101-至今
|
||
https://datacenter.jin10.com/reportType/dc_qihuo_energy_report
|
||
:return: pandas.DataFrame
|
||
"""
|
||
t = time.time()
|
||
res = requests.get(
|
||
JS_CHINA_ENERGY_DAILY_URL.format(
|
||
str(int(round(t * 1000))), str(int(round(t * 1000)) + 90)
|
||
)
|
||
)
|
||
json_data = json.loads(res.text[res.text.find("{") : res.text.rfind("}") + 1])
|
||
date_list = [item["date"] for item in json_data["list"]]
|
||
value_list = [
|
||
item["datas"]["沿海六大电厂库存动态报告"] for item in json_data["list"]
|
||
]
|
||
value_df = pd.DataFrame(value_list)
|
||
value_df.columns = json_data["kinds"]
|
||
value_df.index = pd.to_datetime(date_list)
|
||
temp_df = value_df[["沿海六大电库存", "日耗", "存煤可用天数"]]
|
||
temp_df.name = "energy"
|
||
temp_df = temp_df.astype(float)
|
||
temp_df.reset_index(inplace=True)
|
||
temp_df.rename(columns={"index": "日期"}, inplace=True)
|
||
temp_df["日期"] = pd.to_datetime(temp_df["日期"], errors="coerce").dt.date
|
||
return temp_df
|
||
|
||
|
||
# 金十数据中心-经济指标-中国-其他-中国人民币汇率中间价报告
|
||
def macro_china_rmb() -> pd.DataFrame:
|
||
"""
|
||
中国人民币汇率中间价报告, 数据区间从 20170103-至今
|
||
https://datacenter.jin10.com/reportType/dc_rmb_data
|
||
:return: 中国人民币汇率中间价报告
|
||
:rtype: pandas.DataFrame
|
||
"""
|
||
t = time.time()
|
||
params = {"_": t}
|
||
res = requests.get(
|
||
"https://cdn.jin10.com/data_center/reports/exchange_rate.json",
|
||
params=params,
|
||
)
|
||
json_data = res.json()
|
||
temp_df = pd.DataFrame(json_data["values"]).T
|
||
big_df = pd.DataFrame()
|
||
temp_df.fillna(value="--", inplace=True)
|
||
big_df["美元/人民币_中间价"] = temp_df["美元/人民币"].apply(lambda x: x[0])
|
||
big_df["美元/人民币_涨跌幅"] = temp_df["美元/人民币"].apply(lambda x: x[1])
|
||
big_df["欧元/人民币_中间价"] = temp_df["欧元/人民币"].apply(lambda x: x[0])
|
||
big_df["欧元/人民币_涨跌幅"] = temp_df["欧元/人民币"].apply(lambda x: x[1])
|
||
big_df["100日元/人民币_中间价"] = temp_df["100日元/人民币"].apply(lambda x: x[0])
|
||
big_df["100日元/人民币_涨跌幅"] = temp_df["100日元/人民币"].apply(lambda x: x[1])
|
||
big_df["港元/人民币_中间价"] = temp_df["港元/人民币"].apply(lambda x: x[0])
|
||
big_df["港元/人民币_涨跌幅"] = temp_df["港元/人民币"].apply(lambda x: x[1])
|
||
big_df["英镑/人民币_中间价"] = temp_df["英镑/人民币"].apply(lambda x: x[0])
|
||
big_df["英镑/人民币_涨跌幅"] = temp_df["英镑/人民币"].apply(lambda x: x[1])
|
||
big_df["澳元/人民币_中间价"] = temp_df["澳元/人民币"].apply(lambda x: x[0])
|
||
big_df["澳元/人民币_涨跌幅"] = temp_df["澳元/人民币"].apply(lambda x: x[1])
|
||
big_df["新西兰元/人民币_中间价"] = temp_df["新西兰元/人民币"].apply(lambda x: x[0])
|
||
big_df["新西兰元/人民币_涨跌幅"] = temp_df["新西兰元/人民币"].apply(lambda x: x[1])
|
||
big_df["新加坡元/人民币_中间价"] = temp_df["新加坡元/人民币"].apply(lambda x: x[0])
|
||
big_df["新加坡元/人民币_涨跌幅"] = temp_df["新加坡元/人民币"].apply(lambda x: x[1])
|
||
big_df["瑞郎/人民币_中间价"] = temp_df["瑞郎/人民币"].apply(lambda x: x[0])
|
||
big_df["瑞郎/人民币_涨跌幅"] = temp_df["瑞郎/人民币"].apply(lambda x: x[1])
|
||
big_df["加元/人民币_中间价"] = temp_df["加元/人民币"].apply(lambda x: x[0])
|
||
big_df["加元/人民币_涨跌幅"] = temp_df["加元/人民币"].apply(lambda x: x[1])
|
||
big_df["人民币/马来西亚林吉特_中间价"] = temp_df["人民币/马来西亚林吉特"].apply(
|
||
lambda x: x[0]
|
||
)
|
||
big_df["人民币/马来西亚林吉特_涨跌幅"] = temp_df["人民币/马来西亚林吉特"].apply(
|
||
lambda x: x[1]
|
||
)
|
||
big_df["人民币/俄罗斯卢布_中间价"] = temp_df["人民币/俄罗斯卢布"].apply(
|
||
lambda x: x[0]
|
||
)
|
||
big_df["人民币/俄罗斯卢布_涨跌幅"] = temp_df["人民币/俄罗斯卢布"].apply(
|
||
lambda x: x[1]
|
||
)
|
||
big_df["人民币/南非兰特_中间价"] = temp_df["人民币/南非兰特"].apply(lambda x: x[0])
|
||
big_df["人民币/南非兰特_涨跌幅"] = temp_df["人民币/南非兰特"].apply(lambda x: x[1])
|
||
big_df["人民币/韩元_中间价"] = temp_df["人民币/韩元"].apply(lambda x: x[0])
|
||
big_df["人民币/韩元_涨跌幅"] = temp_df["人民币/韩元"].apply(lambda x: x[1])
|
||
big_df["人民币/阿联酋迪拉姆_中间价"] = temp_df["人民币/阿联酋迪拉姆"].apply(
|
||
lambda x: x[0]
|
||
)
|
||
big_df["人民币/阿联酋迪拉姆_涨跌幅"] = temp_df["人民币/阿联酋迪拉姆"].apply(
|
||
lambda x: x[1]
|
||
)
|
||
big_df["人民币/沙特里亚尔_中间价"] = temp_df["人民币/沙特里亚尔"].apply(
|
||
lambda x: x[0]
|
||
)
|
||
big_df["人民币/沙特里亚尔_涨跌幅"] = temp_df["人民币/沙特里亚尔"].apply(
|
||
lambda x: x[1]
|
||
)
|
||
big_df["人民币/匈牙利福林_中间价"] = temp_df["人民币/匈牙利福林"].apply(
|
||
lambda x: x[0]
|
||
)
|
||
big_df["人民币/匈牙利福林_涨跌幅"] = temp_df["人民币/匈牙利福林"].apply(
|
||
lambda x: x[1]
|
||
)
|
||
big_df["人民币/波兰兹罗提_中间价"] = temp_df["人民币/波兰兹罗提"].apply(
|
||
lambda x: x[0]
|
||
)
|
||
big_df["人民币/波兰兹罗提_涨跌幅"] = temp_df["人民币/波兰兹罗提"].apply(
|
||
lambda x: x[1]
|
||
)
|
||
big_df["人民币/丹麦克朗_中间价"] = temp_df["人民币/丹麦克朗"].apply(lambda x: x[0])
|
||
big_df["人民币/丹麦克朗_涨跌幅"] = temp_df["人民币/丹麦克朗"].apply(lambda x: x[1])
|
||
big_df["人民币/瑞典克朗_中间价"] = temp_df["人民币/瑞典克朗"].apply(lambda x: x[0])
|
||
big_df["人民币/瑞典克朗_涨跌幅"] = temp_df["人民币/瑞典克朗"].apply(lambda x: x[1])
|
||
big_df["人民币/挪威克朗_中间价"] = temp_df["人民币/挪威克朗"].apply(lambda x: x[0])
|
||
big_df["人民币/挪威克朗_涨跌幅"] = temp_df["人民币/挪威克朗"].apply(lambda x: x[1])
|
||
big_df["人民币/土耳其里拉_中间价"] = temp_df["人民币/土耳其里拉"].apply(
|
||
lambda x: x[0]
|
||
)
|
||
big_df["人民币/土耳其里拉_涨跌幅"] = temp_df["人民币/土耳其里拉"].apply(
|
||
lambda x: x[1]
|
||
)
|
||
big_df["人民币/墨西哥比索_中间价"] = temp_df["人民币/墨西哥比索"].apply(
|
||
lambda x: x[0]
|
||
)
|
||
big_df["人民币/墨西哥比索_涨跌幅"] = temp_df["人民币/墨西哥比索"].apply(
|
||
lambda x: x[1]
|
||
)
|
||
big_df["人民币/泰铢_定价"] = temp_df["人民币/泰铢"].apply(lambda x: x[0])
|
||
big_df["人民币/泰铢_涨跌幅"] = temp_df["人民币/泰铢"].apply(lambda x: x[1])
|
||
big_df = big_df.apply(lambda x: x.replace("-", pd.NA))
|
||
big_df = big_df.apply(lambda x: x.replace([None], pd.NA))
|
||
big_df.sort_index(inplace=True)
|
||
big_df.fillna(0, inplace=True)
|
||
big_df = big_df.astype("float")
|
||
big_df.reset_index(inplace=True)
|
||
big_df.rename(columns={"index": "日期"}, inplace=True)
|
||
return big_df
|
||
|
||
|
||
# 金十数据中心-经济指标-中国-其他-深圳融资融券报告
|
||
def macro_china_market_margin_sz() -> pd.DataFrame:
|
||
"""
|
||
深圳融资融券报告, 数据区间从20100331-至今
|
||
https://datacenter.jin10.com/reportType/dc_market_margin_sz
|
||
:return: pandas.DataFrame
|
||
"""
|
||
t = time.time()
|
||
params = {"_": t}
|
||
res = requests.get(
|
||
url="https://cdn.jin10.com/data_center/reports/fs_2.json", params=params
|
||
)
|
||
json_data = res.json()
|
||
temp_df = pd.DataFrame(json_data["values"]).T
|
||
temp_df.columns = [
|
||
"融资买入额",
|
||
"融资余额",
|
||
"融券卖出量",
|
||
"融券余量",
|
||
"融券余额",
|
||
"融资融券余额",
|
||
]
|
||
temp_df.sort_index(inplace=True)
|
||
temp_df.index = pd.to_datetime(temp_df.index)
|
||
temp_df = temp_df.astype("float")
|
||
temp_df.reset_index(inplace=True)
|
||
temp_df.rename(columns={"index": "日期"}, inplace=True)
|
||
temp_df["日期"] = pd.to_datetime(temp_df["日期"], errors="coerce").dt.date
|
||
return temp_df
|
||
|
||
|
||
# 金十数据中心-经济指标-中国-其他-上海融资融券报告
|
||
def macro_china_market_margin_sh() -> pd.DataFrame:
|
||
"""
|
||
上海融资融券报告, 数据区间从 20100331-至今
|
||
https://datacenter.jin10.com/reportType/dc_market_margin_sse
|
||
:return: pandas.DataFrame
|
||
"""
|
||
url = "https://cdn.jin10.com/data_center/reports/fs_1.json"
|
||
t = time.time()
|
||
params = {"_": t}
|
||
r = requests.get(url, params=params)
|
||
json_data = r.json()
|
||
temp_df = pd.DataFrame(json_data["values"]).T
|
||
temp_df.reset_index(inplace=True)
|
||
temp_df.columns = [
|
||
"日期",
|
||
"融资买入额",
|
||
"融资余额",
|
||
"融券卖出量",
|
||
"融券余量",
|
||
"融券余额",
|
||
"融资融券余额",
|
||
]
|
||
temp_df.sort_values(by=["日期"], inplace=True, ignore_index=True)
|
||
temp_df["日期"] = pd.to_datetime(temp_df["日期"], errors="coerce").dt.date
|
||
temp_df["融资买入额"] = pd.to_numeric(temp_df["融资买入额"], errors="coerce")
|
||
temp_df["融资余额"] = pd.to_numeric(temp_df["融资余额"], errors="coerce")
|
||
temp_df["融券卖出量"] = pd.to_numeric(temp_df["融券卖出量"], errors="coerce")
|
||
temp_df["融券余量"] = pd.to_numeric(temp_df["融券余量"], errors="coerce")
|
||
temp_df["融券余额"] = pd.to_numeric(temp_df["融券余额"], errors="coerce")
|
||
temp_df["融资融券余额"] = pd.to_numeric(temp_df["融资融券余额"], errors="coerce")
|
||
return temp_df
|
||
|
||
|
||
# 金十数据中心-经济指标-中国-其他-上海黄金交易所报告
|
||
def macro_china_au_report() -> pd.DataFrame:
|
||
"""
|
||
上海黄金交易所报告, 数据区间从20100331-至今
|
||
https://datacenter.jin10.com/reportType/dc_sge_report
|
||
:return: pandas.DataFrame
|
||
"""
|
||
t = time.time()
|
||
params = {"_": t}
|
||
res = requests.get(
|
||
url="https://cdn.jin10.com/data_center/reports/sge.json", params=params
|
||
)
|
||
json_data = res.json()
|
||
big_df = pd.DataFrame()
|
||
for item in json_data["values"].keys():
|
||
temp_df = pd.DataFrame(json_data["values"][item])
|
||
temp_df["date"] = item
|
||
temp_df.columns = [
|
||
"商品",
|
||
"开盘价",
|
||
"最高价",
|
||
"最低价",
|
||
"收盘价",
|
||
"涨跌",
|
||
"涨跌幅",
|
||
"加权平均价",
|
||
"成交量",
|
||
"成交金额",
|
||
"持仓量",
|
||
"交收方向",
|
||
"交收量",
|
||
"日期",
|
||
]
|
||
big_df = pd.concat([big_df, temp_df], ignore_index=True)
|
||
big_df = big_df[
|
||
[
|
||
"日期",
|
||
"商品",
|
||
"开盘价",
|
||
"最高价",
|
||
"最低价",
|
||
"收盘价",
|
||
"涨跌",
|
||
"涨跌幅",
|
||
"加权平均价",
|
||
"成交量",
|
||
"成交金额",
|
||
"持仓量",
|
||
"交收方向",
|
||
"交收量",
|
||
]
|
||
]
|
||
big_df["日期"] = pd.to_datetime(big_df["日期"]).dt.date
|
||
big_df.sort_values(["日期"], inplace=True, ignore_index=True)
|
||
big_df["持仓量"] = pd.to_numeric(big_df["持仓量"], errors="coerce")
|
||
big_df["交收量"] = pd.to_numeric(big_df["交收量"], errors="coerce")
|
||
return big_df
|
||
|
||
|
||
# 中国-利率-贷款报价利率
|
||
def macro_china_lpr() -> pd.DataFrame:
|
||
"""
|
||
LPR品种详细数据
|
||
https://data.eastmoney.com/cjsj/globalRateLPR.html
|
||
:return: LPR品种详细数据
|
||
:rtype: pandas.DataFrame
|
||
"""
|
||
import warnings
|
||
|
||
warnings.filterwarnings(action="ignore", category=FutureWarning)
|
||
|
||
url = "https://datacenter-web.eastmoney.com/api/data/v1/get"
|
||
params = {
|
||
"reportName": "RPTA_WEB_RATE",
|
||
"columns": "ALL",
|
||
"sortColumns": "TRADE_DATE",
|
||
"sortTypes": "-1",
|
||
"token": "894050c76af8597a853f5b408b759f5d",
|
||
"pageNumber": "1",
|
||
"pageSize": "500",
|
||
"p": "1",
|
||
"pageNo": "1",
|
||
"pageNum": "1",
|
||
}
|
||
r = requests.get(url, params=params)
|
||
data_json = r.json()
|
||
total_page = data_json["result"]["pages"]
|
||
big_df = pd.DataFrame()
|
||
tqdm = get_tqdm()
|
||
for page in tqdm(range(1, total_page + 1), leave=False):
|
||
params.update({"pageNumber": page})
|
||
r = requests.get(url, params=params)
|
||
data_json = r.json()
|
||
temp_df = pd.DataFrame(data_json["result"]["data"])
|
||
big_df = pd.concat(objs=[big_df, temp_df], ignore_index=True)
|
||
|
||
big_df["TRADE_DATE"] = pd.to_datetime(big_df["TRADE_DATE"], errors="coerce").dt.date
|
||
big_df["LPR1Y"] = pd.to_numeric(big_df["LPR1Y"], errors="coerce")
|
||
big_df["LPR5Y"] = pd.to_numeric(big_df["LPR5Y"], errors="coerce")
|
||
big_df["RATE_1"] = pd.to_numeric(big_df["RATE_1"], errors="coerce")
|
||
big_df["RATE_2"] = pd.to_numeric(big_df["RATE_2"], errors="coerce")
|
||
big_df.sort_values(by=["TRADE_DATE"], inplace=True)
|
||
big_df.reset_index(inplace=True, drop=True)
|
||
return big_df
|
||
|
||
|
||
# 中国-新房价指数
|
||
def macro_china_new_house_price(
|
||
city_first: str = "北京", city_second: str = "上海"
|
||
) -> pd.DataFrame:
|
||
"""
|
||
中国-新房价指数
|
||
https://data.eastmoney.com/cjsj/newhouse.html
|
||
:param city_first: 城市; 城市列表见目标网站
|
||
:type city_first: str
|
||
:param city_second: 城市; 城市列表见目标网站
|
||
:type city_second: str
|
||
:return: 新房价指数
|
||
:rtype: pandas.DataFrame
|
||
"""
|
||
url = "https://datacenter-web.eastmoney.com/api/data/v1/get"
|
||
params = {
|
||
"reportName": "RPT_ECONOMY_HOUSE_PRICE",
|
||
"columns": "REPORT_DATE,CITY,FIRST_COMHOUSE_SAME,FIRST_COMHOUSE_SEQUENTIAL,FIRST_COMHOUSE_BASE,"
|
||
"SECOND_HOUSE_SAME,SECOND_HOUSE_SEQUENTIAL,SECOND_HOUSE_BASE,REPORT_DAY",
|
||
"filter": f'(CITY in ("{city_first}","{city_second}"))',
|
||
"pageNumber": "1",
|
||
"pageSize": "500",
|
||
"sortColumns": "REPORT_DATE,CITY",
|
||
"sortTypes": "-1,-1",
|
||
"source": "WEB",
|
||
"client": "WEB",
|
||
"p": "1",
|
||
"pageNo": "1",
|
||
"pageNum": "1",
|
||
}
|
||
r = requests.get(url, params=params)
|
||
data_json = r.json()
|
||
temp_df = pd.DataFrame(data_json["result"]["data"])
|
||
temp_df.columns = [
|
||
"日期",
|
||
"城市",
|
||
"新建商品住宅价格指数-同比",
|
||
"新建商品住宅价格指数-环比",
|
||
"新建商品住宅价格指数-定基",
|
||
"二手住宅价格指数-同比",
|
||
"二手住宅价格指数-环比",
|
||
"二手住宅价格指数-定基",
|
||
"-",
|
||
]
|
||
temp_df = temp_df[
|
||
[
|
||
"日期",
|
||
"城市",
|
||
"新建商品住宅价格指数-同比",
|
||
"新建商品住宅价格指数-环比",
|
||
"新建商品住宅价格指数-定基",
|
||
"二手住宅价格指数-同比",
|
||
"二手住宅价格指数-环比",
|
||
"二手住宅价格指数-定基",
|
||
]
|
||
]
|
||
temp_df["日期"] = pd.to_datetime(temp_df["日期"], errors="coerce").dt.date
|
||
temp_df["新建商品住宅价格指数-同比"] = pd.to_numeric(
|
||
temp_df["新建商品住宅价格指数-同比"], errors="coerce"
|
||
)
|
||
temp_df["新建商品住宅价格指数-环比"] = pd.to_numeric(
|
||
temp_df["新建商品住宅价格指数-环比"], errors="coerce"
|
||
)
|
||
temp_df["新建商品住宅价格指数-定基"] = pd.to_numeric(
|
||
temp_df["新建商品住宅价格指数-定基"], errors="coerce"
|
||
)
|
||
temp_df["二手住宅价格指数-环比"] = pd.to_numeric(
|
||
temp_df["二手住宅价格指数-环比"], errors="coerce"
|
||
)
|
||
temp_df["二手住宅价格指数-同比"] = pd.to_numeric(
|
||
temp_df["二手住宅价格指数-同比"], errors="coerce"
|
||
)
|
||
temp_df["二手住宅价格指数-定基"] = pd.to_numeric(
|
||
temp_df["二手住宅价格指数-定基"], errors="coerce"
|
||
)
|
||
temp_df.sort_values(["日期"], ignore_index=True, inplace=True)
|
||
return temp_df
|
||
|
||
|
||
# 中国-企业景气及企业家信心指数
|
||
def macro_china_enterprise_boom_index() -> pd.DataFrame:
|
||
"""
|
||
https://data.eastmoney.com/cjsj/qyjqzs.html
|
||
中国-企业景气及企业家信心指数
|
||
:return: 企业景气及企业家信心指数
|
||
:rtype: pandas.DataFrame
|
||
"""
|
||
url = "https://datacenter-web.eastmoney.com/api/data/v1/get"
|
||
params = {
|
||
"columns": "REPORT_DATE,TIME,BOOM_INDEX,FAITH_INDEX,BOOM_INDEX_SAME,BOOM_INDEX_SEQUENTIAL,"
|
||
"FAITH_INDEX_SAME,FAITH_INDEX_SEQUENTIAL",
|
||
"pageNumber": "1",
|
||
"pageSize": "500",
|
||
"sortColumns": "REPORT_DATE",
|
||
"sortTypes": "-1",
|
||
"source": "WEB",
|
||
"client": "WEB",
|
||
"reportName": "RPT_ECONOMY_BOOM_INDEX",
|
||
"p": "1",
|
||
"pageNo": "1",
|
||
"pageNum": "1",
|
||
}
|
||
r = requests.get(url, params=params)
|
||
data_json = r.json()
|
||
temp_df = pd.DataFrame(data_json["result"]["data"])
|
||
temp_df.columns = [
|
||
"-",
|
||
"季度",
|
||
"企业景气指数-指数",
|
||
"企业家信心指数-指数",
|
||
"企业景气指数-同比",
|
||
"企业景气指数-环比",
|
||
"企业家信心指数-同比",
|
||
"企业家信心指数-环比",
|
||
]
|
||
temp_df = temp_df[
|
||
[
|
||
"季度",
|
||
"企业景气指数-指数",
|
||
"企业景气指数-同比",
|
||
"企业景气指数-环比",
|
||
"企业家信心指数-指数",
|
||
"企业家信心指数-同比",
|
||
"企业家信心指数-环比",
|
||
]
|
||
]
|
||
temp_df["企业景气指数-指数"] = pd.to_numeric(
|
||
temp_df["企业景气指数-指数"], errors="coerce"
|
||
)
|
||
temp_df["企业家信心指数-指数"] = pd.to_numeric(
|
||
temp_df["企业家信心指数-指数"], errors="coerce"
|
||
)
|
||
temp_df["企业景气指数-同比"] = pd.to_numeric(
|
||
temp_df["企业景气指数-同比"], errors="coerce"
|
||
)
|
||
temp_df["企业景气指数-环比"] = pd.to_numeric(
|
||
temp_df["企业景气指数-环比"], errors="coerce"
|
||
)
|
||
temp_df["企业家信心指数-同比"] = pd.to_numeric(
|
||
temp_df["企业家信心指数-同比"], errors="coerce"
|
||
)
|
||
temp_df["企业家信心指数-环比"] = pd.to_numeric(
|
||
temp_df["企业家信心指数-环比"], errors="coerce"
|
||
)
|
||
return temp_df
|
||
|
||
|
||
# 中国-全国税收收入
|
||
def macro_china_national_tax_receipts() -> pd.DataFrame:
|
||
"""
|
||
中国-全国税收收入
|
||
https://data.eastmoney.com/cjsj/qgsssr.html
|
||
:return: 全国税收收入
|
||
:rtype: pandas.DataFrame
|
||
"""
|
||
url = "https://datacenter-web.eastmoney.com/api/data/v1/get"
|
||
params = {
|
||
"columns": "REPORT_DATE,TIME,TAX_INCOME,TAX_INCOME_SAME,TAX_INCOME_SEQUENTIAL",
|
||
"pageNumber": "1",
|
||
"pageSize": "500",
|
||
"sortColumns": "REPORT_DATE",
|
||
"sortTypes": "-1",
|
||
"source": "WEB",
|
||
"client": "WEB",
|
||
"reportName": "RPT_ECONOMY_TAX",
|
||
"p": "1",
|
||
"pageNo": "1",
|
||
"pageNum": "1",
|
||
}
|
||
r = requests.get(url, params=params)
|
||
data_json = r.json()
|
||
temp_df = pd.DataFrame(data_json["result"]["data"])
|
||
|
||
temp_df.columns = ["-", "季度", "税收收入合计", "较上年同期", "季度环比"]
|
||
temp_df = temp_df[["季度", "税收收入合计", "较上年同期", "季度环比"]]
|
||
|
||
temp_df["税收收入合计"] = pd.to_numeric(temp_df["税收收入合计"], errors="coerce")
|
||
temp_df["较上年同期"] = pd.to_numeric(temp_df["较上年同期"], errors="coerce")
|
||
temp_df["季度环比"] = pd.to_numeric(temp_df["季度环比"], errors="coerce")
|
||
return temp_df
|
||
|
||
|
||
# 中国-银行理财产品发行数量
|
||
def macro_china_bank_financing() -> pd.DataFrame:
|
||
"""
|
||
银行理财产品发行数量
|
||
https://data.eastmoney.com/cjsj/hyzs_list_EMI01516267.html
|
||
:return: 银行理财产品发行数量
|
||
:rtype: pandas.DataFrame
|
||
"""
|
||
url = "https://datacenter-web.eastmoney.com/api/data/v1/get"
|
||
params = {
|
||
"sortColumns": "REPORT_DATE",
|
||
"sortTypes": "-1",
|
||
"pageSize": "1000",
|
||
"pageNumber": "1",
|
||
"reportName": "RPT_INDUSTRY_INDEX",
|
||
"columns": "REPORT_DATE,INDICATOR_VALUE,CHANGE_RATE,CHANGERATE_3M,CHANGERATE_6M,CHANGERATE_1Y,"
|
||
"CHANGERATE_2Y,CHANGERATE_3Y",
|
||
"filter": '(INDICATOR_ID="EMI01516267")',
|
||
"source": "WEB",
|
||
"client": "WEB",
|
||
}
|
||
r = requests.get(url, params=params)
|
||
data_json = r.json()
|
||
temp_df = pd.DataFrame(data_json["result"]["data"])
|
||
temp_df.columns = [
|
||
"日期",
|
||
"最新值",
|
||
"涨跌幅",
|
||
"近3月涨跌幅",
|
||
"近6月涨跌幅",
|
||
"近1年涨跌幅",
|
||
"近2年涨跌幅",
|
||
"近3年涨跌幅",
|
||
]
|
||
temp_df["日期"] = pd.to_datetime(temp_df["日期"]).dt.date
|
||
temp_df["最新值"] = pd.to_numeric(temp_df["最新值"])
|
||
temp_df["涨跌幅"] = pd.to_numeric(temp_df["涨跌幅"])
|
||
temp_df["近3月涨跌幅"] = pd.to_numeric(temp_df["近3月涨跌幅"])
|
||
temp_df["近6月涨跌幅"] = pd.to_numeric(temp_df["近6月涨跌幅"])
|
||
temp_df["近1年涨跌幅"] = pd.to_numeric(temp_df["近1年涨跌幅"])
|
||
temp_df["近2年涨跌幅"] = pd.to_numeric(temp_df["近2年涨跌幅"])
|
||
temp_df["近3年涨跌幅"] = pd.to_numeric(temp_df["近3年涨跌幅"])
|
||
temp_df.sort_values(["日期"], inplace=True)
|
||
temp_df.reset_index(inplace=True, drop=True)
|
||
return temp_df
|
||
|
||
|
||
def macro_china_insurance_income() -> pd.DataFrame:
|
||
"""
|
||
原保险保费收入
|
||
https://data.eastmoney.com/cjsj/hyzs_list_EMM00088870.html
|
||
:return: 原保险保费收入
|
||
:rtype: pandas.DataFrame
|
||
"""
|
||
url = "https://datacenter-web.eastmoney.com/api/data/v1/get"
|
||
params = {
|
||
"sortColumns": "REPORT_DATE",
|
||
"sortTypes": "-1",
|
||
"pageSize": "1000",
|
||
"pageNumber": "1",
|
||
"reportName": "RPT_INDUSTRY_INDEX",
|
||
"columns": "REPORT_DATE,INDICATOR_VALUE,CHANGE_RATE,CHANGERATE_3M,CHANGERATE_6M,CHANGERATE_1Y,"
|
||
"CHANGERATE_2Y,CHANGERATE_3Y",
|
||
"filter": '(INDICATOR_ID="EMM00088870")',
|
||
"source": "WEB",
|
||
"client": "WEB",
|
||
}
|
||
r = requests.get(url, params=params)
|
||
data_json = r.json()
|
||
temp_df = pd.DataFrame(data_json["result"]["data"])
|
||
temp_df.columns = [
|
||
"日期",
|
||
"最新值",
|
||
"涨跌幅",
|
||
"近3月涨跌幅",
|
||
"近6月涨跌幅",
|
||
"近1年涨跌幅",
|
||
"近2年涨跌幅",
|
||
"近3年涨跌幅",
|
||
]
|
||
temp_df["日期"] = pd.to_datetime(temp_df["日期"]).dt.date
|
||
temp_df["最新值"] = pd.to_numeric(temp_df["最新值"])
|
||
temp_df["涨跌幅"] = pd.to_numeric(temp_df["涨跌幅"])
|
||
temp_df["近3月涨跌幅"] = pd.to_numeric(temp_df["近3月涨跌幅"])
|
||
temp_df["近6月涨跌幅"] = pd.to_numeric(temp_df["近6月涨跌幅"])
|
||
temp_df["近1年涨跌幅"] = pd.to_numeric(temp_df["近1年涨跌幅"])
|
||
temp_df["近2年涨跌幅"] = pd.to_numeric(temp_df["近2年涨跌幅"])
|
||
temp_df["近3年涨跌幅"] = pd.to_numeric(temp_df["近3年涨跌幅"])
|
||
temp_df.sort_values(["日期"], inplace=True)
|
||
temp_df.reset_index(inplace=True, drop=True)
|
||
return temp_df
|
||
|
||
|
||
def macro_china_mobile_number() -> pd.DataFrame:
|
||
"""
|
||
手机出货量
|
||
https://data.eastmoney.com/cjsj/hyzs_list_EMI00225823.html
|
||
:return: 手机出货量
|
||
:rtype: pandas.DataFrame
|
||
"""
|
||
url = "https://datacenter-web.eastmoney.com/api/data/v1/get"
|
||
params = {
|
||
"sortColumns": "REPORT_DATE",
|
||
"sortTypes": "-1",
|
||
"pageSize": "1000",
|
||
"pageNumber": "1",
|
||
"reportName": "RPT_INDUSTRY_INDEX",
|
||
"columns": "REPORT_DATE,INDICATOR_VALUE,CHANGE_RATE,CHANGERATE_3M,CHANGERATE_6M,CHANGERATE_1Y,"
|
||
"CHANGERATE_2Y,CHANGERATE_3Y",
|
||
"filter": '(INDICATOR_ID="EMI00225823")',
|
||
"source": "WEB",
|
||
"client": "WEB",
|
||
}
|
||
r = requests.get(url, params=params)
|
||
data_json = r.json()
|
||
temp_df = pd.DataFrame(data_json["result"]["data"])
|
||
temp_df.drop_duplicates(inplace=True)
|
||
temp_df.columns = [
|
||
"日期",
|
||
"最新值",
|
||
"涨跌幅",
|
||
"近3月涨跌幅",
|
||
"近6月涨跌幅",
|
||
"近1年涨跌幅",
|
||
"近2年涨跌幅",
|
||
"近3年涨跌幅",
|
||
]
|
||
temp_df["日期"] = pd.to_datetime(temp_df["日期"]).dt.date
|
||
temp_df["最新值"] = pd.to_numeric(temp_df["最新值"])
|
||
temp_df["涨跌幅"] = pd.to_numeric(temp_df["涨跌幅"])
|
||
temp_df["近3月涨跌幅"] = pd.to_numeric(temp_df["近3月涨跌幅"])
|
||
temp_df["近6月涨跌幅"] = pd.to_numeric(temp_df["近6月涨跌幅"])
|
||
temp_df["近1年涨跌幅"] = pd.to_numeric(temp_df["近1年涨跌幅"])
|
||
temp_df["近2年涨跌幅"] = pd.to_numeric(temp_df["近2年涨跌幅"])
|
||
temp_df["近3年涨跌幅"] = pd.to_numeric(temp_df["近3年涨跌幅"])
|
||
temp_df.sort_values(["日期"], inplace=True)
|
||
temp_df.reset_index(inplace=True, drop=True)
|
||
return temp_df
|
||
|
||
|
||
def macro_china_vegetable_basket() -> pd.DataFrame:
|
||
"""
|
||
菜篮子产品批发价格指数
|
||
https://data.eastmoney.com/cjsj/hyzs_list_EMI00009275.html
|
||
:return: 菜篮子产品批发价格指数
|
||
:rtype: pandas.DataFrame
|
||
"""
|
||
url = "https://datacenter-web.eastmoney.com/api/data/v1/get"
|
||
params = {
|
||
"sortColumns": "REPORT_DATE",
|
||
"sortTypes": "-1",
|
||
"pageSize": "500",
|
||
"pageNumber": "1",
|
||
"reportName": "RPT_INDUSTRY_INDEX",
|
||
"columns": "REPORT_DATE,INDICATOR_VALUE,CHANGE_RATE,CHANGERATE_3M,CHANGERATE_6M,CHANGERATE_1Y,"
|
||
"CHANGERATE_2Y,CHANGERATE_3Y",
|
||
"filter": '(INDICATOR_ID="EMI00009275")',
|
||
"source": "WEB",
|
||
"client": "WEB",
|
||
}
|
||
r = requests.get(url, params=params)
|
||
data_json = r.json()
|
||
total_page = data_json["result"]["pages"]
|
||
big_df = pd.DataFrame()
|
||
tqdm = get_tqdm()
|
||
for page in tqdm(range(1, total_page + 1), leave=False):
|
||
params.update({"pageNumber": page})
|
||
r = requests.get(url, params=params)
|
||
data_json = r.json()
|
||
temp_df = pd.DataFrame(data_json["result"]["data"])
|
||
big_df = pd.concat([big_df, temp_df], ignore_index=True)
|
||
big_df.drop_duplicates(inplace=True)
|
||
big_df.columns = [
|
||
"日期",
|
||
"最新值",
|
||
"涨跌幅",
|
||
"近3月涨跌幅",
|
||
"近6月涨跌幅",
|
||
"近1年涨跌幅",
|
||
"近2年涨跌幅",
|
||
"近3年涨跌幅",
|
||
]
|
||
big_df["日期"] = pd.to_datetime(big_df["日期"]).dt.date
|
||
big_df["最新值"] = pd.to_numeric(big_df["最新值"])
|
||
big_df["涨跌幅"] = pd.to_numeric(big_df["涨跌幅"])
|
||
big_df["近3月涨跌幅"] = pd.to_numeric(big_df["近3月涨跌幅"])
|
||
big_df["近6月涨跌幅"] = pd.to_numeric(big_df["近6月涨跌幅"])
|
||
big_df["近1年涨跌幅"] = pd.to_numeric(big_df["近1年涨跌幅"])
|
||
big_df["近2年涨跌幅"] = pd.to_numeric(big_df["近2年涨跌幅"])
|
||
big_df["近3年涨跌幅"] = pd.to_numeric(big_df["近3年涨跌幅"])
|
||
big_df.sort_values(["日期"], inplace=True)
|
||
big_df.reset_index(inplace=True, drop=True)
|
||
return big_df
|
||
|
||
|
||
def macro_china_agricultural_product() -> pd.DataFrame:
|
||
"""
|
||
农产品批发价格总指数
|
||
https://data.eastmoney.com/cjsj/hyzs_list_EMI00009274.html
|
||
:return: 农产品批发价格总指数
|
||
:rtype: pandas.DataFrame
|
||
"""
|
||
url = "https://datacenter-web.eastmoney.com/api/data/v1/get"
|
||
params = {
|
||
"sortColumns": "REPORT_DATE",
|
||
"sortTypes": "-1",
|
||
"pageSize": "500",
|
||
"pageNumber": "1",
|
||
"reportName": "RPT_INDUSTRY_INDEX",
|
||
"columns": "REPORT_DATE,INDICATOR_VALUE,CHANGE_RATE,CHANGERATE_3M,CHANGERATE_6M,CHANGERATE_1Y,"
|
||
"CHANGERATE_2Y,CHANGERATE_3Y",
|
||
"filter": '(INDICATOR_ID="EMI00009274")',
|
||
"source": "WEB",
|
||
"client": "WEB",
|
||
}
|
||
r = requests.get(url, params=params)
|
||
data_json = r.json()
|
||
total_page = data_json["result"]["pages"]
|
||
big_df = pd.DataFrame()
|
||
tqdm = get_tqdm()
|
||
for page in tqdm(range(1, total_page + 1), leave=False):
|
||
params.update({"pageNumber": page})
|
||
r = requests.get(url, params=params)
|
||
data_json = r.json()
|
||
temp_df = pd.DataFrame(data_json["result"]["data"])
|
||
big_df = pd.concat([big_df, temp_df], ignore_index=True)
|
||
big_df.drop_duplicates(inplace=True)
|
||
big_df.columns = [
|
||
"日期",
|
||
"最新值",
|
||
"涨跌幅",
|
||
"近3月涨跌幅",
|
||
"近6月涨跌幅",
|
||
"近1年涨跌幅",
|
||
"近2年涨跌幅",
|
||
"近3年涨跌幅",
|
||
]
|
||
big_df["日期"] = pd.to_datetime(big_df["日期"]).dt.date
|
||
big_df["最新值"] = pd.to_numeric(big_df["最新值"])
|
||
big_df["涨跌幅"] = pd.to_numeric(big_df["涨跌幅"])
|
||
big_df["近3月涨跌幅"] = pd.to_numeric(big_df["近3月涨跌幅"])
|
||
big_df["近6月涨跌幅"] = pd.to_numeric(big_df["近6月涨跌幅"])
|
||
big_df["近1年涨跌幅"] = pd.to_numeric(big_df["近1年涨跌幅"])
|
||
big_df["近2年涨跌幅"] = pd.to_numeric(big_df["近2年涨跌幅"])
|
||
big_df["近3年涨跌幅"] = pd.to_numeric(big_df["近3年涨跌幅"])
|
||
big_df.sort_values(["日期"], inplace=True)
|
||
big_df.reset_index(inplace=True, drop=True)
|
||
return big_df
|
||
|
||
|
||
def macro_china_agricultural_index() -> pd.DataFrame:
|
||
"""
|
||
农副指数
|
||
https://data.eastmoney.com/cjsj/hyzs_list_EMI00662543.html
|
||
:return: 农副指数
|
||
:rtype: pandas.DataFrame
|
||
"""
|
||
url = "https://datacenter-web.eastmoney.com/api/data/v1/get"
|
||
params = {
|
||
"sortColumns": "REPORT_DATE",
|
||
"sortTypes": "-1",
|
||
"pageSize": "500",
|
||
"pageNumber": "1",
|
||
"reportName": "RPT_INDUSTRY_INDEX",
|
||
"columns": "REPORT_DATE,INDICATOR_VALUE,CHANGE_RATE,CHANGERATE_3M,CHANGERATE_6M,CHANGERATE_1Y,"
|
||
"CHANGERATE_2Y,CHANGERATE_3Y",
|
||
"filter": '(INDICATOR_ID="EMI00662543")',
|
||
"source": "WEB",
|
||
"client": "WEB",
|
||
}
|
||
r = requests.get(url, params=params)
|
||
data_json = r.json()
|
||
total_page = data_json["result"]["pages"]
|
||
big_df = pd.DataFrame()
|
||
tqdm = get_tqdm()
|
||
for page in tqdm(range(1, total_page + 1), leave=False):
|
||
params.update({"pageNumber": page})
|
||
r = requests.get(url, params=params)
|
||
data_json = r.json()
|
||
temp_df = pd.DataFrame(data_json["result"]["data"])
|
||
big_df = pd.concat([big_df, temp_df], ignore_index=True)
|
||
big_df.drop_duplicates(inplace=True)
|
||
big_df.columns = [
|
||
"日期",
|
||
"最新值",
|
||
"涨跌幅",
|
||
"近3月涨跌幅",
|
||
"近6月涨跌幅",
|
||
"近1年涨跌幅",
|
||
"近2年涨跌幅",
|
||
"近3年涨跌幅",
|
||
]
|
||
big_df["日期"] = pd.to_datetime(big_df["日期"]).dt.date
|
||
big_df["最新值"] = pd.to_numeric(big_df["最新值"])
|
||
big_df["涨跌幅"] = pd.to_numeric(big_df["涨跌幅"])
|
||
big_df["近3月涨跌幅"] = pd.to_numeric(big_df["近3月涨跌幅"])
|
||
big_df["近6月涨跌幅"] = pd.to_numeric(big_df["近6月涨跌幅"])
|
||
big_df["近1年涨跌幅"] = pd.to_numeric(big_df["近1年涨跌幅"])
|
||
big_df["近2年涨跌幅"] = pd.to_numeric(big_df["近2年涨跌幅"])
|
||
big_df["近3年涨跌幅"] = pd.to_numeric(big_df["近3年涨跌幅"])
|
||
big_df.sort_values(["日期"], inplace=True)
|
||
big_df.reset_index(inplace=True, drop=True)
|
||
return big_df
|
||
|
||
|
||
def macro_china_energy_index() -> pd.DataFrame:
|
||
"""
|
||
能源指数
|
||
https://data.eastmoney.com/cjsj/hyzs_list_EMI00662539.html
|
||
:return: 能源指数
|
||
:rtype: pandas.DataFrame
|
||
"""
|
||
url = "https://datacenter-web.eastmoney.com/api/data/v1/get"
|
||
params = {
|
||
"sortColumns": "REPORT_DATE",
|
||
"sortTypes": "-1",
|
||
"pageSize": "500",
|
||
"pageNumber": "1",
|
||
"reportName": "RPT_INDUSTRY_INDEX",
|
||
"columns": "REPORT_DATE,INDICATOR_VALUE,CHANGE_RATE,CHANGERATE_3M,CHANGERATE_6M,CHANGERATE_1Y,"
|
||
"CHANGERATE_2Y,CHANGERATE_3Y",
|
||
"filter": '(INDICATOR_ID="EMI00662539")',
|
||
"source": "WEB",
|
||
"client": "WEB",
|
||
}
|
||
r = requests.get(url, params=params)
|
||
data_json = r.json()
|
||
total_page = data_json["result"]["pages"]
|
||
big_df = pd.DataFrame()
|
||
tqdm = get_tqdm()
|
||
for page in tqdm(range(1, total_page + 1), leave=False):
|
||
params.update({"pageNumber": page})
|
||
r = requests.get(url, params=params)
|
||
data_json = r.json()
|
||
temp_df = pd.DataFrame(data_json["result"]["data"])
|
||
big_df = pd.concat([big_df, temp_df], ignore_index=True)
|
||
big_df.drop_duplicates(inplace=True)
|
||
big_df.columns = [
|
||
"日期",
|
||
"最新值",
|
||
"涨跌幅",
|
||
"近3月涨跌幅",
|
||
"近6月涨跌幅",
|
||
"近1年涨跌幅",
|
||
"近2年涨跌幅",
|
||
"近3年涨跌幅",
|
||
]
|
||
big_df["日期"] = pd.to_datetime(big_df["日期"]).dt.date
|
||
big_df["最新值"] = pd.to_numeric(big_df["最新值"])
|
||
big_df["涨跌幅"] = pd.to_numeric(big_df["涨跌幅"])
|
||
big_df["近3月涨跌幅"] = pd.to_numeric(big_df["近3月涨跌幅"])
|
||
big_df["近6月涨跌幅"] = pd.to_numeric(big_df["近6月涨跌幅"])
|
||
big_df["近1年涨跌幅"] = pd.to_numeric(big_df["近1年涨跌幅"])
|
||
big_df["近2年涨跌幅"] = pd.to_numeric(big_df["近2年涨跌幅"])
|
||
big_df["近3年涨跌幅"] = pd.to_numeric(big_df["近3年涨跌幅"])
|
||
big_df.sort_values(["日期"], inplace=True)
|
||
big_df.reset_index(inplace=True, drop=True)
|
||
return big_df
|
||
|
||
|
||
def macro_china_commodity_price_index() -> pd.DataFrame:
|
||
"""
|
||
大宗商品价格
|
||
https://data.eastmoney.com/cjsj/hyzs_list_EMI00662535.html
|
||
:return: 大宗商品价格
|
||
:rtype: pandas.DataFrame
|
||
"""
|
||
url = "https://datacenter-web.eastmoney.com/api/data/v1/get"
|
||
params = {
|
||
"sortColumns": "REPORT_DATE",
|
||
"sortTypes": "-1",
|
||
"pageSize": "500",
|
||
"pageNumber": "1",
|
||
"reportName": "RPT_INDUSTRY_INDEX",
|
||
"columns": "REPORT_DATE,INDICATOR_VALUE,CHANGE_RATE,CHANGERATE_3M,CHANGERATE_6M,CHANGERATE_1Y,"
|
||
"CHANGERATE_2Y,CHANGERATE_3Y",
|
||
"filter": '(INDICATOR_ID="EMI00662535")',
|
||
"source": "WEB",
|
||
"client": "WEB",
|
||
}
|
||
r = requests.get(url, params=params)
|
||
data_json = r.json()
|
||
total_page = data_json["result"]["pages"]
|
||
big_df = pd.DataFrame()
|
||
tqdm = get_tqdm()
|
||
for page in tqdm(range(1, total_page + 1), leave=False):
|
||
params.update({"pageNumber": page})
|
||
r = requests.get(url, params=params)
|
||
data_json = r.json()
|
||
temp_df = pd.DataFrame(data_json["result"]["data"])
|
||
big_df = pd.concat([big_df, temp_df], ignore_index=True)
|
||
big_df.drop_duplicates(inplace=True)
|
||
big_df.columns = [
|
||
"日期",
|
||
"最新值",
|
||
"涨跌幅",
|
||
"近3月涨跌幅",
|
||
"近6月涨跌幅",
|
||
"近1年涨跌幅",
|
||
"近2年涨跌幅",
|
||
"近3年涨跌幅",
|
||
]
|
||
big_df["日期"] = pd.to_datetime(big_df["日期"]).dt.date
|
||
big_df["最新值"] = pd.to_numeric(big_df["最新值"])
|
||
big_df["涨跌幅"] = pd.to_numeric(big_df["涨跌幅"])
|
||
big_df["近3月涨跌幅"] = pd.to_numeric(big_df["近3月涨跌幅"])
|
||
big_df["近6月涨跌幅"] = pd.to_numeric(big_df["近6月涨跌幅"])
|
||
big_df["近1年涨跌幅"] = pd.to_numeric(big_df["近1年涨跌幅"])
|
||
big_df["近2年涨跌幅"] = pd.to_numeric(big_df["近2年涨跌幅"])
|
||
big_df["近3年涨跌幅"] = pd.to_numeric(big_df["近3年涨跌幅"])
|
||
big_df.sort_values(["日期"], inplace=True)
|
||
big_df.reset_index(inplace=True, drop=True)
|
||
return big_df
|
||
|
||
|
||
def macro_global_sox_index() -> pd.DataFrame:
|
||
"""
|
||
费城半导体指数
|
||
https://data.eastmoney.com/cjsj/hyzs_list_EMI00055562.html
|
||
:return: 费城半导体指数
|
||
:rtype: pandas.DataFrame
|
||
"""
|
||
url = "https://datacenter-web.eastmoney.com/api/data/v1/get"
|
||
params = {
|
||
"sortColumns": "REPORT_DATE",
|
||
"sortTypes": "-1",
|
||
"pageSize": "500",
|
||
"pageNumber": "1",
|
||
"reportName": "RPT_INDUSTRY_INDEX",
|
||
"columns": "REPORT_DATE,INDICATOR_VALUE,CHANGE_RATE,CHANGERATE_3M,CHANGERATE_6M,CHANGERATE_1Y,"
|
||
"CHANGERATE_2Y,CHANGERATE_3Y",
|
||
"filter": '(INDICATOR_ID="EMI00055562")',
|
||
"source": "WEB",
|
||
"client": "WEB",
|
||
}
|
||
r = requests.get(url, params=params)
|
||
data_json = r.json()
|
||
total_page = data_json["result"]["pages"]
|
||
big_df = pd.DataFrame()
|
||
tqdm = get_tqdm()
|
||
for page in tqdm(range(1, total_page + 1), leave=False):
|
||
params.update({"pageNumber": page})
|
||
r = requests.get(url, params=params)
|
||
data_json = r.json()
|
||
temp_df = pd.DataFrame(data_json["result"]["data"])
|
||
big_df = pd.concat([big_df, temp_df], ignore_index=True)
|
||
big_df.drop_duplicates(inplace=True)
|
||
big_df.columns = [
|
||
"日期",
|
||
"最新值",
|
||
"涨跌幅",
|
||
"近3月涨跌幅",
|
||
"近6月涨跌幅",
|
||
"近1年涨跌幅",
|
||
"近2年涨跌幅",
|
||
"近3年涨跌幅",
|
||
]
|
||
big_df["日期"] = pd.to_datetime(big_df["日期"]).dt.date
|
||
big_df["最新值"] = pd.to_numeric(big_df["最新值"])
|
||
big_df["涨跌幅"] = pd.to_numeric(big_df["涨跌幅"])
|
||
big_df["近3月涨跌幅"] = pd.to_numeric(big_df["近3月涨跌幅"])
|
||
big_df["近6月涨跌幅"] = pd.to_numeric(big_df["近6月涨跌幅"])
|
||
big_df["近1年涨跌幅"] = pd.to_numeric(big_df["近1年涨跌幅"])
|
||
big_df["近2年涨跌幅"] = pd.to_numeric(big_df["近2年涨跌幅"])
|
||
big_df["近3年涨跌幅"] = pd.to_numeric(big_df["近3年涨跌幅"])
|
||
big_df.sort_values(["日期"], inplace=True)
|
||
big_df.reset_index(inplace=True, drop=True)
|
||
return big_df
|
||
|
||
|
||
def macro_china_yw_electronic_index() -> pd.DataFrame:
|
||
"""
|
||
义乌小商品指数-电子元器件
|
||
https://data.eastmoney.com/cjsj/hyzs_list_EMI00055551.html
|
||
:return: 义乌小商品指数-电子元器件
|
||
:rtype: pandas.DataFrame
|
||
"""
|
||
url = "https://datacenter-web.eastmoney.com/api/data/v1/get"
|
||
params = {
|
||
"sortColumns": "REPORT_DATE",
|
||
"sortTypes": "-1",
|
||
"pageSize": "500",
|
||
"pageNumber": "1",
|
||
"reportName": "RPT_INDUSTRY_INDEX",
|
||
"columns": "REPORT_DATE,INDICATOR_VALUE,CHANGE_RATE,CHANGERATE_3M,CHANGERATE_6M,CHANGERATE_1Y,"
|
||
"CHANGERATE_2Y,CHANGERATE_3Y",
|
||
"filter": '(INDICATOR_ID="EMI00055551")',
|
||
"source": "WEB",
|
||
"client": "WEB",
|
||
}
|
||
r = requests.get(url, params=params)
|
||
data_json = r.json()
|
||
total_page = data_json["result"]["pages"]
|
||
big_df = pd.DataFrame()
|
||
tqdm = get_tqdm()
|
||
for page in tqdm(range(1, total_page + 1), leave=False):
|
||
params.update({"pageNumber": page})
|
||
r = requests.get(url, params=params)
|
||
data_json = r.json()
|
||
temp_df = pd.DataFrame(data_json["result"]["data"])
|
||
big_df = pd.concat([big_df, temp_df], ignore_index=True)
|
||
big_df.drop_duplicates(inplace=True)
|
||
big_df.columns = [
|
||
"日期",
|
||
"最新值",
|
||
"涨跌幅",
|
||
"近3月涨跌幅",
|
||
"近6月涨跌幅",
|
||
"近1年涨跌幅",
|
||
"近2年涨跌幅",
|
||
"近3年涨跌幅",
|
||
]
|
||
big_df["日期"] = pd.to_datetime(big_df["日期"]).dt.date
|
||
big_df["最新值"] = pd.to_numeric(big_df["最新值"])
|
||
big_df["涨跌幅"] = pd.to_numeric(big_df["涨跌幅"])
|
||
big_df["近3月涨跌幅"] = pd.to_numeric(big_df["近3月涨跌幅"])
|
||
big_df["近6月涨跌幅"] = pd.to_numeric(big_df["近6月涨跌幅"])
|
||
big_df["近1年涨跌幅"] = pd.to_numeric(big_df["近1年涨跌幅"])
|
||
big_df["近2年涨跌幅"] = pd.to_numeric(big_df["近2年涨跌幅"])
|
||
big_df["近3年涨跌幅"] = pd.to_numeric(big_df["近3年涨跌幅"])
|
||
big_df.sort_values(["日期"], inplace=True)
|
||
big_df.reset_index(inplace=True, drop=True)
|
||
return big_df
|
||
|
||
|
||
def macro_china_construction_index() -> pd.DataFrame:
|
||
"""
|
||
建材指数
|
||
https://data.eastmoney.com/cjsj/hyzs_list_EMI00662541.html
|
||
:return: 建材指数
|
||
:rtype: pandas.DataFrame
|
||
"""
|
||
import warnings
|
||
|
||
warnings.filterwarnings(action="ignore", category=FutureWarning)
|
||
url = "https://datacenter-web.eastmoney.com/api/data/v1/get"
|
||
params = {
|
||
"sortColumns": "REPORT_DATE",
|
||
"sortTypes": "-1",
|
||
"pageSize": "500",
|
||
"pageNumber": "1",
|
||
"reportName": "RPT_INDUSTRY_INDEX",
|
||
"columns": "REPORT_DATE,INDICATOR_VALUE,CHANGE_RATE,CHANGERATE_3M,CHANGERATE_6M,"
|
||
"CHANGERATE_1Y,CHANGERATE_2Y,CHANGERATE_3Y",
|
||
"filter": '(INDICATOR_ID="EMI00662541")',
|
||
"source": "WEB",
|
||
"client": "WEB",
|
||
}
|
||
r = requests.get(url, params=params)
|
||
data_json = r.json()
|
||
total_page = data_json["result"]["pages"]
|
||
big_df = pd.DataFrame()
|
||
tqdm = get_tqdm()
|
||
for page in tqdm(range(1, total_page + 1), leave=False):
|
||
params.update({"pageNumber": page})
|
||
r = requests.get(url, params=params)
|
||
data_json = r.json()
|
||
temp_df = pd.DataFrame(data_json["result"]["data"])
|
||
big_df = pd.concat(objs=[big_df, temp_df], ignore_index=True)
|
||
big_df.drop_duplicates(inplace=True)
|
||
big_df.columns = [
|
||
"日期",
|
||
"最新值",
|
||
"涨跌幅",
|
||
"近3月涨跌幅",
|
||
"近6月涨跌幅",
|
||
"近1年涨跌幅",
|
||
"近2年涨跌幅",
|
||
"近3年涨跌幅",
|
||
]
|
||
big_df["日期"] = pd.to_datetime(big_df["日期"], errors="coerce").dt.date
|
||
big_df["最新值"] = pd.to_numeric(big_df["最新值"], errors="coerce")
|
||
big_df["涨跌幅"] = pd.to_numeric(big_df["涨跌幅"], errors="coerce")
|
||
big_df["近3月涨跌幅"] = pd.to_numeric(big_df["近3月涨跌幅"], errors="coerce")
|
||
big_df["近6月涨跌幅"] = pd.to_numeric(big_df["近6月涨跌幅"], errors="coerce")
|
||
big_df["近1年涨跌幅"] = pd.to_numeric(big_df["近1年涨跌幅"], errors="coerce")
|
||
big_df["近2年涨跌幅"] = pd.to_numeric(big_df["近2年涨跌幅"], errors="coerce")
|
||
big_df["近3年涨跌幅"] = pd.to_numeric(big_df["近3年涨跌幅"], errors="coerce")
|
||
big_df.sort_values(by=["日期"], inplace=True)
|
||
big_df.reset_index(inplace=True, drop=True)
|
||
return big_df
|
||
|
||
|
||
def macro_china_construction_price_index() -> pd.DataFrame:
|
||
"""
|
||
建材价格指数
|
||
https://data.eastmoney.com/cjsj/hyzs_list_EMI00237146.html
|
||
:return: 建材价格指数
|
||
:rtype: pandas.DataFrame
|
||
"""
|
||
url = "https://datacenter-web.eastmoney.com/api/data/v1/get"
|
||
params = {
|
||
"sortColumns": "REPORT_DATE",
|
||
"sortTypes": "-1",
|
||
"pageSize": "500",
|
||
"pageNumber": "1",
|
||
"reportName": "RPT_INDUSTRY_INDEX",
|
||
"columns": "REPORT_DATE,INDICATOR_VALUE,CHANGE_RATE,CHANGERATE_3M,CHANGERATE_6M,CHANGERATE_1Y,"
|
||
"CHANGERATE_2Y,CHANGERATE_3Y",
|
||
"filter": '(INDICATOR_ID="EMI00237146")',
|
||
"source": "WEB",
|
||
"client": "WEB",
|
||
}
|
||
r = requests.get(url, params=params)
|
||
data_json = r.json()
|
||
total_page = data_json["result"]["pages"]
|
||
big_df = pd.DataFrame()
|
||
tqdm = get_tqdm()
|
||
for page in tqdm(range(1, total_page + 1), leave=False):
|
||
params.update({"pageNumber": page})
|
||
r = requests.get(url, params=params)
|
||
data_json = r.json()
|
||
temp_df = pd.DataFrame(data_json["result"]["data"])
|
||
big_df = pd.concat([big_df, temp_df], ignore_index=True)
|
||
big_df.drop_duplicates(inplace=True)
|
||
big_df.columns = [
|
||
"日期",
|
||
"最新值",
|
||
"涨跌幅",
|
||
"近3月涨跌幅",
|
||
"近6月涨跌幅",
|
||
"近1年涨跌幅",
|
||
"近2年涨跌幅",
|
||
"近3年涨跌幅",
|
||
]
|
||
big_df["日期"] = pd.to_datetime(big_df["日期"]).dt.date
|
||
big_df["最新值"] = pd.to_numeric(big_df["最新值"])
|
||
big_df["涨跌幅"] = pd.to_numeric(big_df["涨跌幅"])
|
||
big_df["近3月涨跌幅"] = pd.to_numeric(big_df["近3月涨跌幅"])
|
||
big_df["近6月涨跌幅"] = pd.to_numeric(big_df["近6月涨跌幅"])
|
||
big_df["近1年涨跌幅"] = pd.to_numeric(big_df["近1年涨跌幅"])
|
||
big_df["近2年涨跌幅"] = pd.to_numeric(big_df["近2年涨跌幅"])
|
||
big_df["近3年涨跌幅"] = pd.to_numeric(big_df["近3年涨跌幅"])
|
||
big_df.sort_values(["日期"], inplace=True)
|
||
big_df.reset_index(inplace=True, drop=True)
|
||
return big_df
|
||
|
||
|
||
def macro_china_lpi_index() -> pd.DataFrame:
|
||
"""
|
||
物流景气指数
|
||
https://data.eastmoney.com/cjsj/hyzs_list_EMI00352262.html
|
||
:return: 物流景气指数
|
||
:rtype: pandas.DataFrame
|
||
"""
|
||
url = "https://datacenter-web.eastmoney.com/api/data/v1/get"
|
||
params = {
|
||
"sortColumns": "REPORT_DATE",
|
||
"sortTypes": "-1",
|
||
"pageSize": "500",
|
||
"pageNumber": "1",
|
||
"reportName": "RPT_INDUSTRY_INDEX",
|
||
"columns": "REPORT_DATE,INDICATOR_VALUE,CHANGE_RATE,CHANGERATE_3M,CHANGERATE_6M,CHANGERATE_1Y,"
|
||
"CHANGERATE_2Y,CHANGERATE_3Y",
|
||
"filter": '(INDICATOR_ID="EMI00352262")',
|
||
"source": "WEB",
|
||
"client": "WEB",
|
||
}
|
||
r = requests.get(url, params=params)
|
||
data_json = r.json()
|
||
total_page = data_json["result"]["pages"]
|
||
big_df = pd.DataFrame()
|
||
tqdm = get_tqdm()
|
||
for page in tqdm(range(1, total_page + 1), leave=False):
|
||
params.update({"pageNumber": page})
|
||
r = requests.get(url, params=params)
|
||
data_json = r.json()
|
||
temp_df = pd.DataFrame(data_json["result"]["data"])
|
||
big_df = pd.concat([big_df, temp_df], ignore_index=True)
|
||
big_df.drop_duplicates(inplace=True)
|
||
big_df.columns = [
|
||
"日期",
|
||
"最新值",
|
||
"涨跌幅",
|
||
"近3月涨跌幅",
|
||
"近6月涨跌幅",
|
||
"近1年涨跌幅",
|
||
"近2年涨跌幅",
|
||
"近3年涨跌幅",
|
||
]
|
||
big_df["日期"] = pd.to_datetime(big_df["日期"]).dt.date
|
||
big_df["最新值"] = pd.to_numeric(big_df["最新值"])
|
||
big_df["涨跌幅"] = pd.to_numeric(big_df["涨跌幅"])
|
||
big_df["近3月涨跌幅"] = pd.to_numeric(big_df["近3月涨跌幅"])
|
||
big_df["近6月涨跌幅"] = pd.to_numeric(big_df["近6月涨跌幅"])
|
||
big_df["近1年涨跌幅"] = pd.to_numeric(big_df["近1年涨跌幅"])
|
||
big_df["近2年涨跌幅"] = pd.to_numeric(big_df["近2年涨跌幅"])
|
||
big_df["近3年涨跌幅"] = pd.to_numeric(big_df["近3年涨跌幅"])
|
||
big_df.sort_values(["日期"], inplace=True)
|
||
big_df.reset_index(inplace=True, drop=True)
|
||
return big_df
|
||
|
||
|
||
def macro_china_bdti_index() -> pd.DataFrame:
|
||
"""
|
||
原油运输指数
|
||
https://data.eastmoney.com/cjsj/hyzs_list_EMI00107668.html
|
||
:return: 原油运输指数
|
||
:rtype: pandas.DataFrame
|
||
"""
|
||
url = "https://datacenter-web.eastmoney.com/api/data/v1/get"
|
||
params = {
|
||
"sortColumns": "REPORT_DATE",
|
||
"sortTypes": "-1",
|
||
"pageSize": "500",
|
||
"pageNumber": "1",
|
||
"reportName": "RPT_INDUSTRY_INDEX",
|
||
"columns": "REPORT_DATE,INDICATOR_VALUE,CHANGE_RATE,CHANGERATE_3M,CHANGERATE_6M,CHANGERATE_1Y,"
|
||
"CHANGERATE_2Y,CHANGERATE_3Y",
|
||
"filter": '(INDICATOR_ID="EMI00107668")',
|
||
"source": "WEB",
|
||
"client": "WEB",
|
||
}
|
||
r = requests.get(url, params=params)
|
||
data_json = r.json()
|
||
total_page = data_json["result"]["pages"]
|
||
big_df = pd.DataFrame()
|
||
tqdm = get_tqdm()
|
||
for page in tqdm(range(1, total_page + 1), leave=False):
|
||
params.update({"pageNumber": page})
|
||
r = requests.get(url, params=params)
|
||
data_json = r.json()
|
||
temp_df = pd.DataFrame(data_json["result"]["data"])
|
||
big_df = pd.concat([big_df, temp_df], ignore_index=True)
|
||
big_df.drop_duplicates(inplace=True)
|
||
big_df.columns = [
|
||
"日期",
|
||
"最新值",
|
||
"涨跌幅",
|
||
"近3月涨跌幅",
|
||
"近6月涨跌幅",
|
||
"近1年涨跌幅",
|
||
"近2年涨跌幅",
|
||
"近3年涨跌幅",
|
||
]
|
||
big_df["日期"] = pd.to_datetime(big_df["日期"]).dt.date
|
||
big_df["最新值"] = pd.to_numeric(big_df["最新值"])
|
||
big_df["涨跌幅"] = pd.to_numeric(big_df["涨跌幅"])
|
||
big_df["近3月涨跌幅"] = pd.to_numeric(big_df["近3月涨跌幅"])
|
||
big_df["近6月涨跌幅"] = pd.to_numeric(big_df["近6月涨跌幅"])
|
||
big_df["近1年涨跌幅"] = pd.to_numeric(big_df["近1年涨跌幅"])
|
||
big_df["近2年涨跌幅"] = pd.to_numeric(big_df["近2年涨跌幅"])
|
||
big_df["近3年涨跌幅"] = pd.to_numeric(big_df["近3年涨跌幅"])
|
||
big_df.sort_values(["日期"], inplace=True)
|
||
big_df.reset_index(inplace=True, drop=True)
|
||
return big_df
|
||
|
||
|
||
def macro_china_bsi_index() -> pd.DataFrame:
|
||
"""
|
||
超灵便型船运价指数
|
||
https://data.eastmoney.com/cjsj/hyzs_list_EMI00107667.html
|
||
:return: 超灵便型船运价指数
|
||
:rtype: pandas.DataFrame
|
||
"""
|
||
url = "https://datacenter-web.eastmoney.com/api/data/v1/get"
|
||
params = {
|
||
"sortColumns": "REPORT_DATE",
|
||
"sortTypes": "-1",
|
||
"pageSize": "500",
|
||
"pageNumber": "1",
|
||
"reportName": "RPT_INDUSTRY_INDEX",
|
||
"columns": "REPORT_DATE,INDICATOR_VALUE,CHANGE_RATE,CHANGERATE_3M,CHANGERATE_6M,CHANGERATE_1Y,"
|
||
"CHANGERATE_2Y,CHANGERATE_3Y",
|
||
"filter": '(INDICATOR_ID="EMI00107667")',
|
||
"source": "WEB",
|
||
"client": "WEB",
|
||
}
|
||
r = requests.get(url, params=params)
|
||
data_json = r.json()
|
||
total_page = data_json["result"]["pages"]
|
||
big_df = pd.DataFrame()
|
||
tqdm = get_tqdm()
|
||
for page in tqdm(range(1, total_page + 1), leave=False):
|
||
params.update({"pageNumber": page})
|
||
r = requests.get(url, params=params)
|
||
data_json = r.json()
|
||
temp_df = pd.DataFrame(data_json["result"]["data"])
|
||
big_df = pd.concat([big_df, temp_df], ignore_index=True)
|
||
big_df.drop_duplicates(inplace=True)
|
||
big_df.columns = [
|
||
"日期",
|
||
"最新值",
|
||
"涨跌幅",
|
||
"近3月涨跌幅",
|
||
"近6月涨跌幅",
|
||
"近1年涨跌幅",
|
||
"近2年涨跌幅",
|
||
"近3年涨跌幅",
|
||
]
|
||
big_df["日期"] = pd.to_datetime(big_df["日期"]).dt.date
|
||
big_df["最新值"] = pd.to_numeric(big_df["最新值"])
|
||
big_df["涨跌幅"] = pd.to_numeric(big_df["涨跌幅"])
|
||
big_df["近3月涨跌幅"] = pd.to_numeric(big_df["近3月涨跌幅"])
|
||
big_df["近6月涨跌幅"] = pd.to_numeric(big_df["近6月涨跌幅"])
|
||
big_df["近1年涨跌幅"] = pd.to_numeric(big_df["近1年涨跌幅"])
|
||
big_df["近2年涨跌幅"] = pd.to_numeric(big_df["近2年涨跌幅"])
|
||
big_df["近3年涨跌幅"] = pd.to_numeric(big_df["近3年涨跌幅"])
|
||
big_df.sort_values(["日期"], inplace=True)
|
||
big_df.reset_index(inplace=True, drop=True)
|
||
return big_df
|
||
|
||
|
||
def _em_macro_1(em_id) -> pd.DataFrame:
|
||
"""
|
||
东财宏观数据的一种通用函数
|
||
:return: 处理后的数据
|
||
:rtype: pandas.DataFrame
|
||
"""
|
||
url = "https://datacenter-web.eastmoney.com/api/data/v1/get"
|
||
ind_id = '"' + em_id + '"'
|
||
params = {
|
||
"sortColumns": "REPORT_DATE",
|
||
"sortTypes": "-1",
|
||
"pageSize": "500",
|
||
"pageNumber": "1",
|
||
"reportName": "RPT_INDUSTRY_INDEX",
|
||
"columns": "REPORT_DATE,INDICATOR_VALUE,CHANGE_RATE,CHANGERATE_3M,"
|
||
"CHANGERATE_6M,CHANGERATE_1Y,CHANGERATE_2Y,CHANGERATE_3Y",
|
||
"filter": "(INDICATOR_ID=" + ind_id + ")",
|
||
"source": "WEB",
|
||
"client": "WEB",
|
||
}
|
||
r = requests.get(url, params=params)
|
||
data_json = r.json()
|
||
total_page = data_json["result"]["pages"]
|
||
big_df = pd.DataFrame()
|
||
tqdm = get_tqdm()
|
||
for page in tqdm(range(1, total_page + 1), leave=False):
|
||
params.update({"pageNumber": page})
|
||
r = requests.get(url, params=params)
|
||
data_json = r.json()
|
||
temp_df = pd.DataFrame(data_json["result"]["data"])
|
||
big_df = pd.concat([big_df, temp_df], ignore_index=True)
|
||
big_df.drop_duplicates(inplace=True)
|
||
big_df.columns = [
|
||
"日期",
|
||
"最新值",
|
||
"涨跌幅",
|
||
"近3月涨跌幅",
|
||
"近6月涨跌幅",
|
||
"近1年涨跌幅",
|
||
"近2年涨跌幅",
|
||
"近3年涨跌幅",
|
||
]
|
||
big_df["日期"] = pd.to_datetime(big_df["日期"], errors="coerce").dt.date
|
||
big_df["最新值"] = pd.to_numeric(big_df["最新值"], errors="coerce")
|
||
big_df["涨跌幅"] = pd.to_numeric(big_df["涨跌幅"], errors="coerce")
|
||
big_df["近3月涨跌幅"] = pd.to_numeric(big_df["近3月涨跌幅"], errors="coerce")
|
||
big_df["近6月涨跌幅"] = pd.to_numeric(big_df["近6月涨跌幅"], errors="coerce")
|
||
big_df["近1年涨跌幅"] = pd.to_numeric(big_df["近1年涨跌幅"], errors="coerce")
|
||
big_df["近2年涨跌幅"] = pd.to_numeric(big_df["近2年涨跌幅"], errors="coerce")
|
||
big_df["近3年涨跌幅"] = pd.to_numeric(big_df["近3年涨跌幅"], errors="coerce")
|
||
big_df.sort_values(by=["日期"], inplace=True)
|
||
big_df.reset_index(inplace=True, drop=True)
|
||
return big_df
|
||
|
||
|
||
def macro_shipping_bci() -> pd.DataFrame:
|
||
"""
|
||
海岬型运费指数(BCI)
|
||
https://data.eastmoney.com/cjsj/hyzs_list_EMI00107666.html
|
||
:return: 海岬型运费指数
|
||
:rtype: pandas.DataFrame
|
||
"""
|
||
ts = _em_macro_1("EMI00107666")
|
||
return ts
|
||
|
||
|
||
def macro_shipping_bdi() -> pd.DataFrame:
|
||
"""
|
||
波罗的海干散货指数(BDI)
|
||
https://data.eastmoney.com/cjsj/hyzs_list_EMI00107664.html
|
||
:return: 波罗的海干散货指数
|
||
:rtype: pandas.DataFrame
|
||
"""
|
||
ts = _em_macro_1("EMI00107664")
|
||
return ts
|
||
|
||
|
||
def macro_shipping_bpi() -> pd.DataFrame:
|
||
"""
|
||
巴拿马型运费指数(BPI)
|
||
https://data.eastmoney.com/cjsj/hyzs_list_EMI00107665.html
|
||
:return: 巴拿马型运费指数
|
||
:rtype: pandas.DataFrame
|
||
"""
|
||
ts = _em_macro_1("EMI00107665")
|
||
return ts
|
||
|
||
|
||
def macro_shipping_bcti() -> pd.DataFrame:
|
||
"""
|
||
成品油运输指数(BCTI)
|
||
https://data.eastmoney.com/cjsj/hyzs_list_EMI00107669.html
|
||
:return: 成品油运输指数
|
||
:rtype: pandas.DataFrame
|
||
"""
|
||
ts = _em_macro_1("EMI00107669")
|
||
return ts
|
||
|
||
|
||
def macro_china_new_financial_credit() -> pd.DataFrame:
|
||
"""
|
||
中国-新增信贷数据
|
||
https://data.eastmoney.com/cjsj/xzxd.html
|
||
:return: 新增信贷数据
|
||
:rtype: pandas.DataFrame
|
||
"""
|
||
url = "https://datacenter-web.eastmoney.com/api/data/v1/get"
|
||
params = {
|
||
"columns": "REPORT_DATE,TIME,RMB_LOAN,RMB_LOAN_SAME,RMB_LOAN_SEQUENTIAL,"
|
||
"RMB_LOAN_ACCUMULATE,LOAN_ACCUMULATE_SAME",
|
||
"pageNumber": "1",
|
||
"pageSize": "2000",
|
||
"sortColumns": "REPORT_DATE",
|
||
"sortTypes": "-1",
|
||
"source": "WEB",
|
||
"client": "WEB",
|
||
"reportName": "RPT_ECONOMY_RMB_LOAN",
|
||
"p": "1",
|
||
"pageNo": "1",
|
||
"pageNum": "1",
|
||
}
|
||
r = requests.get(url, params=params)
|
||
data_json = r.json()
|
||
temp_df = pd.DataFrame(data_json["result"]["data"])
|
||
|
||
temp_df.columns = [
|
||
"-",
|
||
"月份",
|
||
"当月",
|
||
"当月-同比增长",
|
||
"当月-环比增长",
|
||
"累计",
|
||
"累计-同比增长",
|
||
]
|
||
temp_df = temp_df[
|
||
["月份", "当月", "当月-同比增长", "当月-环比增长", "累计", "累计-同比增长"]
|
||
]
|
||
|
||
temp_df["当月"] = pd.to_numeric(temp_df["当月"], errors="coerce")
|
||
temp_df["当月-同比增长"] = pd.to_numeric(temp_df["当月-同比增长"], errors="coerce")
|
||
temp_df["当月-环比增长"] = pd.to_numeric(temp_df["当月-环比增长"], errors="coerce")
|
||
temp_df["累计"] = pd.to_numeric(temp_df["累计"], errors="coerce")
|
||
temp_df["累计-同比增长"] = pd.to_numeric(temp_df["累计-同比增长"], errors="coerce")
|
||
|
||
return temp_df
|
||
|
||
|
||
def macro_china_fx_gold() -> pd.DataFrame:
|
||
"""
|
||
东方财富-外汇和黄金储备
|
||
https://data.eastmoney.com/cjsj/hjwh.html
|
||
:return: 外汇和黄金储备
|
||
:rtype: pandas.DataFrame
|
||
"""
|
||
url = "https://datacenter-web.eastmoney.com/api/data/v1/get"
|
||
headers = {
|
||
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
|
||
"Chrome/81.0.4044.138 Safari/537.36",
|
||
}
|
||
params = {
|
||
"columns": "REPORT_DATE,TIME,GOLD_RESERVES,GOLD_RESERVES_SAME,"
|
||
"GOLD_RESERVES_SEQUENTIAL,FOREX,FOREX_SAME,FOREX_SEQUENTIAL",
|
||
"pageNumber": "1",
|
||
"pageSize": "1000",
|
||
"sortColumns": "REPORT_DATE",
|
||
"sortTypes": "-1",
|
||
"source": "WEB",
|
||
"client": "WEB",
|
||
"reportName": "RPT_ECONOMY_GOLD_CURRENCY",
|
||
"p": "1",
|
||
"pageNo": "1",
|
||
"pageNum": "1",
|
||
}
|
||
r = requests.get(url, params=params, headers=headers)
|
||
data_json = r.json()
|
||
temp_df = pd.DataFrame(data_json["result"]["data"])
|
||
temp_df.columns = [
|
||
"-",
|
||
"月份",
|
||
"黄金储备-数值",
|
||
"黄金储备-同比",
|
||
"黄金储备-环比",
|
||
"国家外汇储备-数值",
|
||
"国家外汇储备-同比",
|
||
"国家外汇储备-环比",
|
||
]
|
||
temp_df = temp_df[
|
||
[
|
||
"月份",
|
||
"黄金储备-数值",
|
||
"黄金储备-同比",
|
||
"黄金储备-环比",
|
||
"国家外汇储备-数值",
|
||
"国家外汇储备-同比",
|
||
"国家外汇储备-环比",
|
||
]
|
||
]
|
||
temp_df["国家外汇储备-数值"] = pd.to_numeric(
|
||
temp_df["国家外汇储备-数值"], errors="coerce"
|
||
)
|
||
temp_df["国家外汇储备-同比"] = pd.to_numeric(
|
||
temp_df["国家外汇储备-同比"], errors="coerce"
|
||
)
|
||
temp_df["国家外汇储备-环比"] = pd.to_numeric(
|
||
temp_df["国家外汇储备-环比"], errors="coerce"
|
||
)
|
||
temp_df["黄金储备-数值"] = pd.to_numeric(temp_df["黄金储备-数值"], errors="coerce")
|
||
temp_df["黄金储备-同比"] = pd.to_numeric(temp_df["黄金储备-同比"], errors="coerce")
|
||
temp_df["黄金储备-环比"] = pd.to_numeric(temp_df["黄金储备-环比"], errors="coerce")
|
||
temp_df.sort_values(by=["月份"], inplace=True, ignore_index=True)
|
||
return temp_df
|
||
|
||
|
||
def macro_china_stock_market_cap() -> pd.DataFrame:
|
||
"""
|
||
东方财富-全国股票交易统计表
|
||
https://data.eastmoney.com/cjsj/gpjytj.html
|
||
:return: 全国股票交易统计表
|
||
:rtype: pandas.DataFrame
|
||
"""
|
||
url = "https://datacenter-web.eastmoney.com/api/data/v1/get"
|
||
headers = {
|
||
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
|
||
"Chrome/81.0.4044.138 Safari/537.36",
|
||
}
|
||
params = {
|
||
"reportName": "RPT_ECONOMY_STOCK_STATISTICS",
|
||
"columns": "REPORT_DATE,TIME,TOTAL_SHARES_SH,TOTAL_MARKE_SH,DEAL_AMOUNT_SH,VOLUME_SH,HIGH_INDEX_SH,"
|
||
"LOW_INDEX_SH,TOTAL_SZARES_SZ,TOTAL_MARKE_SZ,DEAL_AMOUNT_SZ,VOLUME_SZ,HIGH_INDEX_SZ,LOW_INDEX_SZ",
|
||
"sortColumns": "REPORT_DATE",
|
||
"sortTypes": "-1",
|
||
"pageNumber": "1",
|
||
"pageSize": "1000",
|
||
"source": "WEB",
|
||
"client": "WEB",
|
||
}
|
||
r = requests.get(url, params=params, headers=headers)
|
||
data_json = r.json()
|
||
temp_df = pd.DataFrame(data_json["result"]["data"])
|
||
temp_df.columns = [
|
||
"-",
|
||
"数据日期",
|
||
"发行总股本-上海",
|
||
"市价总值-上海",
|
||
"成交金额-上海",
|
||
"成交量-上海",
|
||
"A股最高综合股价指数-上海",
|
||
"A股最低综合股价指数-上海",
|
||
"发行总股本-深圳",
|
||
"市价总值-深圳",
|
||
"成交金额-深圳",
|
||
"成交量-深圳",
|
||
"A股最高综合股价指数-深圳",
|
||
"A股最低综合股价指数-深圳",
|
||
]
|
||
temp_df = temp_df[
|
||
[
|
||
"数据日期",
|
||
"发行总股本-上海",
|
||
"发行总股本-深圳",
|
||
"市价总值-上海",
|
||
"市价总值-深圳",
|
||
"成交金额-上海",
|
||
"成交金额-深圳",
|
||
"成交量-上海",
|
||
"成交量-深圳",
|
||
"A股最高综合股价指数-上海",
|
||
"A股最高综合股价指数-深圳",
|
||
"A股最低综合股价指数-上海",
|
||
"A股最低综合股价指数-深圳",
|
||
]
|
||
]
|
||
temp_df["发行总股本-上海"] = pd.to_numeric(
|
||
temp_df["发行总股本-上海"], errors="coerce"
|
||
)
|
||
temp_df["发行总股本-深圳"] = pd.to_numeric(
|
||
temp_df["发行总股本-深圳"], errors="coerce"
|
||
)
|
||
temp_df["市价总值-上海"] = pd.to_numeric(temp_df["市价总值-上海"], errors="coerce")
|
||
temp_df["市价总值-深圳"] = pd.to_numeric(temp_df["市价总值-深圳"], errors="coerce")
|
||
temp_df["成交金额-上海"] = pd.to_numeric(temp_df["成交金额-上海"], errors="coerce")
|
||
temp_df["成交金额-深圳"] = pd.to_numeric(temp_df["成交金额-深圳"], errors="coerce")
|
||
temp_df["成交量-上海"] = pd.to_numeric(temp_df["成交量-上海"], errors="coerce")
|
||
temp_df["成交量-深圳"] = pd.to_numeric(temp_df["成交量-深圳"], errors="coerce")
|
||
temp_df["A股最高综合股价指数-上海"] = pd.to_numeric(
|
||
temp_df["A股最高综合股价指数-上海"], errors="coerce"
|
||
)
|
||
temp_df["A股最高综合股价指数-深圳"] = pd.to_numeric(
|
||
temp_df["A股最高综合股价指数-深圳"], errors="coerce"
|
||
)
|
||
temp_df["A股最低综合股价指数-上海"] = pd.to_numeric(
|
||
temp_df["A股最低综合股价指数-上海"], errors="coerce"
|
||
)
|
||
temp_df["A股最低综合股价指数-深圳"] = pd.to_numeric(
|
||
temp_df["A股最低综合股价指数-深圳"], errors="coerce"
|
||
)
|
||
return temp_df
|
||
|
||
|
||
def macro_china_money_supply() -> pd.DataFrame:
|
||
"""
|
||
东方财富-货币供应量
|
||
https://data.eastmoney.com/cjsj/hbgyl.html
|
||
:return: 货币供应量
|
||
:rtype: pandas.DataFrame
|
||
"""
|
||
url = "https://datacenter-web.eastmoney.com/api/data/v1/get"
|
||
params = {
|
||
"columns": "REPORT_DATE,TIME,BASIC_CURRENCY,BASIC_CURRENCY_SAME,BASIC_CURRENCY_SEQUENTIAL,CURRENCY,"
|
||
"CURRENCY_SAME,CURRENCY_SEQUENTIAL,FREE_CASH,FREE_CASH_SAME,FREE_CASH_SEQUENTIAL",
|
||
"pageNumber": "1",
|
||
"pageSize": "2000",
|
||
"sortColumns": "REPORT_DATE",
|
||
"sortTypes": "-1",
|
||
"source": "WEB",
|
||
"client": "WEB",
|
||
"reportName": "RPT_ECONOMY_CURRENCY_SUPPLY",
|
||
"p": "1",
|
||
"pageNo": "1",
|
||
"pageNum": "1",
|
||
}
|
||
r = requests.get(url, params=params)
|
||
data_json = r.json()
|
||
temp_df = pd.DataFrame(data_json["result"]["data"])
|
||
temp_df.columns = [
|
||
"-",
|
||
"月份",
|
||
"货币和准货币(M2)-数量(亿元)",
|
||
"货币和准货币(M2)-同比增长",
|
||
"货币和准货币(M2)-环比增长",
|
||
"货币(M1)-数量(亿元)",
|
||
"货币(M1)-同比增长",
|
||
"货币(M1)-环比增长",
|
||
"流通中的现金(M0)-数量(亿元)",
|
||
"流通中的现金(M0)-同比增长",
|
||
"流通中的现金(M0)-环比增长",
|
||
]
|
||
temp_df = temp_df[
|
||
[
|
||
"月份",
|
||
"货币和准货币(M2)-数量(亿元)",
|
||
"货币和准货币(M2)-同比增长",
|
||
"货币和准货币(M2)-环比增长",
|
||
"货币(M1)-数量(亿元)",
|
||
"货币(M1)-同比增长",
|
||
"货币(M1)-环比增长",
|
||
"流通中的现金(M0)-数量(亿元)",
|
||
"流通中的现金(M0)-同比增长",
|
||
"流通中的现金(M0)-环比增长",
|
||
]
|
||
]
|
||
|
||
temp_df["货币和准货币(M2)-数量(亿元)"] = pd.to_numeric(
|
||
temp_df["货币和准货币(M2)-数量(亿元)"], errors="coerce"
|
||
)
|
||
temp_df["货币和准货币(M2)-同比增长"] = pd.to_numeric(
|
||
temp_df["货币和准货币(M2)-同比增长"], errors="coerce"
|
||
)
|
||
temp_df["货币和准货币(M2)-环比增长"] = pd.to_numeric(
|
||
temp_df["货币和准货币(M2)-环比增长"], errors="coerce"
|
||
)
|
||
temp_df["货币(M1)-数量(亿元)"] = pd.to_numeric(
|
||
temp_df["货币(M1)-数量(亿元)"], errors="coerce"
|
||
)
|
||
temp_df["货币(M1)-同比增长"] = pd.to_numeric(
|
||
temp_df["货币(M1)-同比增长"], errors="coerce"
|
||
)
|
||
temp_df["货币(M1)-环比增长"] = pd.to_numeric(
|
||
temp_df["货币(M1)-环比增长"], errors="coerce"
|
||
)
|
||
temp_df["流通中的现金(M0)-数量(亿元)"] = pd.to_numeric(
|
||
temp_df["流通中的现金(M0)-数量(亿元)"], errors="coerce"
|
||
)
|
||
temp_df["流通中的现金(M0)-同比增长"] = pd.to_numeric(
|
||
temp_df["流通中的现金(M0)-同比增长"], errors="coerce"
|
||
)
|
||
temp_df["流通中的现金(M0)-环比增长"] = pd.to_numeric(
|
||
temp_df["流通中的现金(M0)-环比增长"], errors="coerce"
|
||
)
|
||
return temp_df
|
||
|
||
|
||
def macro_china_cpi() -> pd.DataFrame:
|
||
"""
|
||
东方财富-中国居民消费价格指数
|
||
https://data.eastmoney.com/cjsj/cpi.html
|
||
:return: 东方财富-中国居民消费价格指数
|
||
:rtype: pandas.DataFrame
|
||
"""
|
||
url = "https://datacenter-web.eastmoney.com/api/data/v1/get"
|
||
params = {
|
||
"columns": "REPORT_DATE,TIME,NATIONAL_SAME,NATIONAL_BASE,NATIONAL_SEQUENTIAL,NATIONAL_ACCUMULATE,"
|
||
"CITY_SAME,CITY_BASE,CITY_SEQUENTIAL,CITY_ACCUMULATE,RURAL_SAME,"
|
||
"RURAL_BASE,RURAL_SEQUENTIAL,RURAL_ACCUMULATE",
|
||
"pageNumber": "1",
|
||
"pageSize": "2000",
|
||
"sortColumns": "REPORT_DATE",
|
||
"sortTypes": "-1",
|
||
"source": "WEB",
|
||
"client": "WEB",
|
||
"reportName": "RPT_ECONOMY_CPI",
|
||
"p": "1",
|
||
"pageNo": "1",
|
||
"pageNum": "1",
|
||
}
|
||
r = requests.get(url, params=params)
|
||
data_json = r.json()
|
||
temp_df = pd.DataFrame(data_json["result"]["data"])
|
||
temp_df.columns = [
|
||
"-",
|
||
"月份",
|
||
"全国-同比增长",
|
||
"全国-当月",
|
||
"全国-环比增长",
|
||
"全国-累计",
|
||
"城市-同比增长",
|
||
"城市-当月",
|
||
"城市-环比增长",
|
||
"城市-累计",
|
||
"农村-同比增长",
|
||
"农村-当月",
|
||
"农村-环比增长",
|
||
"农村-累计",
|
||
]
|
||
temp_df = temp_df[
|
||
[
|
||
"月份",
|
||
"全国-当月",
|
||
"全国-同比增长",
|
||
"全国-环比增长",
|
||
"全国-累计",
|
||
"城市-当月",
|
||
"城市-同比增长",
|
||
"城市-环比增长",
|
||
"城市-累计",
|
||
"农村-当月",
|
||
"农村-同比增长",
|
||
"农村-环比增长",
|
||
"农村-累计",
|
||
]
|
||
]
|
||
temp_df["全国-当月"] = pd.to_numeric(temp_df["全国-当月"], errors="coerce")
|
||
temp_df["全国-同比增长"] = pd.to_numeric(temp_df["全国-同比增长"], errors="coerce")
|
||
temp_df["全国-环比增长"] = pd.to_numeric(temp_df["全国-环比增长"], errors="coerce")
|
||
temp_df["全国-累计"] = pd.to_numeric(temp_df["全国-累计"], errors="coerce")
|
||
temp_df["城市-当月"] = pd.to_numeric(temp_df["城市-当月"], errors="coerce")
|
||
temp_df["城市-同比增长"] = pd.to_numeric(temp_df["城市-同比增长"], errors="coerce")
|
||
temp_df["城市-环比增长"] = pd.to_numeric(temp_df["城市-环比增长"], errors="coerce")
|
||
temp_df["城市-累计"] = pd.to_numeric(temp_df["城市-累计"], errors="coerce")
|
||
temp_df["农村-当月"] = pd.to_numeric(temp_df["农村-当月"], errors="coerce")
|
||
temp_df["农村-同比增长"] = pd.to_numeric(temp_df["农村-同比增长"], errors="coerce")
|
||
temp_df["农村-环比增长"] = pd.to_numeric(temp_df["农村-环比增长"], errors="coerce")
|
||
temp_df["农村-累计"] = pd.to_numeric(temp_df["农村-累计"], errors="coerce")
|
||
|
||
return temp_df
|
||
|
||
|
||
def macro_china_gdp() -> pd.DataFrame:
|
||
"""
|
||
东方财富-中国国内生产总值
|
||
https://data.eastmoney.com/cjsj/gdp.html
|
||
:return: 东方财富中国国内生产总值
|
||
:rtype: pandas.DataFrame
|
||
"""
|
||
url = "https://datacenter-web.eastmoney.com/api/data/v1/get"
|
||
params = {
|
||
"columns": "REPORT_DATE,TIME,DOMESTICL_PRODUCT_BASE,FIRST_PRODUCT_BASE,SECOND_PRODUCT_BASE,"
|
||
"THIRD_PRODUCT_BASE,SUM_SAME,FIRST_SAME,SECOND_SAME,THIRD_SAME",
|
||
"pageNumber": "1",
|
||
"pageSize": "2000",
|
||
"sortColumns": "REPORT_DATE",
|
||
"sortTypes": "-1",
|
||
"source": "WEB",
|
||
"client": "WEB",
|
||
"reportName": "RPT_ECONOMY_GDP",
|
||
"p": "1",
|
||
"pageNo": "1",
|
||
"pageNum": "1",
|
||
}
|
||
r = requests.get(url, params=params)
|
||
data_json = r.json()
|
||
temp_df = pd.DataFrame(data_json["result"]["data"])
|
||
temp_df.columns = [
|
||
"-",
|
||
"季度",
|
||
"国内生产总值-绝对值",
|
||
"第一产业-绝对值",
|
||
"第二产业-绝对值",
|
||
"第三产业-绝对值",
|
||
"国内生产总值-同比增长",
|
||
"第一产业-同比增长",
|
||
"第二产业-同比增长",
|
||
"第三产业-同比增长",
|
||
]
|
||
temp_df = temp_df[
|
||
[
|
||
"季度",
|
||
"国内生产总值-绝对值",
|
||
"国内生产总值-同比增长",
|
||
"第一产业-绝对值",
|
||
"第一产业-同比增长",
|
||
"第二产业-绝对值",
|
||
"第二产业-同比增长",
|
||
"第三产业-绝对值",
|
||
"第三产业-同比增长",
|
||
]
|
||
]
|
||
temp_df["国内生产总值-绝对值"] = pd.to_numeric(
|
||
temp_df["国内生产总值-绝对值"], errors="coerce"
|
||
)
|
||
temp_df["国内生产总值-同比增长"] = pd.to_numeric(
|
||
temp_df["国内生产总值-同比增长"], errors="coerce"
|
||
)
|
||
temp_df["第一产业-绝对值"] = pd.to_numeric(
|
||
temp_df["第一产业-绝对值"], errors="coerce"
|
||
)
|
||
temp_df["第一产业-同比增长"] = pd.to_numeric(
|
||
temp_df["第一产业-同比增长"], errors="coerce"
|
||
)
|
||
temp_df["第二产业-绝对值"] = pd.to_numeric(
|
||
temp_df["第二产业-绝对值"], errors="coerce"
|
||
)
|
||
temp_df["第二产业-同比增长"] = pd.to_numeric(
|
||
temp_df["第二产业-同比增长"], errors="coerce"
|
||
)
|
||
temp_df["第三产业-绝对值"] = pd.to_numeric(
|
||
temp_df["第三产业-绝对值"], errors="coerce"
|
||
)
|
||
temp_df["第三产业-同比增长"] = pd.to_numeric(
|
||
temp_df["第三产业-同比增长"], errors="coerce"
|
||
)
|
||
return temp_df
|
||
|
||
|
||
def macro_china_ppi() -> pd.DataFrame:
|
||
"""
|
||
东方财富-中国工业品出厂价格指数
|
||
https://data.eastmoney.com/cjsj/ppi.html
|
||
:return: 东方财富中国工业品出厂价格指数
|
||
:rtype: pandas.DataFrame
|
||
"""
|
||
url = "https://datacenter-web.eastmoney.com/api/data/v1/get"
|
||
params = {
|
||
"columns": "REPORT_DATE,TIME,BASE,BASE_SAME,BASE_ACCUMULATE",
|
||
"pageNumber": "1",
|
||
"pageSize": "2000",
|
||
"sortColumns": "REPORT_DATE",
|
||
"sortTypes": "-1",
|
||
"source": "WEB",
|
||
"client": "WEB",
|
||
"reportName": "RPT_ECONOMY_PPI",
|
||
"p": "1",
|
||
"pageNo": "1",
|
||
"pageNum": "1",
|
||
}
|
||
r = requests.get(url, params=params)
|
||
data_json = r.json()
|
||
temp_df = pd.DataFrame(data_json["result"]["data"])
|
||
temp_df.columns = [
|
||
"-",
|
||
"月份",
|
||
"当月",
|
||
"当月同比增长",
|
||
"累计",
|
||
]
|
||
temp_df = temp_df[
|
||
[
|
||
"月份",
|
||
"当月",
|
||
"当月同比增长",
|
||
"累计",
|
||
]
|
||
]
|
||
temp_df["当月"] = pd.to_numeric(temp_df["当月"], errors="coerce")
|
||
temp_df["当月同比增长"] = pd.to_numeric(temp_df["当月同比增长"], errors="coerce")
|
||
temp_df["累计"] = pd.to_numeric(temp_df["累计"], errors="coerce")
|
||
return temp_df
|
||
|
||
|
||
def macro_china_pmi() -> pd.DataFrame:
|
||
"""
|
||
东方财富-中国采购经理人指数
|
||
https://data.eastmoney.com/cjsj/pmi.html
|
||
:return: 东方财富中国采购经理人指数
|
||
:rtype: pandas.DataFrame
|
||
"""
|
||
url = "https://datacenter-web.eastmoney.com/api/data/v1/get"
|
||
params = {
|
||
"columns": "REPORT_DATE,TIME,MAKE_INDEX,MAKE_SAME,NMAKE_INDEX,NMAKE_SAME",
|
||
"pageNumber": "1",
|
||
"pageSize": "2000",
|
||
"sortColumns": "REPORT_DATE",
|
||
"sortTypes": "-1",
|
||
"source": "WEB",
|
||
"client": "WEB",
|
||
"reportName": "RPT_ECONOMY_PMI",
|
||
"p": "1",
|
||
"pageNo": "1",
|
||
"pageNum": "1",
|
||
}
|
||
r = requests.get(url, params=params)
|
||
data_json = r.json()
|
||
temp_df = pd.DataFrame(data_json["result"]["data"])
|
||
temp_df.columns = [
|
||
"-",
|
||
"月份",
|
||
"制造业-指数",
|
||
"制造业-同比增长",
|
||
"非制造业-指数",
|
||
"非制造业-同比增长",
|
||
]
|
||
temp_df = temp_df[
|
||
[
|
||
"月份",
|
||
"制造业-指数",
|
||
"制造业-同比增长",
|
||
"非制造业-指数",
|
||
"非制造业-同比增长",
|
||
]
|
||
]
|
||
temp_df["制造业-指数"] = pd.to_numeric(temp_df["制造业-指数"], errors="coerce")
|
||
temp_df["制造业-同比增长"] = pd.to_numeric(
|
||
temp_df["制造业-同比增长"], errors="coerce"
|
||
)
|
||
temp_df["非制造业-指数"] = pd.to_numeric(temp_df["非制造业-指数"], errors="coerce")
|
||
temp_df["非制造业-同比增长"] = pd.to_numeric(
|
||
temp_df["非制造业-同比增长"], errors="coerce"
|
||
)
|
||
return temp_df
|
||
|
||
|
||
def macro_china_gdzctz() -> pd.DataFrame:
|
||
"""
|
||
东方财富-中国城镇固定资产投资
|
||
https://data.eastmoney.com/cjsj/gdzctz.html
|
||
:return: 东方财富中国城镇固定资产投资
|
||
:rtype: pandas.DataFrame
|
||
"""
|
||
url = "https://datacenter-web.eastmoney.com/api/data/v1/get"
|
||
params = {
|
||
"columns": "REPORT_DATE,TIME,BASE,BASE_SAME,BASE_SEQUENTIAL,BASE_ACCUMULATE",
|
||
"pageNumber": "1",
|
||
"pageSize": "2000",
|
||
"sortColumns": "REPORT_DATE",
|
||
"sortTypes": "-1",
|
||
"source": "WEB",
|
||
"client": "WEB",
|
||
"reportName": "RPT_ECONOMY_ASSET_INVEST",
|
||
"p": "1",
|
||
"pageNo": "1",
|
||
"pageNum": "1",
|
||
}
|
||
r = requests.get(url, params=params)
|
||
data_json = r.json()
|
||
temp_df = pd.DataFrame(data_json["result"]["data"])
|
||
|
||
temp_df.columns = [
|
||
"-",
|
||
"月份",
|
||
"当月",
|
||
"同比增长",
|
||
"环比增长",
|
||
"自年初累计",
|
||
]
|
||
temp_df = temp_df[
|
||
[
|
||
"月份",
|
||
"当月",
|
||
"同比增长",
|
||
"环比增长",
|
||
"自年初累计",
|
||
]
|
||
]
|
||
temp_df["当月"] = pd.to_numeric(temp_df["当月"], errors="coerce")
|
||
temp_df["同比增长"] = pd.to_numeric(temp_df["同比增长"], errors="coerce")
|
||
temp_df["环比增长"] = pd.to_numeric(temp_df["环比增长"], errors="coerce")
|
||
temp_df["自年初累计"] = pd.to_numeric(temp_df["自年初累计"], errors="coerce")
|
||
return temp_df
|
||
|
||
|
||
def macro_china_hgjck() -> pd.DataFrame:
|
||
"""
|
||
东方财富-海关进出口增减情况一览表
|
||
https://data.eastmoney.com/cjsj/hgjck.html
|
||
:return: 东方财富-海关进出口增减情况一览表
|
||
:rtype: pandas.DataFrame
|
||
"""
|
||
url = "https://datacenter-web.eastmoney.com/api/data/v1/get"
|
||
params = {
|
||
"columns": "REPORT_DATE,TIME,EXIT_BASE,IMPORT_BASE,EXIT_BASE_SAME,IMPORT_BASE_SAME,"
|
||
"EXIT_BASE_SEQUENTIAL,IMPORT_BASE_SEQUENTIAL,EXIT_ACCUMULATE,"
|
||
"IMPORT_ACCUMULATE,EXIT_ACCUMULATE_SAME,IMPORT_ACCUMULATE_SAME",
|
||
"pageNumber": "1",
|
||
"pageSize": "2000",
|
||
"sortColumns": "REPORT_DATE",
|
||
"sortTypes": "-1",
|
||
"source": "WEB",
|
||
"client": "WEB",
|
||
"reportName": "RPT_ECONOMY_CUSTOMS",
|
||
"p": "1",
|
||
"pageNo": "1",
|
||
"pageNum": "1",
|
||
}
|
||
r = requests.get(url, params=params)
|
||
data_json = r.json()
|
||
temp_df = pd.DataFrame(data_json["result"]["data"])
|
||
temp_df.rename(
|
||
columns={
|
||
"REPORT_DATE": "-",
|
||
"TIME": "月份",
|
||
"EXIT_BASE": "当月出口额-金额",
|
||
"IMPORT_BASE": "当月进口额-金额",
|
||
"EXIT_BASE_SAME": "当月出口额-同比增长",
|
||
"IMPORT_BASE_SAME": "当月进口额-同比增长",
|
||
"EXIT_BASE_SEQUENTIAL": "当月出口额-环比增长",
|
||
"IMPORT_BASE_SEQUENTIAL": "当月进口额-环比增长",
|
||
"EXIT_ACCUMULATE": "累计出口额-金额",
|
||
"IMPORT_ACCUMULATE": "累计进口额-金额",
|
||
"EXIT_ACCUMULATE_SAME": "累计出口额-同比增长",
|
||
"IMPORT_ACCUMULATE_SAME": "累计进口额-同比增长",
|
||
},
|
||
inplace=True,
|
||
)
|
||
temp_df = temp_df[
|
||
[
|
||
"月份",
|
||
"当月出口额-金额",
|
||
"当月出口额-同比增长",
|
||
"当月出口额-环比增长",
|
||
"当月进口额-金额",
|
||
"当月进口额-同比增长",
|
||
"当月进口额-环比增长",
|
||
"累计出口额-金额",
|
||
"累计出口额-同比增长",
|
||
"累计进口额-金额",
|
||
"累计进口额-同比增长",
|
||
]
|
||
]
|
||
temp_df["当月出口额-金额"] = pd.to_numeric(
|
||
temp_df["当月出口额-金额"], errors="coerce"
|
||
)
|
||
temp_df["当月出口额-同比增长"] = pd.to_numeric(
|
||
temp_df["当月出口额-同比增长"], errors="coerce"
|
||
)
|
||
temp_df["当月出口额-环比增长"] = pd.to_numeric(
|
||
temp_df["当月出口额-环比增长"], errors="coerce"
|
||
)
|
||
temp_df["当月进口额-金额"] = pd.to_numeric(
|
||
temp_df["当月进口额-金额"], errors="coerce"
|
||
)
|
||
temp_df["当月进口额-同比增长"] = pd.to_numeric(
|
||
temp_df["当月进口额-同比增长"], errors="coerce"
|
||
)
|
||
temp_df["当月进口额-环比增长"] = pd.to_numeric(
|
||
temp_df["当月进口额-环比增长"], errors="coerce"
|
||
)
|
||
temp_df["累计出口额-金额"] = pd.to_numeric(
|
||
temp_df["累计出口额-金额"], errors="coerce"
|
||
)
|
||
temp_df["累计出口额-同比增长"] = pd.to_numeric(
|
||
temp_df["累计出口额-同比增长"], errors="coerce"
|
||
)
|
||
temp_df["累计进口额-金额"] = pd.to_numeric(
|
||
temp_df["累计进口额-金额"], errors="coerce"
|
||
)
|
||
temp_df["累计进口额-同比增长"] = pd.to_numeric(
|
||
temp_df["累计进口额-同比增长"], errors="coerce"
|
||
)
|
||
return temp_df
|
||
|
||
|
||
def macro_china_czsr() -> pd.DataFrame:
|
||
"""
|
||
东方财富-财政收入
|
||
https://data.eastmoney.com/cjsj/czsr.html
|
||
:return: 东方财富-财政收入
|
||
:rtype: pandas.DataFrame
|
||
"""
|
||
url = "https://datacenter-web.eastmoney.com/api/data/v1/get"
|
||
params = {
|
||
"columns": "REPORT_DATE,TIME,BASE,BASE_SAME,BASE_SEQUENTIAL,BASE_ACCUMULATE,ACCUMULATE_SAME",
|
||
"pageNumber": "1",
|
||
"pageSize": "2000",
|
||
"sortColumns": "REPORT_DATE",
|
||
"sortTypes": "-1",
|
||
"source": "WEB",
|
||
"client": "WEB",
|
||
"reportName": "RPT_ECONOMY_INCOME",
|
||
"p": "1",
|
||
"pageNo": "1",
|
||
"pageNum": "1",
|
||
}
|
||
r = requests.get(url, params=params)
|
||
data_json = r.json()
|
||
temp_df = pd.DataFrame(data_json["result"]["data"])
|
||
|
||
temp_df.columns = [
|
||
"-",
|
||
"月份",
|
||
"当月",
|
||
"当月-同比增长",
|
||
"当月-环比增长",
|
||
"累计",
|
||
"累计-同比增长",
|
||
]
|
||
temp_df = temp_df[
|
||
[
|
||
"月份",
|
||
"当月",
|
||
"当月-同比增长",
|
||
"当月-环比增长",
|
||
"累计",
|
||
"累计-同比增长",
|
||
]
|
||
]
|
||
temp_df["当月"] = pd.to_numeric(temp_df["当月"], errors="coerce")
|
||
temp_df["当月-同比增长"] = pd.to_numeric(temp_df["当月-同比增长"], errors="coerce")
|
||
temp_df["当月-环比增长"] = pd.to_numeric(temp_df["当月-环比增长"], errors="coerce")
|
||
temp_df["累计"] = pd.to_numeric(temp_df["累计"], errors="coerce")
|
||
temp_df["累计-同比增长"] = pd.to_numeric(temp_df["累计-同比增长"], errors="coerce")
|
||
temp_df.sort_values(by=["月份"], ignore_index=True, inplace=True)
|
||
return temp_df
|
||
|
||
|
||
def macro_china_whxd() -> pd.DataFrame:
|
||
"""
|
||
东方财富-外汇贷款数据
|
||
https://data.eastmoney.com/cjsj/whxd.html
|
||
:return: 东方财富-外汇贷款数据
|
||
:rtype: pandas.DataFrame
|
||
"""
|
||
url = "https://datacenter-web.eastmoney.com/api/data/v1/get"
|
||
params = {
|
||
"columns": "REPORT_DATE,TIME,BASE,BASE_SAME,BASE_SEQUENTIAL,BASE_ACCUMULATE",
|
||
"pageNumber": "1",
|
||
"pageSize": "2000",
|
||
"sortColumns": "REPORT_DATE",
|
||
"sortTypes": "-1",
|
||
"source": "WEB",
|
||
"client": "WEB",
|
||
"reportName": "RPT_ECONOMY_FOREX_LOAN",
|
||
"p": "1",
|
||
"pageNo": "1",
|
||
"pageNum": "1",
|
||
}
|
||
r = requests.get(url, params=params)
|
||
data_json = r.json()
|
||
temp_df = pd.DataFrame(data_json["result"]["data"])
|
||
|
||
temp_df.columns = [
|
||
"-",
|
||
"月份",
|
||
"当月",
|
||
"同比增长",
|
||
"环比增长",
|
||
"累计",
|
||
]
|
||
temp_df = temp_df[
|
||
[
|
||
"月份",
|
||
"当月",
|
||
"同比增长",
|
||
"环比增长",
|
||
"累计",
|
||
]
|
||
]
|
||
temp_df["当月"] = pd.to_numeric(temp_df["当月"], errors="coerce")
|
||
temp_df["同比增长"] = pd.to_numeric(temp_df["同比增长"], errors="coerce")
|
||
temp_df["环比增长"] = pd.to_numeric(temp_df["环比增长"], errors="coerce")
|
||
temp_df["累计"] = pd.to_numeric(temp_df["累计"], errors="coerce")
|
||
temp_df.sort_values(by=["月份"], ignore_index=True, inplace=True)
|
||
return temp_df
|
||
|
||
|
||
def macro_china_wbck() -> pd.DataFrame:
|
||
"""
|
||
东方财富-本外币存款
|
||
https://data.eastmoney.com/cjsj/wbck.html
|
||
:return: 东方财富-本外币存款
|
||
:rtype: pandas.DataFrame
|
||
"""
|
||
url = "https://datacenter-web.eastmoney.com/api/data/v1/get"
|
||
params = {
|
||
"columns": "REPORT_DATE,TIME,BASE,BASE_SAME,BASE_SEQUENTIAL,BASE_ACCUMULATE",
|
||
"pageNumber": "1",
|
||
"pageSize": "2000",
|
||
"sortColumns": "REPORT_DATE",
|
||
"sortTypes": "-1",
|
||
"source": "WEB",
|
||
"client": "WEB",
|
||
"reportName": "RPT_ECONOMY_FOREX_DEPOSIT",
|
||
"p": "1",
|
||
"pageNo": "1",
|
||
"pageNum": "1",
|
||
}
|
||
r = requests.get(url, params=params)
|
||
data_json = r.json()
|
||
temp_df = pd.DataFrame(data_json["result"]["data"])
|
||
|
||
temp_df.columns = [
|
||
"-",
|
||
"月份",
|
||
"当月",
|
||
"同比增长",
|
||
"环比增长",
|
||
"累计",
|
||
]
|
||
temp_df = temp_df[
|
||
[
|
||
"月份",
|
||
"当月",
|
||
"同比增长",
|
||
"环比增长",
|
||
"累计",
|
||
]
|
||
]
|
||
temp_df["当月"] = pd.to_numeric(temp_df["当月"], errors="coerce")
|
||
temp_df["同比增长"] = pd.to_numeric(temp_df["同比增长"], errors="coerce")
|
||
temp_df["环比增长"] = pd.to_numeric(temp_df["环比增长"], errors="coerce")
|
||
temp_df["累计"] = pd.to_numeric(temp_df["累计"], errors="coerce")
|
||
return temp_df
|
||
|
||
|
||
def macro_china_xfzxx() -> pd.DataFrame:
|
||
"""
|
||
东方财富网-经济数据一览-消费者信心指数
|
||
https://data.eastmoney.com/cjsj/xfzxx.html
|
||
:return: 消费者信心指数
|
||
:rtype: pandas.DataFrame
|
||
"""
|
||
url = "https://datacenter-web.eastmoney.com/api/data/v1/get"
|
||
params = {
|
||
"columns": "REPORT_DATE,TIME,CONSUMERS_FAITH_INDEX,FAITH_INDEX_SAME,FAITH_INDEX_SEQUENTIAL,"
|
||
"CONSUMERS_ASTIS_INDEX,ASTIS_INDEX_SAME,ASTIS_INDEX_SEQUENTIAL,CONSUMERS_EXPECT_INDEX,"
|
||
"EXPECT_INDEX_SAME,EXPECT_INDEX_SEQUENTIAL",
|
||
"pageNumber": "1",
|
||
"pageSize": "2000",
|
||
"sortColumns": "REPORT_DATE",
|
||
"sortTypes": "-1",
|
||
"source": "WEB",
|
||
"client": "WEB",
|
||
"reportName": "RPT_ECONOMY_FAITH_INDEX",
|
||
"p": "1",
|
||
"pageNo": "1",
|
||
"pageNum": "1",
|
||
}
|
||
r = requests.get(url, params=params)
|
||
data_json = r.json()
|
||
temp_df = pd.DataFrame(data_json["result"]["data"])
|
||
|
||
temp_df.columns = [
|
||
"-",
|
||
"月份",
|
||
"消费者信心指数-指数值",
|
||
"消费者信心指数-同比增长",
|
||
"消费者信心指数-环比增长",
|
||
"消费者满意指数-指数值",
|
||
"消费者满意指数-同比增长",
|
||
"消费者满意指数-环比增长",
|
||
"消费者预期指数-指数值",
|
||
"消费者预期指数-同比增长",
|
||
"消费者预期指数-环比增长",
|
||
]
|
||
temp_df = temp_df[
|
||
[
|
||
"月份",
|
||
"消费者信心指数-指数值",
|
||
"消费者信心指数-同比增长",
|
||
"消费者信心指数-环比增长",
|
||
"消费者满意指数-指数值",
|
||
"消费者满意指数-同比增长",
|
||
"消费者满意指数-环比增长",
|
||
"消费者预期指数-指数值",
|
||
"消费者预期指数-同比增长",
|
||
"消费者预期指数-环比增长",
|
||
]
|
||
]
|
||
|
||
temp_df["消费者信心指数-指数值"] = pd.to_numeric(
|
||
temp_df["消费者信心指数-指数值"], errors="coerce"
|
||
)
|
||
temp_df["消费者信心指数-同比增长"] = pd.to_numeric(
|
||
temp_df["消费者信心指数-同比增长"], errors="coerce"
|
||
)
|
||
temp_df["消费者信心指数-环比增长"] = pd.to_numeric(
|
||
temp_df["消费者信心指数-环比增长"], errors="coerce"
|
||
)
|
||
temp_df["消费者满意指数-指数值"] = pd.to_numeric(
|
||
temp_df["消费者满意指数-指数值"], errors="coerce"
|
||
)
|
||
temp_df["消费者满意指数-同比增长"] = pd.to_numeric(
|
||
temp_df["消费者满意指数-同比增长"], errors="coerce"
|
||
)
|
||
temp_df["消费者满意指数-环比增长"] = pd.to_numeric(
|
||
temp_df["消费者满意指数-环比增长"], errors="coerce"
|
||
)
|
||
temp_df["消费者预期指数-指数值"] = pd.to_numeric(
|
||
temp_df["消费者满意指数-指数值"], errors="coerce"
|
||
)
|
||
temp_df["消费者预期指数-同比增长"] = pd.to_numeric(
|
||
temp_df["消费者预期指数-同比增长"], errors="coerce"
|
||
)
|
||
temp_df["消费者预期指数-环比增长"] = pd.to_numeric(
|
||
temp_df["消费者预期指数-环比增长"], errors="coerce"
|
||
)
|
||
return temp_df
|
||
|
||
|
||
def macro_china_gyzjz() -> pd.DataFrame:
|
||
"""
|
||
东方财富网-经济数据-工业增加值增长
|
||
https://data.eastmoney.com/cjsj/gyzjz.html
|
||
:return: 工业增加值增长
|
||
:rtype: pandas.DataFrame
|
||
"""
|
||
url = "https://datacenter-web.eastmoney.com/api/data/v1/get"
|
||
params = {
|
||
"columns": "REPORT_DATE,TIME,BASE_SAME,BASE_ACCUMULATE",
|
||
"pageNumber": "1",
|
||
"pageSize": "2000",
|
||
"sortColumns": "REPORT_DATE",
|
||
"sortTypes": "-1",
|
||
"source": "WEB",
|
||
"client": "WEB",
|
||
"reportName": "RPT_ECONOMY_INDUS_GROW",
|
||
"p": "1",
|
||
"pageNo": "1",
|
||
"pageNum": "1",
|
||
}
|
||
r = requests.get(url, params=params)
|
||
data_json = r.json()
|
||
temp_df = pd.DataFrame(data_json["result"]["data"])
|
||
temp_df.columns = [
|
||
"发布时间",
|
||
"月份",
|
||
"同比增长",
|
||
"累计增长",
|
||
]
|
||
temp_df = temp_df[
|
||
[
|
||
"月份",
|
||
"同比增长",
|
||
"累计增长",
|
||
"发布时间",
|
||
]
|
||
]
|
||
temp_df["同比增长"] = pd.to_numeric(temp_df["同比增长"], errors="coerce")
|
||
temp_df["累计增长"] = pd.to_numeric(temp_df["累计增长"], errors="coerce")
|
||
temp_df["发布时间"] = pd.to_datetime(temp_df["发布时间"], errors="coerce").dt.date
|
||
temp_df.sort_values(["发布时间"], ignore_index=True, inplace=True)
|
||
return temp_df
|
||
|
||
|
||
def macro_china_reserve_requirement_ratio() -> pd.DataFrame:
|
||
"""
|
||
存款准备金率
|
||
https://data.eastmoney.com/cjsj/ckzbj.html
|
||
:return: 存款准备金率
|
||
:rtype: pandas.DataFrame
|
||
"""
|
||
url = "https://datacenter-web.eastmoney.com/api/data/v1/get"
|
||
params = {
|
||
"columns": "REPORT_DATE,PUBLISH_DATE,TRADE_DATE,INTEREST_RATE_BB,INTEREST_RATE_BA,CHANGE_RATE_B,"
|
||
"INTEREST_RATE_SB,INTEREST_RATE_SA,CHANGE_RATE_S,NEXT_SH_RATE,NEXT_SZ_RATE,REMARK",
|
||
"pageNumber": "1",
|
||
"pageSize": "2000",
|
||
"sortColumns": "PUBLISH_DATE,TRADE_DATE",
|
||
"sortTypes": "-1,-1",
|
||
"source": "WEB",
|
||
"client": "WEB",
|
||
"reportName": "RPT_ECONOMY_DEPOSIT_RESERVE",
|
||
"p": "1",
|
||
"pageNo": "1",
|
||
"pageNum": "1",
|
||
}
|
||
r = requests.get(url, params=params)
|
||
data_json = r.json()
|
||
temp_df = pd.DataFrame(data_json["result"]["data"])
|
||
temp_df.columns = [
|
||
"-",
|
||
"公布时间",
|
||
"生效时间",
|
||
"大型金融机构-调整前",
|
||
"大型金融机构-调整后",
|
||
"大型金融机构-调整幅度",
|
||
"中小金融机构-调整前",
|
||
"中小金融机构-调整后",
|
||
"中小金融机构-调整幅度",
|
||
"消息公布次日指数涨跌-上证",
|
||
"消息公布次日指数涨跌-深证",
|
||
"备注",
|
||
]
|
||
temp_df = temp_df[
|
||
[
|
||
"公布时间",
|
||
"生效时间",
|
||
"大型金融机构-调整前",
|
||
"大型金融机构-调整后",
|
||
"大型金融机构-调整幅度",
|
||
"中小金融机构-调整前",
|
||
"中小金融机构-调整后",
|
||
"中小金融机构-调整幅度",
|
||
"消息公布次日指数涨跌-上证",
|
||
"消息公布次日指数涨跌-深证",
|
||
"备注",
|
||
]
|
||
]
|
||
temp_df["大型金融机构-调整前"] = pd.to_numeric(
|
||
temp_df["大型金融机构-调整前"], errors="coerce"
|
||
)
|
||
temp_df["大型金融机构-调整后"] = pd.to_numeric(
|
||
temp_df["大型金融机构-调整后"], errors="coerce"
|
||
)
|
||
temp_df["大型金融机构-调整幅度"] = pd.to_numeric(
|
||
temp_df["大型金融机构-调整幅度"], errors="coerce"
|
||
)
|
||
temp_df["大型金融机构-调整前"] = pd.to_numeric(
|
||
temp_df["大型金融机构-调整前"], errors="coerce"
|
||
)
|
||
temp_df["大型金融机构-调整后"] = pd.to_numeric(
|
||
temp_df["大型金融机构-调整后"], errors="coerce"
|
||
)
|
||
temp_df["大型金融机构-调整幅度"] = pd.to_numeric(
|
||
temp_df["大型金融机构-调整幅度"], errors="coerce"
|
||
)
|
||
temp_df["消息公布次日指数涨跌-上证"] = pd.to_numeric(
|
||
temp_df["消息公布次日指数涨跌-上证"], errors="coerce"
|
||
)
|
||
temp_df["消息公布次日指数涨跌-深证"] = pd.to_numeric(
|
||
temp_df["消息公布次日指数涨跌-深证"], errors="coerce"
|
||
)
|
||
temp_df["消息公布次日指数涨跌-深证"] = pd.to_numeric(
|
||
temp_df["消息公布次日指数涨跌-深证"], errors="coerce"
|
||
)
|
||
return temp_df
|
||
|
||
|
||
def macro_china_consumer_goods_retail() -> pd.DataFrame:
|
||
"""
|
||
东方财富-经济数据-社会消费品零售总额
|
||
https://data.eastmoney.com/cjsj/xfp.html
|
||
:return: 社会消费品零售总额
|
||
:rtype: pandas.DataFrame
|
||
"""
|
||
url = "https://datacenter-web.eastmoney.com/api/data/v1/get"
|
||
headers = {
|
||
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
|
||
"Chrome/81.0.4044.138 Safari/537.36",
|
||
}
|
||
params = {
|
||
"columns": "REPORT_DATE,TIME,RETAIL_TOTAL,RETAIL_TOTAL_SAME,RETAIL_TOTAL_SEQUENTIAL,"
|
||
"RETAIL_TOTAL_ACCUMULATE,RETAIL_ACCUMULATE_SAME",
|
||
"pageNumber": "1",
|
||
"pageSize": "1000",
|
||
"sortColumns": "REPORT_DATE",
|
||
"sortTypes": "-1",
|
||
"source": "WEB",
|
||
"client": "WEB",
|
||
"reportName": "RPT_ECONOMY_TOTAL_RETAIL",
|
||
"p": "1",
|
||
"pageNo": "1",
|
||
"pageNum": "1",
|
||
}
|
||
r = requests.get(url, params=params, headers=headers)
|
||
data_json = r.json()
|
||
temp_df = pd.DataFrame(data_json["result"]["data"])
|
||
temp_df.columns = [
|
||
"-",
|
||
"月份",
|
||
"当月",
|
||
"同比增长",
|
||
"环比增长",
|
||
"累计",
|
||
"累计-同比增长",
|
||
]
|
||
temp_df = temp_df[
|
||
[
|
||
"月份",
|
||
"当月",
|
||
"同比增长",
|
||
"环比增长",
|
||
"累计",
|
||
"累计-同比增长",
|
||
]
|
||
]
|
||
temp_df["当月"] = pd.to_numeric(temp_df["当月"], errors="coerce")
|
||
temp_df["同比增长"] = pd.to_numeric(temp_df["同比增长"], errors="coerce")
|
||
temp_df["环比增长"] = pd.to_numeric(temp_df["环比增长"], errors="coerce")
|
||
temp_df["累计"] = pd.to_numeric(temp_df["累计"], errors="coerce")
|
||
temp_df["累计-同比增长"] = pd.to_numeric(temp_df["累计-同比增长"], errors="coerce")
|
||
return temp_df
|
||
|
||
|
||
def macro_china_society_electricity() -> pd.DataFrame:
|
||
"""
|
||
新浪财经-中国宏观经济数据-全社会用电分类情况表
|
||
https://finance.sina.com.cn/mac/#industry-6-0-31-1
|
||
:return: 全社会用电分类情况表
|
||
:rtype: pandas.DataFrame
|
||
"""
|
||
url = "https://quotes.sina.cn/mac/api/jsonp_v3.php/SINAREMOTECALLCALLBACK1601557771972/MacPage_Service.get_pagedata"
|
||
params = {
|
||
"cate": "industry",
|
||
"event": "6",
|
||
"from": "0",
|
||
"num": "31",
|
||
"condition": "",
|
||
}
|
||
r = requests.get(url, params=params)
|
||
data_text = r.text
|
||
data_json = demjson.decode(data_text[data_text.find("{") : -3])
|
||
page_num = math.ceil(int(data_json["count"]) / 31)
|
||
big_df = pd.DataFrame(data_json["data"])
|
||
for i in range(1, page_num):
|
||
params.update({"from": i * 31})
|
||
r = requests.get(url, params=params)
|
||
data_text = r.text
|
||
data_json = demjson.decode(data_text[data_text.find("{") : -3])
|
||
temp_df = pd.DataFrame(data_json["data"])
|
||
big_df = pd.concat([big_df, temp_df], ignore_index=True)
|
||
|
||
big_df.columns = [
|
||
"统计时间",
|
||
"全社会用电量",
|
||
"全社会用电量同比",
|
||
"各行业用电量合计",
|
||
"各行业用电量合计同比",
|
||
"第一产业用电量",
|
||
"第一产业用电量同比",
|
||
"第二产业用电量",
|
||
"第二产业用电量同比",
|
||
"第三产业用电量",
|
||
"第三产业用电量同比",
|
||
"城乡居民生活用电量合计",
|
||
"城乡居民生活用电量合计同比",
|
||
"城镇居民用电量",
|
||
"城镇居民用电量同比",
|
||
"乡村居民用电量",
|
||
"乡村居民用电量同比",
|
||
]
|
||
for item in big_df.columns[1:]:
|
||
big_df[item] = pd.to_numeric(big_df[item], errors="coerce")
|
||
big_df.sort_values(["统计时间"], inplace=True, ignore_index=True)
|
||
return big_df
|
||
|
||
|
||
def macro_china_society_traffic_volume() -> pd.DataFrame:
|
||
"""
|
||
新浪财经-中国宏观经济数据-全社会客货运输量
|
||
https://finance.sina.com.cn/mac/#industry-10-0-31-1
|
||
:return: 全社会客货运输量
|
||
:rtype: pandas.DataFrame
|
||
"""
|
||
url = "https://quotes.sina.cn/mac/api/jsonp_v3.php/SINAREMOTECALLCALLBACK1601559094538/MacPage_Service.get_pagedata"
|
||
params = {
|
||
"cate": "industry",
|
||
"event": "10",
|
||
"from": "0",
|
||
"num": "31",
|
||
"condition": "",
|
||
}
|
||
r = requests.get(url, params=params)
|
||
data_text = r.text
|
||
data_json = demjson.decode(data_text[data_text.find("{") : -3])
|
||
page_num = math.ceil(int(data_json["count"]) / 31)
|
||
big_df = pd.DataFrame(data_json["data"]["非累计"])
|
||
tqdm = get_tqdm()
|
||
for i in tqdm(range(1, page_num), leave=False):
|
||
params.update({"from": i * 31})
|
||
r = requests.get(url, params=params)
|
||
data_text = r.text
|
||
data_json = demjson.decode(data_text[data_text.find("{") : -3])
|
||
temp_df = pd.DataFrame(data_json["data"]["非累计"])
|
||
big_df = pd.concat([big_df, temp_df], ignore_index=True)
|
||
big_df.columns = [item[1] for item in data_json["config"]["all"]]
|
||
big_df["货运量"] = pd.to_numeric(big_df["货运量"], errors="coerce")
|
||
big_df["货运量同比增长"] = pd.to_numeric(big_df["货运量同比增长"], errors="coerce")
|
||
big_df["货物周转量"] = pd.to_numeric(big_df["货物周转量"], errors="coerce")
|
||
big_df["公里货物周转量同比增长"] = pd.to_numeric(
|
||
big_df["公里货物周转量同比增长"], errors="coerce"
|
||
)
|
||
big_df["客运量"] = pd.to_numeric(big_df["客运量"], errors="coerce")
|
||
big_df["客运量同比增长"] = pd.to_numeric(big_df["客运量同比增长"], errors="coerce")
|
||
big_df["旅客周转量"] = pd.to_numeric(big_df["旅客周转量"], errors="coerce")
|
||
big_df["公里旅客周转量同比增长"] = pd.to_numeric(
|
||
big_df["公里旅客周转量同比增长"], errors="coerce"
|
||
)
|
||
big_df["沿海主要港口货物吞吐量"] = pd.to_numeric(
|
||
big_df["沿海主要港口货物吞吐量"], errors="coerce"
|
||
)
|
||
big_df["沿海主要港口货物吞吐量同比增长"] = pd.to_numeric(
|
||
big_df["沿海主要港口货物吞吐量同比增长"], errors="coerce"
|
||
)
|
||
big_df["其中:外贸货物吞吐量"] = pd.to_numeric(
|
||
big_df["其中:外贸货物吞吐量"], errors="coerce"
|
||
)
|
||
big_df["其中:外贸货物吞吐量同比增长"] = pd.to_numeric(
|
||
big_df["其中:外贸货物吞吐量同比增长"], errors="coerce"
|
||
)
|
||
big_df["民航总周转量"] = pd.to_numeric(big_df["民航总周转量"], errors="coerce")
|
||
big_df["公里民航总周转"] = pd.to_numeric(big_df["公里民航总周转"], errors="coerce")
|
||
return big_df
|
||
|
||
|
||
def macro_china_postal_telecommunicational() -> pd.DataFrame:
|
||
"""
|
||
新浪财经-中国宏观经济数据-邮电业务基本情况
|
||
https://finance.sina.com.cn/mac/#industry-11-0-31-1
|
||
:return: 邮电业务基本情况
|
||
:rtype: pandas.DataFrame
|
||
"""
|
||
url = "https://quotes.sina.cn/mac/api/jsonp_v3.php/SINAREMOTECALLCALLBACK1601624495046/MacPage_Service.get_pagedata"
|
||
params = {
|
||
"cate": "industry",
|
||
"event": "11",
|
||
"from": "0",
|
||
"num": "31",
|
||
"condition": "",
|
||
}
|
||
r = requests.get(url, params=params)
|
||
data_text = r.text
|
||
data_json = demjson.decode(data_text[data_text.find("{") : -3])
|
||
page_num = math.ceil(int(data_json["count"]) / 31)
|
||
big_df = pd.DataFrame(data_json["data"]["非累计"])
|
||
tqdm = get_tqdm()
|
||
for i in tqdm(range(1, page_num), leave=False):
|
||
params.update({"from": i * 31})
|
||
r = requests.get(url, params=params)
|
||
data_text = r.text
|
||
data_json = demjson.decode(data_text[data_text.find("{") : -3])
|
||
temp_df = pd.DataFrame(data_json["data"]["非累计"])
|
||
big_df = pd.concat(objs=[big_df, temp_df], ignore_index=True)
|
||
big_df.columns = [item[1] for item in data_json["config"]["all"]]
|
||
for item in big_df.columns[1:]:
|
||
big_df[item] = pd.to_numeric(big_df[item], errors="coerce")
|
||
return big_df
|
||
|
||
|
||
def macro_china_international_tourism_fx() -> pd.DataFrame:
|
||
"""
|
||
新浪财经-中国宏观经济数据-国际旅游外汇收入构成
|
||
https://finance.sina.com.cn/mac/#industry-15-0-31-3
|
||
:return: 国际旅游外汇收入构成
|
||
:rtype: pandas.DataFrame
|
||
"""
|
||
url = "https://quotes.sina.cn/mac/api/jsonp_v3.php/SINAREMOTECALLCALLBACK1601651495761/MacPage_Service.get_pagedata"
|
||
params = {
|
||
"cate": "industry",
|
||
"event": "15",
|
||
"from": "0",
|
||
"num": "31",
|
||
"condition": "",
|
||
}
|
||
r = requests.get(url, params=params)
|
||
data_text = r.text
|
||
data_json = demjson.decode(data_text[data_text.find("{") : -3])
|
||
page_num = math.ceil(int(data_json["count"]) / 31)
|
||
big_df = pd.DataFrame(data_json["data"])
|
||
tqdm = get_tqdm()
|
||
for i in tqdm(range(1, page_num)):
|
||
params.update({"from": i * 31})
|
||
r = requests.get(url, params=params)
|
||
data_text = r.text
|
||
data_json = demjson.decode(data_text[data_text.find("{") : -3])
|
||
temp_df = pd.DataFrame(data_json["data"])
|
||
big_df = pd.concat([big_df, temp_df], ignore_index=True)
|
||
big_df.columns = [item[1] for item in data_json["config"]["all"]]
|
||
big_df["数量"] = pd.to_numeric(big_df["数量"], errors="coerce")
|
||
big_df["比重"] = pd.to_numeric(big_df["比重"], errors="coerce")
|
||
return big_df
|
||
|
||
|
||
def macro_china_passenger_load_factor() -> pd.DataFrame:
|
||
"""
|
||
新浪财经-中国宏观经济数据-民航客座率及载运率
|
||
https://finance.sina.com.cn/mac/#industry-20-0-31-1
|
||
:return: 民航客座率及载运率
|
||
:rtype: pandas.DataFrame
|
||
"""
|
||
url = "https://quotes.sina.cn/mac/api/jsonp_v3.php/SINAREMOTECALLCALLBACK1601651495761/MacPage_Service.get_pagedata"
|
||
params = {
|
||
"cate": "industry",
|
||
"event": "20",
|
||
"from": "0",
|
||
"num": "31",
|
||
"condition": "",
|
||
}
|
||
r = requests.get(url, params=params)
|
||
data_text = r.text
|
||
data_json = demjson.decode(data_text[data_text.find("{") : -3])
|
||
page_num = math.ceil(int(data_json["count"]) / 31)
|
||
big_df = pd.DataFrame(data_json["data"])
|
||
tqdm = get_tqdm()
|
||
for i in tqdm(range(1, page_num)):
|
||
params.update({"from": i * 31})
|
||
r = requests.get(url, params=params)
|
||
data_text = r.text
|
||
data_json = demjson.decode(data_text[data_text.find("{") : -3])
|
||
temp_df = pd.DataFrame(data_json["data"])
|
||
big_df = pd.concat(objs=[big_df, temp_df], ignore_index=True)
|
||
big_df.columns = [item[1] for item in data_json["config"]["all"]]
|
||
big_df["客座率"] = pd.to_numeric(big_df["客座率"], errors="coerce")
|
||
big_df["载运率"] = pd.to_numeric(big_df["载运率"], errors="coerce")
|
||
return big_df
|
||
|
||
|
||
def _macro_china_freight_index() -> pd.DataFrame:
|
||
"""
|
||
新浪财经-中国宏观经济数据-航贸运价指数
|
||
https://finance.sina.com.cn/mac/#industry-22-0-31-2
|
||
:return: 航贸运价指数
|
||
:rtype: pandas.DataFrame
|
||
"""
|
||
url = "https://quotes.sina.cn/mac/api/jsonp_v3.php/SINAREMOTECALLCALLBACK1601651495761/MacPage_Service.get_pagedata"
|
||
params = {
|
||
"cate": "industry",
|
||
"event": "22",
|
||
"from": "0",
|
||
"num": "31",
|
||
"condition": "",
|
||
}
|
||
r = requests.get(url, params=params)
|
||
data_text = r.text
|
||
data_json = demjson.decode(data_text[data_text.find("{") : -3])
|
||
page_num = math.ceil(int(data_json["count"]) / 31)
|
||
big_df = pd.DataFrame(data_json["data"])
|
||
tqdm = get_tqdm()
|
||
for i in tqdm(range(1, page_num)):
|
||
params.update({"from": i * 31})
|
||
r = requests.get(url, params=params)
|
||
data_text = r.text
|
||
data_json = demjson.decode(data_text[data_text.find("{") : -3])
|
||
temp_df = pd.DataFrame(data_json["data"])
|
||
big_df = big_df.append(temp_df, ignore_index=True)
|
||
big_df.columns = [item[1] for item in data_json["config"]["all"]]
|
||
return big_df
|
||
|
||
|
||
def macro_china_freight_index() -> pd.DataFrame:
|
||
"""
|
||
新浪财经-中国宏观经济数据-航贸运价指数
|
||
https://finance.sina.com.cn/mac/#industry-22-0-31-2
|
||
:return: 航贸运价指数
|
||
:rtype: pandas.DataFrame
|
||
"""
|
||
url = "http://quotes.sina.cn/mac/view/vMacExcle.php"
|
||
params = {
|
||
"cate": "industry",
|
||
"event": "22",
|
||
"from": "0",
|
||
"num": 5000,
|
||
"condition": "",
|
||
}
|
||
r = requests.get(url, params=params)
|
||
columns_list = r.content.decode("gbk").split("\n")[2].split(", ")
|
||
columns_list = [item.strip() for item in columns_list]
|
||
content_list = r.content.decode("gbk").split("\n")[3:]
|
||
big_df = (
|
||
pd.DataFrame([item.split(", ") for item in content_list], columns=columns_list)
|
||
.dropna(axis=1, how="all")
|
||
.dropna(axis=0)
|
||
.iloc[:, :-1]
|
||
)
|
||
big_df["波罗的海好望角型船运价指数BCI"] = pd.to_numeric(
|
||
big_df["波罗的海好望角型船运价指数BCI"]
|
||
)
|
||
big_df["灵便型船综合运价指数BHMI"] = pd.to_numeric(
|
||
big_df["灵便型船综合运价指数BHMI"]
|
||
)
|
||
big_df["波罗的海超级大灵便型船BSI指数"] = pd.to_numeric(
|
||
big_df["波罗的海超级大灵便型船BSI指数"]
|
||
)
|
||
big_df["波罗的海综合运价指数BDI"] = pd.to_numeric(big_df["波罗的海综合运价指数BDI"])
|
||
big_df["HRCI国际集装箱租船指数"] = pd.to_numeric(big_df["HRCI国际集装箱租船指数"])
|
||
big_df["油轮运价指数成品油运价指数BCTI"] = pd.to_numeric(
|
||
big_df["油轮运价指数成品油运价指数BCTI"]
|
||
)
|
||
big_df["油轮运价指数原油运价指数BDTI"] = pd.to_numeric(
|
||
big_df["油轮运价指数原油运价指数BDTI"]
|
||
)
|
||
return big_df
|
||
|
||
|
||
def macro_china_central_bank_balance() -> pd.DataFrame:
|
||
"""
|
||
新浪财经-中国宏观经济数据-央行货币当局资产负债
|
||
https://finance.sina.com.cn/mac/#fininfo-8-0-31-2
|
||
:return: 央行货币当局资产负债
|
||
:rtype: pandas.DataFrame
|
||
"""
|
||
url = "https://quotes.sina.cn/mac/api/jsonp_v3.php/SINAREMOTECALLCALLBACK1601651495761/MacPage_Service.get_pagedata"
|
||
params = {
|
||
"cate": "fininfo",
|
||
"event": "8",
|
||
"from": "0",
|
||
"num": "31",
|
||
"condition": "",
|
||
}
|
||
r = requests.get(url, params=params)
|
||
data_text = r.text
|
||
data_json = demjson.decode(data_text[data_text.find("{") : -3])
|
||
page_num = math.ceil(int(data_json["count"]) / 31)
|
||
big_df = pd.DataFrame(data_json["data"])
|
||
tqdm = get_tqdm()
|
||
for i in tqdm(range(1, page_num)):
|
||
params.update({"from": i * 31})
|
||
r = requests.get(url, params=params)
|
||
data_text = r.text
|
||
data_json = demjson.decode(data_text[data_text.find("{") : -3])
|
||
temp_df = pd.DataFrame(data_json["data"])
|
||
big_df = pd.concat([big_df, temp_df], ignore_index=True)
|
||
big_df.columns = [item[1] for item in data_json["config"]["all"]]
|
||
for item in big_df.columns[1:]:
|
||
big_df[item] = pd.to_numeric(big_df[item], errors="coerce")
|
||
return big_df
|
||
|
||
|
||
def macro_china_insurance() -> pd.DataFrame:
|
||
"""
|
||
新浪财经-中国宏观经济数据-保险业经营情况
|
||
https://finance.sina.com.cn/mac/#fininfo-19-0-31-3
|
||
:return: 保险业经营情况
|
||
:rtype: pandas.DataFrame
|
||
"""
|
||
url = "https://quotes.sina.cn/mac/api/jsonp_v3.php/SINAREMOTECALLCALLBACK1601651495761/MacPage_Service.get_pagedata"
|
||
params = {
|
||
"cate": "fininfo",
|
||
"event": "19",
|
||
"from": "0",
|
||
"num": "31",
|
||
"condition": "",
|
||
}
|
||
r = requests.get(url, params=params)
|
||
data_text = r.text
|
||
data_json = demjson.decode(data_text[data_text.find("{") : -3])
|
||
page_num = math.ceil(int(data_json["count"]) / 31)
|
||
big_df = pd.DataFrame(data_json["data"])
|
||
tqdm = get_tqdm()
|
||
for i in tqdm(range(1, page_num)):
|
||
params.update({"from": i * 31})
|
||
r = requests.get(url, params=params)
|
||
data_text = r.text
|
||
data_json = demjson.decode(data_text[data_text.find("{") : -3])
|
||
temp_df = pd.DataFrame(data_json["data"])
|
||
big_df = pd.concat([big_df, temp_df], ignore_index=True)
|
||
big_df.columns = [item[1] for item in data_json["config"]["all"]]
|
||
for item in big_df.columns[2:]:
|
||
big_df[item] = pd.to_numeric(big_df[item], errors="coerce")
|
||
return big_df
|
||
|
||
|
||
def macro_china_supply_of_money() -> pd.DataFrame:
|
||
"""
|
||
新浪财经-中国宏观经济数据-货币供应量
|
||
https://finance.sina.com.cn/mac/#fininfo-1-0-31-1
|
||
:return: 货币供应量
|
||
:rtype: pandas.DataFrame
|
||
"""
|
||
url = "https://quotes.sina.cn/mac/api/jsonp_v3.php/SINAREMOTECALLCALLBACK1601651495761/MacPage_Service.get_pagedata"
|
||
params = {
|
||
"cate": "fininfo",
|
||
"event": "1",
|
||
"from": "0",
|
||
"num": "31",
|
||
"condition": "",
|
||
}
|
||
r = requests.get(url, params=params)
|
||
data_text = r.text
|
||
data_json = demjson.decode(data_text[data_text.find("{") : -3])
|
||
page_num = math.ceil(int(data_json["count"]) / 31)
|
||
big_df = pd.DataFrame(data_json["data"])
|
||
tqdm = get_tqdm()
|
||
for i in tqdm(range(1, page_num)):
|
||
params.update({"from": i * 31})
|
||
r = requests.get(url, params=params)
|
||
data_text = r.text
|
||
data_json = demjson.decode(data_text[data_text.find("{") : -3])
|
||
temp_df = pd.DataFrame(data_json["data"])
|
||
big_df = pd.concat(objs=[big_df, temp_df], ignore_index=True)
|
||
big_df.columns = [item[1] for item in data_json["config"]["all"]]
|
||
for item in big_df.columns[1:]:
|
||
big_df[item] = pd.to_numeric(big_df[item], errors="coerce")
|
||
return big_df
|
||
|
||
|
||
def macro_china_foreign_exchange_gold() -> pd.DataFrame:
|
||
"""
|
||
央行黄金和外汇储备
|
||
https://finance.sina.com.cn/mac/#fininfo-5-0-31-2
|
||
:return: 央行黄金和外汇储备
|
||
:rtype: pandas.DataFrame
|
||
"""
|
||
url = "https://quotes.sina.cn/mac/api/jsonp_v3.php/SINAREMOTECALLCALLBACK1601651495761/MacPage_Service.get_pagedata"
|
||
params = {
|
||
"cate": "fininfo",
|
||
"event": "5",
|
||
"from": "0",
|
||
"num": "31",
|
||
"condition": "",
|
||
}
|
||
r = requests.get(url, params=params)
|
||
data_text = r.text
|
||
data_json = demjson.decode(data_text[data_text.find("{") : -3])
|
||
page_num = math.ceil(int(data_json["count"]) / 31)
|
||
big_df = pd.DataFrame(data_json["data"])
|
||
tqdm = get_tqdm()
|
||
for i in tqdm(range(1, page_num), leave=False):
|
||
params.update({"from": i * 31})
|
||
r = requests.get(url, params=params)
|
||
data_text = r.text
|
||
data_json = demjson.decode(data_text[data_text.find("{") : -3])
|
||
temp_df = pd.DataFrame(data_json["data"])
|
||
big_df = pd.concat(objs=[big_df, temp_df], ignore_index=True)
|
||
big_df.columns = [item[1] for item in data_json["config"]["all"]]
|
||
big_df.sort_values(by=["统计时间"], ignore_index=True, inplace=True)
|
||
big_df["黄金储备"] = pd.to_numeric(big_df["黄金储备"], errors="coerce")
|
||
big_df["国家外汇储备"] = pd.to_numeric(big_df["国家外汇储备"], errors="coerce")
|
||
return big_df
|
||
|
||
|
||
def macro_china_retail_price_index() -> pd.DataFrame:
|
||
"""
|
||
商品零售价格指数
|
||
https://finance.sina.com.cn/mac/#price-12-0-31-1
|
||
:return: 商品零售价格指数
|
||
:rtype: pandas.DataFrame
|
||
"""
|
||
url = "https://quotes.sina.cn/mac/api/jsonp_v3.php/SINAREMOTECALLCALLBACK1601651495761/MacPage_Service.get_pagedata"
|
||
params = {
|
||
"cate": "price",
|
||
"event": "12",
|
||
"from": "0",
|
||
"num": "31",
|
||
"condition": "",
|
||
}
|
||
r = requests.get(url, params=params)
|
||
data_text = r.text
|
||
data_json = demjson.decode(data_text[data_text.find("{") : -3])
|
||
page_num = math.ceil(int(data_json["count"]) / 31)
|
||
big_df = pd.DataFrame(data_json["data"])
|
||
tqdm = get_tqdm()
|
||
for i in tqdm(range(1, page_num), leave=False):
|
||
params.update({"from": i * 31})
|
||
r = requests.get(url, params=params)
|
||
data_text = r.text
|
||
data_json = demjson.decode(data_text[data_text.find("{") : -3])
|
||
temp_df = pd.DataFrame(data_json["data"])
|
||
big_df = pd.concat(objs=[big_df, temp_df], ignore_index=True)
|
||
big_df.columns = [item[1] for item in data_json["config"]["all"]]
|
||
big_df.sort_values(by=["统计月份"], ignore_index=True, inplace=True)
|
||
big_df["零售商品价格指数"] = pd.to_numeric(
|
||
big_df["零售商品价格指数"], errors="coerce"
|
||
)
|
||
return big_df
|
||
|
||
|
||
def macro_china_real_estate() -> pd.DataFrame:
|
||
"""
|
||
国房景气指数
|
||
https://data.eastmoney.com/cjsj/hyzs_list_EMM00121987.html
|
||
:return: 国房景气指数
|
||
:rtype: pandas.DataFrame
|
||
"""
|
||
url = "https://datacenter-web.eastmoney.com/api/data/v1/get"
|
||
headers = {
|
||
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
|
||
"Chrome/81.0.4044.138 Safari/537.36",
|
||
}
|
||
params = {
|
||
"sortColumns": "REPORT_DATE",
|
||
"sortTypes": "-1",
|
||
"pageSize": "1000",
|
||
"pageNumber": "1",
|
||
"reportName": "RPT_INDUSTRY_INDEX",
|
||
"columns": "REPORT_DATE,INDICATOR_VALUE,CHANGE_RATE,CHANGERATE_3M,CHANGERATE_6M,CHANGERATE_1Y,"
|
||
"CHANGERATE_2Y,CHANGERATE_3Y",
|
||
"filter": '(INDICATOR_ID="EMM00121987")',
|
||
"source": "WEB",
|
||
"client": "WEB",
|
||
}
|
||
r = requests.get(url, params=params, headers=headers)
|
||
data_json = r.json()
|
||
total_page = data_json["result"]["pages"]
|
||
big_df = pd.DataFrame()
|
||
tqdm = get_tqdm()
|
||
for page in tqdm(range(1, total_page + 1), leave=False):
|
||
params.update({"pageNumber": page})
|
||
r = requests.get(url, params=params, headers=headers)
|
||
data_json = r.json()
|
||
temp_df = pd.DataFrame(data_json["result"]["data"])
|
||
big_df = pd.concat([big_df, temp_df], ignore_index=True)
|
||
big_df.columns = [
|
||
"日期",
|
||
"最新值",
|
||
"涨跌幅",
|
||
"近3月涨跌幅",
|
||
"近6月涨跌幅",
|
||
"近1年涨跌幅",
|
||
"近2年涨跌幅",
|
||
"近3年涨跌幅",
|
||
]
|
||
big_df["日期"] = pd.to_datetime(big_df["日期"], errors="coerce").dt.date
|
||
big_df["最新值"] = pd.to_numeric(big_df["最新值"], errors="coerce")
|
||
big_df["涨跌幅"] = pd.to_numeric(big_df["涨跌幅"], errors="coerce")
|
||
big_df["近3月涨跌幅"] = pd.to_numeric(big_df["近3月涨跌幅"], errors="coerce")
|
||
big_df["近6月涨跌幅"] = pd.to_numeric(big_df["近6月涨跌幅"], errors="coerce")
|
||
big_df["近1年涨跌幅"] = pd.to_numeric(big_df["近1年涨跌幅"], errors="coerce")
|
||
big_df["近2年涨跌幅"] = pd.to_numeric(big_df["近2年涨跌幅"], errors="coerce")
|
||
big_df["近3年涨跌幅"] = pd.to_numeric(big_df["近3年涨跌幅"], errors="coerce")
|
||
big_df.sort_values(by=["日期"], inplace=True)
|
||
big_df.drop_duplicates(inplace=True)
|
||
big_df.reset_index(inplace=True, drop=True)
|
||
return big_df
|
||
|
||
|
||
if __name__ == "__main__":
|
||
# 企业商品价格指数
|
||
macro_china_qyspjg_df = macro_china_qyspjg()
|
||
print(macro_china_qyspjg_df)
|
||
|
||
# 外商直接投资数据
|
||
macro_china_fdi_df = macro_china_fdi()
|
||
print(macro_china_fdi_df)
|
||
|
||
# 社会融资规模增量
|
||
macro_china_shrzgm_df = macro_china_shrzgm()
|
||
print(macro_china_shrzgm_df)
|
||
|
||
# 城镇调查失业率
|
||
macro_china_urban_unemployment_df = macro_china_urban_unemployment()
|
||
print(macro_china_urban_unemployment_df)
|
||
|
||
# 金十数据中心-经济指标-中国-国民经济运行状况-经济状况-中国GDP年率报告
|
||
macro_china_gdp_yearly_df = macro_china_gdp_yearly()
|
||
print(macro_china_gdp_yearly_df)
|
||
|
||
# 金十数据中心-经济指标-中国-国民经济运行状况-物价水平-中国CPI年率报告
|
||
macro_china_cpi_yearly_df = macro_china_cpi_yearly()
|
||
print(macro_china_cpi_yearly_df)
|
||
|
||
# 金十数据中心-经济指标-中国-国民经济运行状况-物价水平-中国CPI月率报告
|
||
macro_china_cpi_monthly_df = macro_china_cpi_monthly()
|
||
print(macro_china_cpi_monthly_df)
|
||
|
||
# 金十数据中心-经济指标-中国-国民经济运行状况-物价水平-中国PPI年率报告
|
||
macro_china_ppi_yearly_df = macro_china_ppi_yearly()
|
||
print(macro_china_ppi_yearly_df)
|
||
|
||
# 金十数据中心-经济指标-中国-贸易状况-以美元计算出口年率报告
|
||
macro_china_exports_yoy_df = macro_china_exports_yoy()
|
||
print(macro_china_exports_yoy_df)
|
||
|
||
# 金十数据中心-经济指标-中国-贸易状况-以美元计算进口年率
|
||
macro_china_imports_yoy_df = macro_china_imports_yoy()
|
||
print(macro_china_imports_yoy_df)
|
||
|
||
# 金十数据中心-经济指标-中国-贸易状况-以美元计算贸易帐(亿美元)
|
||
macro_china_trade_balance_df = macro_china_trade_balance()
|
||
print(macro_china_trade_balance_df)
|
||
|
||
# 金十数据中心-经济指标-中国-产业指标-规模以上工业增加值年率
|
||
macro_china_industrial_production_yoy_df = macro_china_industrial_production_yoy()
|
||
print(macro_china_industrial_production_yoy_df)
|
||
|
||
# 金十数据中心-经济指标-中国-产业指标-官方制造业PMI
|
||
macro_china_pmi_yearly_df = macro_china_pmi_yearly()
|
||
print(macro_china_pmi_yearly_df)
|
||
|
||
# 金十数据中心-经济指标-中国-产业指标-财新制造业PMI终值
|
||
macro_china_cx_pmi_yearly_df = macro_china_cx_pmi_yearly()
|
||
print(macro_china_cx_pmi_yearly_df)
|
||
|
||
# 金十数据中心-经济指标-中国-产业指标-财新服务业PMI
|
||
macro_china_cx_services_pmi_yearly_df = macro_china_cx_services_pmi_yearly()
|
||
print(macro_china_cx_services_pmi_yearly_df)
|
||
|
||
# 金十数据中心-经济指标-中国-产业指标-中国官方非制造业PMI
|
||
macro_china_non_man_pmi_df = macro_china_non_man_pmi()
|
||
print(macro_china_non_man_pmi_df)
|
||
|
||
# 金十数据中心-经济指标-中国-金融指标-外汇储备(亿美元)
|
||
macro_china_fx_reserves_yearly_df = macro_china_fx_reserves_yearly()
|
||
print(macro_china_fx_reserves_yearly_df)
|
||
|
||
# 金十数据中心-经济指标-中国-金融指标-M2货币供应年率
|
||
macro_china_m2_yearly_df = macro_china_m2_yearly()
|
||
print(macro_china_m2_yearly_df)
|
||
|
||
# 金十数据中心-经济指标-中国-金融指标-上海银行业同业拆借报告
|
||
macro_china_shibor_all_df = macro_china_shibor_all()
|
||
print(macro_china_shibor_all_df)
|
||
|
||
# 金十数据中心-经济指标-中国-金融指标-人民币香港银行同业拆息
|
||
macro_china_hk_market_info_df = macro_china_hk_market_info()
|
||
print(macro_china_hk_market_info_df)
|
||
|
||
# 金十数据中心-经济指标-中国-其他-中国日度沿海六大电库存数据
|
||
macro_china_daily_energy_df = macro_china_daily_energy()
|
||
print(macro_china_daily_energy_df)
|
||
|
||
# 金十数据中心-经济指标-中国-其他-中国人民币汇率中间价报告
|
||
macro_china_rmb_df = macro_china_rmb()
|
||
print(macro_china_rmb_df)
|
||
|
||
# 金十数据中心-经济指标-中国-其他-深圳融资融券报告
|
||
macro_china_market_margin_sz_df = macro_china_market_margin_sz()
|
||
print(macro_china_market_margin_sz_df)
|
||
|
||
# 金十数据中心-经济指标-中国-其他-上海融资融券报告
|
||
macro_china_market_margin_sh_df = macro_china_market_margin_sh()
|
||
print(macro_china_market_margin_sh_df)
|
||
|
||
# 金十数据中心-经济指标-中国-其他-上海黄金交易所报告
|
||
macro_china_au_report_df = macro_china_au_report()
|
||
print(macro_china_au_report_df)
|
||
|
||
# 中国-新房价指数
|
||
macro_china_new_house_price_df = macro_china_new_house_price()
|
||
print(macro_china_new_house_price_df)
|
||
|
||
# 中国-企业景气及企业家信心指数
|
||
macro_china_enterprise_boom_index_df = macro_china_enterprise_boom_index()
|
||
print(macro_china_enterprise_boom_index_df)
|
||
|
||
# 中国-全国税收收入
|
||
macro_china_national_tax_receipts_df = macro_china_national_tax_receipts()
|
||
print(macro_china_national_tax_receipts_df)
|
||
|
||
# 中国-新增信贷数据
|
||
macro_china_new_financial_credit_df = macro_china_new_financial_credit()
|
||
print(macro_china_new_financial_credit_df)
|
||
|
||
# 中国-外汇和黄金储备
|
||
macro_china_fx_gold_df = macro_china_fx_gold()
|
||
print(macro_china_fx_gold_df)
|
||
|
||
macro_china_stock_market_cap_df = macro_china_stock_market_cap()
|
||
print(macro_china_stock_market_cap_df)
|
||
|
||
macro_china_money_supply_df = macro_china_money_supply()
|
||
print(macro_china_money_supply_df)
|
||
|
||
macro_china_cpi_df = macro_china_cpi()
|
||
print(macro_china_cpi_df)
|
||
|
||
macro_china_gdp_df = macro_china_gdp()
|
||
print(macro_china_gdp_df)
|
||
|
||
macro_china_ppi_df = macro_china_ppi()
|
||
print(macro_china_ppi_df)
|
||
|
||
macro_china_pmi_df = macro_china_pmi()
|
||
print(macro_china_pmi_df)
|
||
|
||
macro_china_gdzctz_df = macro_china_gdzctz()
|
||
print(macro_china_gdzctz_df)
|
||
|
||
macro_china_hgjck_df = macro_china_hgjck()
|
||
print(macro_china_hgjck_df)
|
||
|
||
macro_china_czsr_df = macro_china_czsr()
|
||
print(macro_china_czsr_df)
|
||
|
||
macro_china_whxd_df = macro_china_whxd()
|
||
print(macro_china_whxd_df)
|
||
|
||
macro_china_wbck_df = macro_china_wbck()
|
||
print(macro_china_wbck_df)
|
||
|
||
macro_china_xfzxx_df = macro_china_xfzxx()
|
||
print(macro_china_xfzxx_df)
|
||
|
||
macro_china_gyzjz_df = macro_china_gyzjz
|
||
print(macro_china_gyzjz_df)
|
||
|
||
macro_china_reserve_requirement_ratio_df = macro_china_reserve_requirement_ratio()
|
||
print(macro_china_reserve_requirement_ratio_df)
|
||
|
||
macro_china_consumer_goods_retail_df = macro_china_consumer_goods_retail()
|
||
print(macro_china_consumer_goods_retail_df)
|
||
|
||
macro_china_society_electricity_df = macro_china_society_electricity()
|
||
print(macro_china_society_electricity_df)
|
||
|
||
macro_china_society_traffic_volume_df = macro_china_society_traffic_volume()
|
||
print(macro_china_society_traffic_volume_df)
|
||
|
||
macro_china_postal_telecommunicational_df = macro_china_postal_telecommunicational()
|
||
print(macro_china_postal_telecommunicational_df)
|
||
|
||
macro_china_international_tourism_fx_df = macro_china_international_tourism_fx()
|
||
print(macro_china_international_tourism_fx_df)
|
||
|
||
macro_china_passenger_load_factor_df = macro_china_passenger_load_factor()
|
||
print(macro_china_passenger_load_factor_df)
|
||
|
||
macro_china_freight_index_df = macro_china_freight_index()
|
||
print(macro_china_freight_index_df)
|
||
|
||
macro_china_central_bank_balance_df = macro_china_central_bank_balance()
|
||
print(macro_china_central_bank_balance_df)
|
||
|
||
macro_china_insurance_df = macro_china_insurance()
|
||
print(macro_china_insurance_df)
|
||
|
||
macro_china_supply_of_money_df = macro_china_supply_of_money()
|
||
print(macro_china_supply_of_money_df)
|
||
|
||
macro_china_foreign_exchange_gold_df = macro_china_foreign_exchange_gold()
|
||
print(macro_china_foreign_exchange_gold_df)
|
||
|
||
macro_china_retail_price_index_df = macro_china_retail_price_index()
|
||
print(macro_china_retail_price_index_df)
|
||
|
||
macro_china_real_estate_df = macro_china_real_estate()
|
||
print(macro_china_real_estate_df)
|
||
|
||
macro_shipping_bci_df = macro_shipping_bci()
|
||
print(macro_shipping_bci_df)
|
||
|
||
macro_shipping_bdi_df = macro_shipping_bdi()
|
||
print(macro_shipping_bdi_df)
|
||
|
||
macro_shipping_bpi_df = macro_shipping_bpi()
|
||
print(macro_shipping_bpi_df)
|
||
|
||
macro_shipping_bcti_df = macro_shipping_bcti()
|
||
print(macro_shipping_bcti_df)
|