o
    i7                     @   s   d Z ddlZddlZddlZddlZddlmZ	 ddlm
Z z
ddlmZmZ W n ey9   ddlmZmZ Y nw dd Zdd	 Zd
d Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zed kr{e Ze e dS dS )!uo   
宏观经济数据接口 
Created on 2015/01/24
@author: Jimmy Liu
@group : waditu
@contact: jimmysoa@sina.cn
    N)
macro_vars)cons)urlopenRequestc               	   C   s   t  } tt jt jd t jd | t jd dd| f }t|dd }t	j
r+|dn|}td}||}|d }|d	d
 }|dddd}t|}tj|t jd}tj||dk< |S )u  
        获取年度国内生产总值数据
    Return
    --------
    DataFrame
        year :统计年度
        gdp :国内生产总值(亿元)
        pc_gdp :人均国内生产总值(元)
        gnp :国民生产总值(亿元)
        pi :第一产业(亿元)
        si :第二产业(亿元)
        industry :工业(亿元)
        cons_industry :建筑业(亿元)
        ti :第三产业(亿元)
        trans_industry :交通运输仓储邮电通信业(亿元)
        lbdy :批发零售贸易及餐饮业(亿元)
    httpsinar   F   
   timeoutgbk\,count:(.*?)\}data:   " null0columns)vsrandomr   	MACRO_URLP_TYPEDOMAINS
MACRO_TYPEr   readctPY3decoderecompilefindallsplitreplacejsonloadspd	DataFrameGDP_YEAR_COLSnpNaNrdintrequesttextregSymdatastrjsdf r4   F/opt/alphahud/venv/lib/python3.10/site-packages/tushare/stock/macro.pyget_gdp_year   s    


r6   c                   C   s   dS )u  
        获取季度国内生产总值数据
    Return
    --------
    DataFrame
        quarter :季度
        gdp :国内生产总值(亿元)
        gdp_yoy :国内生产总值同比增长(%)
        pi :第一产业增加值(亿元)
        pi_yoy:第一产业增加值同比增长(%)
        si :第二产业增加值(亿元)
        si_yoy :第二产业增加值同比增长(%)
        ti :第三产业增加值(亿元)
        ti_yoy :第三产业增加值同比增长(%)
    uA   请使用pro版数据：https://tushare.pro/document/2?doc_id=227r4   r4   r4   r4   r5   get_gdp_quarter:   s    r7   c               	   C      t  } tt jt jd t jd | t jd dd| f }t|dd }t	j
r+|dn|}td	}||}|d }|d
d }|dddd}t|}tj|t jd}tj||dk< |S )u  
        获取三大需求对GDP贡献数据
    Return
    --------
    DataFrame
        year :统计年度
        end_for :最终消费支出贡献率(%)
        for_rate :最终消费支出拉动(百分点)
        asset_for :资本形成总额贡献率(%)
        asset_rate:资本形成总额拉动(百分点)
        goods_for :货物和服务净出口贡献率(%)
        goods_rate :货物和服务净出口拉动(百分点)
    r   r   r      P   r	   r
   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   GDP_FOR_COLSr*   r+   r,   r4   r4   r5   get_gdp_for]   s   


r<   c               	   C   r8   )u<  
        获取三大产业对GDP拉动数据
    Return
    --------
    DataFrame
        year :统计年度
        gdp_yoy :国内生产总值同比增长(%)
        pi :第一产业拉动率(%)
        si :第二产业拉动率(%)
        industry:其中工业拉动(%)
        ti :第三产业拉动率(%)
    r   r   r      <   r	   r
   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   GDP_PULL_COLSr*   r+   r,   r4   r4   r5   get_gdp_pull{   s   


r@   c               	   C   r8   )u!  
        获取三大产业贡献率数据
    Return
    --------
    DataFrame
        year :统计年度
        gdp_yoy :国内生产总值
        pi :第一产业献率(%)
        si :第二产业献率(%)
        industry:其中工业献率(%)
        ti :第三产业献率(%)
    r   r   r      r>   r	   r
   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   GDP_CONTRIB_COLSr*   r+   r,   r4   r4   r5   get_gdp_contrib   s   


rC   c               	   C   s   t  } tt jt jd t jd | t jd dd| f }t|dd }t	j
r+|dn|}td	}||}|d }|d
d }t|}tj|t jd}|d t|d< |S )u   
        获取居民消费价格指数数据
    Return
    --------
    DataFrame
        month :统计月份
        cpi :价格指数
    r   r   r   r   X  r	   r
   r   r   r   r   cpi)r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r%   r&   r'   r(   CPI_COLSastypefloatr,   r4   r4   r5   get_cpi   s   	


rI   c               	   C   s   t  } tt jt jd t jd | t jd dd| f }t|dd }t	j
r+|dn|}td	}||}|d
 }|dd }t|}tj|t jd}|jD ]}|| dd ||< |dkrl|| t||< qR|S )u  
        获取工业品出厂价格指数数据
    Return
    --------
    DataFrame
        month :统计月份
        ppiip :工业品出厂价格指数
        ppi :生产资料价格指数
        qm:采掘工业价格指数
        rmi:原材料工业价格指数
        pi:加工工业价格指数    
        cg:生活资料价格指数
        food:食品类价格指数
        clothing:衣着类价格指数
        roeu:一般日用品价格指数
        dcg:耐用消费品价格指数
    r   r   r      rD   r	   r
   r   r   r   r   r   c                 S   s   t | d u t j| S )N)r*   wherer+   xr4   r4   r5   <lambda>   s    zget_ppi.<locals>.<lambda>month)r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r%   r&   r'   r(   PPI_COLSr   applyrG   rH   r-   r.   r/   r0   r1   r2   r3   ir4   r4   r5   get_ppi   s&   



