Spaces:
Sleeping
Sleeping
File size: 4,155 Bytes
6e39647 |
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 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 |
import streamlit as st
import matplotlib.pyplot as plt
import preprocessor,helper
import matplotlib.pyplot as plt
import seaborn as sns
import emoji
import pandas as pd
st.sidebar.title("whatsapp")
uploaded=st.sidebar.file_uploader("choose a file")
if uploaded is not None:
bytes_data = uploaded.getvalue()
data = bytes_data.decode('utf-8')
df = preprocessor.prepos(data)
st.dataframe(df)
# fetch unique users
user_list=df['users'].unique().tolist()
user_list.remove('group_notification')
user_list.sort()
user_list.insert(0,"overall")
selected_user=st.sidebar.selectbox('show analysis wrt',user_list)
if st.sidebar.button("show analysis"):
num_messages,words,num_madia_shered,num_links = helper.fetch_stats(selected_user,df)
# Top statistics Analysis
st.title('Top Statistics')
col1,col2,col3,col4 = st.columns(4)
with col1:
st.header("Total Messages")
st.title(num_messages)
with col2:
st.header("Total words")
st.title(words)
with col3:
st.header("Shared madia")
st.title(num_madia_shered)
with col4:
st.header("Shared links")
st.title(num_links)
#chat time duration
st.title('Chat Time Duration')
m =len(df['month'].unique())
y = m/12
w = m*4
col1,col2=st.columns(2)
with col1:
st.header('Weaks')
st.title(w)
with col2:
st.header('Months')
st.title(m)
# monthly timeline
st.title('Monthly Timeline')
timeline = helper.monthly_timeline(selected_user,df)
fig,ax =plt.subplots()
ax.plot(timeline['time'],timeline['message'],color='green')
plt.xticks(rotation='vertical')
plt.show()
st.pyplot(fig)
# daily timeline
st.title("Daily Timeline")
daily_timeline = helper.daily_timeline(selected_user,df)
fig,ax = plt.subplots()
ax.plot(daily_timeline['only_date'],daily_timeline['message'],color='black')
plt.xticks(rotation='vertical')
st.pyplot(fig)
# activity map
st.title('Activity Map')
col1,col2 = st.columns(2)
with col1:
st.header('Most Busy Day')
busy_day = helper.weak_activity_map(selected_user,df)
fig,ax = plt.subplots()
ax.bar(busy_day.index,busy_day.values)
plt.xticks(rotation = "vertical")
st.pyplot(fig)
with col2:
st.header('Most Busy Month')
busy_month = helper.month_activity_map(selected_user,df)
fig,ax = plt.subplots()
ax.bar(busy_month.index,busy_month.values, color='orange')
plt.xticks(rotation = "vertical")
st.pyplot(fig)
st.title('Activity Heatmap')
user_heatmap=helper.activity_heatmap(selected_user,df)
fig,ax =plt.subplots()
ax= sns.heatmap(user_heatmap)
st.pyplot(fig)
# finding the busiest users in the group (group level)
if selected_user=="overall":
st.title("Most Busy Users")
x,new_df = helper.most_busy_users(df)
fig,ax = plt.subplots()
col1,col2=st.columns(2)
with col1:
ax.bar(x.index,x.values,color="red")
plt.xticks(rotation='vertical')
st.pyplot(fig)
with col2:
st.dataframe(new_df)
# emoji analysis
emoji_df = helper.emoji_helper(selected_user,df)
emoji_df = pd.DataFrame()
st.title('Emoji Analysis' )
if len(emoji_df)>0:
col1,col2=st.columns(2)
with col1:
st.dataframe(emoji_df)
with col2:
st.header('Total Emojis Shared')
st.title(len(emoji_df))
else:
st.title("No emoji Shared") |