Profitable App Profiles for the App Store and Google Play Markets

This project consists finding which mobile app profiles are profitibale for the App Store and Google Play Markets.

The Apps are free to download, so the companies main source of revenue are in the app-ads. The more users who see and engage with the ad, the more revenue. To gain more users, our goal is to help our developers understand which type of apps are more attractive.

Opening and Exploring the Data

Without spending too much time and resources to find the data we will use an existing sample data. We were able to find 2 data sets that will help us achieve our goal.

  • The 1st dataset (Link) contains around 10,000 Android apps from Google Play that was collected in August 2018. Directly download the dataset here Link
  • The 2nd dataset (Link) contains around 7,000 apps from the App Store that was collected in July 2017. Directly download the dataset here Link

First we will open the 2 datasets and then explore them:

In [1]:
### Opening the 2 datasets ##
from csv import reader

## Google Play Dataset ##
opened_file = open('googleplaystore.csv')
read_file = reader(opened_file)
android = list(read_file)
android_header = android[0]
android = android[1:]

## App Store Dataset ##
opened_file = open('AppleStore.csv')
read_file = reader(opened_file)
ios = list(read_file)
ios_header = ios[0]
ios = ios[1:]

Now that the 2 datasets have been opened, we can now proceed exploring them.

First we will write a function called explore_data with an option to show the number of rows and columns per dataset:

In [2]:
## Google play dataset, Android ##

def explore_data (dataset, start, end, rows_and_columns=False): ## 4 parameters ##
    dataset_slice = dataset[start:end]    ## slices the dataset ##
    for row in dataset_slice:  ## loops through the slice ##   
        print(row)     ## each iteration prints a row ##
        print('\n')    ## adds a new empty line after ##   
        
    if rows_and_columns:
        print('Number of rows:', len(dataset))
        print('Number of columns', len(dataset[0]))

print(android_header)
print('\n')
explore_data(android, 0, 3, True)
    
['App', 'Category', 'Rating', 'Reviews', 'Size', 'Installs', 'Type', 'Price', 'Content Rating', 'Genres', 'Last Updated', 'Current Ver', 'Android Ver']


['Photo Editor & Candy Camera & Grid & ScrapBook', 'ART_AND_DESIGN', '4.1', '159', '19M', '10,000+', 'Free', '0', 'Everyone', 'Art & Design', 'January 7, 2018', '1.0.0', '4.0.3 and up']


['Coloring book moana', 'ART_AND_DESIGN', '3.9', '967', '14M', '500,000+', 'Free', '0', 'Everyone', 'Art & Design;Pretend Play', 'January 15, 2018', '2.0.0', '4.0.3 and up']


['U Launcher Lite – FREE Live Cool Themes, Hide Apps', 'ART_AND_DESIGN', '4.7', '87510', '8.7M', '5,000,000+', 'Free', '0', 'Everyone', 'Art & Design', 'August 1, 2018', '1.2.4', '4.0.3 and up']


Number of rows: 10841
Number of columns 13

After running the explore_data function for the Google Play dataset, we find out that there are 10,841 number of apps and 13 columns.

The columns that will help us the most with our analysis are: 'App', 'Category', 'Reviews', 'Installs', 'Type', 'Price', 'Content Rating' and 'Genres'.

Now to take a look at the dataset of Apple Store:

In [3]:
print(ios_header)
print('\n')
explore_data(ios, 0, 3, True)
['id', 'track_name', 'size_bytes', 'currency', 'price', 'rating_count_tot', 'rating_count_ver', 'user_rating', 'user_rating_ver', 'ver', 'cont_rating', 'prime_genre', 'sup_devices.num', 'ipadSc_urls.num', 'lang.num', 'vpp_lic']


['284882215', 'Facebook', '389879808', 'USD', '0.0', '2974676', '212', '3.5', '3.5', '95.0', '4+', 'Social Networking', '37', '1', '29', '1']


['389801252', 'Instagram', '113954816', 'USD', '0.0', '2161558', '1289', '4.5', '4.0', '10.23', '12+', 'Photo & Video', '37', '0', '29', '1']


['529479190', 'Clash of Clans', '116476928', 'USD', '0.0', '2130805', '579', '4.5', '4.5', '9.24.12', '9+', 'Games', '38', '5', '18', '1']


Number of rows: 7197
Number of columns 16

As you see above, we find out that the dataset of the Apple Store contains 7,197 number of apps and 16 columns.

The Columns that will help us with our analysis are: 'track_name', 'currency', 'price', 'rating_count_tot', 'rating_count_ver' and 'prime_genre'.

Details about the column names can be found here Link

Wrong Data Input and How to Delete It

There will be times where datasets will have data input errors and must be removed or modified to fit the purpose of our analysis. We will be finding an error within the Google Play dataset.

Through the use of this discussion section we can communicate with others to resolve problems we may have.

One discussion in particular, discussion, states that there is an error for a certain row. The error is in row 10472, below we will find this error and delete it.

In [4]:
### To find the error, we will find which row is not the same length as the header ###

print(android_header)  ### print the header to show the right length ###
print('\n')

for row in android:
    if len(row)!=len(android_header): ### loop through Google Play data set ###
        print(row) 
        print('\n')
        print(android.index(row))  ### print the location of the row ###
        

        
['App', 'Category', 'Rating', 'Reviews', 'Size', 'Installs', 'Type', 'Price', 'Content Rating', 'Genres', 'Last Updated', 'Current Ver', 'Android Ver']


['Life Made WI-Fi Touchscreen Photo Frame', '1.9', '19', '3.0M', '1,000+', 'Free', '0', 'Everyone', '', 'February 11, 2018', '1.0.19', '4.0 and up']


10472

Above, show's us that the row 10472 corresponds to the app 'Life Made WI-Fi Touchscreen Photo Frame'.

Directly after the app name, the 'Category' column is missing an input. You can tell by seeing 2 quotation marks surrounding a comma ','

With this being done, the 'Category' is matched with '1.9' and the 'Rating' is matched with '19'. This creates an error and needs to be deleted.

In [5]:
### deleting the error ###

print(len(android))
del android[10472] ### only run this once ###
print(len(android))
10841
10840

Removing Duplicate Entries

Part One:

As we explore futher into Google Play dataset, we come across another problem. There are duplicate entries of the same app. As an example, 'Facebook' has a total of 2 entries.

In [6]:
for app in android:
    name = app[0]
    if name == 'Facebook':
        print(app)
['Facebook', 'SOCIAL', '4.1', '78158306', 'Varies with device', '1,000,000,000+', 'Free', '0', 'Teen', 'Social', 'August 3, 2018', 'Varies with device', 'Varies with device']
['Facebook', 'SOCIAL', '4.1', '78128208', 'Varies with device', '1,000,000,000+', 'Free', '0', 'Teen', 'Social', 'August 3, 2018', 'Varies with device', 'Varies with device']

Next we will figure out how many duplicate entries there are in total within Google Play dataset:

In [7]:
### Start by creating 2 lists ###

duplicate_apps = []
unique_apps = []

for app in android: ### in operator because we are checking for membership within a list ###
    name = app[0]
    if name in unique_apps:
        duplicate_apps.append(name) ### name existed in unique_apps append it to duplicate_apps ###
    else:                          
        unique_apps.append(name) ### name non-existent in unique_apps append it to unique_apps ###
        
print('Number of duplicate apps:', len(duplicate_apps))
print('\n')
print('Examples of duplicate apps:' , duplicate_apps[:15])
Number of duplicate apps: 1181


