DadosAbertosBrasil.bacen

Módulo de captura de dados das APIs do Banco Central do Brasil.


    View Source
    """Módulo de captura de dados das APIs do Banco Central do Brasil.
    
    References
    ----------
    .. [1] SGS - Sistema Gerenciador de Séries Temporais
        https://www3.bcb.gov.br/sgspub/
    .. [2] Cotação do Câmbio
        https://olinda.bcb.gov.br/olinda/servico/PTAX/versao/v1/swagger-ui3
    .. [3] Expectativas de Mercado
        https://olinda.bcb.gov.br/olinda/servico/Expectativas/versao/v1/swagger-ui3#/
    
    """
    
    from datetime import datetime
    from typing import Union, Optional
    
    import pandas as pd
    
    from ._utils import parse
    from ._utils.get_data import get_data
    
    
    
    def _df(path:str, params:dict=None) -> pd.DataFrame:
        data = get_data(
            endpoint = 'https://olinda.bcb.gov.br/olinda/servico/PTAX/versao/v1/odata/',
            path = path,
            params = params
        )
        return pd.DataFrame(data['value'])
    
    
    
    def moedas():
        """Obtém os nomes e símbolos das principais moedas internacionais.
    
        Returns
        -------
        pandas.core.frame.DataFrame
            DataFrame contendo os nomes e símbolos das principais moedas
            internacionais.
    
        See Also
        --------
        DadosAbertosBrasil.bacen.cambio :
            Utilize a função `bacen.moedas` para identificar os argumentos da
            função `bacen.cambio`.
    
        Notes
        -----
        Moedas do tipo 'A':
            - Para calcular o valor equivalente em US$ (dólar americano), divida o
              montante na moeda consultada pela respectiva paridade.
            - Para obter o valor em R$ (reais), multiplique o montante na moeda
              consultada pela respectiva taxa.
        Moedas do tipo 'B':
            - Para calcular o valor equivalente em US$ (dólar americano),
              multiplique o montante na moeda consultada pela respectiva paridade.
            - Para obter o valor em R$ (reais), multiplique o montante na moeda
              consultada pela respectiva taxa. 
    
        References
        ----------
        .. [1] Cotação do Câmbio
            https://olinda.bcb.gov.br/olinda/servico/PTAX/versao/v1/swagger-ui3
    
        Examples
        --------
        >>> bacen.moedas()
          simbolo                      nome tipo
        0     AUD         Dólar australiano    B
        1     CAD           Dólar canadense    A
        2     CHF              Franco suíço    A
        3     DKK        Coroa dinamarquesa    A
        4     EUR                      Euro    B
        5     GBP           Libra Esterlina    B
        6     JPY                      Iene    A
        7     NOK          Coroa norueguesa    A
        8     SEK               Coroa sueca    A
        9     USD  Dólar dos Estados Unidos    A
    
        """
    
        df = _df('Moedas')
        df.columns = ['simbolo', 'nome', 'tipo']
        return df
    
    
    
    def cambio(
            moedas = 'USD',
            inicio: Union[datetime, str] = '2000-01-01',
            fim: Union[datetime, str] = None,
            cotacao: str = 'compra',
            boletim: str = 'fechamento',
            index: bool = False
        ) -> pd.DataFrame:
        """Taxa de câmbio das principais moedas internacionais.
    
        É possível escolher várias moedas inserindo uma lista no campo `moeda`.
        Defina o período da consulta pelos campos `inicio` e `fim`.
    
        Parameters
        ----------
        moedas : str or list of str, default='USD'
            Sigla da moeda ou lista de siglas de moedas que serão pesquisadas no
            formato 'MMM' (três letras). Utilize a função `bacen.moedas` para
            obter a lista de moedas válidas.
        inicio : datetime or str, default='2000-01-01'
            String no formato de data 'AAAA-MM-DD' que representa o primeiro dia
            da pesquisa.
        fim : datetime or str, default=None
            String no formato de data 'AAAA-MM-DD' que representa o último dia da
            pesquisa. Caso este campo seja None, será considerada a data de hoje.
        cotacao : {'compra', 'venda'}, default='compra'
            Tipo de cotação.
        boletim : {'abertura', 'intermediário', 'fechamento'}, default='fechamento'
            Tipo de boletim.
        index : bool, default=False
            Define se a coluna 'Data' será o index do DataFrame.
    
        Returns
        -------
        pandas.core.frame.DataFrame
            DataFrame contendo as cotações diárias das moedas selecionadas.
    
        Raises
        ------
        DAB_DataError
            Caso seja inserida uma data inválida.
        DAB_MoedaError
            Caso seja inserida uma moeda inválida.
        ValueError
            Caso nenhum dado seja encontrado devido a argumentos inválidos.
    
        See Also
        --------
        DadosAbertosBrasil.bacen.moedas :
            Utilize a função `bacen.moedas` para identificar as moedas que serão
            usadas no argumento da função `bacen.cambio`.
    
        References
        ----------
        .. [1] Cotação do Câmbio
            https://olinda.bcb.gov.br/olinda/servico/PTAX/versao/v1/swagger-ui3
    
        Examples
        --------
        Retornar uma moeda usando argumentos padrões.
    
        >>> bacen.cambio(moedas='EUR')
                    Data      EUR
        0    2000-01-03  1.84601
        1    2000-01-04  1.88695
        2    2000-01-05  1.91121
        3    2000-01-06  1.90357
        4    2000-01-07  1.87790
        ..          ...      ...
    
        Retornar várias moedas, alterando argumentos.
    
        >>> bacen.cambio(
        ...     moedas = ['USD', 'CAD'],
        ...     inicio = '2021-01-01',
        ...     fim = '2021-01-10',
        ...     cotacao = 'venda',
        ...     boletim = 'abertura',
        ...     index = True
        ... )
                        USD     CAD
        Data                      
        2021-01-04  5.1402  4.0500
        2021-01-05  5.3405  4.1890
        2021-01-06  5.3013  4.1798
        2021-01-07  5.3174  4.1833
        2021-01-08  5.3612  4.2237
    
        """
    
        inicio = parse.data(inicio, 'bacen')
        if fim == None:
            fim = datetime.today().strftime('%m-%d-%Y')
        else:
            fim = parse.data(fim, 'bacen')
        
        moedas = parse.moeda(moedas)
        
        cotacao_moedas = []
        for moeda in moedas:
            cotacao_moeda = _df(
                "CotacaoMoedaPeriodo(" \
                + "moeda=@moeda," \
                + "dataInicial=@dataInicial," \
                + "dataFinalCotacao=@dataFinalCotacao)" \
                + f"?@moeda='{moeda}'" \
                + f"&@dataInicial='{inicio}'" \
                + f"&@dataFinalCotacao='{fim}'" \
                + f"&$filter=contains(tipoBoletim%2C'{boletim.title()}')" \
                + f"&$select=cotacao{cotacao.title()},dataHoraCotacao"
            )
            if cotacao_moeda.empty:
                raise ValueError('Nenhum dado encontrado. Verifique os argumentos da função.')
            cotacao_moeda.dataHoraCotacao = cotacao_moeda.dataHoraCotacao \
                .apply(lambda x: datetime.strptime(x[:10], '%Y-%m-%d'))
    
            cotacao_moedas.append(
                cotacao_moeda.rename(columns = {
                    f'cotacao{cotacao.title()}': moeda,
                    'dataHoraCotacao': 'Data'
                }).groupby('Data').last())
    
        cotacoes = pd.concat(cotacao_moedas, axis=1).reset_index()
    
        cotacoes.Data = pd.to_datetime(cotacoes.Data, format='%Y-%m-%d %H:%M:%S')
        if index:
            cotacoes.set_index('Data', inplace=True)
        
        return cotacoes
    
    
    
    def serie(
            cod: int,
            ultimos: Optional[int] = None,
            inicio: Union[datetime, str] = None,
            fim: Union[datetime, str] = None,
            index: bool = False
        ) -> pd.DataFrame:
        """Série do Sistema Gerenciador de Série Temporais (SGS) do Banco Central.
    
        Parameters
        ----------
        cod : int
            Código da série temporal.
            Utilize o seguinte link para obter o número da série desejada:
            https://www3.bcb.gov.br/sgspub/
        ultimos : int, optional
            Retorna os últimos N valores da série numérica.
        inicio : datetime or str, optional
            Valor datetime ou string no formato de data 'AAAA-MM-DD' que
            representa o primeiro dia da pesquisa.
        fim : datetime or str, optional
            Valor datetime ou string no formato de data 'AAAA-MM-DD' que
            representa o último dia da pesquisa. Caso este campo seja None, será
            considerada a data de hoje.
        index : bool, default=False
            Define se a coluna 'data' será o index do DataFrame.
    
        Returns
        -------
        pandas.core.frame.DataFrame
            DataFrame contendo os valores da série temporal pesquisada.
    
        Raises
        ------
        JSONDecodeError
            Em caso de parâmetros inválidos.
    
        See Also
        --------
        DadosAbertosBrasil.favoritos :
            O módulo `favoritos` apresenta as principais séries temporáis do Banco
            Central do Brasil.
    
        Notes
        -----
        Os argumentos `inicio` e `fim` devem ser usados em conjunto para
        funcionar.
    
        References
        ----------
        .. [1] SGS - Sistema Gerenciador de Séries Temporais
            https://www3.bcb.gov.br/sgspub/
    
        Examples
        --------
        Capturar a taxa SELIC desde 2010 até 2021.
    
        >>> bacen.serie(cod=432, inicio='2010-01-01', fim='2021-01-01')
                   data valor
        0    2010-01-01  8.75
        1    2010-01-02  8.75
        2    2010-01-03  8.75
        3    2010-01-04  8.75
        4    2010-01-05  8.75
        ..          ...   ...
    
        Capturar os últimos 5 valores da meta de inflação.
    
        >>> bacen.serie(cod=13521, ultimos=5)
                data valor
        0 2019-01-01  4.25
        1 2020-01-01  4.00
        2 2021-01-01  3.75
        3 2022-01-01  3.50
        4 2023-01-01  3.25
    
        Capturar toda a série de reservas internacionais (em milhões de dólares)
        usando a data como index do DataFrame.
    
        >>> bacen.serie(cod=3546, index=True)
                     valor
        data              
        1970-12-01    1187
        1971-01-01    1229
        1971-02-01    1280
        1971-03-01    1316
        1971-04-01    1379
        ...            ...
    
        """
    
        path = f'dados/serie/bcdata.sgs.{cod}/dados'
        if ultimos is not None:
            path += f'/ultimos/{ultimos}'
    
        params = []
        if inicio is not None:
            params.append(f"dataInicial={parse.data(inicio, modulo='sgs')}")
        if fim is not None:
            params.append(f"dataFinal={parse.data(fim, modulo='sgs')}")
    
        if len(params) > 0:
            path += f'?{"&".join(params)}'
    
        data = get_data(
            endpoint = 'https://api.bcb.gov.br/',
            path = path
        )
    
        df = pd.DataFrame(data)
    
        df.data = pd.to_datetime(df.data, format='%d/%m/%Y')
        if 'datafim' in df.columns:
            df.datafim = pd.to_datetime(df.datafim, format='%d/%m/%Y')
    
        if index:
            df.set_index('data', inplace=True)
    
        return df
    
    
    
    def expectativas(
            expectativa: str,
            indicador: Optional[str] = None,
            top: Optional[int] = None,
            ordenar_por: str = 'Data',
            asc: bool = False
        ) -> pd.DataFrame:
        """Expectativas de mercado para os principais indicadores macroeconômicos.
    
        Parameters
        ----------
        expectativa : str
            Tipo ou periodicidade da expectativa.
                - 'mensal' ou 'mensais';
                - 'trimestral' ou 'trimestrais';
                - 'anual' ou 'anuais';
                - 'inflacao' ou 'inflacao12meses';
                - 'top5mensal' ou 'top5mensais',
                - 'top5anual' ou 'top5anuais',
                - 'instituicoes'.
        indicador : str, optional
            Capturar apenas o indicador desejado. Deve ser um dos seguintes
            indicadores, desde que esteja de acordo com a `expectativa` escolhida:
                - 'Balança Comercial';
                - 'Balanço de Pagamentos';
                - 'Fiscal';
                - 'IGP-DI';
                - 'IGP-M';
                - 'INPC';
                - 'IPA-DI';
                - 'IPA-M';
                - 'IPC-FIPE';
                - 'IPC-FIPEPreços administrados por contrato e monitorados';
                - 'IPCA';
                - 'IPCA-15';
                - 'Meta para taxa over-selic';
                - 'PIB Agropecuária';
                - 'PIB Industrial';
                - 'PIB Serviços';
                - 'PIB Total';
                - 'PIB TotalMeta para taxa over-selic';
                - 'Preços administrados por contrato e monitorados';
                - 'Produção industrial';
                - 'Taxa de câmbio'.
            Caso o valor seja None, retorna todos os indicadores disponíveis.
        top : int, optional
            Número máximo de registros que será retornado.
        ordenar_por : str, default='Data'
            Por qual coluna da tabela os registros serão ordenados.
        asc : bool, default=False
            - Se True, ordena os registros pela coluna selecionada no argumento
              `ordenar_por` em ordem crescente (A-Z ou 0-9);
            - Se False, ordena em ordem descrescente (Z-A ou 9-0).
    
        Returns
        -------
        pandas.core.frame.DataFrame
            Tabela contendo uma breve estatística descritiva da expectativa de
            mercado de cada indicador poe período de referência.
    
        Raises
        ------
        ValueError
            Em caso de parâmetros inválidos.
    
        References
        ----------
        .. [1] Expectativas de Mercado
            https://olinda.bcb.gov.br/olinda/servico/Expectativas/versao/v1/swagger-ui3#/
    
        Examples
        --------
        >>> bacen.expectativa(expectativa='mensal', indicador='IGP-M')
              Indicador        Data DataReferencia  Media  Mediana  DesvioPadrao  ...
        0         IGP-M  2021-06-25        07/2022   0.31     0.30          0.21  ...
        1         IGP-M  2021-06-25        07/2021   0.64     0.61          0.42  ...
        2         IGP-M  2021-06-25        06/2021   1.25     1.10          0.58  ...
        3         IGP-M  2021-06-25        11/2022   0.47     0.47          0.16  ...
        4         IGP-M  2021-06-25        11/2021   0.50     0.50          0.24  ...
        ..          ...         ...            ...    ...      ...           ...  ...
    
        >>> bacen.expectativa(
        ...     expectativa = 'trimestral',
        ...     indicador = 'PIB Total',
        ...     top = 3,
        ...     ordenar_por = 'Media',
        ...     asc = True
        ... )
           Indicador        Data DataReferencia  Media  Mediana  DesvioPadrao  ...
        0  PIB Total  2020-06-02         2/2020 -14.00    -14.0          3.92  ...
        1  PIB Total  2020-06-09         2/2020 -14.00    -13.4          3.55  ...
        2  PIB Total  2020-06-01         2/2020 -13.99    -14.0          3.91  ...
    
        """
    
        URL = 'https://olinda.bcb.gov.br/olinda/servico/Expectativas/versao/v1/odata/'
        orderby = f'&%24orderby={ordenar_por}%20{"asc" if asc else "desc"}'
        topn = '' if top is None else f'&%24top={top}'
    
        expectativa = expectativa.lower()
        if expectativa in ('mensal', 'mensais'):
            expec = 'ExpectativaMercadoMensais'
            KPIS = (
                'IGP-DI',
                'IGP-M',
                'INPC',
                'IPA-DI',
                'IPA-M',
                'IPCA',
                'IPCA-15',
                'IPC-FIPE',
                'Produção industrial',
                'Meta para taxa over-selic',
                'Taxa de câmbio'
            )
        elif expectativa in ('trimestral', 'trimestrais'):
            expec = 'ExpectativasMercadoTrimestrais'
            KPIS = (
                'PIB Agropecuária',
                'PIB Industrial',
                'PIB Serviços',
                'PIB Total'
            )
        elif expectativa in ('anual', 'anuais'):
            expec = 'ExpectativasMercadoAnuais'
            KPIS = (
                'Balança Comercial',
                'Balanço de Pagamentos',
                'Fiscal',
                'IGP-DI',
                'IGP-M',
                'INPC',
                'IPA-DI',
                'IPA-M',
                'IPCA',
                'IPCA-15',
                'IPC-FIPE',
                'Preços administrados por contrato e monitorados',
                'Produção industrial',
                'PIB Agropecuária',
                'PIB Industrial',
                'PIB Serviços',
                'PIB Total',
                'Meta para taxa over-selic',
                'Taxa de câmbio'
            )
        elif expectativa in ('inflacao', 'inflacao12meses'):
            expec = 'ExpectativasMercadoInflacao12Meses'
            KPIS = (
                'IGP-DI',
                'IGP-M',
                'INPC',
                'IPA-DI',
                'IPA-M',
                'IPCA',
                'IPCA-15',
                'IPC-FIPE'
            )
        elif expectativa in ('top5mensal', 'top5mensais'):
            expec = 'ExpectativasMercadoTop5Mensais'
            KPIS = (
                'IGP-DI',
                'IGP-M',
                'IPCA',
                'Meta para taxa over-selic',
                'Taxa de câmbio'
            )
        elif expectativa in ('top5anual', 'top5anuais'):
            expec = 'ExpectativasMercadoTop5Anuais'
            KPIS = (
                'IGP-DI',
                'IGP-M',
                'IPCA',
                'Meta para taxa over-selic',
                'Taxa de câmbio'
            )
        elif expectativa == 'instituicoes':
            expec = 'ExpectativasMercadoInstituicoes'
            KPIS = (
                'Balança Comercial',
                'Balanço de Pagamentos',
                'Fiscal',
                'IGP-DI',
                'IGP-M',
                'INPC',
                'IPA-DI',
                'IPA-M',
                'IPCA',
                'IPCA-15',
                'IPC-FIPE',
                'Preços administrados por contrato e monitorados',
                'Produção industrial',
                'PIB Agropecuária',
                'PIB Industrial', 'PIB Serviços',
                'PIB Total',
                'Meta para taxa over-selic',
                'Taxa de câmbio'
            )
        else:
            raise ValueError('''Valor inválido para o argumento `expectativa`. Insira um dos seguintes valores:
                - 'mensal' ou 'mensais';
                - 'trimestral' ou 'trimestrais';
                - 'anual' ou 'anuais';
                - 'inflacao' ou 'inflacao12meses';
                - 'top5mensal' ou 'top5mensais',
                - 'top5anual' ou 'top5anuais',
                - 'instituicoes'.''')
    
        if indicador is None:
            kpi = ''
        elif indicador in KPIS:
            kpi = f"&%24filter=Indicador%20eq%20'{indicador}'"
        else:
            raise ValueError(f''''{indicador}' é um indicador inválido para expectativa '{expectativa.title()}'. Insira um dos seguintes valores:
            - {", ".join(KPIS)}.''')
    
        path = f'{expec}?%24format=json{orderby}{kpi}{topn}'
        data = get_data(URL, path=path)
        return pd.DataFrame(data['value'])
    
    #   def moedas():
    View Source
    def moedas():
        """Obtém os nomes e símbolos das principais moedas internacionais.
    
        Returns
        -------
        pandas.core.frame.DataFrame
            DataFrame contendo os nomes e símbolos das principais moedas
            internacionais.
    
        See Also
        --------
        DadosAbertosBrasil.bacen.cambio :
            Utilize a função `bacen.moedas` para identificar os argumentos da
            função `bacen.cambio`.
    
        Notes
        -----
        Moedas do tipo 'A':
            - Para calcular o valor equivalente em US$ (dólar americano), divida o
              montante na moeda consultada pela respectiva paridade.
            - Para obter o valor em R$ (reais), multiplique o montante na moeda
              consultada pela respectiva taxa.
        Moedas do tipo 'B':
            - Para calcular o valor equivalente em US$ (dólar americano),
              multiplique o montante na moeda consultada pela respectiva paridade.
            - Para obter o valor em R$ (reais), multiplique o montante na moeda
              consultada pela respectiva taxa. 
    
        References
        ----------
        .. [1] Cotação do Câmbio
            https://olinda.bcb.gov.br/olinda/servico/PTAX/versao/v1/swagger-ui3
    
        Examples
        --------
        >>> bacen.moedas()
          simbolo                      nome tipo
        0     AUD         Dólar australiano    B
        1     CAD           Dólar canadense    A
        2     CHF              Franco suíço    A
        3     DKK        Coroa dinamarquesa    A
        4     EUR                      Euro    B
        5     GBP           Libra Esterlina    B
        6     JPY                      Iene    A
        7     NOK          Coroa norueguesa    A
        8     SEK               Coroa sueca    A
        9     USD  Dólar dos Estados Unidos    A
    
        """
    
        df = _df('Moedas')
        df.columns = ['simbolo', 'nome', 'tipo']
        return df
    

    Obtém os nomes e símbolos das principais moedas internacionais.

    Returns
    • pandas.core.frame.DataFrame: DataFrame contendo os nomes e símbolos das principais moedas internacionais.
    See Also
    Notes
    • Moedas do tipo 'A': Para calcular o valor equivalente em US$ (dólar americano), divida o montante na moeda consultada pela respectiva paridade. Para obter o valor em R$ (reais), multiplique o montante na moeda consultada pela respectiva taxa.
    • Moedas do tipo 'B': Para calcular o valor equivalente em US$ (dólar americano), multiplique o montante na moeda consultada pela respectiva paridade. Para obter o valor em R$ (reais), multiplique o montante na moeda consultada pela respectiva taxa.
    Examples
    >>> bacen.moedas()
      simbolo                      nome tipo
    0     AUD         Dólar australiano    B
    1     CAD           Dólar canadense    A
    2     CHF              Franco suíço    A
    3     DKK        Coroa dinamarquesa    A
    4     EUR                      Euro    B
    5     GBP           Libra Esterlina    B
    6     JPY                      Iene    A
    7     NOK          Coroa norueguesa    A
    8     SEK               Coroa sueca    A
    9     USD  Dólar dos Estados Unidos    A
    

      #   def cambio( moedas='USD', inicio: Union[datetime.datetime, str] = '2000-01-01', fim: Union[datetime.datetime, str] = None, cotacao: str = 'compra', boletim: str = 'fechamento', index: bool = False ) -> pandas.core.frame.DataFrame:
      View Source
      def cambio(
              moedas = 'USD',
              inicio: Union[datetime, str] = '2000-01-01',
              fim: Union[datetime, str] = None,
              cotacao: str = 'compra',
              boletim: str = 'fechamento',
              index: bool = False
          ) -> pd.DataFrame:
          """Taxa de câmbio das principais moedas internacionais.
      
          É possível escolher várias moedas inserindo uma lista no campo `moeda`.
          Defina o período da consulta pelos campos `inicio` e `fim`.
      
          Parameters
          ----------
          moedas : str or list of str, default='USD'
              Sigla da moeda ou lista de siglas de moedas que serão pesquisadas no
              formato 'MMM' (três letras). Utilize a função `bacen.moedas` para
              obter a lista de moedas válidas.
          inicio : datetime or str, default='2000-01-01'
              String no formato de data 'AAAA-MM-DD' que representa o primeiro dia
              da pesquisa.
          fim : datetime or str, default=None
              String no formato de data 'AAAA-MM-DD' que representa o último dia da
              pesquisa. Caso este campo seja None, será considerada a data de hoje.
          cotacao : {'compra', 'venda'}, default='compra'
              Tipo de cotação.
          boletim : {'abertura', 'intermediário', 'fechamento'}, default='fechamento'
              Tipo de boletim.
          index : bool, default=False
              Define se a coluna 'Data' será o index do DataFrame.
      
          Returns
          -------
          pandas.core.frame.DataFrame
              DataFrame contendo as cotações diárias das moedas selecionadas.
      
          Raises
          ------
          DAB_DataError
              Caso seja inserida uma data inválida.
          DAB_MoedaError
              Caso seja inserida uma moeda inválida.
          ValueError
              Caso nenhum dado seja encontrado devido a argumentos inválidos.
      
          See Also
          --------
          DadosAbertosBrasil.bacen.moedas :
              Utilize a função `bacen.moedas` para identificar as moedas que serão
              usadas no argumento da função `bacen.cambio`.
      
          References
          ----------
          .. [1] Cotação do Câmbio
              https://olinda.bcb.gov.br/olinda/servico/PTAX/versao/v1/swagger-ui3
      
          Examples
          --------
          Retornar uma moeda usando argumentos padrões.
      
          >>> bacen.cambio(moedas='EUR')
                      Data      EUR
          0    2000-01-03  1.84601
          1    2000-01-04  1.88695
          2    2000-01-05  1.91121
          3    2000-01-06  1.90357
          4    2000-01-07  1.87790
          ..          ...      ...
      
          Retornar várias moedas, alterando argumentos.
      
          >>> bacen.cambio(
          ...     moedas = ['USD', 'CAD'],
          ...     inicio = '2021-01-01',
          ...     fim = '2021-01-10',
          ...     cotacao = 'venda',
          ...     boletim = 'abertura',
          ...     index = True
          ... )
                          USD     CAD
          Data                      
          2021-01-04  5.1402  4.0500
          2021-01-05  5.3405  4.1890
          2021-01-06  5.3013  4.1798
          2021-01-07  5.3174  4.1833
          2021-01-08  5.3612  4.2237
      
          """
      
          inicio = parse.data(inicio, 'bacen')
          if fim == None:
              fim = datetime.today().strftime('%m-%d-%Y')
          else:
              fim = parse.data(fim, 'bacen')
          
          moedas = parse.moeda(moedas)
          
          cotacao_moedas = []
          for moeda in moedas:
              cotacao_moeda = _df(
                  "CotacaoMoedaPeriodo(" \
                  + "moeda=@moeda," \
                  + "dataInicial=@dataInicial," \
                  + "dataFinalCotacao=@dataFinalCotacao)" \
                  + f"?@moeda='{moeda}'" \
                  + f"&@dataInicial='{inicio}'" \
                  + f"&@dataFinalCotacao='{fim}'" \
                  + f"&$filter=contains(tipoBoletim%2C'{boletim.title()}')" \
                  + f"&$select=cotacao{cotacao.title()},dataHoraCotacao"
              )
              if cotacao_moeda.empty:
                  raise ValueError('Nenhum dado encontrado. Verifique os argumentos da função.')
              cotacao_moeda.dataHoraCotacao = cotacao_moeda.dataHoraCotacao \
                  .apply(lambda x: datetime.strptime(x[:10], '%Y-%m-%d'))
      
              cotacao_moedas.append(
                  cotacao_moeda.rename(columns = {
                      f'cotacao{cotacao.title()}': moeda,
                      'dataHoraCotacao': 'Data'
                  }).groupby('Data').last())
      
          cotacoes = pd.concat(cotacao_moedas, axis=1).reset_index()
      
          cotacoes.Data = pd.to_datetime(cotacoes.Data, format='%Y-%m-%d %H:%M:%S')
          if index:
              cotacoes.set_index('Data', inplace=True)
          
          return cotacoes
      

      Taxa de câmbio das principais moedas internacionais.

      É possível escolher várias moedas inserindo uma lista no campo moeda. Defina o período da consulta pelos campos inicio e fim.

      Parameters
      • moedas (str or list of str, default='USD'): Sigla da moeda ou lista de siglas de moedas que serão pesquisadas no formato 'MMM' (três letras). Utilize a função bacen.moedas para obter a lista de moedas válidas.
      • inicio (datetime or str, default='2000-01-01'): String no formato de data 'AAAA-MM-DD' que representa o primeiro dia da pesquisa.
      • fim (datetime or str, default=None): String no formato de data 'AAAA-MM-DD' que representa o último dia da pesquisa. Caso este campo seja None, será considerada a data de hoje.
      • cotacao ({'compra', 'venda'}, default='compra'): Tipo de cotação.
      • boletim ({'abertura', 'intermediário', 'fechamento'}, default='fechamento'): Tipo de boletim.
      • index (bool, default=False): Define se a coluna 'Data' será o index do DataFrame.
      Returns
      • pandas.core.frame.DataFrame: DataFrame contendo as cotações diárias das moedas selecionadas.
      Raises
      • DAB_DataError: Caso seja inserida uma data inválida.
      • DAB_MoedaError: Caso seja inserida uma moeda inválida.
      • ValueError: Caso nenhum dado seja encontrado devido a argumentos inválidos.
      See Also
      Examples
      • Retornar uma moeda usando argumentos padrões.
      >>> bacen.cambio(moedas='EUR')
                 Data      EUR
      0    2000-01-03  1.84601
      1    2000-01-04  1.88695
      2    2000-01-05  1.91121
      3    2000-01-06  1.90357
      4    2000-01-07  1.87790
      ..          ...      ...
      
      • Retornar várias moedas, alterando argumentos.
      >>> bacen.cambio(
      ...     moedas = ['USD', 'CAD'],
      ...     inicio = '2021-01-01',
      ...     fim = '2021-01-10',
      ...     cotacao = 'venda',
      ...     boletim = 'abertura',
      ...     index = True
      ... )
                     USD     CAD
      Data                      
      2021-01-04  5.1402  4.0500
      2021-01-05  5.3405  4.1890
      2021-01-06  5.3013  4.1798
      2021-01-07  5.3174  4.1833
      2021-01-08  5.3612  4.2237
      

        #   def serie( cod: int, ultimos: Union[int, NoneType] = None, inicio: Union[datetime.datetime, str] = None, fim: Union[datetime.datetime, str] = None, index: bool = False ) -> pandas.core.frame.DataFrame:
        View Source
        def serie(
                cod: int,
                ultimos: Optional[int] = None,
                inicio: Union[datetime, str] = None,
                fim: Union[datetime, str] = None,
                index: bool = False
            ) -> pd.DataFrame:
            """Série do Sistema Gerenciador de Série Temporais (SGS) do Banco Central.
        
            Parameters
            ----------
            cod : int
                Código da série temporal.
                Utilize o seguinte link para obter o número da série desejada:
                https://www3.bcb.gov.br/sgspub/
            ultimos : int, optional
                Retorna os últimos N valores da série numérica.
            inicio : datetime or str, optional
                Valor datetime ou string no formato de data 'AAAA-MM-DD' que
                representa o primeiro dia da pesquisa.
            fim : datetime or str, optional
                Valor datetime ou string no formato de data 'AAAA-MM-DD' que
                representa o último dia da pesquisa. Caso este campo seja None, será
                considerada a data de hoje.
            index : bool, default=False
                Define se a coluna 'data' será o index do DataFrame.
        
            Returns
            -------
            pandas.core.frame.DataFrame
                DataFrame contendo os valores da série temporal pesquisada.
        
            Raises
            ------
            JSONDecodeError
                Em caso de parâmetros inválidos.
        
            See Also
            --------
            DadosAbertosBrasil.favoritos :
                O módulo `favoritos` apresenta as principais séries temporáis do Banco
                Central do Brasil.
        
            Notes
            -----
            Os argumentos `inicio` e `fim` devem ser usados em conjunto para
            funcionar.
        
            References
            ----------
            .. [1] SGS - Sistema Gerenciador de Séries Temporais
                https://www3.bcb.gov.br/sgspub/
        
            Examples
            --------
            Capturar a taxa SELIC desde 2010 até 2021.
        
            >>> bacen.serie(cod=432, inicio='2010-01-01', fim='2021-01-01')
                       data valor
            0    2010-01-01  8.75
            1    2010-01-02  8.75
            2    2010-01-03  8.75
            3    2010-01-04  8.75
            4    2010-01-05  8.75
            ..          ...   ...
        
            Capturar os últimos 5 valores da meta de inflação.
        
            >>> bacen.serie(cod=13521, ultimos=5)
                    data valor
            0 2019-01-01  4.25
            1 2020-01-01  4.00
            2 2021-01-01  3.75
            3 2022-01-01  3.50
            4 2023-01-01  3.25
        
            Capturar toda a série de reservas internacionais (em milhões de dólares)
            usando a data como index do DataFrame.
        
            >>> bacen.serie(cod=3546, index=True)
                         valor
            data              
            1970-12-01    1187
            1971-01-01    1229
            1971-02-01    1280
            1971-03-01    1316
            1971-04-01    1379
            ...            ...
        
            """
        
            path = f'dados/serie/bcdata.sgs.{cod}/dados'
            if ultimos is not None:
                path += f'/ultimos/{ultimos}'
        
            params = []
            if inicio is not None:
                params.append(f"dataInicial={parse.data(inicio, modulo='sgs')}")
            if fim is not None:
                params.append(f"dataFinal={parse.data(fim, modulo='sgs')}")
        
            if len(params) > 0:
                path += f'?{"&".join(params)}'
        
            data = get_data(
                endpoint = 'https://api.bcb.gov.br/',
                path = path
            )
        
            df = pd.DataFrame(data)
        
            df.data = pd.to_datetime(df.data, format='%d/%m/%Y')
            if 'datafim' in df.columns:
                df.datafim = pd.to_datetime(df.datafim, format='%d/%m/%Y')
        
            if index:
                df.set_index('data', inplace=True)
        
            return df
        

        Série do Sistema Gerenciador de Série Temporais (SGS) do Banco Central.

        Parameters
        • cod (int): Código da série temporal. Utilize o seguinte link para obter o número da série desejada: https://www3.bcb.gov.br/sgspub/
        • ultimos (int, optional): Retorna os últimos N valores da série numérica.
        • inicio (datetime or str, optional): Valor datetime ou string no formato de data 'AAAA-MM-DD' que representa o primeiro dia da pesquisa.
        • fim (datetime or str, optional): Valor datetime ou string no formato de data 'AAAA-MM-DD' que representa o último dia da pesquisa. Caso este campo seja None, será considerada a data de hoje.
        • index (bool, default=False): Define se a coluna 'data' será o index do DataFrame.
        Returns
        • pandas.core.frame.DataFrame: DataFrame contendo os valores da série temporal pesquisada.
        Raises
        • JSONDecodeError: Em caso de parâmetros inválidos.
        See Also
        Notes
        • Os argumentos inicio e fim devem ser usados em conjunto para funcionar.
        Examples
        • Capturar a taxa SELIC desde 2010 até 2021.
        >>> bacen.serie(cod=432, inicio='2010-01-01', fim='2021-01-01')
                   data valor
        0    2010-01-01  8.75
        1    2010-01-02  8.75
        2    2010-01-03  8.75
        3    2010-01-04  8.75
        4    2010-01-05  8.75
        ..          ...   ...
        
        • Capturar os últimos 5 valores da meta de inflação.
        >>> bacen.serie(cod=13521, ultimos=5)
                data valor
        0 2019-01-01  4.25
        1 2020-01-01  4.00
        2 2021-01-01  3.75
        3 2022-01-01  3.50
        4 2023-01-01  3.25
        
        • Capturar toda a série de reservas internacionais (em milhões de dólares) usando a data como index do DataFrame.
        >>> bacen.serie(cod=3546, index=True)
                     valor
        data              
        1970-12-01    1187
        1971-01-01    1229
        1971-02-01    1280
        1971-03-01    1316
        1971-04-01    1379
        ...            ...
        

          #   def expectativas( expectativa: str, indicador: Union[str, NoneType] = None, top: Union[int, NoneType] = None, ordenar_por: str = 'Data', asc: bool = False ) -> pandas.core.frame.DataFrame:
          View Source
          def expectativas(
          expectativa: str,
          indicador: Optional[str] = None,
          top: Optional[int] = None,
          ordenar_por: str = 'Data',
          asc: bool = False
          ) -> pd.DataFrame:
          """Expectativas de mercado para os principais indicadores macroeconômicos.
          
              Parameters
              ----------
              expectativa : str
                  'mensal' ou 'mensais'
                      Expectativas de Mercado Mensal
                  'trimestral' ou 'trimestrais'
                      Expectativas de Mercado Trimestral
                  'anual' ou 'anuais'
                      Expectativas de Mercado com referência anual
                  'inflacao' ou 'inflacao12meses'
                      Expectativas de mercado para inflação nos próximos 12 meses
                  'top5mensal' ou 'top5mensais'
                      Expectativas mensais de mercado para os indicadores do Top 5
                  'top5anual' ou 'top5anuais'
                      Expectativas de mercado anuais para os indicadores do Top 5
                  'instituicoes'.
                      Expectativas de mercado informadas pelas instituições credenciadas
              indicador : str, optional
                  Capturar apenas o indicador desejado. Deve ser um dos seguintes
                  indicadores, desde que esteja de acordo com a `expectativa` escolhida:
                      'Balança Comercial',
                      'Câmbio',
                      'Conta corrente',
                      'Dívida bruta do governo geral',
                      'Dívida líquida do setor público',
                      'IGP-DI',
                      'IGP-M',
                      'INPC',
                      'Investimento direto no país',
                      'IPA-DI',
                      'IPA-M',
                      'IPCA',
                      'IPCA Administrados',
                      'IPCA Alimentação no domicílio',
                      'IPCA Bens industrializados',
                      'IPCA Livres',
                      'IPCA Serviços',
                      'IPCA-15',
                      'IPC-FIPE',
                      'PIB Agropecuária',
                      'PIB Despesa de consumo da administração pública',
                      'PIB despesa de consumo das famílias',
                      'PIB Exportação de bens e serviços',
                      'PIB Formação Bruta de Capital Fixo',
                      'PIB Importação de bens e serviços',
                      'PIB Indústria',
                      'PIB Serviços',
                      'PIB Total',
                      'Produção industrial',
                      'Resultado nominal',
                      'Resultado primário',
                      'Selic',
                      'Taxa de desocupação'
                  Caso o valor seja None, retorna todos os indicadores disponíveis.
              top : int, optional
                  Número máximo de registros que será retornado.
              ordenar_por : str, default='Data'
                  Por qual coluna da tabela os registros serão ordenados.
              asc : bool, default=False
                  - Se True, ordena os registros pela coluna selecionada no argumento
                    `ordenar_por` em ordem crescente (A-Z ou 0-9);
                  - Se False, ordena em ordem descrescente (Z-A ou 9-0).
          
              Returns
              -------
              pandas.core.frame.DataFrame
                  Tabela contendo uma breve estatística descritiva da expectativa de
                  mercado de cada indicador poe período de referência.
          
              Raises
              ------
              ValueError
                  Em caso de parâmetros inválidos.
          
              Notes
              -----
              Base de Cálculo 0:
                  Uso das expectativas mais recentes informadas pelas instituições
                  participantes a partir do 30º dia anterior à data de cálculo das
                  estatísticas.
              Base de Cálculo 1:
                  Uso das expectativas mais recentes informadas pelas instituições
                  participantes a partir do 4º dia útil anterior à data de cálculo
                  das estatísticas.
          
              References
              ----------
              .. [1] Expectativas de Mercado
                  https://olinda.bcb.gov.br/olinda/servico/Expectativas/versao/v1/swagger-ui3#/
          
              Examples
              --------
              >>> bacen.expectativa(expectativa='mensal', indicador='IGP-M')
                    Indicador        Data DataReferencia  Media  Mediana  DesvioPadrao  ...
              0         IGP-M  2021-06-25        07/2022   0.31     0.30          0.21  ...
              1         IGP-M  2021-06-25        07/2021   0.64     0.61          0.42  ...
              2         IGP-M  2021-06-25        06/2021   1.25     1.10          0.58  ...
              3         IGP-M  2021-06-25        11/2022   0.47     0.47          0.16  ...
              4         IGP-M  2021-06-25        11/2021   0.50     0.50          0.24  ...
              ..          ...         ...            ...    ...      ...           ...  ...
          
              >>> bacen.expectativa(
              ...     expectativa = 'trimestral',
              ...     indicador = 'PIB Total',
              ...     top = 3,
              ...     ordenar_por = 'Media',
              ...     asc = True
              ... )
                 Indicador        Data DataReferencia  Media  Mediana  DesvioPadrao  ...
              0  PIB Total  2020-06-02         2/2020 -14.00    -14.0          3.92  ...
              1  PIB Total  2020-06-09         2/2020 -14.00    -13.4          3.55  ...
              2  PIB Total  2020-06-01         2/2020 -13.99    -14.0          3.91  ...
          
              """
          
          URL = 'https://olinda.bcb.gov.br/olinda/servico/Expectativas/versao/v1/odata/'
          
          orderby = f'&%24orderby={ordenar_por}%20{"asc" if asc else "desc"}'
          topn = '' if top is None else f'&%24top={top}'
          
          expectativa = expectativa.lower()
          if expectativa in ('mensal', 'mensais'):
          expec = 'ExpectativaMercadoMensais'
          KPIS = (
              'Câmbio',
              'IGP-DI',
              'IGP-M',
              'INPC',
              'IPA-DI',
              'IPA-M',
              'IPCA',
              'IPCA Administrados',
              'IPCA Alimentação no domicílio',
              'IPCA Bens industrializados',
              'IPCA Livres',
              'IPCA Serviços',
              'IPCA-15',
              'IPC-Fipe',
              'Produção industrial',
              'Selic',
              'Taxa de desocupação'
          )
          elif expectativa in ('trimestral', 'trimestrais'):
          expec = 'ExpectativasMercadoTrimestrais'
          KPIS = (
              'Câmbio',
              'IPCA',
              'IPCA Administrados',
              'IPCA Alimentação no domicílio',
              'IPCA Bens industrializados',
              'IPCA Livres',
              'IPCA Serviços',
              'PIB Agropecuária',
              'PIB Indústria',
              'PIB Serviços',
              'PIB Total',
              'Taxa de desocupação'
          )
          elif expectativa in ('anual', 'anuais'):
          expec = 'ExpectativasMercadoAnuais'
          KPIS = (
              'Balança Comercial',
              'Câmbio',
              'Conta corrente', 
              'Dívida bruta do governo geral', 
              'Dívida líquida do setor público',
              'IGP-DI',
              'IGP-M',
              'INPC',
              'Investimento direto no país',
              'IPA-DI',
              'IPA-M',
              'IPCA',
              'IPCA Administrados',
              'IPCA Alimentação no domicílio',
              'IPCA Bens industrializados',
              'IPCA Livres',
              'IPCA Serviços',
              'IPCA-15',
              'IPC-FIPE',
              'PIB Agropecuária',
              'PIB Despesa de consumo da administração pública',
              'PIB despesa de consumo das famílias',
              'PIB Exportação de bens e serviços',
              'PIB Formação Bruta de Capital Fixo',
              'PIB Importação de bens e serviços',
              'PIB Indústria',
              'PIB Serviços',
              'PIB Total',
              'Produção industrial',
              'Resultado nominal',
              'Resultado primário',
              'Selic',
              'Taxa de desocupação'
          )
          elif expectativa in ('inflacao', 'inflacao12meses'):
          expec = 'ExpectativasMercadoInflacao12Meses'
          KPIS = (
              'IGP-DI',
              'IGP-M',
              'INPC',
              'IPA-DI',
              'IPA-M',
              'IPCA',
              'IPCA Administrados',
              'IPCA Alimentação no domicílio',
              'IPCA Bens industrializados',
              'IPCA Livres',
              'IPCA Serviços',
              'IPCA-15',
              'IPC-FIPE'
          )
          elif expectativa in ('top5mensal', 'top5mensais'):
          expec = 'ExpectativasMercadoTop5Mensais'
          KPIS = (
              'Câmbio',
              'IGP-DI',
              'IGP-M',
              'IPCA',
              'Selic'
          )
          elif expectativa in ('top5anual', 'top5anuais'):
          expec = 'ExpectativasMercadoTop5Anuais'
          KPIS = (
              'Câmbio',
              'IGP-DI',
              'IGP-M',
              'IPCA',
              'Selic'
          )
          elif expectativa == 'instituicoes':
          expec = 'ExpectativasMercadoInstituicoes'
          KPIS = (
              'Balança Comercial',
              'Câmbio',
              'Conta corrente',
              'Dívida bruta do governo geral',
              'Dívida líquida do setor público',
              'IGP-DI',
              'IGP-M',
              'INPC',
              'Investimento direto no país',
              'IPA-DI',
              'IPA-M',
              'IPCA',
              'IPCA Administrados',
              'IPCA Alimentação no domicílio',
              'IPCA Bens industrializados',
              'IPCA Livres',
              'IPCA Serviços',
              'IPCA-15',
              'IPC-FIPE',
              'PIB Agropecuária',
              'PIB Despesa de consumo da administração pública',
              'PIB despesa de consumo das famílias',
              'PIB Exportação de bens e serviços',
              'PIB Formação Bruta de Capital Fixo',
              'PIB Importação de bens e serviços',
              'PIB Indústria',
              'PIB Serviços',
              'PIB Total',
              'Produção industrial',
              'Resultado nominal',
              'Resultado primário',
              'Selic',
              'Taxa de desocupação'
          )
          else:
          raise ValueError('''Valor inválido para o argumento `expectativa`. Insira um dos seguintes valores:
                      - 'mensal' ou 'mensais';
                      - 'trimestral' ou 'trimestrais';
                      - 'anual' ou 'anuais';
                      - 'inflacao' ou 'inflacao12meses';
                      - 'top5mensal' ou 'top5mensais',
                      - 'top5anual' ou 'top5anuais',
                      - 'instituicoes'.''')
          
          if indicador is None:
          kpi = ''
          elif indicador in KPIS:
          kpi = f"&%24filter=Indicador%20eq%20'{indicador}'"
          else:
          raise ValueError(f''''{indicador}' é um indicador inválido para expectativa '{expectativa.title()}'. Insira um dos seguintes valores:
                  - {", ".join(KPIS)}.''')
          
          path = f'{expec}?%24format=json{orderby}{kpi}{topn}'
          data = get_data(URL, path=path)
          return pd.DataFrame(data['value'])
          

          Expectativas de mercado para os principais indicadores macroeconômicos.

          Parameters
          • expectativa (str):
            • 'mensal' ou 'mensais': Expectativas de Mercado Mensal.
            • 'trimestral' ou 'trimestrais': Expectativas de Mercado Trimestral.
            • 'anual' ou 'anuais': Expectativas de Mercado com referência anual.
            • 'inflacao' ou 'inflacao12meses': Expectativas de mercado para inflação nos próximos 12 meses.
            • 'top5mensal' ou 'top5mensais': Expectativas mensais de mercado para os indicadores do Top 5.
            • 'top5anual' ou 'top5anuais': Expectativas de mercado anuais para os indicadores do Top 5.
            • 'instituicoes': Expectativas de mercado informadas pelas instituições credenciadas.
          • indicador (str, optional): Capturar apenas o indicador desejado. Deve ser um dos seguintes indicadores, desde que esteja de acordo com a expectativa escolhida:
            • 'Balança Comercial',
            • 'Câmbio',
            • 'Conta corrente',
            • 'Dívida bruta do governo geral',
            • 'Dívida líquida do setor público',
            • 'IGP-DI',
            • 'IGP-M',
            • 'INPC',
            • 'Investimento direto no país',
            • 'IPA-DI',
            • 'IPA-M',
            • 'IPCA',
            • 'IPCA Administrados',
            • 'IPCA Alimentação no domicílio',
            • 'IPCA Bens industrializados',
            • 'IPCA Livres',
            • 'IPCA Serviços',
            • 'IPCA-15',
            • 'IPC-FIPE',
            • 'PIB Agropecuária',
            • 'PIB Despesa de consumo da administração pública',
            • 'PIB despesa de consumo das famílias',
            • 'PIB Exportação de bens e serviços',
            • 'PIB Formação Bruta de Capital Fixo',
            • 'PIB Importação de bens e serviços',
            • 'PIB Indústria',
            • 'PIB Serviços',
            • 'PIB Total',
            • 'Produção industrial',
            • 'Resultado nominal',
            • 'Resultado primário',
            • 'Selic',
            • 'Taxa de desocupação'
            • Caso o valor seja None, retorna todos os indicadores disponíveis.
          • top (int, optional): Número máximo de registros que será retornado.
          • ordenar_por (str, default='Data'): Por qual coluna da tabela os registros serão ordenados.
          • asc (bool, default=False):
            • Se True, ordena os registros pela coluna selecionada no argumento ordenar_por em ordem crescente (A-Z ou 0-9);
            • Se False, ordena em ordem descrescente (Z-A ou 9-0).
          Returns
          • pandas.core.frame.DataFrame: Tabela contendo uma breve estatística descritiva da expectativa de mercado de cada indicador poe período de referência.
          Raises
          • ValueError: Em caso de parâmetros inválidos.
          Notes
          • Base de Cálculo 0: Uso das expectativas mais recentes informadas pelas instituições participantes a partir do 30º dia anterior à data de cálculo das estatísticas.
          • Base de Cálculo 1: Para calcular o valor equivalente em US$ (dólar americano), multiplique o montante na moeda consultada pela respectiva paridade. Uso das expectativas mais recentes informadas pelas instituições participantes a partir do 4º dia útil anterior à data de cálculo das estatísticas.
          Examples
          >>> bacen.expectativa(expectativa='mensal', indicador='IGP-M')
                Indicador        Data DataReferencia  Media  Mediana  DesvioPadrao  ...
          0         IGP-M  2021-06-25        07/2022   0.31     0.30          0.21  ...
          1         IGP-M  2021-06-25        07/2021   0.64     0.61          0.42  ...
          2         IGP-M  2021-06-25        06/2021   1.25     1.10          0.58  ...
          3         IGP-M  2021-06-25        11/2022   0.47     0.47          0.16  ...
          4         IGP-M  2021-06-25        11/2021   0.50     0.50          0.24  ...
          ..          ...         ...            ...    ...      ...           ...  ...
          
          >>> bacen.expectativa(
          ...     expectativa = 'trimestral',
          ...     indicador = 'PIB Total',
          ...     top = 3,
          ...     ordenar_por = 'Media',
          ...     asc = True
          ... )
             Indicador        Data DataReferencia  Media  Mediana  DesvioPadrao  ...
          0  PIB Total  2020-06-02         2/2020 -14.00    -14.0          3.92  ...
          1  PIB Total  2020-06-09         2/2020 -14.00    -13.4          3.55  ...
          2  PIB Total  2020-06-01         2/2020 -13.99    -14.0          3.91  ...