Profitable App Profiles for the App Store and Google Play Markets¶

Author: Ajinkya Shinde

  • What the project is about?

For this project, we'll pretend we're working as data analysts for a company that builds Android and iOS mobile apps. We make our apps available on Google Play and the App Store. We only build apps that are free to download and install, and our main source of revenue consists of in-app ads. This means our revenue for any given app is mostly influenced by the number of users who use our app — the more users that see and engage with the adds, the better.

  • What your goal is in this project?

Our goal for this project is to analyze data to help our developers understand what kinds of apps are likely to attract more users.

In [1]:
def explore_data(dataset, start, end, rows_and_columns=False):
    dataset_slice = dataset[start:end]    
    for row in dataset_slice:
        print(row)
        print('\n') # adds a new (empty) line after each row

    if rows_and_columns:
        print('Number of rows:', len(dataset))
        print('Number of columns:', len(dataset[0]))
        
        
        
from csv import reader        
apple_apps = list(reader(open('AppleStore.csv')))
google_apps = list(reader(open('googleplaystore.csv')))

apple_header = apple_apps[0]
apple_apps = apple_apps[1:]

google_header = google_apps[0]
google_apps = google_apps[1:]

print('Glimpse at Apple Dataset: First 5 rows & descriptive stats')
print('\n')
explore_data(apple_apps,1, 6,True)
print('\n')
print('Glimpse at Google Dataset: First 5 rows & descriptive stats')
print('\n')
explore_data(google_apps,1, 6,True)

print('Col names from the AppleStore Dataset')
print(apple_header)
print('\n')
print('Col names from the GooglePlayStore Dataset')
print(google_header)
Glimpse at Apple Dataset: First 5 rows & descriptive stats


['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']


['420009108', 'Temple Run', '65921024', 'USD', '0.0', '1724546', '3842', '4.5', '4.0', '1.6.2', '9+', 'Games', '40', '5', '1', '1']


['284035177', 'Pandora - Music & Radio', '130242560', 'USD', '0.0', '1126879', '3594', '4.0', '4.5', '8.4.1', '12+', 'Music', '37', '4', '1', '1']


['429047995', 'Pinterest', '74778624', 'USD', '0.0', '1061624', '1814', '4.5', '4.0', '6.26', '12+', 'Social Networking', '37', '5', '27', '1']


Number of rows: 7197
Number of columns: 16


Glimpse at Google Dataset: First 5 rows & descriptive stats


['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']


['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']


['Pixel Draw - Number Art Coloring Book', 'ART_AND_DESIGN', '4.3', '967', '2.8M', '100,000+', 'Free', '0', 'Everyone', 'Art & Design;Creativity', 'June 20, 2018', '1.1', '4.4 and up']


['Paper flowers instructions', 'ART_AND_DESIGN', '4.4', '167', '5.6M', '50,000+', 'Free', '0', 'Everyone', 'Art & Design', 'March 26, 2017', '1.0', '2.3 and up']


Number of rows: 10841
Number of columns: 13
Col names from the AppleStore Dataset
['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']


Col names from the GooglePlayStore Dataset
['App', 'Category', 'Rating', 'Reviews', 'Size', 'Installs', 'Type', 'Price', 'Content Rating', 'Genres', 'Last Updated', 'Current Ver', 'Android Ver']

Making data accurate for analysis¶

Before we start analyzing the data, we need to:

  • Detect inaccurate data, and correct or remove it.
  • Detect duplicate data, and remove duplicates.

Possible wrong mistakes in the data¶