Examples of duplicate apps: ['Quick PDF Scanner + OCR FREE', 'Box', 'Google My Business', 'ZOOM Cloud Meetings', 'join.me - Simple Meetings', 'Box', 'Zenefits', 'Google Ads', 'Google My Business', 'Slack', 'FreshBooks Classic', 'Insightly CRM', 'QuickBooks Accounting: Invoicing & Expenses', 'HipChat - Chat Built for Teams', 'Xero Accounting Software']

In total, there are 1,181 times when an app occurs more than once.

It's very important to keep one entry per app so we are not wasting time and resources while analyzing data.

If you take a look at the two rows we printed for 'Facebook', there is one difference between both of them. At the 3rd index of each list, 'Reviews', you can see they are not the same which shows that this data was collected at different times.

The Higher the number of reviews, the more reliable it is and the more recent the data is. With this being said, we will keep the row with the highest review count and remove the other entries.

Part Two:

First we will create a dictionary so that each key is a unique app name and the corresponding dictionary value is the highest number of reviews of that app.

In [8]:
reviews_max = {}

for app in android: 
    name = app[0]
    n_reviews = float(app[3])
    
    if name in reviews_max and reviews_max[name] < n_reviews:
        reviews_max[name] = n_reviews    
        
    elif name not in reviews_max:
        reviews_max[name] = n_reviews
 

Previously we found out that there are 1,181 times when an app occurs more than once.

With this information, we will take the difference between the length of our data set and 1,181 to see if it is equal to to the length of our dictionary (unique_apps).

In [9]:
print('Expected length:', len(android) - 1181)
print('Actual length:', len(reviews_max))
Expected length: 9659
Actual length: 9659

Now to use the reviews_max dictionary created in the above cell to remove all the duplicates.

1st, we will start by creating two empty lists:

  • android_clean (store our cleaned data set)
  • already_added (store app names)

2nd, we will loop through the Android dataset and for every iteration:

  • isolate app name and number of reviews
  • add current row (app) to android_clean list and the app name (name) to the already_added list if:
    • number of reviews of current app matches the number of reviews of that app as described in the reviews_max dictionary; and
    • name of the app is not in the already_added list. (In some cases, the highest number of reviews are the same for certain duplicated apps. For this reason we must add this condition.)
In [10]:
android_clean = []
already_added = []

for app in android:
    name = app[0]
    n_reviews = float(app[3])
    
    if (reviews_max[name] == n_reviews) and (name not in already_added):
        android_clean.append(app)
        already_added.append(name)
        

Lets explore the android_clean dataset to confirm that we have 9,659 rows

In [11]:
explore_data(android_clean, 0, 3, True)
['Photo Editor & Candy Camera & Grid & ScrapBook', 'ART_AND_DESIGN', '4.1', '159', '19M', '10,000+', 'Free', '0', 'Everyone', 'Art & Design', 'January 7, 2018', '1.0.0', '4.0.3 and up']


['U Launcher Lite – FREE Live Cool Themes, Hide Apps', 'ART_AND_DESIGN', '4.7', '87510', '8.7M', '5,000,000+', 'Free', '0', 'Everyone', 'Art & Design', 'August 1, 2018', '1.2.4', '4.0.3 and up']


['Sketch - Draw & Paint', 'ART_AND_DESIGN', '4.5', '215644', '25M', '50,000,000+', 'Free', '0', 'Teen', 'Art & Design', 'June 8, 2018', 'Varies with device', '4.2 and up']


Number of rows: 9659
Number of columns 13

We can now confirm that we have 9,659 rows as anticipated.

Time to Remove Non-English Apps

For this project, we are only intrested in the apps with the English language. Each letter in the English alphabet has a corresponding number associated with it using the ASCII standard.

The ASCII standard states all English characters correspond to the numbers between 0 and 127.

Lets build a function that checks an apps name and tells us if it contains non-ASCII characters.

Part One:

Using the built-in ord( ) function, we will find out the corresponding number of each character.

In [12]:
def english_lang(string):
    for character in string:
        if ord(character) > 127:
            return False        
        
    return True  

### Time to check our work with these app names ###

print(english_lang('Instagram'))
print(english_lang('爱奇艺PPS -《欢乐颂2》电视剧热播'))
True
False

The funciton is working properly.

Yet we come across another problem. Some app names consist of emojis or other symbols that are not within the ASCII range and will be removed because of this and we will lose useful data.

In [13]:
### useful apps being removed because of emojis, symbols, etc... ###

print(english_lang('Docs To Go™ Free Office Suite'))
print(english_lang('Instachat 😜'))
print('\n')

print(ord('™'))   ### symbol is > 127 so it thinks the app is not in English ###
print(ord('😜'))
False
False


8482
128540

Part Two:

It's very important to minimize the impact of data loss.

We will only remove an app if its name has more than 3 non ASCII characters.

In [14]:
def english_lang(string):
    non_ascii = 0 
    
    for character in string:
        if ord(character) > 127:
            non_ascii += 1
            
    if non_ascii > 3:
        return False
    else:
        return True
        
### time to check the above function ###

print(english_lang('Docs To Go™ Free Office Suite'))
print(english_lang('Instachat 😜'))
print(english_lang('爱奇艺PPS -《欢乐颂2》电视剧热播'))
True
True
False

Without spending to much time in optimization, our function is working the way we want it to with very few non-English apps passing through.

Now we will use the english_lang function we created to filter out the non-English apps for both Datasets.

In [15]:
android_english = []
ios_english = []

for app in android_clean:
    name = app[0]
    if english_lang(name):
        android_english.append(app)
        
for app in ios:
    name = app[1]
    if english_lang(name):
        ios_english.append(app)
        
explore_data(android_english, 0, 3, True)
print('\n')
explore_data(ios_english, 0, 3, True)
['Photo Editor & Candy Camera & Grid & ScrapBook', 'ART_AND_DESIGN', '4.1', '159', '19M', '10,000+', 'Free', '0', 'Everyone', 'Art & Design', 'January 7, 2018', '1.0.0', '4.0.3 and up']


['U Launcher Lite – FREE Live Cool Themes, Hide Apps', 'ART_AND_DESIGN', '4.7', '87510', '8.7M', '5,000,000+', 'Free', '0', 'Everyone', 'Art & Design', 'August 1, 2018', '1.2.4', '4.0.3 and up']


['Sketch - Draw & Paint', 'ART_AND_DESIGN', '4.5', '215644', '25M', '50,000,000+', 'Free', '0', 'Teen', 'Art & Design', 'June 8, 2018', 'Varies with device', '4.2 and up']


Number of rows: 9614
Number of columns 13


['284882215', 'Facebook', '389879808', 'USD', '0.0', '2974676', '212', '3.5', '3.5', '95.0', '4+', 'Social Networking', '37', '1', '29', '1']


['389801252', 'Instagram', '113954816', 'USD', '0.0', '2161558', '1289', '4.5', '4.0', '10.23', '12+', 'Photo & Video', '37', '0', '29', '1']


['529479190', 'Clash of Clans', '116476928', 'USD', '0.0', '2130805', '579', '4.5', '4.5', '9.24.12', '9+', 'Games', '38', '5', '18', '1']


Number of rows: 6183
Number of columns 16

We are left with, 9,614 Android apps and 6,183 IOS apps

Isolating the Free Apps

The last step of our data cleaning process is to isolate the free apps from the non-free apps.

In [16]:
android_final = []
ios_final = []

for app in android_english:
    price = app[7]
    if price == '0':
        android_final.append(app)
        
for app in ios_english:
    price = app[4]
    if price == '0.0':
        ios_final.append(app)
        
### checking the length of each dataset to see how many apps remain ###

print(len(android_final))
print(len(ios_final))    
8864
3222

After isolating the free apps from the non-free, we have 8,864 Android apps and 3,222 IOS apps leftover.

