Our aim in this analysis is to help our company that builds Android and iOS mobile apps to find the mobile app profiles that are profitable for the App Store and Google Play markets. With this analysis, we will enable our team of developers to make data-driven decisions with respect to the type of apps they build.
At our company, we only build apps that are free to download and install, and our main source of revenue consists of in-app ads. This means that our revenue for any given app is mostly influenced by the number of users that use our app. Our goal for this project is to analyze data to help our developers understand what types of apps are likely to attract more users on Google Play and the App Store.
Our aim for this analysis is to help the developers undersantand what type of apps are likely to attract more users on Google Plyan and the App Store. To do this, first we will collect and exploring the data of mobile apps available on Goole Play and the App Store.
As of September 2018, there were approximately 2 million iOS apps available on the App Store, and 2.1 million Android apps on Google Play.
Collecting data for over 4 million apps requires a significant amount of time and money, so we'll try to analyze a sample of the data instead. To avoid spending resources on collecting new data ourselves, we should first try to see if we can find any relevant existing data at no cost.
The first dataset containing data about approximately 10,000 Android apps from Google Play; the data was collected in August 2018. It can be downloaded directly from this link.
The second dataset containing data about approximately 7,000 iOS apps from the App Store; the data was collected in July 2017. It can be downloaded directly from this link.
# To open AppStore data set and named "ios"
open_appstore_dataset = open('AppleStore.csv')
from csv import reader
read_appstore_dataset = reader(open_appstore_dataset)
appstore_dataset = list(read_appstore_dataset)
ios_header = appstore_dataset[0]
ios = appstore_dataset[1:]
# To open GooPlay data set and named "android"
open_gooplay_dataset = open('googleplaystore.csv')
from csv import reader
read_gooplay_dataset = reader(open_gooplay_dataset)
gooplay_dataset = list(read_gooplay_dataset)
android_header = gooplay_dataset[0]
android = gooplay_dataset[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 empty line after each row
if rows_and_columns:# if rows_and_columns is true
print('Number of rows:', len(dataset))
print('Number of columns:', len(dataset[0]))
print('ios_header:')
print(ios_header)
print('\n')
explore_data(ios, 0, 2, True)
ios_header: ['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'] Number of rows: 7197 Number of columns: 16
print('android_header:')
print(android_header)
print('\n')
explore_data(android, 0, 2, True)
android_header: ['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'] Number of rows: 10841 Number of columns: 13
Data set name | Number of rows | Number of columns | Column name |
---|---|---|---|
ios | 7197 | 16 | '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' |
android | 10841 | 13 | 'App', 'Category', 'Rating', 'Reviews', 'Size', 'Installs', 'Type', 'Price', 'Content Rating', 'Genres', 'Last Updated', 'Current Ver', 'Android Ver' |
In the discussion section of the Google Play data set, we found that there is one of the discussions which outlines an error for row 10472 (Wrong rating for entry 10472). In order to confirm it, row 10472 is compared to the header and another row that is correct.
print('android_header:')
print(android_header)#header of the dataset
print('\n')
print('Row #1 of the data set:')
print(android[0])# one of the correct row in dataset
print('\n')
print('Row #10472 of the data set:')
print(android[10472])# one of the incorrect row in dataset
android_header: ['App', 'Category', 'Rating', 'Reviews', 'Size', 'Installs', 'Type', 'Price', 'Content Rating', 'Genres', 'Last Updated', 'Current Ver', 'Android Ver'] Row #1 of the data set: ['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'] Row #10472 of the data set: ['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']
The wrong rating for row 10472 corresponding the app 'Life Made WI-Fi Touchscreen Photo Frame' is found. The row 10472 has the rating is 19, which is clearly off because the maximum rating for a Google Play app is 5 (as mentioned in the discussions section. This problem is caused by a missing value in the 'Category' column, and a column shift happened for next columns.
Before analysing the data, we'll have to delete this row.
print('Number of rows before deletion:', len(android))# The total row numbers before data deletion
print('Original row #10472:')
print(android[10472])
del android[10472]
print('\n')
print('Number of rows after deletion:', len(android))# The total row number after data deletion.
print('Current row #10472:')
print(android[10472]) # To confirm whether the wrong row is deletely.
Number of rows before deletion: 10841 Original row #10472: ['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'] Number of rows after deletion: 10840 Current row #10472: ['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']
After comparing with: the total row numbers and the data in row 10472 before and after deletion, the deletion of the wrong data is confirmed.
After exploring the Google Play data set more, and also looking at the discussions section, we noticed that there are some apps have been found with duplicate entries.
For instance, Instagram has been found with four entries:
instagram_entry_times = 0
for app in android: #app equals row in the data set
app_name = app[0] #app_name is data in the first column in each row
if app_name == 'Instagram':
print(app)
instagram_entry_times += 1
print('\n')
print('instagram_entry_times =', instagram_entry_times)
['Instagram', 'SOCIAL', '4.5', '66577313', 'Varies with device', '1,000,000,000+', 'Free', '0', 'Teen', 'Social', 'July 31, 2018', 'Varies with device', 'Varies with device'] ['Instagram', 'SOCIAL', '4.5', '66577446', 'Varies with device', '1,000,000,000+', 'Free', '0', 'Teen', 'Social', 'July 31, 2018', 'Varies with device', 'Varies with device'] ['Instagram', 'SOCIAL', '4.5', '66577313', 'Varies with device', '1,000,000,000+', 'Free', '0', 'Teen', 'Social', 'July 31, 2018', 'Varies with device', 'Varies with device'] ['Instagram', 'SOCIAL', '4.5', '66509917', 'Varies with device', '1,000,000,000+', 'Free', '0', 'Teen', 'Social', 'July 31, 2018', 'Varies with device', 'Varies with device'] instagram_entry_times = 4
We found, in total, there are 1,181 cases where an app occurs more than once in Google Play data set:
duplicate_apps = []
unique_apps = []
for app in android:
app_name = app[0]
if app_name in unique_apps:
duplicate_apps.append(app_name)
else:
unique_apps.append(app_name)
print('Number of duplicate apps:', len(duplicate_apps))
print('\n')
print('Examples of duplicate apps:', duplicate_apps[:15])
print('\n')
print('Number of unique apps:', len(unique_apps))
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'] Number of unique apps: 9659
Before the data analysis, the duplicate entries should be removed to keep only one entry per app.
If examining the all four rows for the Instagram app, we found that the main difference happens on the fourth position of each row, which corresponds to the number of reviews.
The different numbers in the blue squares show that the data were collected at different times. Because the higher the number of reviews is, the more reliable the ratings is, we decided to keep the rows that have the highest number of reviews is better than to randomly to remove rows.
In order to do that, it will need to:
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
print('unique_app_number:', len(reviews_max))
unique_app_number: 9659
Here, we found that the number of the duplicate apps are 1,181, and the number of the unique apps are 9,659. The length of the created dictionary (of unique apps) above should be the same number as 9659, which is also confirmed above.
For the duplicate apps, we decided that the entries with the highest number of reveiws will be selected and saved. To do this, we designed the code as following steps:
android_clean = [] # To store the new cleaned data set
already_added = [] # To store the app names only
for app in android:
name = app[0]
n_reviews = float(app[3])
if (n_reviews == reviews_max[name]) and (name not in already_added):
android_clean.append(app)
already_added.append(name)
Next, To use the explore_data() function to confirm whether the number of rows in android_clean list is 9659 and to make sure the data entries are not changes by checking some rows radomly.
explore_data(android_clean, 0, 2, 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'] Number of rows: 9659 Number of columns: 13
In both datasets, we also found that there are some apps with names that suggest they are not designed for an English-speaking audience.
Because we use English for the apps we develop at our company, we'd like to analyze only the apps that are designed for an English_speaking audience.
To remove these kind of apps, one way to do this is to remove each app whose name contains a symbol that is not commonly used in English text — English text usually includes letters from the English alphabet, numbers composed of digits from 0 to 9, punctuation marks (., !, ?, ;, etc.), and other symbols (+, * , /, etc.).
All these characters that are specific to English texts are encoded using the ASCII standard. Each ASCII character has a corresponding number between 0 and 127 associated with it, and we can take advantage of that to build a function that checks an app name and tells us whether it contains non-ASCII characters.
We built the is_English_app() function below, and we used the built-in ord() function to find out the corresponding encoding number of each character.
def is_English_app(string):
for character in string:
if ord(character) > 127:
return False
return True
We used below English and non-English app names to examine whether the it_is_English() function can check the app names properly:
print(is_English_app('Instagram'))
print(is_English_app('爱奇艺PPS -《欢乐颂2》电视剧热播'))
print(is_English_app('Docs To Go™ Free Office Suite'))
print(is_English_app('Instachat 😜'))
True False False False
print(is_English_app('™'))
print(is_English_app('😜'))
print(ord('™'))
print(ord('😜'))
False False 8482 128540
From the above tests, we found that the is_English_app() function cannot correctly identify certain English app names, which have emojis or other symbols (™, — (em dash), – (en dash), etc.) that fall outside of the ASCII range and have corresponding numbers over 127. Because of this, we might remove some English apps if we use the function in its current form.
To minimize the impact of data loss, we thought the code could be designed to only remove an app if its name has more than three characters with corresponding numbers falling outside the ASCII range. This means all English apps with up to three emoji or other special characters will still be labeled as English. This filter function might be not still perfect, but it should be fairly effective.
def is_English_app(string):
non_English_character_number = 0
for character in string:
if ord(character) > 127:
non_English_character_number += 1
if non_English_character_number > 3:
return False
else:
return True
print(is_English_app('Docs To Go™ Free Office Suite'))
print(is_English_app('Instachat 😜'))
print(is_English_app('爱奇艺PPS -《欢乐颂2》电视剧热播'))
True True False
ios_English_only = []
android_English_only = []
for app in ios:
name = app[1]
if is_English_app(name):
ios_English_only.append(app)
for app in android_clean:
name = app[0]
if is_English_app(name):
android_English_only.append(app)
explore_data(ios_English_only, 0, 2, True)
['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'] Number of rows: 6183 Number of columns: 16
explore_data(android_English_only, 0, 2, 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'] Number of rows: 9614 Number of columns: 13
After removing non-English apps, we found that there are 6183 apps left in iOS data set and 9614 apps left in Android data set.
As mentioned in the introduction, our company only build apps that are free to download and install, and our main source of revenue consists of in-app ads. The two datasets contain both free and non-free apps,so only the free apps need to be isolated for our further analysis.
print('ios_header=')
print(ios_header)
print('\n')
print('android_header=')
print(android_header)
ios_header= ['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'] android_header= ['App', 'Category', 'Rating', 'Reviews', 'Size', 'Installs', 'Type', 'Price', 'Content Rating', 'Genres', 'Last Updated', 'Current Ver', 'Android Ver']
ios_free_only = []
android_free_only = []
for app in ios_English_only:
price = app[4]
if price == '0.0':
ios_free_only.append(app)
for app in android_English_only:
price = app[7]
if price == '0':
android_free_only.append(app)
explore_data(ios_free_only, 0, 2, True)
['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'] Number of rows: 3222 Number of columns: 16
explore_data(android_free_only, 0, 2, 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'] Number of rows: 8864 Number of columns: 13
After removing non-free-English apps, we found that there are 3222 apps left in iOS data set and 8864 apps left in Android data set.
As mentioned in the introduction, the goal of our analysis is to determine the types of apps that are likely to attract more users because the number of people using the apps affect the company's revenue.
To minimize risks and overhead, the validation strategy for an app idea has three steps:
Because the company's end goal is to add the app on both the App Store and Google Play, it needs to find app profiles that are successful on both markets. For instance, a profile that might work well for both markets might be a productivity app that makes use of gamification.
The analysis will be started from getting a sense of the most common genres for each market. For this, a frequency table for the prime_genre column of the App Store data set, and the Genres and Category columns of the Google Play data set will need to be built.
Firstly, we built the below two functions to analyze the frequency tables:
def freq_table(dataset, index):
freq_table = {}
total = 0
for row in dataset:
value = row[index]
total +=1
if value in freq_table:
freq_table[value] += 1
else:
freq_table[value] = 1
freq_table_percentage = {}
for key in freq_table:
percentage = (freq_table[key] / total) *100
freq_table_percentage[key] = percentage
return freq_table_percentage
def display_table(dataset, index):
table = freq_table(dataset, index)
table_display = []
for key in table:
key_val_as_tuple = (table[key], key)
table_display.append(key_val_as_tuple)
table_sorted = sorted(table_display, reverse = True)
for entry in table_sorted:
print(entry[1], ':', entry[0])
Analysing the frequency table for the prime_genre column of the App Store dataset.
display_table(ios_free_only, 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
In the above frequency table, it shows that among the free English apps, more than a half (58.16%) are game apps. Entertainment apps are close to 8%, followed by photo and video apps, which are close to 5%. Only 3.66% of the apps are designed for education, followed by social networking apps which amount for 3.29% of the apps in our data set.
The general impression from this frequency table analysis is that App Store (at least the part containing free English apps) is dominated by apps that are designed for fun (games, entertainment, photo and video, social networking, sports, music, etc.), while apps with practical purposes (education, shopping, utilities, productivity, lifestyle, etc.) are more rare. However, the fact that fun apps are the most numerous doesn't imply that they also have the greatest number of users — the demand might not be the same as the offer.
Analysing the frequency table for the Category and Genres column of the Google Play dataset.
A. The frequency table for the Category column.
display_table(android_free_only, 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
This frequency table made by the Category column shows significantly different on Google Play:
B. The frequency table for the Genres column.
display_table(android_free_only, 9)
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 frequency table mady by the Genres column shows that the difference between the Genres and the Category columns is not clear, however, the Genres column is more details becuase it shows more categories. However, looking for the bigger picture is more efficient at this point,so we decided to focus on the Category column for the further analysis.
The So far frequency table analysis of the most common apps shows that the App Store is dominated by apps designed for fun, while Google Play shows a more balanced landscape of both practical and for-fun apps.
In the next step, it is worth to know which types of apps that are most populer with the most users.
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, this information can be found in the Installs column, but this information is missing for the App Store data set. As a workaround, we thought the total number of user ratings can be used as a proxy, which we can find in the rating_count_tot app.
We began the analysis with calculating the average number of user ratings per app genre on the App Store. To do that, we'll need to do the following:
display_table(ios_free_only, 11)
prime_genre_freq_table = freq_table(ios_free_only, 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
for genre in prime_genre_freq_table:
total = 0
len_genre = 0
for app in ios_free_only:
genre_app = app[11]
if genre_app == genre:
rating_count_tot = float(app[5])
total += rating_count_tot
len_genre +=1
average_rating = total / len_genre
prime_genre_freq_table[genre] = average_rating
print(genre, ':', average_rating)
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
From the above frequency table analysis, it shows that, navigation apps have the highest number of user rating (reviews) on average.
To further look at which apps are more popular in this navigation apps, it shows that this average rating is heavily influenced by Waze and Google Maps, which have close to half a million user reviews together.
for app in ios_free_only:
genre_app = app[11]
if genre_app == '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
The same pattern applies to social networking apps, where the average number is heavily influenced by a few giants like Facebook, Pinterest, Skype, etc. Same applies to music apps, where a few big players like Pandora, Spotify, and Shazam heavily influence the average number.
for app in ios_free_only:
genre_app = app[11]
if genre_app == 'Social Networking':
print(app[1], ':', app[5])
Facebook : 2974676 Pinterest : 1061624 Skype for iPhone : 373519 Messenger : 351466 Tumblr : 334293 WhatsApp Messenger : 287589 Kik : 260965 ooVoo – Free Video Call, Text and Voice : 177501 TextNow - Unlimited Text + Calls : 164963 Viber Messenger – Text & Call : 164249 Followers - Social Analytics For Instagram : 112778 MeetMe - Chat and Meet New People : 97072 We Heart It - Fashion, wallpapers, quotes, tattoos : 90414 InsTrack for Instagram - Analytics Plus More : 85535 Tango - Free Video Call, Voice and Chat : 75412 LinkedIn : 71856 Match™ - #1 Dating App. : 60659 Skype for iPad : 60163 POF - Best Dating App for Conversations : 52642 Timehop : 49510 Find My Family, Friends & iPhone - Life360 Locator : 43877 Whisper - Share, Express, Meet : 39819 Hangouts : 36404 LINE PLAY - Your Avatar World : 34677 WeChat : 34584 Badoo - Meet New People, Chat, Socialize. : 34428 Followers + for Instagram - Follower Analytics : 28633 GroupMe : 28260 Marco Polo Video Walkie Talkie : 27662 Miitomo : 23965 SimSimi : 23530 Grindr - Gay and same sex guys chat, meet and date : 23201 Wishbone - Compare Anything : 20649 imo video calls and chat : 18841 After School - Funny Anonymous School News : 18482 Quick Reposter - Repost, Regram and Reshare Photos : 17694 Weibo HD : 16772 Repost for Instagram : 15185 Live.me – Live Video Chat & Make Friends Nearby : 14724 Nextdoor : 14402 Followers Analytics for Instagram - InstaReport : 13914 YouNow: Live Stream Video Chat : 12079 FollowMeter for Instagram - Followers Tracking : 11976 LINE : 11437 eHarmony™ Dating App - Meet Singles : 11124 Discord - Chat for Gamers : 9152 QQ : 9109 Telegram Messenger : 7573 Weibo : 7265 Periscope - Live Video Streaming Around the World : 6062 Chat for Whatsapp - iPad Version : 5060 QQ HD : 5058 Followers Analysis Tool For Instagram App Free : 4253 live.ly - live video streaming : 4145 Houseparty - Group Video Chat : 3991 SOMA Messenger : 3232 Monkey : 3060 Down To Lunch : 2535 Flinch - Video Chat Staring Contest : 2134 Highrise - Your Avatar Community : 2011 LOVOO - Dating Chat : 1985 PlayStation®Messages : 1918 BOO! - Video chat camera with filters & stickers : 1805 Qzone : 1649 Chatous - Chat with new people : 1609 Kiwi - Q&A : 1538 GhostCodes - a discovery app for Snapchat : 1313 Jodel : 1193 FireChat : 1037 Google Duo - simple video calling : 1033 Fiesta by Tango - Chat & Meet New People : 885 Google Allo — smart messaging : 862 Peach — share vividly : 727 Hey! VINA - Where Women Meet New Friends : 719 Battlefield™ Companion : 689 All Devices for WhatsApp - Messenger for iPad : 682 Chat for Pokemon Go - GoChat : 500 IAmNaughty – Dating App to Meet New People Online : 463 Qzone HD : 458 Zenly - Locate your friends in realtime : 427 League of Legends Friends : 420 豆瓣 : 407 Candid - Speak Your Mind Freely : 398 知乎 : 397 Selfeo : 366 Fake-A-Location Free ™ : 354 Popcorn Buzz - Free Group Calls : 281 Fam — Group video calling for iMessage : 279 QQ International : 274 Ameba : 269 SoundCloud Pulse: for creators : 240 Tantan : 235 Cougar Dating & Life Style App for Mature Women : 213 Rawr Messenger - Dab your chat : 180 WhenToPost: Best Time to Post Photos for Instagram : 158 Inke—Broadcast an amazing life : 147 Mustknow - anonymous video Q&A : 53 CTFxCmoji : 39 Lobi : 36 Chain: Collaborate On MyVideo Story/Group Video : 35 botman - Real time video chat : 7 BestieBox : 0 MATCH ON LINE chat : 0 niconico ch : 0 LINE BLOG : 0 bit-tube - Live Stream Video Chat : 0
for app in ios_free_only:
genre_app = app[11]
if genre_app == 'Music':
print(app[1], ':', app[5])
Pandora - Music & Radio : 1126879 Spotify Music : 878563 Shazam - Discover music, artists, videos & lyrics : 402925 iHeartRadio – Free Music & Radio Stations : 293228 SoundCloud - Music & Audio : 135744 Magic Piano by Smule : 131695 Smule Sing! : 119316 TuneIn Radio - MLB NBA Audiobooks Podcasts Music : 110420 Amazon Music : 106235 SoundHound Song Search & Music Player : 82602 Sonos Controller : 48905 Bandsintown Concerts : 30845 Karaoke - Sing Karaoke, Unlimited Songs! : 28606 My Mixtapez Music : 26286 Sing Karaoke Songs Unlimited with StarMaker : 26227 Ringtones for iPhone & Ringtone Maker : 25403 Musi - Unlimited Music For YouTube : 25193 AutoRap by Smule : 18202 Spinrilla - Mixtapes For Free : 15053 Napster - Top Music & Radio : 14268 edjing Mix:DJ turntable to remix and scratch music : 13580 Free Music - MP3 Streamer & Playlist Manager Pro : 13443 Free Piano app by Yokee : 13016 Google Play Music : 10118 Certified Mixtapes - Hip Hop Albums & Mixtapes : 9975 TIDAL : 7398 YouTube Music : 7109 Nicki Minaj: The Empire : 5196 Sounds app - Music And Friends : 5126 SongFlip - Free Music Streamer : 5004 Simple Radio - Live AM & FM Radio Stations : 4787 Deezer - Listen to your Favorite Music & Playlists : 4677 Ringtones for iPhone with Ringtone Maker : 4013 Bose SoundTouch : 3687 Amazon Alexa : 3018 DatPiff : 2815 Trebel Music - Unlimited Music Downloader : 2570 Free Music Play - Mp3 Streamer & Player : 2496 Acapella from PicPlayPost : 2487 Coach Guitar - Lessons & Easy Tabs For Beginners : 2416 Musicloud - MP3 and FLAC Music Player for Cloud Platforms. : 2211 Piano - Play Keyboard Music Games with Magic Tiles : 1636 Boom: Best Equalizer & Magical Surround Sound : 1375 Music Freedom - Unlimited Free MP3 Music Streaming : 1246 AmpMe - A Portable Social Party Music Speaker : 1047 Medly - Music Maker : 933 Bose Connect : 915 Music Memos : 909 UE BOOM : 612 LiveMixtapes : 555 NOISE : 355 MP3 Music Player & Streamer for Clouds : 329 Musical Video Maker - Create Music clips lip sync : 320 Cloud Music Player - Downloader & Playlist Manager : 319 Remixlive - Remix loops with pads : 288 QQ音乐HD : 224 Blocs Wave - Make & Record Music : 158 PlayGround • Music At Your Fingertips : 150 Music and Chill : 135 The Singing Machine Mobile Karaoke App : 130 radio.de - Der Radioplayer : 64 Free Music - Player & Streamer for Dropbox, OneDrive & Google Drive : 46 NRJ Radio : 38 Smart Music: Streaming Videos and Radio : 17 BOSS Tuner : 13 PetitLyrics : 0
The aim of our data analysis is to find out the popular genres, but navigation, social networking or music apps might looks more popular than they really are. The average number of ratings seem to be skewed by very few gaint apps which have hundreds of thousands of user ratings, while the other apps may struggle to get past the 10,000 threshold. it could be a better picture if we remove these extremely popular apps for each genre and then rework the averages, but we'll leave this level of detail for later.
The same thing happens to the Reference apps which have 74,942 user ratings on average, but it's actually the Bible and Dictionary.com which skew up the average rating:
for app in ios_free_only:
genre_app = app[11]
if genre_app == 'Reference':
print(app[1], ':', app[5])
Bible : 985920 Dictionary.com Dictionary & Thesaurus : 200047 Dictionary.com Dictionary & Thesaurus for iPad : 54175 Google Translate : 26786 Muslim Pro: Ramadan 2017 Prayer Times, Azan, Quran : 18418 New Furniture Mods - Pocket Wiki & Game Tools for Minecraft PC Edition : 17588 Merriam-Webster Dictionary : 16849 Night Sky : 12122 City Maps for Minecraft PE - The Best Maps for Minecraft Pocket Edition (MCPE) : 8535 LUCKY BLOCK MOD ™ for Minecraft PC Edition - The Best Pocket Wiki & Mods Installer Tools : 4693 GUNS MODS for Minecraft PC Edition - Mods Tools : 1497 Guides for Pokémon GO - Pokemon GO News and Cheats : 826 WWDC : 762 Horror Maps for Minecraft PE - Download The Scariest Maps for Minecraft Pocket Edition (MCPE) Free : 718 VPN Express : 14 Real Bike Traffic Rider Virtual Reality Glasses : 8 教えて!goo : 0 Jishokun-Japanese English Dictionary & Translator : 0
However, the Reference apps seems to show some potential. One thing we could do is take another popular book and turn it into an app where we could add different features besides the raw version of the book. This might include daily quotes from the book, an audio version of the book, quizzes about the book, etc. On top of that, we could also embed a dictionary within the app, so users don't need to exit our app to look up words in an external app.
This idea seems to fit well with the fact that the App Store is dominated by for-fun apps. This suggests the market might be a bit saturated with for-fun apps, which means a practical app might have more of a chance to stand out among the huge number of apps on the App Store.
Other genres that seem popular include weather, book, food and drink, or finance. The book genre seem to overlap a bit with the app idea we described above, but the other genres don't seem too interesting to us:
Weather apps — people generally don't spend too much time in-app, and the chances of making profit from in-app adds are low. Also, getting reliable live weather data may require us to connect our apps to non-free APIs.
Food and drink — examples here include Starbucks, Dunkin' Donuts, McDonald's, etc. So making a popular food and drink app requires actual cooking and a delivery service, which is outside the scope of our company.
Finance apps — these apps involve banking, paying bills, money transfer, etc. Building a finance app requires domain knowledge, and we don't want to hire a finance expert just to build an app.
By now, we came up with an app profile recommendation for the App Store based on the number of user ratings. We have data about the number of installs for the Google Play market, so we should be able to get a clearer picture about genre popularity. However, the install numbers don't seem precise enough — we can see that most values are open-ended (100+, 1,000+, 5,000+, etc.):
display_table(android_free_only,5) #index=5, the installs columns
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
From this data, we didn't know whether an app with 100,000+ installs has 100,000 installs, 200,000, or 350,000. However, we only looked for the most attractive app genres from the analysis, so we didn't need very precise data by now.
We decided to leave the numbers as they are, and to 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, we firstly needed to convert each install number from a string to a float by removing the commas and the plus characters.
display_table(android_free_only, 1)
prime_category_freq_table = freq_table(android_free_only, 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
for genre in prime_category_freq_table:
total = 0
len_genre = 0
for app in android_free_only:
category_app = app[1]
if category_app == genre:
installs_str1 = app[5].replace('+','')
installs_str2 = installs_str1.replace(',','')
installs_number = float(installs_str2)
total += installs_number
len_genre +=1
average_installs = total / len_genre
prime_category_freq_table[genre] = average_installs
print(genre, ':', average_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
From the above analysis, we noticed that, on average, communication apps have the most installs: 38,456,119. This number is heavily influenced by a few gaint apps that have over one billion installs (WhatsApp, Facebook Messenger, Skype, Google Chrome, Gmail, and Hangouts), and a few other apps with over 100 and 500 million installs:
for app in android_free_only:
if app[1] == 'COMMUNICATION' and (app[5] == '1,000,000,000+'):
print(app[0], ':', app[5])
WhatsApp Messenger : 1,000,000,000+ Messenger – Text and Video Chat for Free : 1,000,000,000+ Skype - free IM & video calls : 1,000,000,000+ Google Chrome: Fast & Secure : 1,000,000,000+ Gmail : 1,000,000,000+ Hangouts : 1,000,000,000+
for app in android_free_only:
if app[1] == 'COMMUNICATION' and (app[5] == '500,000,000+'
or app[5] == '100,000,000+'):
print(app[0], ':', app[5])
imo beta free calls and text : 100,000,000+ Android Messages : 100,000,000+ Google Duo - High Quality Video Calls : 500,000,000+ imo free video calls and chat : 500,000,000+ Who : 100,000,000+ GO SMS Pro - Messenger, Free Themes, Emoji : 100,000,000+ LINE: Free Calls & Messages : 500,000,000+ Firefox Browser fast & private : 100,000,000+ UC Browser - Fast Download Private & Secure : 500,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+
If we removed all the communication apps that have over 100 million installs, the average would be reduced more than ten times:
under_100_m_apps = []
for app in android_free_only:
installs_str1 = app[5].replace(',', '')
installs_str2 = installs_str1.replace('+', '')
installs_number = float(installs_str2)
if (app[1] == 'COMMUNICATION') and (installs_number < 100000000):
under_100_m_apps.append(installs_number)
print(sum(under_100_m_apps) / len(under_100_m_apps))
3603485.3884615386
The second most installs are video players apps: 24,727,872. We found that the video players category has the same pattern that the market is also dominated by the gaint apps like Youtube, Google Play Movies & TV, or MX Player.
for app in android_free_only:
if app[1] == 'VIDEO_PLAYERS' and (app[5] == '1,000,000,000+'
or app[5] == '500,000,000+'
or app[5] == '100,000,000+'):
print(app[0], ':', app[5])
YouTube : 1,000,000,000+ Motorola Gallery : 100,000,000+ VLC for Android : 100,000,000+ Google Play Movies & TV : 1,000,000,000+ MX Player : 500,000,000+ Dubsmash : 100,000,000+ VivaVideo - Video Editor & Photo Movie : 100,000,000+ VideoShow-Video Editor, Video Maker, Beauty Camera : 100,000,000+ Motorola FM Radio : 100,000,000+
The same pattern is also found in social apps, which is the third most installed apps (where we have big apps like Facebook, Instagram, Google+, etc.), in photography apps (Google Photos and other popular photo editors), and in productivity apps (Microsoft Word, Dropbox, Google Calendar, Evernote, etc.).
for app in android_free_only:
if app[1] == 'SOCIAL' and (app[5] == '1,000,000,000+'
or app[5] == '500,000,000+'
or app[5] == '100,000,000+'):
print(app[0], ':', app[5])
Facebook : 1,000,000,000+ Facebook Lite : 500,000,000+ Tumblr : 100,000,000+ Pinterest : 100,000,000+ Google+ : 1,000,000,000+ Badoo - Free Chat & Dating App : 100,000,000+ Tango - Live Video Broadcast : 100,000,000+ Instagram : 1,000,000,000+ Snapchat : 500,000,000+ LinkedIn : 100,000,000+ Tik Tok - including musical.ly : 100,000,000+ BIGO LIVE - Live Stream : 100,000,000+ VK : 100,000,000+
for app in android_free_only:
if app[1] == 'PHOTOGRAPHY' and (app[5] == '1,000,000,000+'
or app[5] == '500,000,000+'
or app[5] == '100,000,000+'):
print(app[0], ':', app[5])
B612 - Beauty & Filter Camera : 100,000,000+ YouCam Makeup - Magic Selfie Makeovers : 100,000,000+ Sweet Selfie - selfie camera, beauty cam, photo edit : 100,000,000+ Google Photos : 1,000,000,000+ Retrica : 100,000,000+ Photo Editor Pro : 100,000,000+ BeautyPlus - Easy Photo Editor & Selfie Camera : 100,000,000+ PicsArt Photo Studio: Collage Maker & Pic Editor : 100,000,000+ Photo Collage Editor : 100,000,000+ Z Camera - Photo Editor, Beauty Selfie, Collage : 100,000,000+ PhotoGrid: Video & Pic Collage Maker, Photo Editor : 100,000,000+ Candy Camera - selfie, beauty camera, photo editor : 100,000,000+ YouCam Perfect - Selfie Photo Editor : 100,000,000+ Camera360: Selfie Photo Editor with Funny Sticker : 100,000,000+ S Photo Editor - Collage Maker , Photo Collage : 100,000,000+ AR effect : 100,000,000+ Cymera Camera- Photo Editor, Filter,Collage,Layout : 100,000,000+ LINE Camera - Photo editor : 100,000,000+ Photo Editor Collage Maker Pro : 100,000,000+
for app in android_free_only:
if app[1] == 'PRODUCTIVITY' and (app[5] == '1,000,000,000+'
or app[5] == '500,000,000+'
or app[5] == '100,000,000+'):
print(app[0], ':', app[5])
Microsoft Word : 500,000,000+ Microsoft Outlook : 100,000,000+ Microsoft OneDrive : 100,000,000+ Microsoft OneNote : 100,000,000+ Google Keep : 100,000,000+ ES File Explorer File Manager : 100,000,000+ Dropbox : 500,000,000+ Google Docs : 100,000,000+ Microsoft PowerPoint : 100,000,000+ Samsung Notes : 100,000,000+ SwiftKey Keyboard : 100,000,000+ Google Drive : 1,000,000,000+ Adobe Acrobat Reader : 100,000,000+ Google Sheets : 100,000,000+ Microsoft Excel : 100,000,000+ WPS Office - Word, Docs, PDF, Note, Slide & Sheet : 100,000,000+ Google Slides : 100,000,000+ ColorNote Notepad Notes : 100,000,000+ Evernote – Organizer, Planner for Notes & Memos : 100,000,000+ Google Calendar : 500,000,000+ Cloud Print : 500,000,000+ CamScanner - Phone PDF Creator : 100,000,000+
The analysis of the Google Play data brings the main concern that these app genres might seem more popular than they really are. Moreover, these genres seem to be dominated by a few giant apps who are hard to compete against.
The books and reference genre looks fairly popular as well, with an average number of installs of 8,767,811. It's interesting to explore this in more depth, since we found this genre has some potential to work well on the App Store, and our aim is to recommend an app genre that shows potential for being profitable on both the App Store and Google Play.
Let's take a look at the apps from this genre and their number of installs:
for app in android_free_only:
if app[1] == 'BOOKS_AND_REFERENCE':
print(app[0], ':', app[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+
The book and reference genre includes a variety of apps: software for processing and reading ebooks, various collections of libraries, dictionaries, tutorials on programming or languages, etc. It seems there's still a small number of extremely popular apps that skew the average:
for app in android_free_only:
if app[1] == 'BOOKS_AND_REFERENCE' and (app[5] == '1,000,000,000+'
or app[5] == '500,000,000+'
or app[5] == '100,000,000+'):
print(app[0], ':', app[5])
Google Play Books : 1,000,000,000+ Bible : 100,000,000+ Amazon Kindle : 100,000,000+ Wattpad 📖 Free Books : 100,000,000+ Audiobooks from Audible : 100,000,000+
After comparing with the top installed app categories, we found there are only a few very popular apps, so this market still shows potential. Let's try to get some app ideas based on the kind of apps that are somewhere in the middle in terms of popularity (between 1,000,000 and 100,000,000 downloads)
for app in android_free_only:
if app[1] == 'BOOKS_AND_REFERENCE' 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])
Wikipedia : 10,000,000+ Cool Reader : 10,000,000+ Book store : 1,000,000+ FBReader: Favorite Book Reader : 10,000,000+ Free Books - Spirit Fanfiction and Stories : 1,000,000+ AlReader -any text book reader : 5,000,000+ FamilySearch Tree : 1,000,000+ Cloud of Books : 1,000,000+ ReadEra – free ebook reader : 1,000,000+ Ebook Reader : 5,000,000+ Read books online : 5,000,000+ eBoox: book reader fb2 epub zip : 1,000,000+ All Maths Formulas : 1,000,000+ Ancestry : 5,000,000+ HTC Help : 10,000,000+ Moon+ Reader : 10,000,000+ English-Myanmar Dictionary : 1,000,000+ Golden Dictionary (EN-AR) : 1,000,000+ All Language Translator Free : 1,000,000+ Aldiko Book Reader : 10,000,000+ Dictionary - WordWeb : 5,000,000+ 50000 Free eBooks & Free AudioBooks : 5,000,000+ Al-Quran (Free) : 10,000,000+ Al Quran Indonesia : 10,000,000+ Al'Quran Bahasa Indonesia : 10,000,000+ Al Quran Al karim : 1,000,000+ Al Quran : EAlim - Translations & MP3 Offline : 5,000,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+ Satellite AR : 1,000,000+ Oxford A-Z of English Usage : 1,000,000+ Dictionary.com: Find Definitions for English Words : 10,000,000+ English Dictionary - Offline : 10,000,000+ Bible KJV : 5,000,000+ NOOK: Read eBooks & Magazines : 10,000,000+ Brilliant Quotes: Life, Love, Family & Motivation : 1,000,000+ Stats Royale for Clash Royale : 1,000,000+ Dictionary : 10,000,000+ wikiHow: how to do anything : 1,000,000+ EGW Writings : 1,000,000+ My Little Pony AR Guide : 1,000,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+
The above analysis shows that this niche (between 1,000,000 and 100,000,000 downloads) seems to be dominated by software for processing and reading ebooks, as well as various collections of libraries and dictionaries, so it's probably not a good idea to build similar apps since there'll be some significant competition.
We also notice there are quite a few apps built around the book Quran, which suggests that building an app around a popular book can be profitable. It seems that taking a popular book (perhaps a more recent book) and turning it into an app could be profitable for both the Google Play and the App Store markets.
However, it looks like the market is already full of libraries, so we need to add some special features besides the raw version of the book. This might include daily quotes from the book, an audio version of the book, quizzes on the book, a forum where people can discuss the book, etc.
In this analysis, 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.
We concluded that taking a popular book (perhaps a more recent book) and turning it into an app could be profitable for both Google Play and App Store markets. The markets are already full of libraries, so we need to add some special features besides the raw version of the book. This might include daily quotes from the book, an audio version of the book, quizzes on the book, a forum where people can discuss the book, etc.