code: def new_providers(pronac, dt):
      
      info = data.providers_info
      df = info[info['PRONAC'] == pronac]
      providers_count = data.providers_count.to_dict()[0]
  
      new_providers = []
      segment_id = None
  
      for _, row in df.iterrows():
          cnpj = row['nrCNPJCPF']
          cnpj_count = providers_count.get(cnpj, 0)
          segment_id = row['idSegmento']
  
          if cnpj_count <= 1:
              item_id = row['idPlanilhaAprovacao']
              item_name = row['Item']
              provider_name = row['nmFornecedor']
  
              new_provider = {
                  'nome': provider_name,
                  'cnpj': cnpj,
                  'itens': {
                      item_id: {
                          'nome': item_name,
                          'tem_comprovante': True
                      }
                  }
              }
              new_providers.append(new_provider)
  
      providers_amount = len(df['nrCNPJCPF'].unique())
  
      new_providers_amount = len(new_providers)
  
      new_providers_percentage = new_providers_amount / providers_amount
  
      averages = data.average_percentage_of_new_providers.to_dict()
      segments_average = averages['segments_average_percentage']
      all_projects_average = list(averages['all_projects_average'].values())[0]
      if new_providers:
          new_providers.sort(key=lambda provider: provider['nome'])
  
      return {
          'lista_de_novos_fornecedores': new_providers,
          'valor': new_providers_amount,
          'new_providers_percentage': new_providers_percentage,
          'is_outlier': new_providers_percentage > segments_average[segment_id],
          'segment_average_percentage': segments_average[segment_id],
          'all_projects_average_percentage': all_projects_average,
      }
docs: Return the percentage of providers of a project
      that are new to the providers database.