Time to begin our analysis!

Most Common Apps by Genre

Part one:

With the apps being free to download and use, our revenue source comes from in app-adds. Our goal is to find what kind of apps appeal and attract more users. The more users use an app, the more revenue it brings in.

Our validation strategy for an app to minimize risks and overhead consists of three steps:

  1. Build a Android version of the app, and add it to Google Play.
  2. If it has a positive response from users, develop it further.
  3. After 6 months and it is profitable, build an iOS version of the app and add it to the App Store

Our end goal is to add the app on both Google Play and the App Store. For this to happen we must find profiles that are successful in both markets.

We will begin our analysis by determining the most common genres for each market.

Start by building a frequency table for prime_genre column of the App Store data set and the Genres and Category columns of Google Play data set.

Part Two:

To analyze these frequency tables we will build two functions:

  1. One function to generate frequency tables that show percentages
  2. Another function to display the percentages in descending order
In [17]:
def freq_table(dataset, index):
    table = {}
    total = 0
    
    for row in dataset:
        total += 1
        value = row[index]
        if value in table:
            table[value] += 1
        else:
            table[value] = 1
            
    table_percentages = {}
    for key in table:
        percentage = (table[key] / total) * 100
        table_percentages[key] = percentage
        
    return table_percentages


def display_table(dataset, index):
    table = freq_table(dataset, index)
    table_display = []
    for key in table:
        key_value_as_tuple = (table[key], key)
        table_display.append(key_value_as_tuple)
        
    table_sorted = sorted(table_display, reverse = True)
    for entry in table_sorted:
        print(entry[1], ':', entry[0])
        

Part Three:

Lets anaylze the frequency table we generated for the prime_genre column of the App Store data set.

In [18]:
display_table(ios_final, 11)
Games : 58.16263190564867
Entertainment : 7.883302296710118
Photo & Video : 4.9658597144630665
Education : 3.662321539416512
Social Networking : 3.2898820608317814
Shopping : 2.60707635009311
Utilities : 2.5139664804469275
Sports : 2.1415270018621975
Music : 2.0484171322160147
Health & Fitness : 2.0173805090006205
Productivity : 1.7380509000620732
Lifestyle : 1.5828677839851024
News : 1.3345747982619491
Travel : 1.2414649286157666
Finance : 1.1173184357541899
Weather : 0.8690254500310366
Food & Drink : 0.8069522036002483
Reference : 0.5586592178770949
Business : 0.5276225946617008
Book : 0.4345127250155183
Navigation : 0.186219739292365
Medical : 0.186219739292365
Catalogs : 0.12414649286157665

Above, we can see that more than half (58.16%) of the apps are in the Games genre. Which makes this the most common genre of apps of the App Store.

This is followed by Entertainment (7.88%), then Photo & Video(4.96%), etc...

Most of the free apps designed are dominated by entertainment use suchs as Games, Photo & Video, Social Networking and Sports. Apps that are designed for practical purposes such as Education, Shopping and lifestyle are rare and less.

This can tell us that there is a large market for gaming based off the amount of apps in the App Store. Yet, this does not imply that they have the most amount of users. The demand might not equal the offer.

We will continue by analyzing the frequency table for Category and Genres column of the Google Play dataset

In [19]:
### Start with the Category column ###

display_table(android_final, 1)
FAMILY : 18.907942238267147
GAME : 9.724729241877256
TOOLS : 8.461191335740072
BUSINESS : 4.591606498194946
LIFESTYLE : 3.9034296028880866
PRODUCTIVITY : 3.892148014440433
FINANCE : 3.7003610108303246
MEDICAL : 3.531137184115524
SPORTS : 3.395758122743682
PERSONALIZATION : 3.3167870036101084
COMMUNICATION : 3.2378158844765346
HEALTH_AND_FITNESS : 3.0798736462093865
PHOTOGRAPHY : 2.944494584837545
NEWS_AND_MAGAZINES : 2.7978339350180503
SOCIAL : 2.6624548736462095
TRAVEL_AND_LOCAL : 2.33528880866426
SHOPPING : 2.2450361010830324
BOOKS_AND_REFERENCE : 2.1435018050541514
DATING : 1.861462093862816
VIDEO_PLAYERS : 1.7937725631768955
MAPS_AND_NAVIGATION : 1.3989169675090252
FOOD_AND_DRINK : 1.2409747292418771
EDUCATION : 1.1620036101083033
ENTERTAINMENT : 0.9589350180505415
LIBRARIES_AND_DEMO : 0.9363718411552346
AUTO_AND_VEHICLES : 0.9250902527075812
HOUSE_AND_HOME : 0.8235559566787004
WEATHER : 0.8009927797833934
EVENTS : 0.7107400722021661
PARENTING : 0.6543321299638989
ART_AND_DESIGN : 0.6430505415162455
COMICS : 0.6204873646209386
BEAUTY : 0.5979241877256317

The Google Play store has a more significant stand with apps that are designed for practical purposes(family, tools, Business, etc..).

The leading genre is family at 18.90%, followed by Game at 9.72% and so on.

As we investigate further, we find out that the family category contains a lot of games for kids. Here you can see the apps under the family category within Google Play store, Google Play store: Family.

In [20]:
### Genre Column ###

