C:\Users\chira\AppData\Local\Temp\ipykernel_11780\2217802626.py:10: FutureWarning:
Passing `palette` without assigning `hue` is deprecated and will be removed in v0.14.0. Assign the `x` variable to `hue` and set `legend=False` for the same effect.
Zero Shot Classification of Reviews
Top 5 Labels for Positive Sentiment
Reliable service” stands out as the most frequently praised feature. Customer service and ease of use follow as other key drivers of positive sentiment.
Top 5 Labels for Negative Sentiment
Code
# Negative sentiment
= top_label_counts[top_label_counts['sentiment'].str.lower() == 'negative']
negative_labels = negative_labels.sort_values(by='count', ascending=False).head(5)
negative_top5
=(10,5))
plt.figure(figsize='top_label', y='count', data=negative_top5, palette="Set2")
sns.barplot(x'Top 5 Top Labels - Negative Sentiment')
plt.title('Top Label')
plt.xlabel('Count')
plt.ylabel(=45)
plt.xticks(rotation
plt.tight_layout() plt.show()
C:\Users\chira\AppData\Local\Temp\ipykernel_11780\3209300340.py:7: FutureWarning:
Passing `palette` without assigning `hue` is deprecated and will be removed in v0.14.0. Assign the `x` variable to `hue` and set `legend=False` for the same effect.
Unresponsive customer service” dominates negative feedback. Price-related concerns and delivery issues (missing items, wait times) are also significant.
Top 5 Labels for Neutral Sentiment
Code
# Neutral sentiment
= top_label_counts[top_label_counts['sentiment'].str.lower() == 'neutral']
neutral_labels = neutral_labels.sort_values(by='count', ascending=False).head(5)
neutral_top5
=(10,5))
plt.figure(figsize='top_label', y='count', data=neutral_top5, palette="Set2")
sns.barplot(x'Top 5 Top Labels - Neutral Sentiment')
plt.title('Top Label')
plt.xlabel('Count')
plt.ylabel(=45)
plt.xticks(rotation
plt.tight_layout() plt.show()
C:\Users\chira\AppData\Local\Temp\ipykernel_11780\200243279.py:7: FutureWarning:
Passing `palette` without assigning `hue` is deprecated and will be removed in v0.14.0. Assign the `x` variable to `hue` and set `legend=False` for the same effect.
Feedback reflects variability, with “mixed experiences” and “inconsistent service” being most mentioned. Neutral sentiments often reflect tempered expectations or situational outcomes.
UberEats - Top 5 Labels for Positive Sentiments
Code
# Filter UberEats reviews
= combined_df[combined_df['app_name'] == 'UberEats']
ubereats
# Filter Positive sentiment
= ubereats[ubereats['sentiment'].str.lower() == 'positive']
positive_df
# Top 5 labels
= positive_df['top_label'].value_counts().head(5)
positive_top5
# Plot
=(8,5))
plt.figure(figsize=positive_top5.index, y=positive_top5.values, palette='Set2')
sns.barplot(x'Top 5 Labels for UberEats - Positive Sentiment')
plt.title('Top Label')
plt.xlabel('Count')
plt.ylabel(=45)
plt.xticks(rotation
plt.tight_layout() plt.show()
C:\Users\chira\AppData\Local\Temp\ipykernel_11780\3373619653.py:13: FutureWarning:
Passing `palette` without assigning `hue` is deprecated and will be removed in v0.14.0. Assign the `x` variable to `hue` and set `legend=False` for the same effect.
UberEats is positively recognized for reliable service and good customer support. “Good discounts” also appear, showing promotional offers impact user satisfaction.
UberEats - Top 5 Labels for Negative Sentiments
Code
# Filter Negative sentiment
= ubereats[ubereats['sentiment'].str.lower() == 'negative']
negative_df
# Top 5 labels
= negative_df['top_label'].value_counts().head(5)
negative_top5
# Plot
=(8,5))
plt.figure(figsize=negative_top5.index, y=negative_top5.values, palette='Set2')
sns.barplot(x'Top 5 Labels for UberEats - Negative Sentiment')
plt.title('Top Label')
plt.xlabel('Count')
plt.ylabel(=45)
plt.xticks(rotation
plt.tight_layout() plt.show()
C:\Users\chira\AppData\Local\Temp\ipykernel_11780\719617373.py:10: FutureWarning:
Passing `palette` without assigning `hue` is deprecated and will be removed in v0.14.0. Assign the `x` variable to `hue` and set `legend=False` for the same effect.
“Unresponsive customer service” is the top concern among UberEats users. Other recurring complaints include pricing and delivery fulfillment issues.
UberEats - Top 5 Labels for Neutral Sentiments
C:\Users\chira\AppData\Local\Temp\ipykernel_11780\3615030921.py:10: FutureWarning:
Passing `palette` without assigning `hue` is deprecated and will be removed in v0.14.0. Assign the `x` variable to `hue` and set `legend=False` for the same effect.
“Inconsistent service” and “mixed experiences” dominate the neutral feedback for UberEats. Sentiment here indicates fluctuating user experiences without strong positive or negative lean.
UberEats - Interactive Top 5 Labels
Code
import plotly.graph_objects as go
from plotly.subplots import make_subplots
# Prepare unique combinations
= ['Google Play', 'Reddit', 'App Store']
data_sources = ['Positive', 'Neutral', 'Negative']
sentiments
# Store traces and buttons
= go.Figure()
fig = []
buttons = []
visibility
# Track trace index
= 0
trace_idx
for data_source in data_sources:
for sentiment in sentiments:
= ubereats[ubereats['data_source'] == data_source]
source_df = source_df[source_df['sentiment'] == sentiment]
source_sentiment_df = source_sentiment_df['top_label'].value_counts().head(5)
top5_labels
if not top5_labels.empty:
= go.Bar(
trace =top5_labels.index,
x=top5_labels.values,
y=f'{data_source} - {sentiment}',
name=False,
visible=px.colors.qualitative.Set2
marker_color
)
fig.add_trace(trace)
visibility.append((data_source, sentiment, trace_idx))+= 1
trace_idx
# Add dropdown buttons
for i, (ds, s, idx) in enumerate(visibility):
= [False] * len(visibility)
vis = True
vis[idx] = dict(
button =f'{ds} - {s}',
label='update',
method=[{'visible': vis},
args'title': f'UberEats - {ds} - {s} - Top 5 Labels'}]
{
)
buttons.append(button)
fig.update_layout(=[
updatemenusdict(
=buttons,
buttons='down',
direction=True,
showactive=0.5,
x='center',
xanchor=1.2,
y='top'
yanchor
)
],='UberEats - Interactive Top 5 Labels',
title='Top Label',
xaxis_title='Count'
yaxis_title
)
fig.show()
For UberEats - for each data_source (ignoring sentiment), top 5 labels
Code
import plotly.graph_objects as go
import plotly.express as px
# List of data sources
= ['Google Play', 'Reddit', 'App Store']
data_sources
# Initialize figure
= go.Figure()
fig = []
buttons = []
visibility
# Add one bar trace per data source (initially hidden)
for idx, data_source in enumerate(data_sources):
= ubereats[ubereats['data_source'] == data_source]
source_df = source_df['top_label'].value_counts().head(5)
top5_labels
= go.Bar(
trace =top5_labels.index,
x=top5_labels.values,
y=data_source,
name=(idx == 0), # Show only the first one initially
visible=px.colors.qualitative.Set2
marker_color
)
fig.add_trace(trace)
# Create dropdown buttons
for i, ds in enumerate(data_sources):
= [False] * len(data_sources)
vis = True
vis[i] dict(
buttons.append(=ds,
label='update',
method=[{'visible': vis},
args'title': f'UberEats - {ds} - Top 5 Labels (All Sentiments)'}]
{
))
# Final layout
fig.update_layout(=[dict(
updatemenus=buttons,
buttons='down',
direction=True,
showactive=0.5,
x='center',
xanchor=1.2,
y='top'
yanchor
)],=f'UberEats - {data_sources[0]} - Top 5 Labels (All Sentiments)',
title='Top Label',
xaxis_title='Count'
yaxis_title
)
fig.show()
For UberEats - overall (ignoring sentiment and datasource), top 5 labels
Code
= ubereats['top_label'].value_counts().head(5)
top5_labels
=(8,5))
plt.figure(figsize=top5_labels.index, y=top5_labels.values, palette='Set2')
sns.barplot(x'UberEats - Top 5 Labels Overall')
plt.title('Top Label')
plt.xlabel('Count')
plt.ylabel(=45)
plt.xticks(rotation
plt.tight_layout() plt.show()
C:\Users\chira\AppData\Local\Temp\ipykernel_11780\233713667.py:5: FutureWarning:
Passing `palette` without assigning `hue` is deprecated and will be removed in v0.14.0. Assign the `x` variable to `hue` and set `legend=False` for the same effect.
“Unresponsive customer service” is the most frequent concern, with “reliable service” following as a positive counterpoint. Mixed service perceptions dominate the narrative, showing a polarized customer experience.
DoorDash - Sentiment - Top 5 Labels
Code
import plotly.graph_objects as go
import plotly.express as px
# Filter DoorDash data
= combined_df[combined_df['app_name'] == 'DoorDash']
doordash = ['Positive', 'Neutral', 'Negative']
sentiments
# Create figure
= go.Figure()
fig = []
buttons
# Add one bar trace per sentiment
for idx, sentiment in enumerate(sentiments):
= doordash[doordash['sentiment'] == sentiment]
sentiment_df = sentiment_df['top_label'].value_counts().head(5)
top5
fig.add_trace(go.Bar(=top5.index,
x=top5.values,
y=sentiment,
name=(idx == 0), # Show first sentiment by default
visible=px.colors.qualitative.Set2
marker_color
))
# Create dropdown buttons
for i, sentiment in enumerate(sentiments):
= [False] * len(sentiments)
vis = True
vis[i] dict(
buttons.append(=sentiment,
label='update',
method=[{'visible': vis},
args'title': f'DoorDash - {sentiment} Sentiment - Top 5 Labels'}]
{
))
# Final layout
fig.update_layout(=[dict(
updatemenus=buttons,
buttons='down',
direction=True,
showactive=0.5,
x='center',
xanchor=1.2,
y='top'
yanchor
)],='DoorDash - Positive Sentiment - Top 5 Labels',
title='Top Label',
xaxis_title='Count'
yaxis_title
)
fig.show()
DoorDash - Data Sources - Top 5 Labels
DoorDash - Google Play - Top 5 Labels (All Sentiments)
DoorDash - Overall Top 5 Labels
C:\Users\chira\AppData\Local\Temp\ipykernel_11780\1556962487.py:4: FutureWarning:
Passing `palette` without assigning `hue` is deprecated and will be removed in v0.14.0. Assign the `x` variable to `hue` and set `legend=False` for the same effect.
Similar to UberEats, DoorDash users frequently report “unresponsive customer service” and value “reliable service.” A notable portion of feedback also reflects inconsistency and mixed experiences.
GrubHub - Sentiment - Top 5 Labels
GrubHub - Data Sources - Sentiment - Top 5 Labels
GrubHub - Data_Source - Top 5 Labels (All Sentiments)
GrubHub - Overall Top 5 Labels
C:\Users\chira\AppData\Local\Temp\ipykernel_11780\3418218262.py:4: FutureWarning:
Passing `palette` without assigning `hue` is deprecated and will be removed in v0.14.0. Assign the `x` variable to `hue` and set `legend=False` for the same effect.
GrubHub shares similar patterns with its competitors—customer service issues top the list. “Reliable service” and “mixed experiences” suggest a divided but slightly less vocal user base.
Google Play - Sentiment - Top 5 Labels
Google Play - Overall Top 5 Labels (All Sentiments)
C:\Users\chira\AppData\Local\Temp\ipykernel_11780\3286387572.py:4: FutureWarning:
Passing `palette` without assigning `hue` is deprecated and will be removed in v0.14.0. Assign the `x` variable to `hue` and set `legend=False` for the same effect.
On Google Play, feedback on customer service is most dominant, both negatively (“unresponsive”) and positively (“good”). Usability (“easy to use”) and pricing also influence customer sentiment significantly.
Reddit - Sentiment - Top 5 Labels
Reddit - Overall Top 5 Labels (All Sentiments)
C:\Users\chira\AppData\Local\Temp\ipykernel_11780\1014653831.py:4: FutureWarning:
Passing `palette` without assigning `hue` is deprecated and will be removed in v0.14.0. Assign the `x` variable to `hue` and set `legend=False` for the same effect.
Reddit discussions heavily critique customer service, followed by comments on inconsistent and mixed experiences. Issues like missing items and driver problems highlight operational gaps.
App Store - Sentiment - Top 5 Labels
App Store - Overall Top 5 Labels (All Sentiments)
C:\Users\chira\AppData\Local\Temp\ipykernel_11780\1882811874.py:4: FutureWarning:
Passing `palette` without assigning `hue` is deprecated and will be removed in v0.14.0. Assign the `x` variable to `hue` and set `legend=False` for the same effect.
“Unresponsive customer service” overwhelmingly dominates App Store feedback. Other concerns like long wait times and delivery issues appear far less frequently, indicating focused dissatisfaction.
Top Label Frequency Over Time (All Apps & Platforms)
C:\Users\chira\AppData\Local\Temp\ipykernel_11780\3157324320.py:2: FutureWarning:
'M' is deprecated and will be removed in a future version, please use 'ME' instead.
“Unresponsive customer service” overwhelmingly dominates App Store feedback. Other concerns like long wait times and delivery issues appear far less frequently, indicating focused dissatisfaction.