Пример #1
0
def histograma():

    # 1º - Definindo a variável "df" (dataframe) que receberá as informações que está no csv
    # 2º - Utilizando a biblioteca pandas (pd) lerá o csv "new_3.csv" e armazenará apenas a coluna "ouvintes" no dataframe
    df = df_inicial['ouvintes']
    # Calcula número de ouvintes no dataframe
    somaouvintes = df.sum()
    # Cria uma lista com a porcentagem do numero de ouvintes de cada artista
    porc = (df) / somaouvintes

    # Plotando o gráfico
    # 1º - Definindo a variável "fig" onde será armazenado o gráfico
    # 2º - Utiliza a função histograma no módulo "px" da biblioteca plotly
    fig = px.histogram(  # Informa que a origem dos dados, não especificados, vêm do dataframe "df"
        x=df,  # O eixo x se refere ao número de ouvintes
        y=porc,  # O eixo y se refere à porcentagem de artistas com certo número de ouvintes
        nbins=30,  # Divide o total de ouvintes em 30 intervalos
        color_discrete_sequence=['#c8d4d3'
                                 ])  # Muda a cor das barras do gráfico

    # Modificando o layout do gráfico "fig"
    fig.update_layout(
        lm.layout_gps('Histogram: Number of Listeners per Artist',
                      'percentage of artists', 'number of listeners'))
    fig.update_layout(yaxis_tickformat='.2%', margin=dict(t=100))
    # Mostra o gráfico construído
    return fig
Пример #2
0
def pais_artistas(pais):
    
    df = df_inicial[['artistas', 'paises', 'scrobbles']]
    df = df[df['paises'] == pais].sort_values(by = 'scrobbles', ascending= False).dropna()
    df['porcentagens'] = df['scrobbles']/df['scrobbles'].sum()
    trace = go.Bar(x= df['artistas'].head(10), y= df['porcentagens'].head(10))
    data = [trace]
    layout = lm.layout_gps('Artistas mais famosos: ' + pais.title(), 'artistas', 'quantidade de scrobbles')
    fig = go.Figure(data=data, layout=layout)
    fig.show()
Пример #3
0
def genero(estilo):

    df = df_inicial[['paises', 'ouvintes', 'estilos']]
    df = df.sort_values(by='ouvintes', ascending=False)

    # LÊ O CSV, DETERMINA AS COLUNAS A SEREM UTILIZADAS E ORDENA POR OUVINTES

    x = estilo
    uk = df[df['estilos'] == x].dropna()
    # CRIA UM DATA FRAME COM APENAS OS DADOS DO ESTILO DESEJADO E RETIRA OS NaN

    group = uk[['ouvintes'
                ]].groupby(uk['paises']).sum().sort_values(by='ouvintes',
                                                           ascending=False)
    group['paises'] = group.index

    # SOMA TODOS OS OUVINTES, SEPARANDO-OS POR PAÍSES

    if 'outro' in group['paises'][:10]:
        y = group.loc['outro']
        group = group.drop('outro')
        group = group.append(y)

    # MOVE O PAÍS "OUTRO" PARA O FINAL DO DATAFRAME

    total = group['ouvintes'].sum()
    group['porcentagem'] = (group['ouvintes'] / total)
    # CALCULA A PORCENTAGEM DE CADA PAÍS E CRIA UMA COLUNA COM ESTAS PORCENTAGENS

    others = group['porcentagem'][11:].sum()
    group['porcentagem'][10] = others

    # SOMA A PORCENTAGEM DE TODOS PAÍSES A PARTIR DO 11° RELEVANTE E ADICIONA UMA LINHA COM ESTA PORCENTAGEM

    group_top = group.head(n=11)
    group_top['paises'][10] = 'others'

    # PEGA OS PRIMEIROS 10 PAÍSES MAIS RELEVANTES E A SOMA DAS OUTRAS PORCENTAGENS

    trace = go.Bar(x=group_top['paises'],
                   y=group_top['porcentagem'],
                   marker={'color': '#c8d4d3'})

    # CRIA O GRÁFICO COM OS PAÍSES E A PORCENTAGEM DE CADA UM E DEFINE SUA COR

    layout = lm.layout_gps(
        'Percentage of Listeners by Countries: ' + x.title(),
        'listeners percentage',
    )
    # MUDA O LAYOUT DO GRÁFICO

    data = [trace]
    fig = go.Figure(data=data, layout=layout)
    return fig