display_table(android_final, -4)
Tools : 8.449909747292418
Entertainment : 6.069494584837545
Education : 5.347472924187725
Business : 4.591606498194946
Productivity : 3.892148014440433
Lifestyle : 3.892148014440433
Finance : 3.7003610108303246
Medical : 3.531137184115524
Sports : 3.463447653429603
Personalization : 3.3167870036101084
Communication : 3.2378158844765346
Action : 3.1024368231046933
Health & Fitness : 3.0798736462093865
Photography : 2.944494584837545
News & Magazines : 2.7978339350180503
Social : 2.6624548736462095
Travel & Local : 2.3240072202166067
Shopping : 2.2450361010830324
Books & Reference : 2.1435018050541514
Simulation : 2.0419675090252705
Dating : 1.861462093862816
Arcade : 1.8501805054151623
Video Players & Editors : 1.7712093862815883
Casual : 1.7599277978339352
Maps & Navigation : 1.3989169675090252
Food & Drink : 1.2409747292418771
Puzzle : 1.128158844765343
Racing : 0.9927797833935018
Role Playing : 0.9363718411552346
Libraries & Demo : 0.9363718411552346
Auto & Vehicles : 0.9250902527075812
Strategy : 0.9138086642599278
House & Home : 0.8235559566787004
Weather : 0.8009927797833934
Events : 0.7107400722021661
Adventure : 0.6768953068592057
Comics : 0.6092057761732852
Beauty : 0.5979241877256317
Art & Design : 0.5979241877256317
Parenting : 0.4963898916967509
Card : 0.45126353790613716
Casino : 0.42870036101083037
Trivia : 0.41741877256317694
Educational;Education : 0.39485559566787
Board : 0.3835740072202166
Educational : 0.3722924187725632
Education;Education : 0.33844765342960287
Word : 0.2594765342960289
Casual;Pretend Play : 0.236913357400722
Music : 0.2030685920577617
Racing;Action & Adventure : 0.16922382671480143
Puzzle;Brain Games : 0.16922382671480143
Entertainment;Music & Video : 0.16922382671480143
Casual;Brain Games : 0.13537906137184114
Casual;Action & Adventure : 0.13537906137184114
Arcade;Action & Adventure : 0.12409747292418773
Action;Action & Adventure : 0.10153429602888085
Educational;Pretend Play : 0.09025270758122744
Simulation;Action & Adventure : 0.078971119133574
Parenting;Education : 0.078971119133574
Entertainment;Brain Games : 0.078971119133574
Board;Brain Games : 0.078971119133574
Parenting;Music & Video : 0.06768953068592057
Educational;Brain Games : 0.06768953068592057
Casual;Creativity : 0.06768953068592057
Art & Design;Creativity : 0.06768953068592057
Education;Pretend Play : 0.056407942238267145
Role Playing;Pretend Play : 0.04512635379061372
Education;Creativity : 0.04512635379061372
Role Playing;Action & Adventure : 0.033844765342960284
Puzzle;Action & Adventure : 0.033844765342960284
Entertainment;Creativity : 0.033844765342960284
Entertainment;Action & Adventure : 0.033844765342960284
Educational;Creativity : 0.033844765342960284
Educational;Action & Adventure : 0.033844765342960284
Education;Music & Video : 0.033844765342960284
Education;Brain Games : 0.033844765342960284
Education;Action & Adventure : 0.033844765342960284
Adventure;Action & Adventure : 0.033844765342960284
Video Players & Editors;Music & Video : 0.02256317689530686
Sports;Action & Adventure : 0.02256317689530686
Simulation;Pretend Play : 0.02256317689530686
Puzzle;Creativity : 0.02256317689530686
Music;Music & Video : 0.02256317689530686
Entertainment;Pretend Play : 0.02256317689530686
Casual;Education : 0.02256317689530686
Board;Action & Adventure : 0.02256317689530686
Video Players & Editors;Creativity : 0.01128158844765343
Trivia;Education : 0.01128158844765343
Travel & Local;Action & Adventure : 0.01128158844765343
Tools;Education : 0.01128158844765343
Strategy;Education : 0.01128158844765343
Strategy;Creativity : 0.01128158844765343
Strategy;Action & Adventure : 0.01128158844765343
Simulation;Education : 0.01128158844765343
Role Playing;Brain Games : 0.01128158844765343
Racing;Pretend Play : 0.01128158844765343
Puzzle;Education : 0.01128158844765343
Parenting;Brain Games : 0.01128158844765343
Music & Audio;Music & Video : 0.01128158844765343
Lifestyle;Pretend Play : 0.01128158844765343
Lifestyle;Education : 0.01128158844765343
Health & Fitness;Education : 0.01128158844765343
Health & Fitness;Action & Adventure : 0.01128158844765343
Entertainment;Education : 0.01128158844765343
Communication;Creativity : 0.01128158844765343
Comics;Creativity : 0.01128158844765343
Casual;Music & Video : 0.01128158844765343
Card;Action & Adventure : 0.01128158844765343
Books & Reference;Education : 0.01128158844765343
Art & Design;Pretend Play : 0.01128158844765343
Art & Design;Action & Adventure : 0.01128158844765343
Arcade;Pretend Play : 0.01128158844765343
Adventure;Education : 0.01128158844765343

The difference between the Category column and the Genre column is that the genre column has more categories. As we move forward and looking at the bigger picture, we will only be using the Category column.

Now lets summarize what we know. The App Store is domniated by apps for entertainment purposes and fun. While Google Play store is more diversed and balanced between entertainment apps and practical use apps.

The frequency tables we have generated only tells us which percentage of apps fall into what genre and category. Now its time to find out which apps are the most popular (most active users).

The Most Popular Apps by Genre on App Store

To find which apps are the most popular (most users), we will be calculating the average number of installs for each app genre.

We find this information within the Installs column for the Google Play data set. For the App Store data set we will do things a little different since there is no information given about this. As a proxy, we will take the total number of user ratings which can be found in the rating_count_tot app.

Lets start by calculating the average number of user ratings per app genre on App Store:

In [21]:
genres_ios = freq_table(ios_final, -5)

for genre in genres_ios:
    total = 0
    len_genre = 0
    for app in ios_final:
        genre_app = app[-5]
        if genre_app == genre:
            n_ratings = float(app[5])
            total += n_ratings
            len_genre += 1
    avg_n_ratings = total / len_genre
    print(genre, ':', avg_n_ratings)
Social Networking : 71548.34905660378
Photo & Video : 28441.54375
Games : 22788.6696905016
Music : 57326.530303030304
Reference : 74942.11111111111
Health & Fitness : 23298.015384615384
Weather : 52279.892857142855
Utilities : 18684.456790123455
Travel : 28243.8
Shopping : 26919.690476190477
News : 21248.023255813954
Navigation : 86090.33333333333
Lifestyle : 16485.764705882353
Entertainment : 14029.830708661417
Food & Drink : 33333.92307692308
Sports : 23008.898550724636
Book : 39758.5
Finance : 31467.944444444445
Education : 7003.983050847458
Productivity : 21028.410714285714
Business : 7491.117647058823
Catalogs : 4004.0
Medical : 612.0

Looking at the list above, we can see that the Navigation app has the highest number of user reviews. Its not a suprise to see this thanks to the influence of big players such as Waze and Google Maps.

Waze and Google Maps combined almost have up to half a million user reviews:

In [22]:
for app in ios_final:
    if app[-5] == 'Navigation':
        print(app[1], ':', app[5])
Waze - GPS Navigation, Maps & Real-time Traffic : 345046
Google Maps - Navigation & Transit : 154911
Geocaching® : 12811
CoPilot GPS – Car Navigation & Offline Maps : 3582
ImmobilienScout24: Real Estate Search in Germany : 187
Railway Route Search : 5

With these big players dominating this genre of the market, competition will be cutthroat.

Lets take a look at the Travel genre:

In [23]:
for app in ios_final:
    if app[-5] == 'Travel':
        print(app[1], ':', app[5])
Google Earth : 446185
Yelp - Nearby Restaurants, Shopping & Services : 223885
GasBuddy : 145549
TripAdvisor Hotels Flights Restaurants : 56194
Uber : 49466
Lyft : 46922
HotelTonight - Great Deals on Last Minute Hotels : 32341
Hotels & Vacation Rentals by Booking.com : 31261
Southwest Airlines : 30552
Airbnb : 22302
Expedia Hotels, Flights & Vacation Package Deals : 10278
Fly Delta : 8094
Hopper - Predict, Watch & Book Flights : 6944
United Airlines : 5748
Skiplagged — Actually Cheap Flights & Hotels : 1851
Viator Tours & Activities : 1839
iExit Interstate Exit Guide : 1798
Gogo Entertainment : 1482
Google Street View : 1450
Webcams – EarthCam : 912
HISTORY Here : 685
DB Navigator : 512
Mobike - Dockless Bike Share : 494
MiFlight™ – Airport security line wait times at checkpoints for domestic and international travelers : 493
BlaBlaCar - Trusted Carpooling : 397
Six Flags : 353
Google Trips – Travel planner : 329
Voyages-sncf.com : book train and bus tickets : 268
Trainline UK: Live Train Times, Tickets & Planner : 248
Urlaubspiraten : 188
铁路12306 : 177
Ryanair - Cheapest Fares : 175
飞猪 : 154
Fleet Air Travel Guide & Airport Directory : 105
FlixBus - bus travel in Europe : 92
Ab in den Urlaub – Pauschalreisen günstig buchen : 22
SNCF : 7
skyticket - Reserve Best Valued Air Tickets : 0
Fluege.de - Finde den billigsten Flug : 0
VoiceTra(Voice Translator) : 0

The Travel genre shows more potential for revenue because the bigger players are more diverse within thier dominance within the market.

There are several apps within this genre that can do multitude of services for the consumer such as purchasing a airline ticket, hotel and rental car on one platform (TripAdvisor Hotels Flights Restaurants). Or apps that are stricly selective on one purpose such as solely purchasing ailrine tickets ( United Airlines)

