import streamlit as st
import pandas as pd
import seaborn as sns
import matplotlib.figure as mpl_figure
# Carregar dados
file_path = 'DataCirclePodcast.csv'
podcast_data = pd.read_csv(file_path)
# Preprocessamento (converter datas e lidar com valores ausentes)
podcast_data['Hora de publicação (UTC)'] = pd.to_datetime(podcast_data['Hora de publicação (UTC)'], errors='coerce')
podcast_data['Curtidas'] = podcast_data['Curtidas'].fillna(0)
podcast_data['Comentários'] = podcast_data['Comentários'].fillna(0)
podcast_data['Compartilhamentos'] = podcast_data['Compartilhamentos'].fillna(0)
podcast_data['Reproduções'] = podcast_data['Reproduções'].fillna(0)
# Título
st.title('Análise do Data Circle Podcast')
st.markdown('''Este dashboard traz insights sobre o desempenho dos episódios, incluindo engajamento e tendências.''')
# Métricas gerais
st.header('Métricas Gerais')
total_reproductions = podcast_data['Reproduções'].sum()
total_likes = podcast_data['Curtidas'].sum()
total_comments = podcast_data['Comentários'].sum()
total_shares = podcast_data['Compartilhamentos'].sum()
col1, col2, col3, col4 = st.columns(4)
with col1:
st.metric(label='Reproduções Totais', value=int(total_reproductions))
with col2:
st.metric(label='Curtidas Totais', value=int(total_likes))
with col3:
st.metric(label='Comentários Totais', value=int(total_comments))
with col4:
st.metric(label='Compartilhamentos Totais', value=int(total_shares))
# Desempenho por episódio
st.header('Desempenho por Episódio')
metric = st.selectbox('Escolha a métrica para análise:', ['Reproduções', 'Curtidas', 'Comentários', 'Compartilhamentos'])
st.table(podcast_data[['Título do episódio', metric]].sort_values(by=metric, ascending=False).reset_index(drop=True))
# Tendências ao longo do tempo
st.header('Tendências ao Longo do Tempo')
trend_metric = st.selectbox('Escolha a métrica para a tendência:', ['Reproduções', 'Curtidas', 'Comentários', 'Compartilhamentos'])
daily_data = podcast_data.groupby(podcast_data['Hora de publicação (UTC)'].dt.date)[trend_metric].sum().reset_index()
st.line_chart(data=daily_data, x='Hora de publicação (UTC)', y=trend_metric)
# Análise de episódios com convidados externos
st.header('Impacto de Convidados Externos')
if 'Convidado Externo?' in podcast_data.columns:
external_data = podcast_data[podcast_data['Convidado Externo?'] == 'Sim']
if not external_data.empty:
st.table(external_data[['Título do episódio', 'Reproduções']].sort_values(by='Reproduções', ascending=False))
else:
st.write('Nenhum episódio com convidado externo identificado.')
else:
st.write('Coluna de convidados externos não encontrada.')
# Correlação entre métricas
st.header('Correlação entre Métricas')
correlation_data = podcast_data[['Reproduções', 'Curtidas', 'Comentários']].corr()
st.write('Matriz de correlação:')
st.dataframe(correlation_data)
# Exibir gráfico de calor da correlação
fig = mpl_figure.Figure(figsize=(6, 6))
ax = fig.add_axes([0.1, 0.1, 0.8, 0.8]) # Configura os eixos manualmente
sns.heatmap(correlation_data, annot=True, cmap='coolwarm', fmt=".2f", ax=ax)
st.pyplot(fig)