File size: 9,671 Bytes
60d970b |
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 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 |
import streamlit as st
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
# Load the CSV file
@st.cache_data
def load_data():
data = pd.read_csv('SME Survey.csv')
return data
data = load_data()
# Title of the app
st.title('SME Survey Data Exploration')
# Display the raw data
st.subheader('Raw Data')
st.dataframe(data)
# Filters
st.sidebar.header('Filters')
business_nature = st.sidebar.multiselect('Select Business Nature', data['What is the nature of your business?'].unique(), default=data['What is the nature of your business?'].unique())
employee_range = st.sidebar.multiselect('Select Employee Range', data['How many employees does your business have?'].unique(), default=data['How many employees does your business have?'].unique())
familiar_with_ai = st.sidebar.multiselect('Familiarity with AI', data['Are you familiar with the concept of Artificial Intelligence (AI)?'].unique(), default=data['Are you familiar with the concept of Artificial Intelligence (AI)?'].unique())
# Apply filters
filtered_data = data[
(data['What is the nature of your business?'].isin(business_nature)) &
(data['How many employees does your business have?'].isin(employee_range)) &
(data['Are you familiar with the concept of Artificial Intelligence (AI)?'].isin(familiar_with_ai))
]
# Display filtered data
st.subheader('Filtered Data')
st.dataframe(filtered_data)
# Analysis and Visualizations
st.subheader('Analysis and Visualizations')
# Bar chart for business nature
st.write('### Distribution of Business Nature')
fig, ax = plt.subplots(figsize=(10, 6))
sns.countplot(y=filtered_data['What is the nature of your business?'], order=filtered_data['What is the nature of your business?'].value_counts().index)
plt.title('Number of Businesses by Nature')
plt.xlabel('Count')
plt.ylabel('Business Nature')
st.pyplot(fig)
# Bar chart for employee range
st.write('### Distribution of Employee Range')
fig, ax = plt.subplots(figsize=(10, 6))
sns.countplot(y=filtered_data['How many employees does your business have?'], order=filtered_data['How many employees does your business have?'].value_counts().index)
plt.title('Number of Businesses by Employee Range')
plt.xlabel('Count')
plt.ylabel('Employee Range')
st.pyplot(fig)
# Pie chart for familiarity with AI
st.write('### Familiarity with AI')
fig, ax = plt.subplots(figsize=(8, 8))
filtered_data['Are you familiar with the concept of Artificial Intelligence (AI)?'].value_counts().plot(kind='pie', autopct='%1.1f%%', startangle=90)
plt.title('Familiarity with AI')
plt.ylabel('')
st.pyplot(fig)
# Bar chart for concerns about AI
st.write('### Concerns about Adopting AI')
fig, ax = plt.subplots(figsize=(10, 6))
sns.countplot(y=filtered_data['What concerns do you have about adopting AI in your business?'], order=filtered_data['What concerns do you have about adopting AI in your business?'].value_counts().index)
plt.title('Concerns about Adopting AI')
plt.xlabel('Count')
plt.ylabel('Concerns')
st.pyplot(fig)
# Bar chart for willingness to invest in AI
st.write('### Willingness to Invest in AI Solutions Annually')
fig, ax = plt.subplots(figsize=(10, 6))
sns.countplot(y=filtered_data['How much are you willing to invest in AI solutions annually?'], order=filtered_data['How much are you willing to invest in AI solutions annually?'].value_counts().index)
plt.title('Willingness to Invest in AI Solutions Annually')
plt.xlabel('Count')
plt.ylabel('Investment Range')
st.pyplot(fig)
# Bar chart for primary goal in adopting AI
st.write('### Primary Goal in Adopting AI')
fig, ax = plt.subplots(figsize=(10, 6))
sns.countplot(y=filtered_data['What would be your primary goal in adopting AI for your business?'], order=filtered_data['What would be your primary goal in adopting AI for your business?'].value_counts().index)
plt.title('Primary Goal in Adopting AI')
plt.xlabel('Count')
plt.ylabel('Primary Goal')
st.pyplot(fig)
# Comparison chart for business challenges by business nature
st.write('### Top Business Challenges by Business Nature')
challenges = filtered_data['Which business challenges do you face most often? (Rank top 3)'].str.split(';').explode().str.strip()
challenge_counts = challenges.value_counts()
challenge_df = filtered_data.merge(challenges.rename('Business Challenge'), left_index=True, right_index=True)
challenge_pivot = challenge_df.pivot_table(index='Business Challenge', columns='What is the nature of your business?', aggfunc='size', fill_value=0)
fig, ax = plt.subplots(figsize=(12, 8))
challenge_pivot.plot(kind='bar', ax=ax)
plt.title('Top Business Challenges by Business Nature')
plt.xlabel('Business Challenge')
plt.ylabel('Count')
plt.xticks(rotation=45)
st.pyplot(fig)
# Comparison chart for willingness to invest in AI by business nature
st.write('### Willingness to Invest in AI by Business Nature')
investment_df = filtered_data.copy()
investment_df['Investment Range'] = pd.Categorical(investment_df['How much are you willing to invest in AI solutions annually?'], categories=[
'Below R 5000 per year',
'Between R 6000 - R 10 000 per year',
'Between R 20 000 - R 50 000 per year',
'More than R50 000 per year'
], ordered=True)
investment_pivot = investment_df.pivot_table(index='Investment Range', columns='What is the nature of your business?', aggfunc='size', fill_value=0)
fig, ax = plt.subplots(figsize=(12, 8))
investment_pivot.plot(kind='bar', ax=ax)
plt.title('Willingness to Invest in AI by Business Nature')
plt.xlabel('Investment Range')
plt.ylabel('Count')
plt.xticks(rotation=45)
st.pyplot(fig)
# Comparison chart for primary goal in adopting AI by business nature
st.write('### Primary Goal in Adopting AI by Business Nature')
goal_df = filtered_data.copy()
goal_df['Primary Goal'] = goal_df['What would be your primary goal in adopting AI for your business?']
goal_pivot = goal_df.pivot_table(index='Primary Goal', columns='What is the nature of your business?', aggfunc='size', fill_value=0)
fig, ax = plt.subplots(figsize=(12, 8))
goal_pivot.plot(kind='bar', ax=ax)
plt.title('Primary Goal in Adopting AI by Business Nature')
plt.xlabel('Primary Goal')
plt.ylabel('Count')
plt.xticks(rotation=45)
st.pyplot(fig)
# Show the number of businesses using AI tools
st.write('### Number of Businesses Using AI Tools')
ai_usage = filtered_data['Have you used any AI tools in your business?'].value_counts()
st.bar_chart(ai_usage)
# Show the number of businesses interested in a free trial of AI tools
st.write('### Number of Businesses Interested in a Free Trial of AI Tools')
free_trial_interest = filtered_data['Would you be interested in a free trial of AI tools tailored to your business?'].value_counts()
st.bar_chart(free_trial_interest)
# Show the number of businesses knowing their sales revenue in real time
st.write('### Number of Businesses Knowing Sales Revenue in Real Time')
real_time_revenue = filtered_data['Do you know your sales revenue in real time?'].value_counts()
st.bar_chart(real_time_revenue)
# Show the preferred method of learning about new technologies
st.write('### Preferred Method of Learning about New Technologies')
learning_method = filtered_data['How do you prefer to learn about new technologies like AI?'].value_counts()
st.bar_chart(learning_method)
# Show the number of businesses by primary goal in adopting AI
st.write('### Number of Businesses by Primary Goal in Adopting AI')
primary_goal = filtered_data['What would be your primary goal in adopting AI for your business?'].value_counts()
st.bar_chart(primary_goal)
# Show the number of businesses by familiarity with AI
st.write('### Number of Businesses by Familiarity with AI')
familiarity_with_ai = filtered_data['Are you familiar with the concept of Artificial Intelligence (AI)?'].value_counts()
st.bar_chart(familiarity_with_ai)
# Show the number of businesses by concerns about AI
st.write('### Number of Businesses by Concerns about AI')
concerns_about_ai = filtered_data['What concerns do you have about adopting AI in your business?'].value_counts()
st.bar_chart(concerns_about_ai)
# Show the number of businesses by willingness to invest in AI
st.write('### Number of Businesses by Willingness to Invest in AI')
willingness_to_invest = filtered_data['How much are you willing to invest in AI solutions annually?'].value_counts()
st.bar_chart(willingness_to_invest)
# Show the number of businesses by current technological solutions
st.write('### Number of Businesses by Current Technological Solutions')
current_tech_solutions = filtered_data['What technological solutions do you currently use?'].str.split(';').explode().str.strip().value_counts()
st.bar_chart(current_tech_solutions)
# Show the number of businesses by needed technology solutions
st.write('### Number of Businesses by Needed Technology Solutions')
needed_tech_solutions = filtered_data['What technology solutions do you need for your business?'].str.split(';').explode().str.strip().value_counts()
st.bar_chart(needed_tech_solutions)
# Show the number of businesses by operational tasks handling
st.write('### Number of Businesses by Operational Tasks Handling')
operational_tasks = filtered_data['How do you currently handle the operational tasks of Customer support; Inventory management; Accounting/Finance and etc?'].str.split(';').explode().str.strip().value_counts()
st.bar_chart(operational_tasks)
# Show the number of businesses by business challenges
st.write('### Number of Businesses by Business Challenges')
business_challenges = filtered_data['Which business challenges do you face most often? (Rank top 3)'].str.split(';').explode().str.strip().value_counts()
st.bar_chart(business_challenges)
|