With this diversity, there are advantages where in another genre's such as Navigation really doesn't exist.

Now it's time to take a look at analyzing the Google Play market.

The Most Popular Apps by Genre on Google Play

Since having the data of the number of installs, it should be easier to attain the genre popularity. On the other hand, the numbers arent actually precise and mostly left open-ended (1,000,000+, 100,000+, 10,000+, etc..).

In [25]:
display_table(android_final, 5)
1,000,000+ : 15.726534296028879
100,000+ : 11.552346570397113
10,000,000+ : 10.548285198555957
10,000+ : 10.198555956678701
1,000+ : 8.393501805054152
100+ : 6.915613718411552
5,000,000+ : 6.825361010830325
500,000+ : 5.561823104693141
50,000+ : 4.7721119133574
5,000+ : 4.512635379061372
10+ : 3.5424187725631766
500+ : 3.2490974729241873
50,000,000+ : 2.3014440433213
100,000,000+ : 2.1322202166064983
50+ : 1.917870036101083
5+ : 0.78971119133574
1+ : 0.5076714801444043
500,000,000+ : 0.2707581227436823
1,000,000,000+ : 0.22563176895306858
0+ : 0.04512635379061372
0 : 0.01128158844765343

With this information we cant tell that an app with 10,000 installs really has 10,000, 20,000, or all the way up to 49,000 installs. Makes it not the most precise.

However, we only want to find out which app genres attract the most users. We don't need it to be perfect precision with respect to the numbers of users. We will leave the numbers as they are.

100,000+ app installs will mean 100,000 installs, 10,000+ app installs will mean 10,000 installs and so on.

We will start by computing the average number of installs for each genre (category) while converting each install number to float. If we do not convert to float (remove commas and plus characters) the conversion will raise an error.

In [26]:
categories_android = freq_table(android_final, 1)

for category in categories_android:
    total = 0
    len_category = 0
    for app in android_final:
        category_app = app[1]
        if category_app == category:            
            n_installs = app[5]
            n_installs = n_installs.replace(',', '')
            n_installs = n_installs.replace('+', '')
            total += float(n_installs)
            len_category += 1
    avg_n_installs = total / len_category
    print(category, ':', avg_n_installs)


    
ART_AND_DESIGN : 1986335.0877192982
AUTO_AND_VEHICLES : 647317.8170731707
BEAUTY : 513151.88679245283
BOOKS_AND_REFERENCE : 8767811.894736841
BUSINESS : 1712290.1474201474
COMICS : 817657.2727272727
COMMUNICATION : 38456119.167247385
DATING : 854028.8303030303
EDUCATION : 1833495.145631068
ENTERTAINMENT : 11640705.88235294
EVENTS : 253542.22222222222
FINANCE : 1387692.475609756
FOOD_AND_DRINK : 1924897.7363636363
HEALTH_AND_FITNESS : 4188821.9853479853
HOUSE_AND_HOME : 1331540.5616438356
LIBRARIES_AND_DEMO : 638503.734939759
LIFESTYLE : 1437816.2687861272
GAME : 15588015.603248259
FAMILY : 3695641.8198090694
MEDICAL : 120550.61980830671
SOCIAL : 23253652.127118643
SHOPPING : 7036877.311557789
PHOTOGRAPHY : 17840110.40229885
SPORTS : 3638640.1428571427
TRAVEL_AND_LOCAL : 13984077.710144928
TOOLS : 10801391.298666667
PERSONALIZATION : 5201482.6122448975
PRODUCTIVITY : 16787331.344927534
PARENTING : 542603.6206896552
WEATHER : 5074486.197183099
VIDEO_PLAYERS : 24727872.452830188
NEWS_AND_MAGAZINES : 9549178.467741935
MAPS_AND_NAVIGATION : 4056941.7741935486

The list above tells us that Communication apps has the most installs on average at 38,456,119. Followed by Video_Players at 24,727,872 and thirdly Social with 23,253,652 installs.

Each of these three categorys of apps are heavily influenced by big players.

  • Communication - WhatsApp, Facebook messenger, Skype, etc...
  • Video_Players - Youtube, Google Play Movies & tv, etc...
  • Social - Facebook, Instagram, etc...

This tells us that a small amount of apps contain the larger amount of installs

In [27]:
for app in android_final:
    if app[1] == 'COMMUNICATION' and (app[5] == '1,000,000,000+'
                                      or app[5] == '500,000,000+'
                                      or app[5] == '100,000,000+'):
        print(app[0], ':', app[5])
WhatsApp Messenger : 1,000,000,000+
imo beta free calls and text : 100,000,000+
Android Messages : 100,000,000+
Google Duo - High Quality Video Calls : 500,000,000+
Messenger – Text and Video Chat for Free : 1,000,000,000+
imo free video calls and chat : 500,000,000+
Skype - free IM & video calls : 1,000,000,000+
Who : 100,000,000+
GO SMS Pro - Messenger, Free Themes, Emoji : 100,000,000+
LINE: Free Calls & Messages : 500,000,000+
Google Chrome: Fast & Secure : 1,000,000,000+
Firefox Browser fast & private : 100,000,000+
UC Browser - Fast Download Private & Secure : 500,000,000+
Gmail : 1,000,000,000+
Hangouts : 1,000,000,000+
Messenger Lite: Free Calls & Messages : 100,000,000+
Kik : 100,000,000+
KakaoTalk: Free Calls & Text : 100,000,000+
Opera Mini - fast web browser : 100,000,000+
Opera Browser: Fast and Secure : 100,000,000+
Telegram : 100,000,000+
Truecaller: Caller ID, SMS spam blocking & Dialer : 100,000,000+
UC Browser Mini -Tiny Fast Private & Secure : 100,000,000+
Viber Messenger : 500,000,000+
WeChat : 100,000,000+
Yahoo Mail – Stay Organized : 100,000,000+
BBM - Free Calls & Messages : 100,000,000+

This shows that this app genre is somewhat dominated by few giants which can make competition cutthroat and a fight for earning revenue.

lets try to find an app genre with a decent amount of user installs and fewer amount of popular apps that skew the average: TRAVEL_AND_LOCAL

In [28]:
for app in android_final:
    if app[1] == 'TRAVEL_AND_LOCAL':
        print(app[0], ':', app[5])
