def ranking_criminal_por_estado(quantidade, sigla):
    # token = request.headers.get('Authorization').split(' ')[1]
    # if not(authorization(token)):
    #     return jsonify({'msg': 'Token inválido, faça login novamente'})

    sigla = converter_sigla2nome(sigla)

    aux = {}

    if sigla == 'bra' or sigla == 'brasil':
        for i in range(0, dadosOcorrenciasDF.index.stop):
            aux.update({dadosOcorrenciasDF.loc[i, 'tipocrime']: int(0 if aux.get(dadosOcorrenciasDF.loc[i, 'tipocrime']) is None else aux.get(dadosOcorrenciasDF.loc[i, 'tipocrime'])) + int(dadosOcorrenciasDF.loc[i, 'ocorrencias'])})
    else:
        for i in range(0, dadosOcorrenciasDF.index.stop):
            if dadosOcorrenciasDF.loc[i, 'uf'] == sigla:
                aux.update({dadosOcorrenciasDF.loc[i, 'tipocrime']: int(0 if aux.get(dadosOcorrenciasDF.loc[i, 'tipocrime']) is None else aux.get(dadosOcorrenciasDF.loc[i, 'tipocrime'])) + int(dadosOcorrenciasDF.loc[i, 'ocorrencias'])})

    aux = dict(sorted(aux.items(), key=itemgetter(1), reverse=True))
    result = list(aux)[:int(quantidade)]
    lista = [None]*len(result)
    for i in range(len(result)):
        lista[i] = aux[result[i]]
    
    auxDF = pd.DataFrame({'crime': result, 'ocorrencias': lista})
    auxDF.reset_index(drop=True)
    
    return auxDF.reset_index().to_json(orient='records')
def media_ocorrencias_nome_sigla_periodo(nomedocrime, sigla, inicio, fim):
    # token = request.headers.get('Authorization').split(' ')[1]
    # if not(authorization(token)):
    #     return jsonify({'msg': 'Token inválido, faça login novamente'})

    print(nomedocrime, sigla, inicio, fim)

    sigla = converter_sigla2nome(sigla)
    nomedocrime = converter_crime(nomedocrime)

    if int(inicio) < 2015 or int(fim) > 2020:
        return jsonify({'msg': 'Por favor inserir um periodo entre 2015 e 2020'})

    if int(inicio) > int(fim):
        aux = inicio
        inicio = fim
        fim = aux


    if nomedocrime == 'todos' and (sigla == 'bra' or sigla == 'brasil') and inicio==2015 and fim==2020:
        result = dadosOcorrenciasDF.drop(['ano'], axis=1).groupby(['tipocrime']).sum().ocorrencias
        #result = result/contar_meses(inicio,fim)
        return result.to_json()


    result = dadosOcorrenciasDF.query('uf == "valor1" & tipocrime == "valor2"'.replace('valor1', sigla).replace('valor2', nomedocrime)).ocorrencias

    return jsonify({ 'UF': 'BRA', 'nomedocrime':nomedocrime, 'inicio': inicio, 'fim': fim, 'media_mensal' : sum(result)})
def media_vitimas_nome_sigla_periodo(nomedocrime, sigla, inicio, fim):
    # token = request.headers.get('Authorization').split(' ')[1]
    # if not(authorization(token)):
    #     return jsonify({'msg': 'Token inválido, faça login novamente'})

    sigla = converter_sigla2nome(sigla)
    nomedocrime = converter_crime(nomedocrime)

    mes_inicio, ano_inicio = inicio.split("-")
    mes_inicio = int(mes_inicio)
    ano_inicio = int(ano_inicio)
    mes_fim, ano_fim = fim.split("-")
    mes_fim = int(mes_fim)
    ano_fim = int(ano_fim)

    dicionario2 = {'janeiro': '1', 'fevereiro': '2', 'março': '3', 'abril': '4', 'maio': '5', 'junho': '6', 'julho' : '7', 'agosto' : '8', 'setembro' : '9', 'outubro' : '10', 'novembro' : '11', 'dezembro' : '12'}
    dadosVitimasDF.replace(dicionario2, regex=True, inplace=True)
    dadosVitimasDF.mes = dadosVitimasDF.mes.astype(int)

    dadosVitimasDF0 = dadosVitimasDF[dadosVitimasDF.tipocrime == nomedocrime]
    dadosVitimasDF0 = dadosVitimasDF0[dadosVitimasDF0.uf == sigla]

    if (ano_fim != ano_inicio):
        dadosVitimasDF1 = dadosVitimasDF0.loc[np.logical_and(dadosVitimasDF0.ano == ano_inicio, dadosVitimasDF0.mes >= mes_inicio)]
        dadosVitimasDF2 = dadosVitimasDF0.loc[np.logical_and(dadosVitimasDF0.ano > ano_inicio, dadosVitimasDF0.ano < ano_fim)]
        dadosVitimasDF3 = dadosVitimasDF0.loc[np.logical_and(dadosVitimasDF0.ano == ano_fim, dadosVitimasDF0.mes >= mes_fim)]
        frames = [dadosVitimasDF1, dadosVitimasDF2, dadosVitimasDF3]
        vitimasNoPeriodo = pd.concat(frames)
    else:
        vitimasNoPeriodo = dadosVitimasDF0.loc[np.logical_and(dadosVitimasDF0.mes >= mes_inicio, dadosVitimasDF0.mes <= mes_fim)]

    vitimasNoPeriodo = vitimasNoPeriodo.iloc[:,[0,4]]
    vitimasNoPeriodoMedio = vitimasNoPeriodo.mean(axis=0)

    return vitimasNoPeriodoMedio.to_json()
def qtd_vitimas_nome_sigla(nomedocrime, sigla):
    # token = request.headers.get('Authorization').split(' ')[1]
    # if not(authorization(token)):
    #     return jsonify({'msg': 'Token inválido, faça login novamente'})

    sigla = converter_sigla2nome(sigla)
    nomedocrime = converter_crime(nomedocrime)

    if nomedocrime == 'todos' and(sigla == 'bra' or sigla == 'brasil'):
        result = dadosVitimasDF.drop(['ano'], axis=1).groupby(['tipocrime']).sum().vitimas
        return result.to_json()

    if sigla == 'bra' or sigla == 'brasil':
        result = dadosVitimasDF.query('tipocrime == "valor2"'.replace('valor2', nomedocrime)).vitimas
        return jsonify({"UF" : "BR",'quantidade': sum(result)})

    if nomedocrime == 'todos':
        result = dadosVitimasDF.query('uf == "valor1"'.replace('valor1', sigla)).drop(['ano'], axis=1).groupby(['tipocrime']).sum().vitimas
        return result.to_json()

    if sigla == 'estados':
            result = dadosVitimasDF.query('tipocrime == "valor2"'.replace('valor2', nomedocrime)).groupby(['uf']).sum().vitimas
            return result.to_json()

    result = dadosVitimasDF.query('uf == "valor1" & tipocrime == "valor2"'.replace('valor1', sigla).replace('valor2', nomedocrime)).vitimas

    uf_estado = converter_nome2sigla(sigla)

    return jsonify({'UF': uf_estado ,'quantidade': sum(result)})