Пример #4
0
def scrobbles():

    df = df_inicial[['paises', 'scrobbles']]
    df = df.values.tolist()

    # cria uma lista com a quantidade de scrobbles de cada país
    lista_s = list()
    for pais in lista_p:
        scrobbles = 0
        for i in range(len(df)):
            if df[i][0] == pais:
                scrobbles += df[i][1]
        lista_s.append(scrobbles)

    # calcula a porcentagem de cada país com base nos scrobbles
    total_s = sum(lista_s)
    porcentagem = [i / total_s for i in lista_s]

    # cria a lista final com os países e porcentagens e ordena
    lista = [[pais, porcentagem]
             for pais, porcentagem in zip(lista_p, porcentagem)]
    lista = sorted(lista, key=lambda x: x[1], reverse=True)

    # retira o 'outro' das 10 primeiras posições e coloca no final da lista
    lista_t = lista[:10]
    for i in range(len(lista_t)):
        if lista_t[i][0] == 'outro':
            outro = lista[i]
            del (lista[i])
            lista.append(outro)

    # calcula e coloca o "outros" na lista final
    lista_b = lista[11:]
    outros = 0
    for i in range(len(lista_b)):
        outros += lista_b[i][1]
    lista.insert(10, ['others', outros])

    # cria o gráfico
    trace = go.Bar(x=([lista[i][0] for i in range(11)]),
                   y=([lista[i][1] for i in range(11)]),
                   marker={'color': '#c8d4d3'})

    # cria e muda o layout
    layout = lm.layout_gps('Proportion of all Scrobbles by Country',
                           'listeners percentage', 'countries')

    data = [trace]
    fig = go.Figure(data=data, layout=layout)
    return fig
Пример #5
0
def scrobbles():

    df = df_inicial[['paises', 'scrobbles']]
    df = df.groupby(by='paises').sum()
    df = df.sort_values(by='scrobbles', ascending=False)

    # LÊ O CSV, DETERMINA AS COLUNAS A SEREM UTILIZADAS E
    # SOMA OS VALORES DE SCROBBLES E OUVINTES E ORDENA O DATAFRAME POR SCROBBLES

    soma = df['scrobbles'].sum()
    df['porcentagem'] = (df['scrobbles'] / soma)
    df['paises'] = df.index

    # CALCULA A PORCENTAFEM DE SCROBBLES POR PAÍS

    if 'outro' in df['paises'][:10]:
        y = df.loc['outro']
        df = df.drop('outro')
        df = df.append(y)

    # MOVE O PAÍS "OUTRO" PARA O FINAL DO DATAFRAME

    others = df['porcentagem'][11:].sum()
    df['porcentagem'] = df['porcentagem'][0:11]
    df['porcentagem'][10] = others
    df['paises'][10] = 'others'
    df_top = df.head(n=11)

    # SOMA A PORCENTAGENS DE SCROBBLES A PARTIR DO 11° E ARMAZENA NA POSIÇÃO 11 DA COLUNA "PORCENTAGEM"
    # E PEGA APENAS OS 10 PRIMEIROS PAÍSES E A SOMA

    trace = go.Bar(x=df_top['paises'],
                   y=df_top['porcentagem'],
                   marker={'color': '#c8d4d3'})

    # CRIA O GRÁFICO E DETERMINA SUA COR

    layout = lm.layout_gps('Proportion of all Scrobbles by Country',
                           'listeners percentage', 'countries')

    # EDITA O LAYOUT DO GRÁFICO

    data = [trace]
    fig = go.Figure(data=data, layout=layout)
    return fig