trivago: Hotels & Travel : 50,000,000+
Hopper - Watch & Book Flights : 5,000,000+
TripIt: Travel Organizer : 1,000,000+
Trip by Skyscanner - City & Travel Guide : 500,000+
CityMaps2Go Plan Trips Travel Guide Offline Maps : 1,000,000+
KAYAK Flights, Hotels & Cars : 10,000,000+
World Travel Guide by Triposo : 500,000+
Booking.com Travel Deals : 100,000,000+
Hostelworld: Hostels & Cheap Hotels Travel App : 1,000,000+
Google Trips - Travel Planner : 5,000,000+
GPS Map Free : 5,000,000+
GasBuddy: Find Cheap Gas : 10,000,000+
Southwest Airlines : 5,000,000+
AT&T Navigator: Maps, Traffic : 10,000,000+
VZ Navigator : 50,000,000+
KakaoMap - Map / Navigation : 10,000,000+
AirAsia : 10,000,000+
Expedia Hotels, Flights & Car Rental Travel Deals : 10,000,000+
Goibibo - Flight Hotel Bus Car IRCTC Booking App : 10,000,000+
Allegiant : 1,000,000+
Amtrak : 1,000,000+
JAL (Domestic and international flights) : 1,000,000+
Flight & Hotel Booking App - ixigo : 5,000,000+
VZ Navigator for Tablets : 500,000+
TripAdvisor Hotels Flights Restaurants Attractions : 100,000,000+
HSL - Tickets, route planner and information : 100,000+
Wisepilot for XPERIA™ : 5,000,000+
VZ Navigator for Galaxy S4 : 5,000,000+
MAIN : 1,000,000+
Yoriza Pension - travel, lodging, pension, camping, caravan, pool villas accommodation discount : 1,000,000+
Foursquare Swarm: Check In : 10,000,000+
PagesJaunes - local search : 10,000,000+
Flightradar24 Flight Tracker : 10,000,000+
Yatra - Flights, Hotels, Bus, Trains & Cabs : 10,000,000+
SNCF : 5,000,000+
Fly Delta : 5,000,000+
Skyscanner : 10,000,000+
Despegar.com Hotels and Flights : 10,000,000+
Navigation Plus : 1,000,000+
2GIS: directory & navigator : 50,000,000+
Poynt : 5,000,000+
Gaode Map : 1,000,000+
Priceline Hotel Deals, Rental Cars & Flights : 5,000,000+
TravelPirates : 1,000,000+
Free Radar Detector : 1,000,000+
American Airlines : 5,000,000+
Where to travel - ticket. hotel. train ticket. car ticket. travel. tickets : 1,000,000+
United Airlines : 5,000,000+
NTES : 10,000,000+
Where is my Train : Indian Railway & PNR Status : 10,000,000+
MakeMyTrip-Flight Hotel Bus Cab IRCTC Rail Booking : 10,000,000+
Restaurant Finder : 1,000,000+
Zagat : 100,000+
Gormey: Find Best Restaurants : 1,000+
Find Dining Restaurant Finder : 100,000+
Urbanspoon Restaurant Reviews : 5,000,000+
Yelp: Food, Shopping, Services Nearby : 10,000,000+
Qatar Airways : 1,000,000+
Hipmunk Hotels & Flights : 1,000,000+
Skiplagged — Exclusive Flights & Hotels : 1,000,000+
CWT To Go : 100,000+
British Airways : 1,000,000+
Cheap Flights & Hotels momondo : 5,000,000+
CheapTickets – Hotels, Flights & Travel Deals : 1,000,000+
JetBlue : 1,000,000+
Flights : 1,000,000+
Cheapflights – Flight Search : 5,000,000+
KLM - Royal Dutch Airlines : 1,000,000+
Orbitz - Hotels, Flights & Package Deals : 1,000,000+
Lufthansa : 1,000,000+
easyJet: Travel App : 10,000,000+
IndiGo : 5,000,000+
LateRooms: Find Hotel Deals : 1,000,000+
Choice Hotels : 1,000,000+
Couchsurfing Travel App : 1,000,000+
Hotwire Hotel & Car Rental App : 1,000,000+
HOTEL DEALS : 100,000+
HomeAway Vacation Rentals : 5,000,000+
IHG®: Hotel Deals & Rewards : 1,000,000+
SPG: Starwood Hotels & Resorts : 1,000,000+
Hotels.com: Book Hotel Rooms & Find Vacation Deals : 10,000,000+
HotelTonight: Book amazing deals at great hotels : 5,000,000+
Airbnb : 10,000,000+
Hotels Combined - Cheap deals : 5,000,000+
Agoda – Hotel Booking Deals : 10,000,000+
Turo - Better Than Car Rental : 1,000,000+
Ascape VR: 360° Virtual Travel : 100,000+
Cheap hotel deals and discounts — Hotellook : 1,000,000+
Maps - Navigate & Explore : 1,000,000,000+
GPS Status & Toolbox : 10,000,000+
Airport + Flight Tracker Radar : 1,000,000+
Scout GPS Navigation & Meet Up : 5,000,000+
Street Panorama View : 1,000,000+
Geo Tracker - GPS tracker : 1,000,000+
DreamTrips : 500,000+
Navmii GPS USA (Navfree) : 500,000+
Sygic Truck GPS Navigation : 1,000,000+
Google Street View : 1,000,000,000+
Air Transat CinePlus B : 50,000+
U-Haul : 100,000+
Octo U: Your driving companion : 50,000+
Flexiroam X : 100,000+
Connect.ae - Local Search UAE : 10,000+
Toppen af Danmark : 5,000+
Alabama Road Trips : 10,000+
Official AL Fishing & Hunting : 50,000+
Where Am I At? : 10,000+
Where Am I? GPS Loc : 10,000+
Live Camera Viewer ★ World Webcam & IP Cam Streams : 10,000,000+
Portal AR - Step Into Scotland : 5,000+
Casino AZ/Talking Stick Resort : 10,000+
Explore Sedona & Northern AZ : 10,000+
Arizona Trail : 5,000+
Phoenix and Arizona Cameras : 10,000+
Experience BA : 100+
BA Status : 100+
Avios for Android : 100,000+
Explore British Columbia - BC Travel Guide : 500+
BC Highways - Road Conditions : 10,000+
Victoria, BC | Tour City : 1,000+
British Columbia Tourist Places (Guide) : 100+
BG Metro - Red voznje : 1,000+
BG Guide : 100+
trip.bg : 1,000+
Belo Horizonte Map offline : 1,000+
BH Mission Playbook : 100+
BH Rocking : 100+
Digital Tourist BH Itinerary : 500+
BL info : 5,000+
BPme - Mobile Fuel Payment & BP Driver Rewards app : 10,000+
Wherever BQ : 50+
BU Dental GoGoldman : 100+
BU Questrom Launch : 100+
BU School of Public Health : 10+
BV Aventure : 100+
BV Rando : 100+
Best Western To Go : 100,000+
BW Map mobile : 10,000+
Best Western e-Concierge Hotel : 10,000+
24/7 BZ Reis : 100,000+
BZ Vesper-App : 1,000+
Restaurantführer Südbaden : 1,000+
BZ Straußenführer : 10,000+
California Cameras - Traffic : 10,000+
Kiosque CD : 5+
US 115th CD : 5+
CE AH VLJ : 1,000+
search.ch : 500,000+
CJ's Coffee Cafe : 500+
Camping and Co - Camping in Europe : 1,000+
CQ Hotels : 10,000+
SHUTTLLS CQ - Connect Ride Go : 5+
Cathay Pacific : 1,000,000+
Map of Cyprus offline : 10,000+
DB BAHN : 500+
DB FahrtProfi : 1,000+
DC Metro Transit - Free : 500,000+
DC Trails-Hop On Hop Off Tours : 5,000+
Can I pack that? - DG App : 10,000+
DG Cars : 10,000+
DK Eyewitness Audio Walks : 1,000+
DM Transfers Dalaman Transfers : 10,000+
US DV Lottery 2020 Apply : 10,000+
US DV Lottery 2019 : 1,000+
DW Maps : 10,000+
junainfo.dy.fi : 100+
Siyaha Dz : 10,000+
IRIS : Customer Service - DZ Algeria : 1,000+
DZ Fly Algérie Horaire Vols : 10,000+
EA Plus : 1,000+
EB Events : 10,000+
Audiowalk EB : 10+
EF Go Ahead Tour Companion : 1,000+
EF Summits : 100+
EG SIM CARD (EGSIMCARD) : 10,000+
The Emirates App : 1,000,000+
Ek-yatri: Travel where you Belong : 1+
EL AL Flights : 100,000+
DreamStream By EL AL : 100,000+
El Dorado App : 10,000+
EO Hotels : 100+
Fill 'er Up : 5,000+
MAPS.ME – Offline Map and Travel Navigation : 50,000,000+
Google Earth : 100,000,000+
Offline Maps & Navigation : 5,000,000+
myLPG.eu : 50,000+
Passenger rights : 50,000+
taxi.eu : 100,000+
To-U - free EV public charging : 1,000+
Bird - Enjoy The Ride : 500,000+
eCooltra: scooter sharing. Share electric scooters : 100,000+
XE Currency : 10,000,000+
Etihad Airways : 500,000+
EZ TAG Express : 10,000+
Santa Fe Map and Walks : 1,000+
Santa Fe VIP Tours : 100+
Toyota Cruisers & Trucks Mag : 500+
FL State Parks Guide : 100,000+
Florida Travel Guide : 1,000+
The Florida Trail Guide : 5,000+
Florida Keys : 10,000+
Florida Travel Guide - TOURIAS : 10,000+
Florida map : 5,000+
Florida Beach Wallpapers HD : 100+
ORLANDO FLORIDA MAP : 1,000+
Florida Offline Road Map : 10,000+
Florida Map offline : 1,000+

