Py.Cafe

brenda.antunes/

datacirclepodcast-analysis

Análise do Data Circle Podcast

DocsPricing
  • DataCirclePodcast.csv
  • app.py
  • requirements.txt
app.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
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)