Files
MoFin/venv/lib/python3.12/site-packages/akshare/economic/macro_china.py
T
知微 fa45d8aa5f fix: 小果地址统一node122(兼容LAN+EasyTier)
- 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,直连正常
2026-06-30 02:56:35 +08:00

3962 lines
146 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/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)