Based on data collected in 2015 for a period of one week (8 days), 63% of tweets about airline companies had a negative sentiment. 16% had a positive sentiment and the remaining 21% were neutral (source: https://www.kaggle.com/crowdflower/twitter-airline-sentiment)
The original source describes the data:
A sentiment analysis job about the problems of each major U.S. airline. Twitter data was scraped from February of 2015 and contributors were asked to first classify positive, negative, and neutral tweets, followed by categorizing negative reasons (such as "late flight" or "rude service").
Out of the total 14,640 collected tweets, 9,178 were complaints about the airline company and contained 32% more characters. This makes sense, because when people are upset, they typically want to speak more.
But why would there be such a drastic difference in the amount of negative tweets over neutral or positive? According to www.groovehq.com, people who are displeased with customer service tell about their unhappy experience with 16 other people on average. Compare this to people who have a good experience only tell 9 friends. That's 1.78 times more people. Let's compare that with negative tweets to positive and neutral:
9178 n. tweets / (3099 n. tweets + 2363 p. tweets) = 1.68
1.68 times more! That's pretty close to the 1.78 ratio above. In other words, people are 1.68 times more likely to speak out about a bad experience.
I have another theory... look at the date range. It's from 2/16 to 2/24. That's right after Valentines day. Hmm... maybe there were just a lot of failed attempts at asking people out that particular year *chuckles lightly*. Though, this may not be the case as there are only 5 tweets including "Valentines" in the text, and just 3 of them are negative.
I'll now go over some of the techniques I used to create the dashboard with Power BI.
This is the main one I'd like to point out. There are specially designed heatmaps available on the marketplace, but I find using a matrix works just as well, if not better in some cases. The heatmap I used, is in fact just a matrix with some conditional formatting applied.
In order to get the colors to show and the values not to show (like a typical heatmap), you need to go into the formatting section of the matrix, and turn on both the Background Color and Font Color:
Be sure to set the background and font colors the same color so the fonts effectively blend in with the background. You can change the colors by clicking on the Advanced Controls button.
Time (H:00 AM)
In order to get the time value on the columns of the heatmap in the [H:00 AM] format, I needed to create a special DAX formula.
Tweet Hour =
var timeofday = HOUR(Airline_Tweets[tweet_created])
if( timeofday <12, timeofday & ":00 AM", timeofday-12 & ":00 PM")
The "Airline_Tweets[tweet_created]" column is simply a datetime column. I'm extracting the hour value from that column and using it in a logical if...then... statement to return a concatenated string.
What did you think? Let me know in the comments and please share with friends and colleagues!
Are you looking to improve your data visualization skills? Check out Storytelling with Data by Cole Knaflic!