There are a variety of apps in the Travel_AND_LOCAL genre, yet fewer big number of popular apps that skew the average:

In [29]:
for app in android_final:
    if app[1] == 'TRAVEL_AND_LOCAL' and (app[5] == '1,000,000,000+'
                                            or app[5] == '500,000,000+'
                                            or app[5] == '100,000,000+'):
        print(app[0], ':', app[5])
Booking.com Travel Deals : 100,000,000+
TripAdvisor Hotels Flights Restaurants Attractions : 100,000,000+
Maps - Navigate & Explore : 1,000,000,000+
Google Street View : 1,000,000,000+
Google Earth : 100,000,000+

With very few popular apps this market shows a promising potential.

Lets get some app ideas based on the apps that are somewhat in the middle in terms of popularity (between 1,000,000 and 50,000,000 downloads):

In [30]:
for app in android_final:
    if app[1] == 'TRAVEL_AND_LOCAL' and (app[5] == '1,000,000+'
                                            or app[5] == '5,000,000+'
                                            or app[5] == '10,000,000+'
                                            or app[5] == '50,000,000+'):
        print(app[0], ':', app[5])
trivago: Hotels & Travel : 50,000,000+
Hopper - Watch & Book Flights : 5,000,000+
TripIt: Travel Organizer : 1,000,000+
CityMaps2Go Plan Trips Travel Guide Offline Maps : 1,000,000+
KAYAK Flights, Hotels & Cars : 10,000,000+
Hostelworld: Hostels & Cheap Hotels Travel App : 1,000,000+
Google Trips - Travel Planner : 5,000,000+
GPS Map Free : 5,000,000+
GasBuddy: Find Cheap Gas : 10,000,000+
Southwest Airlines : 5,000,000+
AT&T Navigator: Maps, Traffic : 10,000,000+
VZ Navigator : 50,000,000+
KakaoMap - Map / Navigation : 10,000,000+
AirAsia : 10,000,000+
Expedia Hotels, Flights & Car Rental Travel Deals : 10,000,000+
Goibibo - Flight Hotel Bus Car IRCTC Booking App : 10,000,000+
Allegiant : 1,000,000+
Amtrak : 1,000,000+
JAL (Domestic and international flights) : 1,000,000+
Flight & Hotel Booking App - ixigo : 5,000,000+
Wisepilot for XPERIA™ : 5,000,000+
VZ Navigator for Galaxy S4 : 5,000,000+
MAIN : 1,000,000+
Yoriza Pension - travel, lodging, pension, camping, caravan, pool villas accommodation discount : 1,000,000+
Foursquare Swarm: Check In : 10,000,000+
PagesJaunes - local search : 10,000,000+
Flightradar24 Flight Tracker : 10,000,000+
Yatra - Flights, Hotels, Bus, Trains & Cabs : 10,000,000+
SNCF : 5,000,000+
Fly Delta : 5,000,000+
Skyscanner : 10,000,000+
Despegar.com Hotels and Flights : 10,000,000+
Navigation Plus : 1,000,000+
2GIS: directory & navigator : 50,000,000+
Poynt : 5,000,000+
Gaode Map : 1,000,000+
Priceline Hotel Deals, Rental Cars & Flights : 5,000,000+
TravelPirates : 1,000,000+
Free Radar Detector : 1,000,000+
American Airlines : 5,000,000+
Where to travel - ticket. hotel. train ticket. car ticket. travel. tickets : 1,000,000+
United Airlines : 5,000,000+
NTES : 10,000,000+
Where is my Train : Indian Railway & PNR Status : 10,000,000+
MakeMyTrip-Flight Hotel Bus Cab IRCTC Rail Booking : 10,000,000+
Restaurant Finder : 1,000,000+
Urbanspoon Restaurant Reviews : 5,000,000+
Yelp: Food, Shopping, Services Nearby : 10,000,000+
Qatar Airways : 1,000,000+
Hipmunk Hotels & Flights : 1,000,000+
Skiplagged — Exclusive Flights & Hotels : 1,000,000+
British Airways : 1,000,000+
Cheap Flights & Hotels momondo : 5,000,000+
CheapTickets – Hotels, Flights & Travel Deals : 1,000,000+
JetBlue : 1,000,000+
Flights : 1,000,000+
Cheapflights – Flight Search : 5,000,000+
KLM - Royal Dutch Airlines : 1,000,000+
Orbitz - Hotels, Flights & Package Deals : 1,000,000+
Lufthansa : 1,000,000+
easyJet: Travel App : 10,000,000+
IndiGo : 5,000,000+
LateRooms: Find Hotel Deals : 1,000,000+
Choice Hotels : 1,000,000+
Couchsurfing Travel App : 1,000,000+
Hotwire Hotel & Car Rental App : 1,000,000+
HomeAway Vacation Rentals : 5,000,000+
IHG®: Hotel Deals & Rewards : 1,000,000+
SPG: Starwood Hotels & Resorts : 1,000,000+
Hotels.com: Book Hotel Rooms & Find Vacation Deals : 10,000,000+
HotelTonight: Book amazing deals at great hotels : 5,000,000+
Airbnb : 10,000,000+
Hotels Combined - Cheap deals : 5,000,000+
Agoda – Hotel Booking Deals : 10,000,000+
Turo - Better Than Car Rental : 1,000,000+
Cheap hotel deals and discounts — Hotellook : 1,000,000+
GPS Status & Toolbox : 10,000,000+
Airport + Flight Tracker Radar : 1,000,000+
Scout GPS Navigation & Meet Up : 5,000,000+
Street Panorama View : 1,000,000+
Geo Tracker - GPS tracker : 1,000,000+
Sygic Truck GPS Navigation : 1,000,000+
Live Camera Viewer ★ World Webcam & IP Cam Streams : 10,000,000+
Cathay Pacific : 1,000,000+
The Emirates App : 1,000,000+
MAPS.ME – Offline Map and Travel Navigation : 50,000,000+
Offline Maps & Navigation : 5,000,000+
XE Currency : 10,000,000+

Above we have the amount of downloads between 1 million to 50 million for the apps in TRAVEL_AND_LOCAL genre. Lets start breaking it down into intervals to see if we can find a pattern:

  • 1,000,000 - 5,000,000
  • 5,000,000 - 10,000,000
  • 10,000,000 - 50,000,000
In [31]:
for app in android_final:
    if app[1] == 'TRAVEL_AND_LOCAL' and (app[5] == '1,000,000+'):
                                            
                                            
          print(app[0], ':', app[5])
print('\n')

for app in android_final:
    if app[1] == 'TRAVEL_AND_LOCAL' and (app[5] == '5,000,000+'):
        
        print(app[0], ':', app[5])
print('\n')

for app in android_final:
    if app[1] == 'TRAVEL_AND_LOCAL' and (app[5] == '10,000,000+'):
        
        print(app[0], ':', app[5])