Now, lets see if there are any mistakes in the both datasets. As per the [discussion] for Google App Store Dataset (https://www.kaggle.com/lava18/google-play-store-apps/discussion/82616) and looking at point 2, let's see if this is exactly true

Since, it says that there is problem at index 10472, we have to check at index 10472 in the google_apps dataset.

In [2]:
print(google_header) #printed the header just to see if everything matches up
print(google_apps[10472])
['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']

Now as seen from above, the problem here with the row is that the Category field contains values from cell to the right and all the values for cols after that are shifted one position to the right Lets delete the row

In [3]:
print(len(google_apps)) # Check length of dataset before removing entry
del google_apps[10472]
print(google_apps[10472]) #cross-check to see if this is actually true
print(len(google_apps)) # Check after the entry has been removed
10841
['osmino Wi-Fi: free WiFi', 'TOOLS', '4.2', '134203', '4.1M', '10,000,000+', 'Free', '0', 'Everyone', 'Tools', 'August 7, 2018', '6.06.14', '4.4 and up']
10840
In [4]:
print(apple_apps[apple_apps[:1] == 'Mannequin Challenge'])
['284882215', 'Facebook', '389879808', 'USD', '0.0', '2974676', '212', '3.5', '3.5', '95.0', '4+', 'Social Networking', '37', '1', '29', '1']

Removing Duplicate Entries¶

Let's explore for duplicacy in the dataset. From the Google Play Store Apps discussion , we can see that there exists duplicate entries for apps. Let's create a dictionary duplicate_app_count to track the number of duplicate entries for a given app. The values in the dictionary will give the total number of duplicate entries for that corresponding app. Also, if we sum up all the values in the dictionary, we will have total number of duplicate app entries in the google app dataset

In [5]:
# Deleting duplicate entries from the dataset

#print(google_file)
duplicate_app_count = {}

for x in google_apps:
    name = x[0]
    if name in duplicate_app_count:
        duplicate_app_count[name] +=1
    else:
        duplicate_app_count[name] = 0
        

print(sum(duplicate_app_count.values()))
# Summing up values will tell how many duplicate values are there
1181

Thus, there are 1181 duplicate entries in the google app dataset which we want to remove. Let's now see, the app with largest duplicate entry.

In [6]:
print(max(duplicate_app_count.values()))
# The record with largest duplicate entry is 8
8

Thus, the largest duplicate values for an app with duplicate name is 8. Now, let's get the app name and check how the rows for that app look in the dataset

In [7]:
#Let's get the app name with highest duplicate entry
for dict_item, dict_val  in duplicate_app_count.items():
    if dict_val == max(duplicate_app_count.values()):
        del_name = dict_item
        

print("App. with largest duplicate entry is "+del_name)    
print('\n')

# Let's explore the dataset to see the app name
for x in google_apps:
    if x[0] == del_name:
        print(x)
    
App. with largest duplicate entry is ROBLOX


['ROBLOX', 'GAME', '4.5', '4447388', '67M', '100,000,000+', 'Free', '0', 'Everyone 10+', 'Adventure;Action & Adventure', 'July 31, 2018', '2.347.225742', '4.1 and up']
['ROBLOX', 'GAME', '4.5', '4447346', '67M', '100,000,000+', 'Free', '0', 'Everyone 10+', 'Adventure;Action & Adventure', 'July 31, 2018', '2.347.225742', '4.1 and up']
['ROBLOX', 'GAME', '4.5', '4448791', '67M', '100,000,000+', 'Free', '0', 'Everyone 10+', 'Adventure;Action & Adventure', 'July 31, 2018', '2.347.225742', '4.1 and up']
['ROBLOX', 'GAME', '4.5', '4449882', '67M', '100,000,000+', 'Free', '0', 'Everyone 10+', 'Adventure;Action & Adventure', 'July 31, 2018', '2.347.225742', '4.1 and up']
['ROBLOX', 'GAME', '4.5', '4449910', '67M', '100,000,000+', 'Free', '0', 'Everyone 10+', 'Adventure;Action & Adventure', 'July 31, 2018', '2.347.225742', '4.1 and up']
['ROBLOX', 'FAMILY', '4.5', '4449910', '67M', '100,000,000+', 'Free', '0', 'Everyone 10+', 'Adventure;Action & Adventure', 'July 31, 2018', '2.347.225742', '4.1 and up']
['ROBLOX', 'FAMILY', '4.5', '4450855', '67M', '100,000,000+', 'Free', '0', 'Everyone 10+', 'Adventure;Action & Adventure', 'July 31, 2018', '2.347.225742', '4.1 and up']
['ROBLOX', 'FAMILY', '4.5', '4450890', '67M', '100,000,000+', 'Free', '0', 'Everyone 10+', 'Adventure;Action & Adventure', 'July 31, 2018', '2.347.225742', '4.1 and up']
['ROBLOX', 'FAMILY', '4.5', '4443407', '67M', '100,000,000+', 'Free', '0', 'Everyone 10+', 'Adventure;Action & Adventure', 'July 31, 2018', '2.347.225742', '4.1 and up']

We now have to remove these duplicate entries. But we can't remove the duplicates randonly and will have to set up a criterion on deletion. One suggestion for a criterion can be to select app with highest entry for reviews.

Let's gear up for the deletion of duplicate entry.

  1. Create a dictionary, where each dictinary key is a unique app name and the corresponding dictionary value is the highest number of reviews of that app

  2. Use this information stored in the dictionary to create a new data set, which will have only one entry per app (and for each app, we'll only select the entry with the highest number of reviews)

Also, the length of this dictionary will give us the number of unique app entries that should be in the final dataset.

In [8]:
reviews_max = {}

for each in google_apps:
    name = each[0]
    n_reviews = float(each[3])
    
    if name in reviews_max and reviews_max[name] < n_reviews:
        reviews_max[name] = n_reviews
    
    if name not in reviews_max:
        reviews_max[name] = n_reviews
        
print(len(reviews_max))
9659

Thus, the resulting dataset without duplicate entries should have 9,659 rows.

We now can use this dictonary reviews_max to clean up the dataset. We use two dictionaries android_clean and already_added, such that android_clean contains the unique entry per apps with highest number of reviews. The already_added contains the remaining duplicate entry for that app.

In [9]:
android_clean = []
already_added = []

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

Let's explore the android_clean data set to get a glimpse if everything is right

  • First, check the length of android_clean to ensure it is 9,659 rows.
  • Get a glimpse of dataset
In [10]:
print('The cleaned android apps dataset:',len(android_clean))
explore_data(android_clean,1,6,True)
The cleaned android apps dataset: 9659
['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']


['Pixel Draw - Number Art Coloring Book', 'ART_AND_DESIGN', '4.3', '967', '2.8M', '100,000+', 'Free', '0', 'Everyone', 'Art & Design;Creativity', 'June 20, 2018', '1.1', '4.4 and up']


['Paper flowers instructions', 'ART_AND_DESIGN', '4.4', '167', '5.6M', '50,000+', 'Free', '0', 'Everyone', 'Art & Design', 'March 26, 2017', '1.0', '2.3 and up']


['Smoke Effect Photo Maker - Smoke Editor', 'ART_AND_DESIGN', '3.8', '178', '19M', '50,000+', 'Free', '0', 'Everyone', 'Art & Design', 'April 26, 2018', '1.1', '4.0.3 and up']


Number of rows: 9659
Number of columns: 13

Let's now repeat the same process for Apple appstore apps to see if there are any duplicate entries of the apps

In [11]:
duplicate_apple_apps = []
unique_apple_apps = []


for each in apple_apps:
    if each[1] in unique_apple_apps:
        duplicate_apple_apps.append(each[1])
    else:
        unique_apple_apps.append(each[1])

print('The len of duplicate apple apps:',len(duplicate_apple_apps))
The len of duplicate apple apps: 2

There are 2 duplicate entries in the apple app store dataset. Let's take a peak at how the apps look like

In [12]:
for each in apple_apps:
    if each[1] in duplicate_apple_apps:
        print(each)

print(apple_header)
['1173990889', 'Mannequin Challenge', '109705216', 'USD', '0.0', '668', '87', '3.0', '3.0', '1.4', '9+', 'Games', '37', '4', '1', '1']
['952877179', 'VR Roller Coaster', '169523200', 'USD', '0.0', '107', '102', '3.5', '3.5', '2.0.0', '4+', 'Games', '37', '5', '1', '1']
['1178454060', 'Mannequin Challenge', '59572224', 'USD', '0.0', '105', '58', '4.0', '4.5', '1.0.1', '4+', 'Games', '38', '5', '1', '1']
['1089824278', 'VR Roller Coaster', '240964608', 'USD', '0.0', '67', '44', '3.5', '4.0', '0.81', '4+', 'Games', '38', '0', '1', '1']
['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']

We now have to remove these duplicate entries. But we can't remove the duplicates randonly and will have to set up a criterion on deletion similar to we did for google appstore dataset.After taking a glimpse at the apple appstore dataset, we can filter duplicate app entries by keeping only entry for app with the latest version.

Let's gear up for the deletion of duplicate entry.

  1. Create a dictionary, where each dictinary key is a unique app name and the corresponding dictionary value is the latest version of that app

  2. Use this information stored in the dictionary to create a new data set, which will have only one entry per app (and for each app, we'll only select the entry with the latest version)

Also, the length of this dictionary will give us the number of unique app entries that should be in the final dataset.

In [13]:
version_max = {}

for each in apple_apps:
    if each[1] in version_max:
        if version_max[each[1]].split('.')[0]<each[9].split('.')[0]:
            version_max[each[1]] = each[9]
        if version_max[each[1]].split('.')[0] == each[9].split('.')[0]:
            if version_max[each[1]].split('.')[1] < each[9].split('.')[1]:
                version_max[each[1]] = each[9]
            if version_max[each[1]].split('.')[1] == each[9].split('.')[1]:
                if version_max[each[1]].split('.')[2] < each[9].split('.')[2]:
                    version_max[each[1]] = each[9]     
    else:
        version_max[each[1]] = each[9]
        
print(version_max['Mannequin Challenge'])
print(version_max['VR Roller Coaster'])
1.4
2.0.0

Thus, we can confirm from above that the apps Mannequin Challenge and VR Roller Coaster have correct ratings. Let's build the clean apple app store dataset using the dictionary we just created version_max.

To do this, we will first create a new list of lists to store the apple clean dataset. To confirm that this dataset, we will check its length which should be 2 less than the original apple_apps dataset

In [14]:
apple_clean = []

for each in apple_apps:
    if (each[1] not in apple_apps) & (each[9] == version_max[each[1]]):
        apple_clean.append(each)

print('The length of cleaned apple apps dataset:',len(apple_clean))
print('The length of original apple apps dataset:',len(apple_apps))
The length of cleaned apple apps dataset: 7195
The length of original apple apps dataset: 7197

Thus, we confirm that the apple apps dataset has now no duplicate entries.

Removing Non-English Apps¶

The language that is used to develop apps at the company is English, and thus we'd consider apps that are directed towards and English-speaking audience. Let's check if we have apps other than English. To do this, we will write a function which checks if the app name is other than English.

In [15]:
def filter_english_apps(input_string):
    english_apps = []
    non_english_apps = []
    
    count = 0
    for letter in input_string:
        if ord(letter) > 127:
            count += 1
    if count <= 3:
        return True
    else:
        return False
    
In [16]:
print('Check to see the function we created to filter english apps works')

print(filter_english_apps('Docs To Go™ Free Office Suite'))
print(filter_english_apps('Instachat 😜'))
print(filter_english_apps('爱奇艺PPS -《欢乐颂2》电视剧热播'))
Check to see the function we created to filter english apps works
True
True
False

Now that we have created the function, let's filter our both datasets

In [17]:
#print("Google Apps with English Apps\n")
android_english_apps = []

for each in android_clean:
    if filter_english_apps(each[0]):
        android_english_apps.append(each)

print('Lets take a glimpse of android app dataset with only english apps')
explore_data(android_english_apps,0,6,True)

print("\n")
ios_english_apps = []

for each in apple_clean:
    if filter_english_apps(each[1]):
        ios_english_apps.append(each)
print('Lets take a glimpse of apple app dataset with only english apps')        
explore_data(ios_english_apps,0,6,True)
Lets take a glimpse of android app dataset with only english apps
['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']


['Pixel Draw - Number Art Coloring Book', 'ART_AND_DESIGN', '4.3', '967', '2.8M', '100,000+', 'Free', '0', 'Everyone', 'Art & Design;Creativity', 'June 20, 2018', '1.1', '4.4 and up']


['Paper flowers instructions', 'ART_AND_DESIGN', '4.4', '167', '5.6M', '50,000+', 'Free', '0', 'Everyone', 'Art & Design', 'March 26, 2017', '1.0', '2.3 and up']


['Smoke Effect Photo Maker - Smoke Editor', 'ART_AND_DESIGN', '3.8', '178', '19M', '50,000+', 'Free', '0', 'Everyone', 'Art & Design', 'April 26, 2018', '1.1', '4.0.3 and up']


Number of rows: 9614
Number of columns: 13


Lets take a glimpse of apple app dataset with only english apps
['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']


['420009108', 'Temple Run', '65921024', 'USD', '0.0', '1724546', '3842', '4.5', '4.0', '1.6.2', '9+', 'Games', '40', '5', '1', '1']


['284035177', 'Pandora - Music & Radio', '130242560', 'USD', '0.0', '1126879', '3594', '4.0', '4.5', '8.4.1', '12+', 'Music', '37', '4', '1', '1']


['429047995', 'Pinterest', '74778624', 'USD', '0.0', '1061624', '1814', '4.5', '4.0', '6.26', '12+', 'Social Networking', '37', '5', '27', '1']


Number of rows: 6181
Number of columns: 16

Isolating the Free Apps¶

Isolating the free apps will be our last step in the data cleaning process. We see from the header of both the datasets, we can isolate the free apps using the price column.

In [18]:
android_english_free = []
ios_english_free=[]

for each in android_english_apps:
#     if each[6] == 'Free':
    if each[7] == '0':
        android_english_free.append(each)

for each in ios_english_apps:
    if each[4] == '0.0':
        ios_english_free.append(each)


print("Free android english apps are : \n")
explore_data(android_english_free,1,3,True)
print("Length of free android english apps: "+str(len(android_english_free)))
print("\n")
print("Free ios english apps are : \n")
explore_data(ios_english_free,1,3,True)
print("Length of free ios english apps: "+str(len(ios_english_free)))
Free android english apps are : 

['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: 8864
Number of columns: 13
Length of free android english apps: 8864


Free ios english apps are : 

['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: 3220
Number of columns: 16
Length of free ios english apps: 3220

Most Common Apps by Genre¶

As we mentioned in the introduction, our aim is to determine the kinds of apps that are likely to attract more users because our revenue is highly influenced by the number of people using our apps.

To minimize risks and overhead, our validation strategy for an app idea is comprised of three steps:

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

Because our end goal is to add the app on both Google Play and the App Store, we need to find app profiles that are successful on both markets. For instance, a profile that works well for both markets might be a productivity app that makes use of gamification.

Let's begin the analysis by getting a sense of what are the most common genres for each market. For this, we'll need to build frequency tables for a few columns in our data sets.

In [19]:
import operator

def create_freq_table(dataset, col_id):
    freq_dict = {}
    total = len(dataset)
    
    for each in dataset:
        if each[col_id] in freq_dict:
            freq_dict[each[col_id]] +=1
        else:
            freq_dict[each[col_id]] = 1

            
    return freq_dict 
            
            
def sorted_freq_dict(freq_dict): 
    total = sum(freq_dict.values())
    
    for k,v in freq_dict.items():
        freq_dict[k] = round(freq_dict[k]/total*100,3) 
        
    
    sorted_freq_dict = sorted(freq_dict.items(), key=operator.itemgetter(1), reverse= True)
    
    for each in sorted_freq_dict:
        print(each[0],':',each[1])
        

Now, that we have created a function to return frequency table. Let's see the cols in each of the datasets which will help us to find the common genres in each market

In [20]:
print(google_header)
print(apple_header)
['App', 'Category', 'Rating', 'Reviews', 'Size', 'Installs', 'Type', 'Price', 'Content Rating', 'Genres', 'Last Updated', 'Current Ver', 'Android Ver']
['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']

We see that in google-app dataset, the columns Genres and Category seems to work .Also, we can see that in ios-app dataset, the column prime_genre seems to work. Let's see the most common genres for each market using these columns.

Let's check the google-app dataset for columns Genre with col id:9 and column Category with col id:1 .

In [21]:
print('With column \'Genre\', the freq distributn is:')
sorted_freq_dict(create_freq_table(android_english_free,1))
With column 'Genre', the freq distributn is:
FAMILY : 18.908
GAME : 9.725
TOOLS : 8.461
BUSINESS : 4.592
LIFESTYLE : 3.903
PRODUCTIVITY : 3.892
FINANCE : 3.7
MEDICAL : 3.531
SPORTS : 3.396
PERSONALIZATION : 3.317
COMMUNICATION : 3.238
HEALTH_AND_FITNESS : 3.08
PHOTOGRAPHY : 2.944
NEWS_AND_MAGAZINES : 2.798
SOCIAL : 2.662
TRAVEL_AND_LOCAL : 2.335
SHOPPING : 2.245
BOOKS_AND_REFERENCE : 2.144
DATING : 1.861
VIDEO_PLAYERS : 1.794
MAPS_AND_NAVIGATION : 1.399
FOOD_AND_DRINK : 1.241
EDUCATION : 1.162
ENTERTAINMENT : 0.959
LIBRARIES_AND_DEMO : 0.936
AUTO_AND_VEHICLES : 0.925
HOUSE_AND_HOME : 0.824
WEATHER : 0.801
EVENTS : 0.711
PARENTING : 0.654
ART_AND_DESIGN : 0.643
COMICS : 0.62
BEAUTY : 0.598
In [22]:
print('With column \'Category\', the freq distributn is:')
sorted_freq_dict(create_freq_table(android_english_free,9))
With column 'Category', the freq distributn is:
Tools : 8.45
Entertainment : 6.069
Education : 5.347
Business : 4.592
Productivity : 3.892
Lifestyle : 3.892
Finance : 3.7
Medical : 3.531
Sports : 3.463
Personalization : 3.317
Communication : 3.238
Action : 3.102
Health & Fitness : 3.08
Photography : 2.944
News & Magazines : 2.798
Social : 2.662
Travel & Local : 2.324
Shopping : 2.245
Books & Reference : 2.144
Simulation : 2.042
Dating : 1.861
Arcade : 1.85
Video Players & Editors : 1.771
Casual : 1.76
Maps & Navigation : 1.399
Food & Drink : 1.241
Puzzle : 1.128
Racing : 0.993
Role Playing : 0.936
Libraries & Demo : 0.936
Auto & Vehicles : 0.925
Strategy : 0.914
House & Home : 0.824
Weather : 0.801
Events : 0.711
Adventure : 0.677
Comics : 0.609
Art & Design : 0.598
Beauty : 0.598
Parenting : 0.496
Card : 0.451
Casino : 0.429
Trivia : 0.417
Educational;Education : 0.395
Board : 0.384
Educational : 0.372
Education;Education : 0.338
Word : 0.259
Casual;Pretend Play : 0.237
Music : 0.203
Entertainment;Music & Video : 0.169
Puzzle;Brain Games : 0.169
Racing;Action & Adventure : 0.169
Casual;Brain Games : 0.135
Casual;Action & Adventure : 0.135
Arcade;Action & Adventure : 0.124
Action;Action & Adventure : 0.102
Educational;Pretend Play : 0.09
Parenting;Education : 0.079
Board;Brain Games : 0.079
Simulation;Action & Adventure : 0.079
Entertainment;Brain Games : 0.079
Educational;Brain Games : 0.068
Casual;Creativity : 0.068
Art & Design;Creativity : 0.068
Parenting;Music & Video : 0.068
Education;Pretend Play : 0.056
Role Playing;Pretend Play : 0.045
Education;Creativity : 0.045
Education;Brain Games : 0.034
Role Playing;Action & Adventure : 0.034
Adventure;Action & Adventure : 0.034
Education;Music & Video : 0.034
Puzzle;Action & Adventure : 0.034
Educational;Creativity : 0.034
Educational;Action & Adventure : 0.034
Entertainment;Action & Adventure : 0.034
Education;Action & Adventure : 0.034
Entertainment;Creativity : 0.034
Simulation;Pretend Play : 0.023
Casual;Education : 0.023
Video Players & Editors;Music & Video : 0.023
Entertainment;Pretend Play : 0.023
Music;Music & Video : 0.023
Sports;Action & Adventure : 0.023
Puzzle;Creativity : 0.023
Board;Action & Adventure : 0.023
Adventure;Education : 0.011
Trivia;Education : 0.011
Racing;Pretend Play : 0.011
Strategy;Action & Adventure : 0.011
Health & Fitness;Action & Adventure : 0.011
Puzzle;Education : 0.011
Video Players & Editors;Creativity : 0.011
Health & Fitness;Education : 0.011
Books & Reference;Education : 0.011
Comics;Creativity : 0.011
Lifestyle;Pretend Play : 0.011
Simulation;Education : 0.011
Card;Action & Adventure : 0.011
Music & Audio;Music & Video : 0.011
Tools;Education : 0.011
Entertainment;Education : 0.011
Strategy;Creativity : 0.011
Lifestyle;Education : 0.011
Parenting;Brain Games : 0.011
Communication;Creativity : 0.011
Travel & Local;Action & Adventure : 0.011
Art & Design;Action & Adventure : 0.011
Art & Design;Pretend Play : 0.011
Casual;Music & Video : 0.011
Strategy;Education : 0.011
Role Playing;Brain Games : 0.011
Arcade;Pretend Play : 0.011

We can see that the most common apps in google app-store by Genre column belong to Family, Game Category and by Category column ,belong to the Tools, Entertainment Category. Thus, most of the apps in google-app store are used for more productive purpose.

Let's do the same thing with Apple App Store Dataset.We will find the most common apps in apple app store by prime_genre column having column id : 11

In [23]:
print('With column \'prime_genre\', the freq distributn  is:')
sorted_freq_dict(create_freq_table(ios_english_free,11))
With column 'prime_genre', the freq distributn  is:
Games : 58.137
Entertainment : 7.888
Photo & Video : 4.969
Education : 3.665
Social Networking : 3.292
Shopping : 2.609
Utilities : 2.516
Sports : 2.143
Music : 2.05
Health & Fitness : 2.019
Productivity : 1.739
Lifestyle : 1.584
News : 1.335
Travel : 1.242
Finance : 1.118
Weather : 0.87
Food & Drink : 0.807
Reference : 0.559
Business : 0.528
Book : 0.435
Navigation : 0.186
Medical : 0.186
Catalogs : 0.124

Thus, we can see that most of the apps in the Apple App Store belong to the Games and Entertainment Category.

By analyzing, the most common apps in both markets tend to differ. Most of the apps in the Apple App Store belonged to the Entertainment Category(Games, Photo and Video, Tools) which also leads to the possible user leads. Most of the apps are possibly used by kids and could be our potential user targets. We can cater to improve more engagement or more in-app ads inside games which will lead us to generate more revenue. Thus, the Apple App Store Market has user profile of kids/young generations.

However, the Google AppStore market tends to deviate. Most of the apps are designed for both practical purpose(Tools, Education) and entertainment(Entertainment) as per the Category column. The Genre column seems difficult to analyze since the name of the categories is somewhat not clear. Thus, we will place emphasis on the Category Column. Most of the apps in the Google App Store should thus, be on more balanced on both the productive and entertainment side. The app profile for Google App Store Market should be family(kids, parents) or much more matured audience than the apple app store app profile.

Most Popular Apps by Genre on the App Store¶

One way to find out what genres are the most popular (have the most users) is to calculate the average number of installs for each app genre. For the Google Play data set, we can find this information in the Installs column, but this information is missing for the App Store data set. As a workaround, we'll take the total number of user ratings as a proxy, which we can find in the rating_count_tot app.

Let's start with calculating the average number of user ratings per app genre on the App Store. To do that, we'll need to:

  • Isolate the apps of each genre.
  • Sum up the user ratings for the apps of that genre.
  • Divide the sum by the number of apps belonging to that genre (not by the total number of apps).
In [24]:
ios_apps_by_genre = create_freq_table(ios_english_free,11)


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

As seen from above, the most popular genre in the Apple app store by user ratings is Navigation and Reference. Let's explore how many installs for the apps in the genre Navigation

In [25]:
for each in ios_english_free:
    if each[11] == 'Navigation':
        print(each[1],":",each[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

Thus, Waze is the most popular app in the Apple App Store , with 2nd to the Google Maps

Most Popular Apps by Genre on Google Play¶

To get the number of installs for the Google Market. We will start to analyze the Installs column.

In [26]:
create_freq_table(android_english_free,5)
Out[26]:
{'0': 1,
 '0+': 4,
 '1+': 45,
 '1,000+': 744,
 '1,000,000+': 1394,
 '1,000,000,000+': 20,
 '10+': 314,
 '10,000+': 904,
 '10,000,000+': 935,
 '100+': 613,
 '100,000+': 1024,
 '100,000,000+': 189,
 '5+': 70,
 '5,000+': 400,
 '5,000,000+': 605,
 '50+': 170,
 '50,000+': 423,
 '50,000,000+': 204,
 '500+': 288,
 '500,000+': 493,
 '500,000,000+': 24}

However, the install numbers don't seem precise enough — we can see that most values are open-ended (100+, 1,000+, 5,000+, etc.) as seen from above.

For instance, we don't know whether an app with 100,000+ installs has 100,000 installs, 200,000, or 350,000. However, we don't need very precise data for our purposes — we only want to find out which app genres attract the most users, and we don't need perfect precision with respect to the number of users.

We're going to leave the numbers as they are, which means that we'll consider that an app with 100,000+ installs has 100,000 installs, and an app with 1,000,000+ installs has 1,000,000 installs, and so on. To perform computations, however, we'll need to convert each install number from string to float. This means we need to remove the commas and the plus characters, otherwise the conversion will fail and raise an error.

To remove characters from strings, we can use str.replace(old, new) method (just like list.append() or list.copy()

In [27]:
android_apps_by_cat = create_freq_table(android_english_free,1)


for category in android_apps_by_cat:
    total = 0
    len_category = 0
    for each in android_english_free:
        category_app = each[1]
        if category_app == category:
            n_installs = each[5]
            n_installs = n_installs.replace('+','')
            n_installs = n_installs.replace(',','')
            total+=float(n_installs)
            len_category+=1
            
    avg_installs = total/len_category
    
    print(category,":",avg_installs)
        
VIDEO_PLAYERS : 24727872.452830188
COMICS : 817657.2727272727
PARENTING : 542603.6206896552
PHOTOGRAPHY : 17840110.40229885
WEATHER : 5074486.197183099
FAMILY : 3695641.8198090694
ENTERTAINMENT : 11640705.88235294
DATING : 854028.8303030303
GAME : 15588015.603248259
BOOKS_AND_REFERENCE : 8767811.894736841
LIFESTYLE : 1437816.2687861272
FINANCE : 1387692.475609756
PRODUCTIVITY : 16787331.344927534
MEDICAL : 120550.61980830671
TOOLS : 10801391.298666667
EVENTS : 253542.22222222222
EDUCATION : 1833495.145631068
HEALTH_AND_FITNESS : 4188821.9853479853
COMMUNICATION : 38456119.167247385
BEAUTY : 513151.88679245283
AUTO_AND_VEHICLES : 647317.8170731707
TRAVEL_AND_LOCAL : 13984077.710144928
HOUSE_AND_HOME : 1331540.5616438356
FOOD_AND_DRINK : 1924897.7363636363
SOCIAL : 23253652.127118643
NEWS_AND_MAGAZINES : 9549178.467741935
BUSINESS : 1712290.1474201474
PERSONALIZATION : 5201482.6122448975
SHOPPING : 7036877.311557789
LIBRARIES_AND_DEMO : 638503.734939759
MAPS_AND_NAVIGATION : 4056941.7741935486
ART_AND_DESIGN : 1986335.0877192982
SPORTS : 3638640.1428571427

As seen from above, the most popular app by category is Books and Reference, with second to Communication. Let's see the app names in the each category.

In [28]:
for each in android_english_free:
    if each[1] == 'BOOKS_AND_REFERENCE':
        print(each[0],':',each[5])
E-Book Read - Read Book for free : 50,000+
Download free book with green book : 100,000+
Wikipedia : 10,000,000+
Cool Reader : 10,000,000+
Free Panda Radio Music : 100,000+
Book store : 1,000,000+
FBReader: Favorite Book Reader : 10,000,000+
English Grammar Complete Handbook : 500,000+
Free Books - Spirit Fanfiction and Stories : 1,000,000+
Google Play Books : 1,000,000,000+
AlReader -any text book reader : 5,000,000+
Offline English Dictionary : 100,000+
Offline: English to Tagalog Dictionary : 500,000+
FamilySearch Tree : 1,000,000+
Cloud of Books : 1,000,000+
Recipes of Prophetic Medicine for free : 500,000+
ReadEra – free ebook reader : 1,000,000+
Anonymous caller detection : 10,000+
Ebook Reader : 5,000,000+
Litnet - E-books : 100,000+
Read books online : 5,000,000+
English to Urdu Dictionary : 500,000+
eBoox: book reader fb2 epub zip : 1,000,000+
English Persian Dictionary : 500,000+
Flybook : 500,000+
All Maths Formulas : 1,000,000+
Ancestry : 5,000,000+
HTC Help : 10,000,000+
English translation from Bengali : 100,000+
Pdf Book Download - Read Pdf Book : 100,000+
Free Book Reader : 100,000+
eBoox new: Reader for fb2 epub zip books : 50,000+
Only 30 days in English, the guideline is guaranteed : 500,000+
Moon+ Reader : 10,000,000+
SH-02J Owner's Manual (Android 8.0) : 50,000+
English-Myanmar Dictionary : 1,000,000+
Golden Dictionary (EN-AR) : 1,000,000+
All Language Translator Free : 1,000,000+
Azpen eReader : 500,000+
URBANO V 02 instruction manual : 100,000+
Bible : 100,000,000+
C Programs and Reference : 50,000+
C Offline Tutorial : 1,000+
C Programs Handbook : 50,000+
Amazon Kindle : 100,000,000+
Aab e Hayat Full Novel : 100,000+
Aldiko Book Reader : 10,000,000+
Google I/O 2018 : 500,000+
R Language Reference Guide : 10,000+
Learn R Programming Full : 5,000+
R Programing Offline Tutorial : 1,000+
Guide for R Programming : 5+
Learn R Programming : 10+
R Quick Reference Big Data : 1,000+
V Made : 100,000+
Wattpad 📖 Free Books : 100,000,000+
Dictionary - WordWeb : 5,000,000+
Guide (for X-MEN) : 100,000+
AC Air condition Troubleshoot,Repair,Maintenance : 5,000+
AE Bulletins : 1,000+
Ae Allah na Dai (Rasa) : 10,000+
50000 Free eBooks & Free AudioBooks : 5,000,000+
Ag PhD Field Guide : 10,000+
Ag PhD Deficiencies : 10,000+
Ag PhD Planting Population Calculator : 1,000+
Ag PhD Soybean Diseases : 1,000+
Fertilizer Removal By Crop : 50,000+
A-J Media Vault : 50+
Al-Quran (Free) : 10,000,000+
Al Quran (Tafsir & by Word) : 500,000+
Al Quran Indonesia : 10,000,000+
Al'Quran Bahasa Indonesia : 10,000,000+
Al Quran Al karim : 1,000,000+
Al-Muhaffiz : 50,000+
Al Quran : EAlim - Translations & MP3 Offline : 5,000,000+
Al-Quran 30 Juz free copies : 500,000+
Koran Read &MP3 30 Juz Offline : 1,000,000+
Hafizi Quran 15 lines per page : 1,000,000+
Quran for Android : 10,000,000+
Surah Al-Waqiah : 100,000+
Hisnul Al Muslim - Hisn Invocations & Adhkaar : 100,000+
Satellite AR : 1,000,000+
Audiobooks from Audible : 100,000,000+
Kinot & Eichah for Tisha B'Av : 10,000+
AW Tozer Devotionals - Daily : 5,000+
Tozer Devotional -Series 1 : 1,000+
The Pursuit of God : 1,000+
AY Sing : 5,000+
Ay Hasnain k Nana Milad Naat : 10,000+
Ay Mohabbat Teri Khatir Novel : 10,000+
Arizona Statutes, ARS (AZ Law) : 1,000+
Oxford A-Z of English Usage : 1,000,000+
BD Fishpedia : 1,000+
BD All Sim Offer : 10,000+
Youboox - Livres, BD et magazines : 500,000+
B&H Kids AR : 10,000+
B y H Niños ES : 5,000+
Dictionary.com: Find Definitions for English Words : 10,000,000+
English Dictionary - Offline : 10,000,000+
Bible KJV : 5,000,000+
Borneo Bible, BM Bible : 10,000+
MOD Black for BM : 100+
BM Box : 1,000+
Anime Mod for BM : 100+
NOOK: Read eBooks & Magazines : 10,000,000+
NOOK Audiobooks : 500,000+
NOOK App for NOOK Devices : 500,000+
Browsery by Barnes & Noble : 5,000+
bp e-store : 1,000+
Brilliant Quotes: Life, Love, Family & Motivation : 1,000,000+
BR Ambedkar Biography & Quotes : 10,000+
BU Alsace : 100+
Catholic La Bu Zo Kam : 500+
Khrifa Hla Bu (Solfa) : 10+
Kristian Hla Bu : 10,000+
SA HLA BU : 1,000+
Learn SAP BW : 500+
Learn SAP BW on HANA : 500+
CA Laws 2018 (California Laws and Codes) : 5,000+
Bootable Methods(USB-CD-DVD) : 10,000+
cloudLibrary : 100,000+
SDA Collegiate Quarterly : 500+
Sabbath School : 100,000+
Cypress College Library : 100+
Stats Royale for Clash Royale : 1,000,000+
GATE 21 years CS Papers(2011-2018 Solved) : 50+
Learn CT Scan Of Head : 5,000+
Easy Cv maker 2018 : 10,000+
How to Write CV : 100,000+
CW Nuclear : 1,000+
CY Spray nozzle : 10+
BibleRead En Cy Zh Yue : 5+
CZ-Help : 5+
Modlitební knížka CZ : 500+
Guide for DB Xenoverse : 10,000+
Guide for DB Xenoverse 2 : 10,000+
Guide for IMS DB : 10+
DC HSEMA : 5,000+
DC Public Library : 1,000+
Painting Lulu DC Super Friends : 1,000+
Dictionary : 10,000,000+
Fix Error Google Playstore : 1,000+
D. H. Lawrence Poems FREE : 1,000+
Bilingual Dictionary Audio App : 5,000+
DM Screen : 10,000+
wikiHow: how to do anything : 1,000,000+
Dr. Doug's Tips : 1,000+
Bible du Semeur-BDS (French) : 50,000+
La citadelle du musulman : 50,000+
DV 2019 Entry Guide : 10,000+
DV 2019 - EDV Photo & Form : 50,000+
DV 2018 Winners Guide : 1,000+
EB Annual Meetings : 1,000+
EC - AP & Telangana : 5,000+
TN Patta Citta & EC : 10,000+
AP Stamps and Registration : 10,000+
CompactiMa EC pH Calibration : 100+
EGW Writings 2 : 100,000+
EGW Writings : 1,000,000+
Bible with EGW Comments : 100,000+
My Little Pony AR Guide : 1,000,000+
SDA Sabbath School Quarterly : 500,000+
Duaa Ek Ibaadat : 5,000+
Spanish English Translator : 10,000,000+
Dictionary - Merriam-Webster : 10,000,000+
JW Library : 10,000,000+
Oxford Dictionary of English : Free : 10,000,000+
English Hindi Dictionary : 10,000,000+
English to Hindi Dictionary : 5,000,000+
EP Research Service : 1,000+
Hymnes et Louanges : 100,000+
EU Charter : 1,000+
EU Data Protection : 1,000+
EU IP Codes : 100+
EW PDF : 5+
BakaReader EX : 100,000+
EZ Quran : 50,000+
FA Part 1 & 2 Past Papers Solved Free – Offline : 5,000+
La Fe de Jesus : 1,000+
La Fe de Jesús : 500+
Le Fe de Jesus : 500+
Florida - Pocket Brainbook : 1,000+
Florida Statutes (FL Code) : 1,000+
English To Shona Dictionary : 10,000+
Greek Bible FP (Audio) : 1,000+
Golden Dictionary (FR-AR) : 500,000+
Fanfic-FR : 5,000+
Bulgarian French Dictionary Fr : 10,000+
Chemin (fr) : 1,000+
The SCP Foundation DB fr nn5n : 1,000+

As seen from the above, most of the android apps in the book and reference category are mostly an ebook reader apps, with the highest user ratings being for Google Play Books. It seems the users in this category are more oriented towards reading culture. A necessary strategy towards gaining more revenue would be do give audio-visual books /reader which can gain more users installing them.

In [29]:
for each in android_english_free:
    if each[1] == 'COMMUNICATION':
        print(each[0],":",each[5])
WhatsApp Messenger : 1,000,000,000+
Messenger for SMS : 10,000,000+
My Tele2 : 5,000,000+
imo beta free calls and text : 100,000,000+
Contacts : 50,000,000+
Call Free – Free Call : 5,000,000+
Web Browser & Explorer : 5,000,000+
Browser 4G : 10,000,000+
MegaFon Dashboard : 10,000,000+
ZenUI Dialer & Contacts : 10,000,000+
Cricket Visual Voicemail : 10,000,000+
TracFone My Account : 1,000,000+
Xperia Link™ : 10,000,000+
TouchPal Keyboard - Fun Emoji & Android Keyboard : 10,000,000+
Skype Lite - Free Video Call & Chat : 5,000,000+
My magenta : 1,000,000+
Android Messages : 100,000,000+
Google Duo - High Quality Video Calls : 500,000,000+
Seznam.cz : 1,000,000+
Antillean Gold Telegram (original version) : 100,000+
AT&T Visual Voicemail : 10,000,000+
GMX Mail : 10,000,000+
Omlet Chat : 10,000,000+
My Vodacom SA : 5,000,000+
Microsoft Edge : 5,000,000+
Messenger – Text and Video Chat for Free : 1,000,000,000+
imo free video calls and chat : 500,000,000+
Calls & Text by Mo+ : 5,000,000+
free video calls and chat : 50,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+
Messaging+ SMS, MMS Free : 1,000,000+
chomp SMS : 10,000,000+
Glide - Video Chat Messenger : 10,000,000+
Text SMS : 10,000,000+
Talkray - Free Calls & Texts : 10,000,000+
LINE: Free Calls & Messages : 500,000,000+
GroupMe : 10,000,000+
mysms SMS Text Messaging Sync : 1,000,000+
2ndLine - Second Phone Number : 1,000,000+
Google Chrome: Fast & Secure : 1,000,000,000+
Firefox Browser fast & private : 100,000,000+
Ninesky Browser : 1,000,000+
Dolphin Browser - Fast, Private & Adblock🐬 : 50,000,000+
UC Browser - Fast Download Private & Secure : 500,000,000+
Ghostery Privacy Browser : 1,000,000+
InBrowser - Incognito Browsing : 1,000,000+
Lightning Web Browser : 500,000+
Web Browser : 500,000+
Contacts+ : 10,000,000+
ExDialer - Dialer & Contacts : 10,000,000+
PHONE for Google Voice & GTalk : 1,000,000+
Safest Call Blocker : 1,000,000+
Full Screen Caller ID : 5,000,000+
Hiya - Caller ID & Block : 10,000,000+
Mr. Number-Block calls & spam : 10,000,000+
Should I Answer? : 1,000,000+
RocketDial Dialer & Contacts : 1,000,000+
CIA - Caller ID & Call Blocker : 5,000,000+
Calls Blacklist - Call Blocker : 10,000,000+
Call Control - Call Blocker : 5,000,000+
True Contact - Real Caller ID : 1,000,000+
Video Caller Id : 1,000,000+
Sync.ME – Caller ID & Block : 5,000,000+
Burner - Free Phone Number : 1,000,000+
Caller ID + : 1,000,000+
Gmail : 1,000,000,000+
K-9 Mail : 5,000,000+
myMail – Email for Hotmail, Gmail and Outlook Mail : 10,000,000+
Email TypeApp - Mail App : 1,000,000+
All Email Providers : 1,000,000+
Newton Mail - Email App for Gmail, Outlook, IMAP : 1,000,000+
GO Notifier : 10,000,000+
Mail.Ru - Email App : 50,000,000+
Mail1Click - Secure Mail : 10,000+
Daum Mail - Next Mail : 5,000,000+
mail.com mail : 1,000,000+
SolMail - All-in-One email app : 500,000+
Hangouts : 1,000,000,000+
Vonage Mobile® Call Video Text : 1,000,000+
JusTalk - Free Video Calls and Fun Video Chat : 5,000,000+
Azar : 50,000,000+
LokLok: Draw on a Lock Screen : 500,000+
Discord - Chat for Gamers : 10,000,000+
Messenger Lite: Free Calls & Messages : 100,000,000+
AntennaPict β : 1,000,000+
Talkatone: Free Texts, Calls & Phone Number : 10,000,000+
Kik : 100,000,000+
K-@ Mail - Email App : 100,000+
KakaoTalk: Free Calls & Text : 100,000,000+
K-9 Material (unofficial) : 5,000+
M star Dialer : 100,000+
Free WiFi Connect : 10,000,000+
m:go BiH : 10,000+
N-Com Wizard : 50,000+
Opera Mini - fast web browser : 100,000,000+
Opera Browser: Fast and Secure : 100,000,000+
Opera Mini browser beta : 10,000,000+
Psiphon Pro - The Internet Freedom VPN : 10,000,000+
ICQ — Video Calls & Chat Messenger : 10,000,000+
Telegram : 100,000,000+
AT&T Messages for Tablet : 1,000,000+
T-Mobile DIGITS : 100,000+
Truecaller: Caller ID, SMS spam blocking & Dialer : 100,000,000+
Portable Wi-Fi hotspot : 10,000,000+
AT&T Call Protect : 5,000,000+
U - Webinars, Meetings & Messenger : 500,000+
UC Browser Mini -Tiny Fast Private & Secure : 100,000,000+
/u/app : 10,000+
[verify-U] VideoIdent : 10,000+
Viber Messenger : 500,000,000+
WeChat : 100,000,000+
WhatsApp Business : 10,000,000+
WhatsCall Free Global Phone Call App & Cheap Calls : 10,000,000+
X Browser : 50,000+
Yahoo Mail – Stay Organized : 100,000,000+
Free Adblocker Browser - Adblock & Popup Blocker : 10,000,000+
Adblock Browser for Android : 10,000,000+
CM Browser - Ad Blocker , Fast Download , Privacy : 50,000,000+
Adblock Plus for Samsung Internet - Browse safe. : 1,000,000+
Ad Blocker Turbo - Adblocker Browser : 10,000+
Brave Browser: Fast AdBlocker : 5,000,000+
AG Contacts, Lite edition : 5,000+
Oklahoma Ag Co-op Council : 10+
Bee'ah Employee App : 100+
tournaments and more.aj.2 : 100+
Aj.Petra : 100+
AK Phone : 5,000+
PlacarTv Futebol Ao Vivo : 100,000+
WiFi Access Point (hotspot) : 100,000+
Access Point Names : 10,000+
Puffin Web Browser : 10,000,000+
ClanHQ : 10,000+
Ear Agent: Super Hearing : 5,000,000+
Google Voice : 10,000,000+
Google Allo : 10,000,000+
AU Call Blocker - Block Unwanted Calls Texts 2018 : 1,000+
Baby Monitor AV : 100,000+
AV Phone : 1,000+
AW - free video calls and chat : 1,000,000+
Katalogen.ax : 100+
AZ Browser. Private & Download : 100,000+
BA SALES : 1+
BD Data Plan (3G & 4G) : 500,000+
BD Internet Packages (Updated) : 50,000+
BD Dialer : 10,000+
BD Live Call : 5,000+
Best Browser BD social networking : 10+
Traffic signs BD : 500+
BF Browser by Betfilter - Stop Gambling Today! : 10,000+
My BF App : 50,000+
BH Mail : 1,000+
Zalo – Video Call : 50,000,000+
BJ - Confidential : 10+
BK Chat : 1,000+
Of the wall Arapaho bk : 5+
AC-BL : 50+
BBM - Free Calls & Messages : 100,000,000+
DMR BrandMeister Tool : 10,000+
BBMoji - Your personalized BBM Stickers : 1,000,000+
BN MALLORCA Radio : 1,000+
BQ Partners : 1,000+
BS-Mobile : 50+
ATC Unico BS : 500+
BT One Voice mobile access : 5,000+
BT Messenger : 50,000+
BT One Phone Mobile App : 10,000+
SW-100.tch by Callstel : 1,000,000+
BT MeetMe with Dolby Voice : 100,000+
Bluetooth Auto Connect : 5,000,000+
AudioBT: BT audio GPS/SMS/Text : 50,000+
BV : 100+
Feel Performer : 10,000+
Tiny Call Confirm : 1,000,000+
CB Radio Chat - for friends! : 1,000,000+
CB On Mobile : 100,000+
Virtual Walkie Talkie : 1,000,000+
Channel 19 : 100,000+
Cb browser : 50+
CF Chat: Connecting Friends : 100+
retteMi.ch : 5,000+
Chrome Dev : 5,000,000+
CJ Browser - Fast & Private : 100+
CJ DVD Rentals : 100+
CK Call NEW : 10+
CM Transfer - Share any files with friends nearby : 5,000,000+
mail.co.uk Mail : 5,000+
ClanPlay: Community and Tools for Gamers : 1,000,000+
CQ-Mobile : 1,000+
CQ-Alert : 500+
QRZ Assistant : 100,000+
Pocket Prefix Plus : 10,000+
Ham Radio Prefixes : 10,000+
CS Customizer : 1,000+
CS Browser | #1 & BEST BROWSER : 1,000+
CS Browser Beta : 5,000+
My Vodafone (GR) : 1,000,000+
IZ2UUF Morse Koch CW : 50,000+
C W Browser : 100+
CW Bluetooth SPP : 100+
CW BLE Peripheral Simulator : 500+
Morse Code Reader : 100,000+
Learn Morse Code - G0HYN Learn Morse : 5,000+
Ring : 10,000+
Hyundai CX Conference : 50+
Cy Messenger : 100+
Amadeus GR & CY : 100+
Hlášenírozhlasu.cz : 10+
SMS Sender - sluzba.cz : 1,000+
WEB.DE Mail : 10,000,000+
Your Freedom VPN Client : 5,000,000+
CallApp: Caller ID, Blocker & Phone Call Recorder : 10,000,000+
Rádio Sol Nascente DF : 500+
DG Card : 100+
Whoscall - Caller ID & Block : 10,000,000+
DK Browser : 10+
cluster.dk : 1,000+
DK TEL Dialer : 50+
DM for WhatsApp : 5,000+
DM Talk New : 5,000+
DM - The Offical Messaging App : 10+
DM Tracker : 1,000+
Call Blocker & Blacklist : 1,000+
ReadyOp DT : 1,000+
DU Browser—Browse fast & fun : 10,000,000+
Caller ID & Call Block - DU Caller : 5,000,000+
BlueDV AMBE : 1,000+
DW Contacts & Phone & Dialer : 1,000,000+
Deaf World DW : 10,000+
Ham DX Cluster & Spots Finder : 5,000+
Mircules DX Cluster Lite : 5,000+
3G DZ Configuration : 50,000+
chat dz : 100+
love sms good morning : 5,000+
Goodbox - Mega App : 100,000+
Call Blocker - Blacklist, SMS Blocker : 1,000,000+
[EF]ShoutBox : 100+
Eg Call : 10,000+
ei : 10+
EJ messenger : 10+
Ek IRA : 10+
Orfox: Tor Browser for Android : 10,000,000+
EO Mumbai : 10+
EP RSS Reader : 100+
Voxer Walkie Talkie Messenger : 10,000,000+
ES-1 : 500+
Hangouts Dialer - Call Phones : 10,000,000+
EU Council : 1,000+
Council Voting Calculator : 5,000+
Have your say on Europe : 500+
Programi podrške EU : 100+
Inbox.eu : 10,000+
Web Browser for Android : 1,000,000+
Everbridge : 100,000+
Best Auto Call Recorder Free : 500+
EZ Wifi Notification : 10,000+
Test Server SMS FA : 5+
Lite for Facebook Messenger : 1,000,000+
FC Browser - Focus Privacy Browser : 1,000+
EHiN-FH conferenceapp : 100+
Carpooling FH Hagenberg : 100+
Wi-Fi Auto-connect : 1,000,000+
Talkie - Wi-Fi Calling, Chats, File Sharing : 500,000+
WeFi - Free Fast WiFi Connect & Find Wi-Fi Map : 1,000,000+
Sat-Fi : 5,000+
Portable Wi-Fi hotspot Free : 100,000+
TownWiFi | Wi-Fi Everywhere : 500,000+
Jazz Wi-Fi : 10,000+
Sat-Fi Voice : 1,000+
Free Wi-fi HotspoT : 50,000+
FN Web Radio : 10+
FNH Payment Info : 10+
MARKET FO : 100+
FO OP St-Nazaire : 100+
FO SODEXO : 100+
FO RCBT : 100+
FO Interim : 100+
FO PSA Sept-Fons : 100+
FO AIRBUS TLSE : 1,000+
FO STELIA Méaulte : 100+
FO AIRBUS Nantes : 100+
Firefox Focus: The privacy browser : 1,000,000+
FP Connect : 100+
FreedomPop Messaging Phone/SIM : 500,000+
FP Live : 10+
HipChat - beta version : 50,000+

As seen from the above, in the communication category, 'WhatsApp' was the most popular installed app in the Google App Store. One possible recommendation is developing more apps in the Communication Category in the Android market or coming up with more in-app ads on the Communication and Social Category.

Conclusion¶

Thus, we have successfully analyzed the app profiles in both the Google and ios App Store Markets. Based on the overall analysis, it can be concluded that the app profiles for the google market cater to users who are more matured than the apple market users. A suggestion would be to introduce more productivity apps on the Apple App Store or variants of the existing high-revenue apps from the Android App Store.