rT   c               	   C   s   t  } tt jt jd t jd | t jd dd| f }t|dd }|	d}t
d}||}|d	 }|d
d }t|}tj|t jd}|jD ]}|| dd ||< qM|S )u   
        获取存款利率数据
    Return
    --------
    DataFrame
        date :变动日期
        deposit_type :存款种类
        rate:利率（%）
    r   r      rD   r	   r
   r   r   r   r   r   r   c                 S      t | d u d| S Nz--r*   rK   rL   r4   r4   r5   rN   	      z"get_deposit_rate.<locals>.<lambda>)r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r%   r&   r'   r(   DEPOSIT_COLSr   rQ   rR   r4   r4   r5   get_deposit_rate       





r[   c               	   C      t  } tt jt jd t jd | t jd dd| f }t|dd }|	d}t
d	}||}|d
 }|dd }t|}tj|t jd}|jD ]}|| dd ||< qM|S )u   
        获取贷款利率数据
    Return
    --------
    DataFrame
        date :执行日期
        loan_type :存款种类
        rate:利率（%）
    r   r   rU   rJ   i   r	   r
   r   r   r   r   r   r   c                 S   rV   rW   rX   rL   r4   r4   r5   rN   $  rY   zget_loan_rate.<locals>.<lambda>)r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r%   r&   r'   r(   	LOAN_COLSr   rQ   rR   r4   r4   r5   get_loan_rate  r\   r_   c               	   C   r]   )u   
        获取存款准备金率数据
    Return
    --------
    DataFrame
        date :变动日期
        before :调整前存款准备金率(%)
        now:调整后存款准备金率(%)
        changed:调整幅度(%)
    r   r   rU   r9   d   r	   r
   r   r   r   r   r   r   c                 S   rV   rW   rX   rL   r4   r4   r5   rN   @  rY   zget_rrr.<locals>.<lambda>)r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r%   r&   r'   r(   RRR_COLSr   rQ   rR   r4   r4   r5   get_rrr(  s    




rb   c               	   C   s   t  } tt jt jd t jd | t jd dd| f }t|dd }|	d}t
d	}||}|d
 }|dd }t|}tj|t jd}|jD ]}|| dd ||< qM|S )u  
        获取货币供应量数据
    Return
    --------
    DataFrame
        month :统计时间
        m2 :货币和准货币（广义货币M2）(亿元)
        m2_yoy:货币和准货币（广义货币M2）同比增长(%)
        m1:货币(狭义货币M1)(亿元)
        m1_yoy:货币(狭义货币M1)同比增长(%)
        m0:流通中现金(M0)(亿元)
        m0_yoy:流通中现金(M0)同比增长(%)
        cd:活期存款(亿元)
        cd_yoy:活期存款同比增长(%)
        qm:准货币(亿元)
        qm_yoy:准货币同比增长(%)
        ftd:定期存款(亿元)
        ftd_yoy:定期存款同比增长(%)
        sd:储蓄存款(亿元)
        sd_yoy:储蓄存款同比增长(%)
        rests:其他存款(亿元)
        rests_yoy:其他存款同比增长(%)
    r   r   rU   r   rD   r	   r
   r   r   r   r   r   c                 S   rV   rW   rX   rL   r4   r4   r5   rN   i  rY   z"get_money_supply.<locals>.<lambda>)r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r%   r&   r'   r(   MONEY_SUPPLY_COLSr   rQ   rR   r4   r4   r5   get_money_supplyD  s    




rd   c               	   C   s   t  } tt jt jd t jd | t jd dd| f }t|dd }|	d}t
d	}||}|d }|d
d }t|}tj|t jd}|jD ]}|| dd ||< qM|S )u}  
        获取货币供应量(年底余额)数据
    Return
    --------
    DataFrame
        year :统计年度
        m2 :货币和准货币(亿元)
        m1:货币(亿元)
        m0:流通中现金(亿元)
        cd:活期存款(亿元)
        qm:准货币(亿元)
        ftd:定期存款(亿元)
        sd:储蓄存款(亿元)
        rests:其他存款(亿元)
    r   r   rU   r      r	   r
   r   r   r   r   r   c                 S   rV   rW   rX   rL   r4   r4   r5   rN     rY   z&get_money_supply_bal.<locals>.<lambda>)r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r%   r&   r'   r(   MONEY_SUPPLY_BLA_COLSr   rQ   rR   r4   r4   r5   get_money_supply_balm  s    




rg   c               	   C   r]   )u   
    获取外汇储备
    Returns
    -------
    DataFrame
        month :统计时间
        gold:黄金储备(万盎司)
        foreign_reserves:外汇储备(亿美元)
    r   r   rU   r=   re   r	   r
   r   r   r   r   r   r   c                 S   rV   rW   rX   rL   r4   r4   r5   rN     rY   z/get_gold_and_foreign_reserves.<locals>.<lambda>)r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r%   r&   r'   r(   "GOLD_AND_FOREIGN_CURRENCY_RESERVESr   rQ   rR   r4   r4   r5   get_gold_and_foreign_reserves  r\   ri   __main__)!__doc__pandasr'   numpyr*   r    r%   tushare.stockr   r   r   r   urllib.requestr   r   ImportErrorurllib2r6   r7   r<   r@   rC   rI   rT   r[   r_   rb   rd   rg   ri   __name__r3   printr4   r4   r4   r5   <module>   s:   ##%)!