Пример #6
0
def genero(estilo):

    df = df_inicial[['paises', 'estilos', 'ouvintes']]
    df = df.values.tolist()

    # cria uma lista com apenas o estilo determinado
    x = estilo
    df2 = list()
    for i in range(len(df)):
        if df[i][1] == x:
            df2.append(df[i])

    # cria uma lista de países
    paises = list()
    for i in range(len(df2)):
        if df2[i][0] not in paises:
            paises.append(df2[i][0])

    # cria uma lista somando os ouvintes por país
    lista_o = list()
    for pais in paises:
        ouvintes = 0
        for i in range(len(df2)):
            if pais == df2[i][0]:
                ouvintes += df2[i][2]
        lista_o.append(ouvintes)

    # calcula a porcentagem de cada estilo
    total_o = sum(lista_o)
    porcentagem = list()
    for i in lista_o:
        porcentagem.append(i / total_o)

    # cria uma lista ordenada dupla com o nome do país e a quantidade de ouvintes
    lista = ([[pais, porc] for pais, porc in zip(paises, porcentagem)])
    lista = sorted(lista, key=lambda x: x[1], reverse=True)

    # retira e joga o 'outro' pro final da lista
    lista_top = lista[:10]
    for i in range(len(lista_top)):
        if 'outro' == lista[i][0]:
            outro = lista[i]
            del (lista[i])
            lista.append(outro)

    # calcula a porcentagem do 'outros' e adiciona à posição 10 da lista
    lista_b = lista[11:]
    outros = 0
    for i in range(len(lista_b)):
        outros += lista_b[i][1]
    lista.insert(10, ['others', outros])

    # cria o gráfico
    trace = go.Bar(x=[lista[i][0] for i in range(11)],
                   y=[lista[i][1] for i in range(11)],
                   marker={'color': '#c8d4d3'})

    # muda o layout do gráfico
    layout = lm.layout_gps(
        'Percentage of Listeners by Countries: ' + x.title(),
        'listeners percentage',
    )

    data = [trace]
    fig = go.Figure(data=data, layout=layout)
    return fig
Пример #7
0
def pais(pais):

    df = df_inicial[['paises', 'estilos', 'ouvintes']]
    df = df.values.tolist()

    # cria uma lista com apenas o país determinado
    x = pais
    df2 = list()
    for i in range(len(df)):
        if df[i][0] == x:
            df2.append(df[i])

    # cria uma lista com os estilos
    lista_e = list()
    for i in range(len(df2)):
        if df2[i][1] not in lista_e:
            lista_e.append(df2[i][1])

    # cria uma lista com os ouvintes de cada estilo
    lista_o = list()
    for estilo in lista_e:
        ouvintes = 0
        for i in range(len(df2)):
            if df2[i][1] == estilo:
                ouvintes += df2[i][2]
        lista_o.append(ouvintes)

    # calcula a porcentagem de cada estilo
    total_o = sum(lista_o)
    porcentagem = list()
    for i in lista_o:
        porcentagem.append(i / total_o)

    # cria uma lista com os estilos e ouvintes
    lista = list()
    for estilo, porc in zip(lista_e, porcentagem):
        lista.append([estilo, porc])
    lista = sorted(lista, key=lambda x: x[1], reverse=True)

    # retira o 'outro' das 10 primeiras posições e coloca no final da lista
    lista_t = lista[:10]
    for i in range(len(lista_t)):
        if lista_t[i][0] == 'outro':
            outro = lista[i]
            del (lista[i])
            lista.append(outro)

    # calcular e colocar o "outros" na lista final
    lista_b = lista[11:]
    outros = 0
    for i in range(len(lista_b)):
        outros += lista_b[i][1]
    lista.insert(10, ['others', outros])

    # cria o gráfico
    trace = go.Bar(x=([lista[i][0] for i in range(11)]),
                   y=([lista[i][1] for i in range(11)]),
                   marker={'color': '#c8d4d3'})

    # cria e muda o layout
    layout = lm.layout_gps(
        'Percentage of Listeners by Genres: ' + x.title(),
        'listeners percentage',
    )

    data = [trace]
    fig = go.Figure(data=data, layout=layout)
    return fig
Пример #8
0
# retira o 'outro' das 10 primeiras posições e coloca no final da lista
lista_t = lista[:10]
for i in range(len(lista_t)):
    if lista_t[i][0] == 'outro':
        outro = lista[i]
        del (lista[i])
        lista.append(outro)

    # calcular e colocar o "outros" na lista final
lista_b = lista[11:]
outros = 0
for i in range(len(lista_b)):
    outros += lista_b[i][1]
lista.insert(10, ['others', outros])

trace = go.Bar(x=([lista[i][0] for i in range(11)]),
               y=([lista[i][1] for i in range(11)]))

# CRIA O GRÁFICO COM OS ESTILOS E A PORCENTAGEM DE CADA UM E DEFINE SUA COR

layout = lm.layout_gps('Percentage of Listeners by Genres: ' + pais.title(),
                       'listeners percentage', '')
# MUDA O LAYOUT DO GRÁFICO

data = [trace]
fig = go.Figure(data=data, layout=layout)
fig.show()

#%%