├── Procfile
├── img
├── rp.jpg
├── logo.jpg
├── tcm.jpg
├── tff.jpg
├── fundo.jpg
├── fundo2.jpg
├── fundo_sd.png
├── tik_tok_logo_icon_147226.png
└── png-transparent-video-icon-illustration-white-angle-brand-pattern-youtube-play-button-triangle-black-black-and-white.png
├── setup.sh
├── README.md
├── data
├── NexoAnexoFinal.csv
└── NexoAnexoFinal2.csv
├── requirements.txt
└── app.py
/Procfile:
--------------------------------------------------------------------------------
1 | web: sh setup.sh && streamlit run app.py
2 |
--------------------------------------------------------------------------------
/img/rp.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luislauriano/Aplicacao_NexoAnexo/main/img/rp.jpg
--------------------------------------------------------------------------------
/img/logo.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luislauriano/Aplicacao_NexoAnexo/main/img/logo.jpg
--------------------------------------------------------------------------------
/img/tcm.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luislauriano/Aplicacao_NexoAnexo/main/img/tcm.jpg
--------------------------------------------------------------------------------
/img/tff.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luislauriano/Aplicacao_NexoAnexo/main/img/tff.jpg
--------------------------------------------------------------------------------
/img/fundo.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luislauriano/Aplicacao_NexoAnexo/main/img/fundo.jpg
--------------------------------------------------------------------------------
/img/fundo2.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luislauriano/Aplicacao_NexoAnexo/main/img/fundo2.jpg
--------------------------------------------------------------------------------
/img/fundo_sd.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luislauriano/Aplicacao_NexoAnexo/main/img/fundo_sd.png
--------------------------------------------------------------------------------
/img/tik_tok_logo_icon_147226.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luislauriano/Aplicacao_NexoAnexo/main/img/tik_tok_logo_icon_147226.png
--------------------------------------------------------------------------------
/setup.sh:
--------------------------------------------------------------------------------
1 | mkdir -p ~/.streamlit/
2 |
3 | echo "\
4 | [server]\n\
5 | headless = true\n\
6 | port = $PORT\n\
7 | enableCORS = false\n\
8 | \n\
9 | " > ~/.streamlit/config.toml
10 |
--------------------------------------------------------------------------------
/img/png-transparent-video-icon-illustration-white-angle-brand-pattern-youtube-play-button-triangle-black-black-and-white.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luislauriano/Aplicacao_NexoAnexo/main/img/png-transparent-video-icon-illustration-white-angle-brand-pattern-youtube-play-button-triangle-black-black-and-white.png
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 |
2 | # Aplicação/Dashboard desenvolvido para o Projeto de Análise de Dados dos Álbuns do artista NexoAnexo.
3 |
4 | Este repositório contém a Aplicação/Dashboard construído com o framework Streamlit do Python para o Projeto [Spotify & Python & Data Science - Análise de Dados dos Álbuns do artista NexoAnexo](https://github.com/luislauriano/Data_Science/tree/master/Spotify%20%26%20Python%20%26%20Data%20Science). Após a aplicação ter sido finalizada, coloquei a mesma disponivel na web através do heroku e a próprima plataforma de compartilhamento do streamlit.
5 |
6 | [](https://share.streamlit.io/luislauriano/aplicacao_nexoanexo/main/app.py)
7 |
8 | * **[Aplicação/Dashboard do projeto](http://analise-nexoanexo.herokuapp.com/)**
9 |
10 |
11 |
12 |
13 |
14 | ---
15 |
16 | Após a divulgação da aplicação desenvolvida com Streamlit no Linkedin, o Product Marketing Ted Ricks do Streamlit encontrou a minha publicação, aplicação e me enviou uma mensagem informando que a minha aplicação tinha sido incluída no **[Resumo Semanal](https://discuss.streamlit.io/t/weekly-roundup-agraph-components-streambackmachines-text-generation-tutorials-and-more/7640)** da semana 29/11/2020 da comunidade do Streamlit, no tópico de aplicativos da semana.
17 |
18 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/data/NexoAnexoFinal.csv:
--------------------------------------------------------------------------------
1 | ,nome_do_album,nome_da_faixa,posicao_da_faixa,popularidade,duraçao_da_musica,frequencia_de_popularidade_das_musicas
2 | 0,Trap from Future,Vem No Tum Tum,1,17,216917,Acima da média
3 | 1,Trap from Future,Drip Know Me,2,3,154646,Acima da média
4 | 2,Trap from Future,Match,3,4,180716,Acima da média
5 | 3,Trap from Future,Trap & Brega,4,6,164468,Acima da média
6 | 4,Trap from Future,Marca Sem Roupa,5,6,148364,Acima da média
7 | 5,Trap from Future,Wow!,6,3,145675,Acima da média
8 | 6,Trap from Future,Não Posso Morrer Novo,7,3,150116,Acima da média
9 | 7,Trap from Future,Fuck Cópias,8,2,140880,Abaixo da média
10 | 8,Trap from Future,Passa Nada,9,3,135745,Acima da média
11 | 9,Trap from Future,Novo Rock,10,1,130971,Abaixo da média
12 | 10,Trap from Future,Como Tem Que Ser,11,3,169166,Acima da média
13 | 11,Trap from Future,Grife,12,3,140925,Acima da média
14 | 12,Trap from Future,Fogo No Incenso,13,5,260158,Acima da média
15 | 13,Trap from Future,Zombieland,14,1,190357,Abaixo da média
16 | 14,Trap from Future,Baila Comigo?,15,2,192530,Abaixo da média
17 | 15,Trap de Cria Mixtape,Trap de Cria,1,9,158634,Acima da média
18 | 16,Trap de Cria Mixtape,A Lista das Bandidas,2,2,192697,Abaixo da média
19 | 17,Trap de Cria Mixtape,A3,3,1,140732,Abaixo da média
20 | 18,Trap de Cria Mixtape,E Ai Fake,4,1,167852,Abaixo da média
21 | 19,Trap de Cria Mixtape,Video Call,5,1,192468,Abaixo da média
22 | 20,Trap de Cria Mixtape,Aliviando o Stress,6,1,144564,Abaixo da média
23 | 21,Trap de Cria Mixtape,Hino dos Irmãos,7,1,126168,Abaixo da média
24 | 22,Trap de Cria Mixtape,Bebê da Cara de Mal,8,1,174180,Abaixo da média
25 | 23,Trap de Cria Mixtape,Isso Que É Foda,9,4,135086,Acima da média
26 | 24,Trap de Cria Mixtape,Pjl,10,0,211323,Abaixo da média
27 | 25,Real Plug Mixtape,The Train,1,0,169865,Abaixo da média
28 | 26,Real Plug Mixtape,Fica Bem,2,0,130134,Abaixo da média
29 | 27,Real Plug Mixtape,Gospel,3,0,122278,Abaixo da média
30 | 28,Real Plug Mixtape,Nxanx,4,0,167355,Abaixo da média
31 | 29,Real Plug Mixtape,Tudo,5,0,161403,Abaixo da média
32 | 30,Real Plug Mixtape,A Lei,6,0,134274,Abaixo da média
33 | 31,Real Plug Mixtape,Dreams Cup,7,0,230822,Abaixo da média
34 | 32,Real Plug Mixtape,2020,8,4,154298,Acima da média
35 |
--------------------------------------------------------------------------------
/data/NexoAnexoFinal2.csv:
--------------------------------------------------------------------------------
1 | ,nome_do_album,nome_da_faixa,posicao_da_faixa,popularidade,duraçao_da_musica,musica_explicita,frequencia_de_popularidade_das_musicas
2 | 0,Trap from Future,Vem No Tum Tum,1,17,216917,True,Acima da média
3 | 1,Trap from Future,Drip Know Me,2,3,154646,True,Acima da média
4 | 2,Trap from Future,Match,3,4,180716,True,Acima da média
5 | 3,Trap from Future,Trap & Brega,4,6,164468,True,Acima da média
6 | 4,Trap from Future,Marca Sem Roupa,5,6,148364,True,Acima da média
7 | 5,Trap from Future,Wow!,6,3,145675,True,Acima da média
8 | 6,Trap from Future,Não Posso Morrer Novo,7,3,150116,False,Acima da média
9 | 7,Trap from Future,Fuck Cópias,8,2,140880,True,Abaixo da média
10 | 8,Trap from Future,Passa Nada,9,3,135745,True,Acima da média
11 | 9,Trap from Future,Novo Rock,10,1,130971,True,Abaixo da média
12 | 10,Trap from Future,Como Tem Que Ser,11,3,169166,True,Acima da média
13 | 11,Trap from Future,Grife,12,3,140925,True,Acima da média
14 | 12,Trap from Future,Fogo No Incenso,13,5,260158,True,Acima da média
15 | 13,Trap from Future,Zombieland,14,1,190357,True,Abaixo da média
16 | 14,Trap from Future,Baila Comigo?,15,2,192530,True,Abaixo da média
17 | 15,Trap de Cria Mixtape,Trap de Cria,1,9,158634,True,Acima da média
18 | 16,Trap de Cria Mixtape,A Lista das Bandidas,2,2,192697,True,Abaixo da média
19 | 17,Trap de Cria Mixtape,A3,3,1,140732,True,Abaixo da média
20 | 18,Trap de Cria Mixtape,E Ai Fake,4,1,167852,True,Abaixo da média
21 | 19,Trap de Cria Mixtape,Video Call,5,1,192468,True,Abaixo da média
22 | 20,Trap de Cria Mixtape,Aliviando o Stress,6,1,144564,True,Abaixo da média
23 | 21,Trap de Cria Mixtape,Hino dos Irmãos,7,1,126168,True,Abaixo da média
24 | 22,Trap de Cria Mixtape,Bebê da Cara de Mal,8,1,174180,True,Abaixo da média
25 | 23,Trap de Cria Mixtape,Isso Que É Foda,9,4,135086,True,Acima da média
26 | 24,Trap de Cria Mixtape,Pjl,10,0,211323,True,Abaixo da média
27 | 25,Real Plug Mixtape,The Train,1,0,169865,True,Abaixo da média
28 | 26,Real Plug Mixtape,Fica Bem,2,0,130134,True,Abaixo da média
29 | 27,Real Plug Mixtape,Gospel,3,0,122278,True,Abaixo da média
30 | 28,Real Plug Mixtape,Nxanx,4,0,167355,True,Abaixo da média
31 | 29,Real Plug Mixtape,Tudo,5,0,161403,True,Abaixo da média
32 | 30,Real Plug Mixtape,A Lei,6,0,134274,True,Abaixo da média
33 | 31,Real Plug Mixtape,Dreams Cup,7,0,230822,True,Abaixo da média
34 | 32,Real Plug Mixtape,2020,8,4,154298,True,Acima da média
35 |
--------------------------------------------------------------------------------
/requirements.txt:
--------------------------------------------------------------------------------
1 | altair==4.1.0
2 | antiorm==1.2.1
3 | appdirs==1.4.3
4 | astor==0.8.1
5 | astroid==2.4.2
6 | atomicwrites==1.3.0
7 | attrs==19.1.0
8 | autopep8==1.5.3
9 | backcall==0.1.0
10 | base58==2.0.1
11 | beautifulsoup4==4.9.1
12 | bleach==3.1.0
13 | blinker==1.4
14 | boto3==1.14.7
15 | botocore==1.17.7
16 | cachetools==4.1.0
17 | certifi==2020.6.20
18 | chardet==3.0.4
19 | click==7.1.2
20 | colorama==0.4.3
21 | cycler==0.10.0
22 | db.py==0.5.3
23 | decorator==4.4.0
24 | defusedxml==0.6.0
25 | distlib==0.3.0
26 | docutils==0.15.2
27 | entrypoints==0.3
28 | enum-compat==0.0.3
29 | filelock==3.0.12
30 | flake8==3.8.3
31 | idna==2.9
32 | importlib-metadata==0.17
33 | ipykernel==5.2.1
34 | ipython==7.5.0
35 | ipython-genutils==0.2.0
36 | ipython-sql==0.4.0
37 | ipywidgets==7.5.1
38 | isort==4.3.21
39 | jedi==0.13.3
40 | Jinja2==2.11.2
41 | jmespath==0.10.0
42 | joblib==0.15.1
43 | jsonschema==3.2.0
44 | jupyter==1.0.0
45 | jupyter-client==6.1.5
46 | jupyter-console==6.1.0
47 | jupyter-core==4.6.3
48 | jupyterthemes==0.20.0
49 | kiwisolver==1.2.0
50 | lazy-object-proxy==1.4.3
51 | lesscpy==0.14.0
52 | MarkupSafe==1.1.1
53 | matplotlib==3.2.1
54 | mccabe==0.6.1
55 | mistune==0.8.4
56 | mplleaflet==0.0.5
57 | mypy==0.780
58 | mypy-extensions==0.4.3
59 | nbconvert==5.6.1
60 | nbformat==5.0.6
61 | nltk==3.5
62 | notebook==6.0.3
63 | numpy==1.18.4
64 | packaging==20.3
65 | pandas==1.0.3
66 | pandocfilters==1.4.2
67 | parso==0.4.0
68 | pathtools==0.1.2
69 | pickleshare==0.7.5
70 | Pillow==7.1.2
71 | ply==3.11
72 | prettytable==0.7.2
73 | prometheus-client==0.7.1
74 | prompt-toolkit==2.0.9
75 | protobuf==3.12.2
76 | pybars3==0.9.7
77 | pycodestyle==2.6.0
78 | pydataset==0.2.0
79 | pydeck==0.4.0b2
80 | pyflakes==2.2.0
81 | Pygments==2.4.2
82 | pylint==2.5.3
83 | PyMeta3==0.5.1
84 | pyparsing==2.4.7
85 | pyrsistent==0.16.0
86 | python-dateutil==2.8.0
87 | pywinpty==0.5.7
88 | pyzmq==19.0.1
89 | qtconsole==4.7.3
90 | QtPy==1.9.0
91 | regex==2020.6.8
92 | requests==2.24.0
93 | s3transfer==0.3.3
94 | scikit-learn==0.23.0
95 | scipy==1.4.1
96 | seaborn==0.10.1
97 | Send2Trash==1.5.0
98 | six==1.12.0
99 | soupsieve==2.0.1
100 | SQLAlchemy==1.3.17
101 | sqlparse==0.3.1
102 | streamlit==0.81.1
103 | terminado==0.8.3
104 | testpath==0.4.4
105 | texts==0.1
106 | threadpoolctl==2.0.0
107 | toml==0.10.1
108 | toolz==0.10.0
109 | tornado==5.1.1
110 | tqdm==4.46.1
111 | traitlets==4.3.2
112 | typed-ast==1.4.1
113 | typing-extensions==3.7.4.2
114 | tzlocal==2.1
115 | urllib3==1.25.9
116 | validators==0.15.0
117 | virtualenv==20.0.20
118 | watchdog==0.10.2
119 | wcwidth==0.1.7
120 | webencodings==0.5.1
121 | widgetsnbextension==3.5.1
122 | wordcloud==1.7.0
123 | wrapt==1.12.1
124 | xlrd==1.2.0
125 | xlwt==1.3.0
126 | zipp==0.5.1
127 | plotly==4.9.0
128 | chart-studio==1.1.0
--------------------------------------------------------------------------------
/app.py:
--------------------------------------------------------------------------------
1 | import streamlit as st
2 | import pandas as pd
3 | import altair as alt
4 | import plotly.graph_objs as go
5 | from collections import Counter
6 | import re
7 | import matplotlib.pyplot as plt
8 | import seaborn as sns
9 | import plotly.express as px
10 | import base64
11 |
12 | main_bg = "img/fundo2.jpg"
13 | main_bg_ext = "img/fundo2.jpg"
14 |
15 | side_bg = "img/fundo_sd.png"
16 | side_bg_ext = "img/fundo_sd.png"
17 |
18 |
19 | st.markdown(
20 | f"""
21 |
69 | """,
70 | unsafe_allow_html=True
71 | )
72 |
73 |
74 |
75 | def criar_barras(coluna_num, coluna_cat, df):
76 | bars = alt.Chart(df, width = 600).mark_bar().encode(
77 | x=alt.X(coluna_num, stack='zero'),
78 | y=alt.Y(coluna_cat),
79 | tooltip=[coluna_cat, coluna_num]
80 | ).interactive()
81 | return bars
82 |
83 | def criar_scatterplot(x, y, color, df):
84 | scatter = alt.Chart(df, width=800, height=400).mark_circle().encode(
85 | alt.X(x),
86 | alt.Y(y),
87 | color = color,
88 | tooltip = [x, y]
89 | ).interactive()
90 | return scatter
91 |
92 | def cria_correlationplot(df, colunas_numericas):
93 | cor_data = (df[colunas_numericas]).corr().stack().reset_index().rename(columns={0: 'correlation', 'level_0': 'variable', 'level_1': 'variable2'})
94 | cor_data['correlation_label'] = cor_data['correlation'].map('{:.2f}'.format) # Round to 2 decimal
95 | base = alt.Chart(cor_data, width=500, height=500).encode( x = 'variable2:O', y = 'variable:O')
96 | text = base.mark_text().encode(text = 'correlation_label',color = alt.condition(alt.datum.correlation > 0.5,alt.value('white'),
97 | alt.value('black')))
98 |
99 | cor_plot = base.mark_rect().encode(color='correlation:Q')
100 | return cor_plot + text
101 |
102 |
103 | # Sidebar principal
104 | def menu():
105 | st.sidebar.header('**Menu Inicial**')
106 | page = st.sidebar.radio("", ('Sobre',
107 | 'Análise de Dados dos álbuns do artista NexoAnexo'))
108 | if page == 'Sobre':
109 | sobre()
110 | if page == 'Análise de Dados dos álbuns do artista NexoAnexo':
111 | analise_nexoanexo()
112 |
113 |
114 | ## Páginas principais ## --------------------------------------------------------------------------------
115 |
116 |
117 | # Sobre o Projeto
118 | def sobre():
119 | # Sobre o Projeto
120 | st.title('Análise de Dados dos álbuns do artista NexoAnexo')
121 | '''
122 |
123 | '''
124 | '''
125 | Essa é uma aplicação do projeto de análise de dados dos álbuns do artista NexoAnexo. Veja o notebook completo do projeto para um maior entendimento
126 | (https://github.com/luislauriano/Data_Science/blob/master/Projeto_construcao.ipynb).
127 |
128 | O objetivo da aplicação e do projeto é que a partir das conclusões retiradas da análise de dados das músicas dos álbumns do artista, seja identificado fatores que ajudam ou contribuem um albúm ou música a ter sucesso e como isso pode ser usado para futuros lançamentos.
129 |
130 |
131 | '''
132 | #O Artista
133 | st.title('O artista NexoAnexo')
134 | st.image('img/logo.jpg', width=200)
135 | '''
136 | Nascido em 29 de janeiro de 1997, NexoAnexo, é um artista e produtor pernambucano, difusor da trap Music no Brasil. Nascido e criado na Zona Oeste do Recife e tido como uma das promessas nordestinas do trap nacional pela revista @RND, atualmente membro da banca e produtora HoodCave.
137 | '''
138 | # Informações
139 | st.title('Informações úteis da análise')
140 |
141 | '''
142 | Algumas coisas precisam ser definidas para entender a análise da aplicação:
143 |
144 | O Spotify disponibiliza a popularidade de uma música, mas como é feito o cálculo da populariade?
145 | A popularidade é calculada e baseia-se na maior parte no número total de reproduções que a faixa teve e quão recentes foram estas reproduções. Logo, as músicas que estão sendo tocadas com uma maior frequência atualmente terão uma popularidade maior do que as músicas que foram muito tocadas no passado.
146 |
147 | `Como a popularidade das músicas podem alterar diariamente, para não interferir na análise, era preciso utilizar um conjunto de dados de um dia especifico, por esse motivo foi utilizado o conjunto de dados do dia 26-06-2020.`
148 |
149 |
150 | O albúm Trap From Future é o único que de fato se trata de um albúm do artista NexoAnexo, sendo o seu primeiro e que foi lançado nesse ano de 2020. Real Plug e Trap de Cria são "mixtapes", porém no Spotify as duas mixtapes são consideras como albúm, logo, suas músicas serão levadas como consideração para a análise.
151 |
152 |
153 |
154 |
155 | '''
156 |
157 | st.title('Álbum e Mixtapes analisadas')
158 |
159 | st.title("**Álbum Trap From Future**")
160 | st.video("https://www.youtube.com/watch?v=4P0yqNpjcX8&list=PL6uovRkTzXcLrKY1FqPteY2ta8ngFYdp2")
161 |
162 | st.title('**Mixtape (Álbum) Trap de Cria**')
163 | st.video('https://www.youtube.com/watch?v=jV-xa_gF2CE&t=111s')
164 |
165 | st.title('**Mixtape (Álbum) Real Plug**')
166 | st.video('https://www.youtube.com/watch?v=3VPUm17eZt8&list=PL6uovRkTzXcLFpKBFinRv_PhE2_HV9buG')
167 |
168 |
169 |
170 |
171 | # Sobre o autor
172 | st.title('Sobre o autor')
173 |
174 | '''
175 | Hello World! Me chamo Luis Vinicius, atualmente Graduando em Gestão da Informação na UFPE, uma quase Cientista de Dados, desenvolvedor em Python e apaixonado por Tecnologia, Inovação e Desenvolvimento de projetos. Tenho conhecimento na linguagem Python e suas principais bibliotecas para se trabalhar com Data Science, além de conhecimento em Machine Learning, SQL, Banco de dados relacionais, estatística para Data Science e Power BI.
176 |
177 |
178 |
179 | Meus outros projetos e portfólio completo você pode encontrar acessando o link abaixo:
180 |
181 | https://github.com/luislauriano/Data_Science
182 |
183 | Se você deseja me conhecer melhor e acompanhar minhas publicações na área de Data Science me adicione no linkedin!
184 |
185 | https://linkedin.com/in/luislauriano
186 |
187 | '''
188 |
189 |
190 | #Página da análise
191 | def analise_nexoanexo():
192 | st.title('Análise de dados dos álbuns do artista NexoAnexo')
193 |
194 | file = "data/NexoAnexoFinal.csv"
195 | file2 = "data/NexoAnexoFinal2.csv"
196 | if file is not None:
197 | df = pd.read_csv(file)
198 | df2 = pd.read_csv(file2)
199 |
200 | aux = pd.DataFrame({"colunas": df.columns, 'tipos': df.dtypes})
201 | colunas_numericas = list(aux[aux['tipos'] != 'object']['colunas'])
202 | colunas_object = list(aux[aux['tipos'] == 'object']['colunas'])
203 | colunas = list(df.columns)
204 |
205 | #Menu Análises
206 | st.sidebar.header('Análises')
207 | menu_analises = st.sidebar.radio("", ('Visão geral', 'Álbuns',
208 | ))
209 | if menu_analises == 'Visão geral':
210 | visao_geral(df, df2)
211 |
212 | if menu_analises == 'Álbuns':
213 | albuns(df)
214 |
215 | def visao_geral(df, df2):
216 | # Albúm Real Plug Mixtape
217 | rmx = df.query("nome_do_album == 'Real Plug Mixtape' ")
218 | # Albúm Trap de Cria Mixtape
219 | tcm = df.query("nome_do_album == 'Trap de Cria Mixtape' ")
220 | # Albúm Trap From Future
221 | tff = df.query("nome_do_album == 'Trap from Future' ")
222 |
223 | #Inf basicas
224 | st.header('**Informações básicas**')
225 | '''
226 |
227 | '''
228 | '''
229 | Para um primeiro entendimento dos dados, considero importante saber quais são as músicas de cada albúm que estão sendo analisadas e a quantidade total de músicas dos três albúns. Dessa forma, tanto irá ajudar á construir perguntas futuras para a análise, como também retirar melhores conclusões e informações do que será analisado.
230 | '''
231 |
232 | '''
233 | Total de músicas do Álbum Real Plug: `8`
234 |
235 | Total de músicas do Álbum Trap de Cria: `10`
236 |
237 | Total de músicas do Álbum Trap From Future: `15`
238 |
239 |
240 | `Somando os três álbuns são 33 músicas analisadas`
241 | '''
242 |
243 |
244 | st.header("**O conjunto de dados**")
245 |
246 | '''
247 | O conjunto de dados do artista NexoAnexo foi coletado através da API do Spotify e não possui dados ausentes. Algumas colunas como duração da música fo retirada do conjunto de dados são uteis para o objetivo do projeto. Todos os registros passam alguma informação, entretanto, devido ao fato do albúm Real plug Mixtape ser o albúm mais antigo, sua popularidade apresenta muitos valores zero, tendo em vista, que a popularidade está relacionada as músicas que estão sendo ouvidas no momento.
248 | '''
249 | st.write(df)
250 |
251 | '''
252 | Você pode conferir como foi feita a coleta de dados do Spotify no projeto completo:
253 | https://github.com/luislauriano/Data_Science/blob/master/Projeto_construcao.ipynb
254 | '''
255 |
256 |
257 |
258 |
259 | st.header('**Gráfico das músicas com maior popularidade no momento**')
260 |
261 |
262 | dados = df[['nome_da_faixa', 'popularidade']].sort_values(ascending=False, by='popularidade').reset_index(drop=True)[:16]
263 | fig = go.Figure(data=[
264 | go.Bar(name='Confirmed', x=dados['nome_da_faixa'], y=dados['popularidade'])])
265 | st.plotly_chart(fig)
266 | '''
267 | As duas primeiras músicas que estão popular no momento são "Trap de Cria" do segundo albúm Trap de Cria e "Vem No Tum Tum" do mais recente albúm Trap From Future. Mas, o que chama atenção é a música "2020" do primeiro albúm Real Plug que está a frente de muitas músicas do recente albúm Trap From Future.
268 | '''
269 |
270 | st.header('**Relação das músicas com a média da Popularidade**')
271 | graph_retweet(df)
272 |
273 | '''
274 | Em sua maioria as músicas encontram-se abaixo da média, algo que não é bom. Porém, isso se dá pelo fato de a maioria das músicas que pertencem aos dois álbuns Real Plug e Trap de Cria, não possuírem uma popularidade tão alta no momento, por não serem albúns tão recentes. Enquanto, as músicas mais recentes e com popularidade alta pertencem ao albúm Trap From Future, logo, em menor quantidade, comparado a soma dos dois álbuns que vieram antes.
275 |
276 | '''
277 |
278 | st.header('**Gráfico de músicas que são consideras explicitas**')
279 | donut_explicita(df2)
280 | '''
281 | Por mais que algumas músicas de fato não sejam explicitas, como a música Vem No Tum Tum. O Spotify pode considerar a música explicita por conter alguma palavra que foge das suas diretrizes, algo comum na cena do Trap. Logo, a maioria das músicas dos albúns são consideradas explicitas.
282 | '''
283 |
284 |
285 | st.header('**Relação da popularide com a posicação das musicas**')
286 | dados2 = df[['posicao_da_faixa', 'popularidade']].sort_values(ascending=False, by='popularidade').reset_index(drop=True)
287 | '''
288 | A primeira música de um albúm pode se tornar popular por sempre iniciar a playlist do albúm, mas a primeira música que está com uma popularidade alta nem sempre é a mais ouvida. Por isso é preciso ter cuidado. Foi preciso analisar se a popularidade das músicas tinha relação com suas posições e se após a primeira música a popularidade continuava de acordo com suas posições.
289 | '''
290 | fig = go.Figure(data=[
291 | go.Bar(name='Músicas', x=dados2['posicao_da_faixa'], y=dados2['popularidade'])])
292 | st.plotly_chart(fig)
293 |
294 | '''
295 | Nota-se que se a posição das músicas tivessem relação com as suas popularidades, após a primeira música, as músicas seguintes deveriam de forma decrescente ir diminuindo suas popularidades, o que não acontece.
296 | '''
297 | '''
298 | O que fica claro é que a popularidade de uma música só tem relação com a sua posição para a primeira música, devido que elas iniciam automaticamente a playlist do albúm, conseguemente é considerada ouvida e resultando num erro de maior popularidade.
299 | '''
300 |
301 |
302 |
303 |
304 |
305 | def albuns(df):
306 | st.sidebar.subheader('Álbuns')
307 | albuns = st.sidebar.radio("", ('Trap From Future',
308 | 'Trap de Cria (Mixtape)',
309 | 'Real Plug (Mixtape)'))
310 | '''
311 | Lembrando que foi analisado os três álbuns do artista, considerados pelo spotify. Sendo Trap From Future de fato o primeiro e único álbum do artista, enquanto Trap de Cria e Real Plug são mixtapes (álbuns pequenos), porém o Spotify considerada as mixtapes como álbum.
312 | '''
313 | if albuns == 'Trap From Future':
314 | tff = df.query("nome_do_album == 'Trap from Future' ")
315 | st.title('**Albúm Trap From Future**')
316 | st.image('img/tff.jpg', width=400)
317 | '''
318 |
319 | '''
320 | '''
321 | Trap From Future trata-se do albúm mais recente do artista e diferente dos outros dois albúns analisados que na realidade são mixtapes, esse de fato pode ser considerado um albúm e o primeiro do artista. O albúm foi lançado no dia 12 de março de 2020, sendo considerado como o trabalho mais sólido do artista e até mesmo elogiado pelo artista que é referência na cena do trap, Matuê. Com uma capa de albúm futurista e cheia de referências, as músicas do albúm possuem uma versatilidade de estilo e estética totalmente diferente de músicas anteriores do artista.
322 |
323 | O álbum possui quinze músicas com uma grande versatilidade, indo da mistura brega e trap na música "Trap&Brega" à musica com participação internacional em "Drip Know Me". O que também foi possivel de notar é a leveza e "visão" do artista em suas músicas, sendo muito falado no albúm de suas ambições e desejos para uma vida melhor.
324 |
325 | '''
326 |
327 | st.subheader('**Gráfico comparativo da posição da música em relação á sua popularidade**')
328 | '''
329 | Com o gráfico é possivel observar que a popularidade das músicas que estão na posição um à cinco tem uma crescente, mas depois a popularidade não segue mais um padrão de acordo com a posição. A segunda música do albúm "Drip Know Me" que de acordo com a hipotese nula deveria ser a segunda mais ouvida, ocupa a sexta posição da popularidade do albúm, com uma popularidade igual á três.
330 | '''
331 | fig = go.Figure(data=[
332 | go.Bar(name='Popularidade', x=tff['nome_da_faixa'], y=tff['popularidade']),
333 | go.Bar(name='Posicao', x=tff['nome_da_faixa'], y=tff['posicao_da_faixa'])])
334 | st.plotly_chart(fig)
335 |
336 |
337 |
338 |
339 | st.subheader('**Gráfico de linha da popularidade das músicas do albúm**')
340 |
341 | '''
342 | Nota-se que nenhuma música possui a popularidade igual a zero, porém o fato de ser o albúm mais recente contribui para isso. Também é posivel notar que a música Trap & Brega cuja possui uma proposta diferente de músicas anteriores do artista e até mesmo de músicas da cena do rap/trap, possui uma das popularidades mais altas do albúm, no momento em que foi feita a coleta desses dados.
343 | '''
344 | fig = px.line(tff, x="nome_da_faixa", y="popularidade")
345 | st.plotly_chart(fig)
346 |
347 |
348 |
349 | st.subheader('**Gráfico das músicas com maior popularidade no momento**')
350 |
351 | '''
352 | Por ser o albúm mais recente, coseguentemente a quantidade de músicas com uma popularidade alta é maior do que os outros dois álbuns. Além disso, músicas como "Marca Sem Roupa" e "Vem No Tum Tum" que possui estilo de trap explicito e falam sobre a relação com uma outra pessoa, foram bem acolhidas pelo público, sendo as maiores popularidades do albúm.
353 | '''
354 | dados = tff[['nome_da_faixa', 'popularidade']].sort_values(ascending=False, by='popularidade').reset_index(drop=True)[:15]
355 | fig = go.Figure(data=[
356 | go.Bar(name='Confirmed', x=dados['nome_da_faixa'], y=dados['popularidade'])])
357 | st.plotly_chart(fig)
358 |
359 | st.subheader('**Gráfico das músicas que estão abaixo da média**')
360 | '''
361 | Quatro músicas se encontram abaixo da média de popularidade, sendo elas: Fuck Cópias, Novo Rock, Zombieland e Baila Comigo?. A média de popularidade das músicas é igual a 2.63 e a média de popularidade das músicas do albúm Trap From Future é 4.13, por ser o álbum mais recente possui a maior média de popularidade.
362 |
363 | '''
364 | fig = go.Figure(data=[
365 | go.Bar(name='Confirmed', x=tff['nome_da_faixa'], y=tff['frequencia_de_popularidade_das_musicas'][:15])])
366 | st.plotly_chart(fig)
367 |
368 | if albuns == 'Trap de Cria (Mixtape)':
369 | tcm = df.query("nome_do_album == 'Trap de Cria Mixtape' ")
370 | st.title('Albúm (Mixtape) Trap de Cria')
371 |
372 | '''
373 | '''
374 | '''
375 |
376 | '''
377 | st.image('img/tcm.jpg', width=400)
378 |
379 | '''
380 | O albúm ou mixtape "Trap de Cria" foi o segundo albúm do artista e seu lançamento aconteceu no dia 29 de julho de 2019, diferente do primeiro albúm "Real Plug", o alcance desse albúm foi maior e era de se esperar até mais alcance e visibilidade.Com uma pegada de músicas no estilo trap explícito, o álbum obtive músicas que receberam um bom alcance, comparado a músicas anteriores, porém sinto que o alcance, especificamente desse albúm ficou no "gostinho de quero mais", pela qualidade e empenho que foi colocado pelo artista e todos que de alguma forma contribuíram na construção do albúm.
381 |
382 | Ao total foram dez músicas, duas a mais que o primeiro albúm. Os destaques ficam para as músicas: "E ai Fake" construída com base na polêmica das conversas íntimas vazadas do jogador Neymar, "Video Call" e "PJL" que contou com a participação de integrantes da Hoodcave, produtora da qual o artista faz parte.
383 | '''
384 |
385 |
386 |
387 | st.subheader('**Gráfico comparativo da posição da música em relação á sua popularidade**')
388 | '''
389 | Assim como no albúm Trap From Future, a música mais popular deste albúm é a que está na primeira posição e por mais que muitas músicas do albúm não estejam com a popularidade tão alta, ainda é possivel observar que a música "Isso Que É Foda" mesmo ocupando a penúltima posição do albúm é a segunda com maior popularidade.
390 | '''
391 | fig = go.Figure(data=[
392 | go.Bar(name='Popularidade', x=tcm['nome_da_faixa'], y=tcm['popularidade']),
393 | go.Bar(name='Posicao', x=tcm['nome_da_faixa'], y=tcm['posicao_da_faixa'])])
394 | st.plotly_chart(fig)
395 |
396 | st.subheader('**Gráfico de linha da popularidade das músicas do albúm**')
397 |
398 | '''
399 | Mesmo após o lançamento do albúm mais recente "Trap From Future", nota-se que a quantidade de músicas do albúm acolhida pelo público foi de fato maior do que o primeiro albúm "Real Plug Mixtape". Sendo até os dias atuais, ouvida uma parte significativa das músicas que compoem o albúm, com apenas a música "Pjl" possuindo uma frequência igual a zero.
400 | '''
401 | fig = px.line(tcm, x="nome_da_faixa", y="popularidade")
402 | st.plotly_chart(fig)
403 |
404 | st.subheader('**Gráfico das músicas com maior popularidade no momento**')
405 | '''
406 |
407 | '''
408 | '''
409 | O destaque do álbum fica para a música "Trap de Cria" que possui a maior popularidade no momento, além de ser uma das mais ouvidas dos três álbuns, tornando-se uma representação do que o albúm propoem e atraindo o público para as músicas seguintes do álbum. As outras duas músicas seguintes da Trap de Cria e que compoem o top três de músicas populares no momento são "Isso que é Foda" e "A lista das Bandidas" que contagiam os ouvintes com o estilo trap explícito.
410 |
411 | '''
412 | dados = tcm[['nome_da_faixa', 'popularidade']].sort_values(ascending=False, by='popularidade').reset_index(
413 | drop=True)[:15]
414 | fig = go.Figure(data=[
415 | go.Bar(name='Confirmed', x=dados['nome_da_faixa'], y=dados['popularidade'])])
416 | st.plotly_chart(fig)
417 |
418 | st.subheader('**Gráfico das músicas que estão abaixo da média**')
419 | '''
420 | Apenas duas músicas se encontram acima da média de popularidade, sendo elas: Trap de Cria e Isso que é Foda. Como já mencionado anteriormente, a baixa quantidade de músicas acima da média se da por a maioria das músicas que estão sendo ouvidas no momento e possuirem maior popularidade pertecerem ao álbum mais recente Trap From Future. A média de popularidade das músicas do albúm Trap de Cria é 2.1, possuindo a segunda maior média de popularidade.
421 |
422 | '''
423 | fig = go.Figure(data=[
424 | go.Bar(name='Confirmed', x=tcm['nome_da_faixa'], y=tcm['frequencia_de_popularidade_das_musicas'][:15])])
425 | st.plotly_chart(fig)
426 |
427 | if albuns == 'Real Plug (Mixtape)':
428 | rmx = df.query("nome_do_album == 'Real Plug Mixtape' ")
429 | st.title('Albúm (Mixtape) Real Plug')
430 |
431 | '''
432 |
433 |
434 | '''
435 | st.image('img/rp.jpg', width=400)
436 |
437 | '''
438 | O albúm ou mixtape Real Plug é o mais antigo de todos e seu lançamento foi no dia 15 de maio de 2018, então é bem provavel que a popularidade de suas músicas não sejam tão altas, mas o albúm conta com músicas que tiveram bons números e feedback do público. Um exemplo é a música "2020", sendo a música que ganhou mais alcance e "caiu na graça dos fãs", bem reconhecida e reponsável por atrair público até os dias de atuais. No canal do artista, o clipe da música "2020" é o terceiro mais acessado, com 28 mil views.
439 |
440 | No total são oito músicas, com destaque para a música "2020", que foi a principal responsável por trazer alcance ao álbum.
441 | '''
442 |
443 | st.subheader('**Gráfico comparativo da posição da música em relação á sua popularidade**')
444 | '''
445 | Por se tratar do albúm mais antigo, a primeira música do albúm não é a mais ouvida, como nos dois mais recentes álbuns. Por outro lado, ainda que esteja na última posição do albúm, a música "2020" é a única música do albúm que ainda tem a popularidade em alta e se a sua popularidade for comparada à popularidade de músicas do albúm mais recente "Trap From Future", "2020" pode ser considerada de fato um sucesso!
446 |
447 | Ainda que, se os três álbuns forem comparados, a música "2020" é a única que possui a popularidade em alta, estando na ultima posição de um álbum.
448 | '''
449 | fig = go.Figure(data=[
450 | go.Bar(name='Popularidade', x=rmx['nome_da_faixa'], y=rmx['popularidade']),
451 | go.Bar(name='Posicao', x=rmx['nome_da_faixa'], y=rmx['posicao_da_faixa'])])
452 | st.plotly_chart(fig)
453 |
454 | st.subheader('**Gráfico de linha da popularidade das músicas do albúm**')
455 |
456 | '''
457 | É possivel observar que de fato a música 2020 é um sucesso, por ainda possuir uma popularidade alta mesmo fazendo parte do álbum mais antigo. As outras músicas do álbum possui a popularidade igualmente a zero, logo, significa que a partir do calcúlo de popularidade do Spotify, as músicas não estão sendo tão ouvidas a ponto de possuir uma popularidade maior que zero.
458 | '''
459 | fig = px.line(rmx, x="nome_da_faixa", y="popularidade")
460 | st.plotly_chart(fig)
461 |
462 | st.subheader('**Gráfico das músicas com maior popularidade no momento**')
463 | '''
464 |
465 | '''
466 | '''
467 | É incrivel como a música "2020" ainda possui um bom alcance! Mesmo que seja a única música do álbum com a popularidade alta atualmente, a música está a frente de grandes músicas do albúm mais recente "Trap From Future", como as músicas "Wow!", "Grife" e "Não Posso Morrer Novo Mano" que também são destaques do álbum Trap From Future.
468 |
469 | '''
470 | dados = rmx[['nome_da_faixa', 'popularidade']].sort_values(ascending=False, by='popularidade').reset_index(
471 | drop=True)[:15]
472 | fig = go.Figure(data=[
473 | go.Bar(name='Confirmed', x=dados['nome_da_faixa'], y=dados['popularidade'])])
474 | st.plotly_chart(fig)
475 |
476 | st.subheader('**Gráfico das músicas que estão abaixo da média**')
477 | '''
478 | Apenas uma música se encontra acima da média de popularidade, sendo a música 2020. Por mais que seja a unica, é de tamanha expressão uma música que pertence ao albúm mais antigo ainda ser bastante ouvida e possuir popularidade maior que músicas recentes. Além de ser uma música que ainda é aclamada pelo público, a música trata o ano de 2020 como o ano da profesia, onde coisas iriam acontecer para o artista.
479 |
480 | '''
481 | fig = go.Figure(data=[
482 | go.Bar(name='Confirmed', x=rmx['nome_da_faixa'], y=rmx['frequencia_de_popularidade_das_musicas'][:15])])
483 | st.plotly_chart(fig)
484 |
485 |
486 |
487 |
488 | def graph_retweet(df):
489 |
490 | # Agrupamento dos dados
491 | df_retweet = Counter(df.frequencia_de_popularidade_das_musicas)
492 | labels = list(df_retweet.keys())
493 | values = list(df_retweet.values())
494 |
495 | # Plot
496 | data=[go.Pie(labels=labels, values=values, hole=.5, marker = {'colors': ['#B5ACA7', '#0000B3']})]
497 | st.plotly_chart(data)
498 |
499 | def donut_explicita(df2):
500 |
501 | # Agrupamento dos dados
502 | df_retweet = Counter(df2.musica_explicita)
503 | labels = list(df_retweet.keys())
504 | values = list(df_retweet.values())
505 |
506 | # Plot
507 | data=[go.Pie(labels=labels, values=values, hole=.5, marker = {'colors': ['#B5ACA7', '#0000B3']})]
508 | st.plotly_chart(data)
509 |
510 |
511 |
512 |
513 |
514 |
515 |
516 |
517 | menu()
--------------------------------------------------------------------------------