print('\n')

for app in android_final:
    if app[1] == 'TRAVEL_AND_LOCAL' and (app[5] == '50,000,000+'):
        
        print(app[0], ':', app[5])
        
TripIt: Travel Organizer : 1,000,000+
CityMaps2Go Plan Trips Travel Guide Offline Maps : 1,000,000+
Hostelworld: Hostels & Cheap Hotels Travel App : 1,000,000+
Allegiant : 1,000,000+
Amtrak : 1,000,000+
JAL (Domestic and international flights) : 1,000,000+
MAIN : 1,000,000+
Yoriza Pension - travel, lodging, pension, camping, caravan, pool villas accommodation discount : 1,000,000+
Navigation Plus : 1,000,000+
Gaode Map : 1,000,000+
TravelPirates : 1,000,000+
Free Radar Detector : 1,000,000+
Where to travel - ticket. hotel. train ticket. car ticket. travel. tickets : 1,000,000+
Restaurant Finder : 1,000,000+
Qatar Airways : 1,000,000+
Hipmunk Hotels & Flights : 1,000,000+
Skiplagged — Exclusive Flights & Hotels : 1,000,000+
British Airways : 1,000,000+
CheapTickets – Hotels, Flights & Travel Deals : 1,000,000+
JetBlue : 1,000,000+
Flights : 1,000,000+
KLM - Royal Dutch Airlines : 1,000,000+
Orbitz - Hotels, Flights & Package Deals : 1,000,000+
Lufthansa : 1,000,000+
LateRooms: Find Hotel Deals : 1,000,000+
Choice Hotels : 1,000,000+
Couchsurfing Travel App : 1,000,000+
Hotwire Hotel & Car Rental App : 1,000,000+
IHG®: Hotel Deals & Rewards : 1,000,000+
SPG: Starwood Hotels & Resorts : 1,000,000+
Turo - Better Than Car Rental : 1,000,000+
Cheap hotel deals and discounts — Hotellook : 1,000,000+
Airport + Flight Tracker Radar : 1,000,000+
Street Panorama View : 1,000,000+
Geo Tracker - GPS tracker : 1,000,000+
Sygic Truck GPS Navigation : 1,000,000+
Cathay Pacific : 1,000,000+
The Emirates App : 1,000,000+


Hopper - Watch & Book Flights : 5,000,000+
Google Trips - Travel Planner : 5,000,000+
GPS Map Free : 5,000,000+
Southwest Airlines : 5,000,000+
Flight & Hotel Booking App - ixigo : 5,000,000+
Wisepilot for XPERIA™ : 5,000,000+
VZ Navigator for Galaxy S4 : 5,000,000+
SNCF : 5,000,000+
Fly Delta : 5,000,000+
Poynt : 5,000,000+
Priceline Hotel Deals, Rental Cars & Flights : 5,000,000+
American Airlines : 5,000,000+
United Airlines : 5,000,000+
Urbanspoon Restaurant Reviews : 5,000,000+
Cheap Flights & Hotels momondo : 5,000,000+
Cheapflights – Flight Search : 5,000,000+
IndiGo : 5,000,000+
HomeAway Vacation Rentals : 5,000,000+
HotelTonight: Book amazing deals at great hotels : 5,000,000+
Hotels Combined - Cheap deals : 5,000,000+
Scout GPS Navigation & Meet Up : 5,000,000+
Offline Maps & Navigation : 5,000,000+


KAYAK Flights, Hotels & Cars : 10,000,000+
GasBuddy: Find Cheap Gas : 10,000,000+
AT&T Navigator: Maps, Traffic : 10,000,000+
KakaoMap - Map / Navigation : 10,000,000+
AirAsia : 10,000,000+
Expedia Hotels, Flights & Car Rental Travel Deals : 10,000,000+
Goibibo - Flight Hotel Bus Car IRCTC Booking App : 10,000,000+
Foursquare Swarm: Check In : 10,000,000+
PagesJaunes - local search : 10,000,000+
Flightradar24 Flight Tracker : 10,000,000+
Yatra - Flights, Hotels, Bus, Trains & Cabs : 10,000,000+
Skyscanner : 10,000,000+
Despegar.com Hotels and Flights : 10,000,000+
NTES : 10,000,000+
Where is my Train : Indian Railway & PNR Status : 10,000,000+
MakeMyTrip-Flight Hotel Bus Cab IRCTC Rail Booking : 10,000,000+
Yelp: Food, Shopping, Services Nearby : 10,000,000+
easyJet: Travel App : 10,000,000+
Hotels.com: Book Hotel Rooms & Find Vacation Deals : 10,000,000+
Airbnb : 10,000,000+
Agoda – Hotel Booking Deals : 10,000,000+
GPS Status & Toolbox : 10,000,000+
Live Camera Viewer ★ World Webcam & IP Cam Streams : 10,000,000+
XE Currency : 10,000,000+


trivago: Hotels & Travel : 50,000,000+
VZ Navigator : 50,000,000+
2GIS: directory & navigator : 50,000,000+
MAPS.ME – Offline Map and Travel Navigation : 50,000,000+

We will categorize the apps into thier own category of the service it provides (1,000,000 - 50,000,000)

(1,000,000) Category : Amount

  • Airline: 11
  • Travel Organizer (flights, hotels, cars): 10
  • lodging: 7
  • Navigation: 5
  • Railroad: 1
  • Resturaunt: 1
  • Car rental: 1

So the genre of apps that were most popular with the least amount of installs are where a consumer can purchase an airline ticket (Qatar Airways, British Airways, etc.. ). Closely behind this are the apps that are a one stop shop where a consumer can purchase tickets, hotels and rental cars on the same app (TripIt: Travel Organizer, CityMaps2Go Plan Trips Travel Guide Offline Maps, etc..)

(5,000,000) Category : Amount

  • Airline: 8
  • Travel Organizer (Flights, hotels, cars): 4
  • Navigation: 4
  • Lodging: 3
  • Railroad: 1
  • Resturaunt: 1
  • Car rental: 0

As the amount of installs increase there are really no major changes excpet 0 for apps strictly to rent a car and Navigation apps overtakes the lodging apps.

(10,000,000) Category : Amount

  • Travel Organizer (Flights, hotels, cars): 6
  • Airline: 4
  • Navigation: 4
  • Lodging: 4
  • Railroad: 2
  • Resturaunt: 1
  • Gas: 1
  • Car rental: 0

Starting to see a patern where Travel Organizer apps, Airline apps, and Navigation apps are the most popular in terms of installs.

(50,000,000) Category : Amount

  • Navigation: 3
  • Travel Organizer (Flights, hotels, cars): 1
  • Airline: 0
  • Lodging: 0
  • Railroad: 0
  • Resturaunt: 0
  • Gas: 0
  • Car rental: 0

There is a strong competition for apps between Airline apps,Travel Organizer apps and Navigation apps. There is significantly less competition between Railroad apps, Resturaunt apps and Car rental apps.

Conclusion

In this project, we analyzed data about the App Store and Google Play mobile apps with the goal of recommending an app profile that can be profitable for both markets.

The Travel genre in both markets have a decent amount of installs and active users. This alone has a potential for it be a profitable venture with our in-add apps revenue system.

We took it a step further and analyzed within the Travel genre, there are apps that offer many different services on one app or one select service per app. This makes it very diverse for the consumer to make a decsion on which app to use for thier travels.

This is where we can profit. With such diversity we have a larger audience. We can experiment with the two ways, one app that is a one stop shop for the consumer and apps that are strictly selective for one purpose. Can even take a step futher and let one app promote the other app if it's a better deal for the consumer, win win.