[PROJETO] Analisando Dados da App Store e Google Play - Parte II
Tags: python, analytics, beginners, programming
Published: 2022-01-28 14:27:01

Todo o conteúdo deste projeto pode ser encontrado no meu repositório do GitHub. Para mais detalhes, [acesse o link](https://github.com/lis-r-barreto/Data-Engineering-Portfolio).

## **Aplicativos mais comuns por gênero**

### **Parte I**

Como mencionamos na introdução, nosso objetivo é determinar os tipos de aplicativos que provavelmente atrairão mais usuários, pois nossa receita é altamente influenciada pelo número de pessoas que usam nossos aplicativos.

Para minimizar riscos e sobrecarga, nossa estratégia de validação para uma ideia de aplicativo é composta de três etapas:

1. Crie uma versão Android mínima do aplicativo e adicione-a ao Google Play.
2. Se o aplicativo tiver uma boa resposta dos usuários, nós o desenvolveremos ainda mais.
3. Se o aplicativo for lucrativo após seis meses, também criamos uma versão iOS do aplicativo e a adicionamos à App Store.

Como nosso objetivo final é adicionar o aplicativo na App Store e no Google Play, precisamos encontrar perfis de aplicativos que tenham sucesso em ambos os mercados. Por exemplo, um perfil que pode funcionar bem para os dois mercados pode ser um aplicativo de produtividade que faz uso de gamificação.

Vamos começar a análise obtendo uma noção dos gêneros mais comuns para cada mercado. Para isso, construiremos uma tabela de frequência para a coluna `prime_genre` do conjunto de dados da App Store e as colunas` Genres` e `Category` do conjunto de dados do Google Play.


### **Parte II**

Vamos construir duas funções que podemos usar para analisar as tabelas de frequência:

- Uma função para gerar tabelas de frequência que mostram percentagens
- Outra função que podemos usar para exibir as porcentagens em ordem decrescente

```python
def freq_table(dataset, index):
    table = {}
    total = 0
    
    for row in dataset:
        total += 1
        value = row[index]
        if value in table:
            table[value] += 1
        else:
            table[value] = 1
    
    table_percentages = {}
    for key in table:
        percentage = (table[key] / total) * 100
        table_percentages[key] = percentage 
    
    return table_percentages


def display_table(dataset, index):
    table = freq_table(dataset, index)
    table_display = []
    for key in table:
        key_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])
```

### **Parte III**

Começamos examinando a tabela de frequência para a coluna `prime_genre` do conjunto de dados da App Store.

```python
display_table(ios_final, -5)
```

Podemos verificar que entre os aplicativos gratuitos em inglês, mais da metade (58,16%) são jogos. Os aplicativos de entretenimento estão perto de 8%, seguidos pelos aplicativos de foto e vídeo, que estão perto de 5%. Apenas 3,66% dos aplicativos são projetados para a educação, seguidos por aplicativos de redes sociais que somam 3,29% dos aplicativos em nosso conjunto de dados.

A impressão geral é que a App Store (pelo menos a parte que contém aplicativos em inglês gratuitos) é dominada por aplicativos que são projetados para se divertir (jogos, entretenimento, foto e vídeo, redes sociais, esportes, música, etc.), enquanto aplicativos com práticas propósitos (educação, compras, serviços públicos, produtividade, estilo de vida, etc.) são mais raros. No entanto, o fato de os aplicativos divertidos serem os mais numerosos também não significa que eles também tenham o maior número de usuários - a demanda pode não ser a mesma que a oferta.

Vamos continuar examinando as colunas `Genres` e` Category` do conjunto de dados do Google Play (duas colunas que parecem estar relacionadas).

```python
display_table(android_final, 1) # Category
```

O cenário parece significativamente diferente no Google Play: não existem muitos aplicativos projetados para se divertir, e parece que um bom número de aplicativos são projetados para fins práticos (família, ferramentas, negócios, estilo de vida, produtividade, etc.). No entanto, se investigarmos isso mais a fundo, podemos ver que a categoria família (que responde por quase 19% dos aplicativos) significa principalmente jogos para crianças.


<p align="center">
  <img src="https://s3.amazonaws.com/dq-content/350/py1m8_family.png">
</p>

Mesmo assim, os aplicativos práticos parecem ter uma melhor representação no Google Play em comparação com a App Store. Esta imagem também é confirmada pela tabela de frequência que vemos na coluna `Genres`:

```python
display_table(android_final, -4)
```

A diferença entre as colunas `Genres` e` Category` não é muito clara, mas uma coisa que podemos notar é que a coluna `Genres` é muito mais granular (tem mais categorias). No momento, estamos apenas procurando o panorama geral, então trabalharemos apenas com a coluna `Category` daqui para frente.

Até este ponto, descobrimos que a App Store é dominada por aplicativos projetados para diversão, enquanto o Google Play mostra um cenário mais equilibrado de aplicativos práticos e divertidos. Agora, gostaríamos de ter uma ideia sobre o tipo de aplicativo que tem a maioria dos usuários.

## **Aplicativos mais populares por gênero na App Store**

Uma maneira de descobrir quais gêneros são os mais populares (têm mais usuários) é calcular o número médio de instalações para cada gênero de aplicativo. Para o conjunto de dados do Google Play, podemos encontrar essas informações na coluna `Installs`, mas para o conjunto de dados da App Store, essas informações estão ausentes. Como solução alternativa, tomaremos o número total de classificações do usuário como um proxy, que podemos encontrar no aplicativo `rating_count_tot`.

Abaixo, calculamos o número médio de classificações de usuários por gênero de aplicativo na App Store:

```python
genres_ios = freq_table(ios_final, -5)

for genre in genres_ios:
    total = 0
    len_genre = 0
    for app in ios_final:
        genre_app = app[-5]
        if genre_app == genre:            
            n_ratings = float(app[5])
            total += n_ratings
            len_genre += 1
    avg_n_ratings = total / len_genre
    print(genre, ':', avg_n_ratings)
```
Em média, os aplicativos de navegação têm o maior número de avaliações de usuários, mas esse número é fortemente influenciado pelo Waze e pelo Google Maps, que têm quase meio milhão de avaliações de usuários juntas:

```python
for app in ios_final:
    if app[-5] == 'Navigation':
        print(app[1], ':', app[5]) # Imprime nome e número de avaliações
```

O mesmo padrão se aplica a aplicativos de redes sociais, onde o número médio é fortemente influenciado por alguns gigantes como Facebook, Pinterest, Skype, etc. O mesmo se aplica a aplicativos de música, onde alguns grandes jogadores como Pandora, Spotify e Shazam influenciam fortemente o número médio.

Nosso objetivo é encontrar gêneros populares, mas aplicativos de navegação, redes sociais ou música podem parecer mais populares do que realmente são. O número médio de classificações parece ser distorcido por muito poucos aplicativos que têm centenas de milhares de classificações de usuários, enquanto os outros aplicativos podem ter dificuldade em passar do limite de 10.000. Poderíamos ter uma imagem melhor removendo esses aplicativos extremamente populares para cada gênero e, em seguida, refazer as médias, mas deixaremos esse nível de detalhe para mais tarde.

Os aplicativos de referência têm 74.942 avaliações de usuários em média, mas na verdade são a Bíblia e o Dictionary.com que elevam a avaliação média:

```python
for app in ios_final:
    if app[-5] == 'Reference':
        print(app[1], ':', app[5])
```

No entanto, esse nicho parece apresentar algum potencial. Uma coisa que poderíamos fazer é pegar outro livro popular e transformá-lo em um aplicativo onde poderíamos adicionar diferentes recursos além da versão bruta do livro. Isso pode incluir citações diárias do livro, uma versão em áudio do livro, questionários sobre o livro, etc. Além disso, também podemos incorporar um dicionário dentro do aplicativo, para que os usuários não precisem sair de nosso aplicativo para olhar palavras em um aplicativo externo.

Essa ideia parece se encaixar bem com o fato de que a App Store é dominada por aplicativos para diversão. Isso sugere que o mercado pode estar um pouco saturado com aplicativos divertidos, o que significa que um aplicativo prático pode ter mais chance de se destacar entre o grande número de aplicativos na App Store.

Outros gêneros que parecem populares incluem clima, livro, comida e bebida ou finanças. O gênero do livro parece se sobrepor um pouco à ideia do aplicativo que descrevemos acima, mas os outros gêneros não nos parecem muito interessantes:

- Aplicativos de clima - as pessoas geralmente não passam muito tempo no aplicativo e as chances de lucrar com adições no aplicativo são baixas. Além disso, obter dados meteorológicos confiáveis ​​ao vivo pode exigir que conectemos nossos aplicativos a APIs não livres.

- Alimentos e bebidas - os exemplos aqui incluem Starbucks, Dunkin 'Donuts, McDonald's, etc. Portanto, fazer um aplicativo popular de comida e bebida requer uma cozinha real e um serviço de entrega, o que está fora do escopo de nossa empresa.

- Aplicativos de finanças - esses aplicativos envolvem serviços bancários, pagamento de contas, transferência de dinheiro, etc. Construir um aplicativo de finanças requer conhecimento de domínio e não queremos contratar um especialista em finanças apenas para construir um aplicativo.

Agora vamos analisar um pouco o mercado do Google Play.

## **Aplicativos mais populares por gênero no Google Play**

Para o mercado do Google Play, temos dados sobre o número de instalações, então devemos ser capazes de ter uma ideia mais clara sobre a popularidade do gênero. No entanto, os números de instalação não parecem precisos o suficiente - podemos ver que a maioria dos valores é aberta (100+, 1.000+, 5.000+, etc.):

```python
display_table(android_final, 5) # A coluna 'Installs'
```

Um problema com esses dados é que não são precisos. Por exemplo, não sabemos se um aplicativo com mais de 100.000 instalações possui 100.000 instalações, 200.000 ou 350.000. No entanto, não precisamos de dados muito precisos para nossos propósitos - queremos apenas ter uma ideia de quais gêneros de aplicativos atraem mais usuários e não precisamos de precisão perfeita com relação ao número de usuários.

Vamos deixar os números como estão, o que significa que consideraremos que um aplicativo com mais de 100.000 instalações tem 100.000 instalações e um aplicativo com mais de 1.000.000 de instalações tem 1.000.000 de instalações e assim por diante.

Para realizar cálculos, no entanto, precisaremos converter cada número de instalação em `float` - isso significa que precisamos remover as vírgulas e os caracteres de adição, caso contrário, a conversão falhará e gerará um erro. Faremos isso diretamente no loop abaixo, onde também calculamos o número médio de instalações para cada gênero (categoria).

```python
categories_android = freq_table(android_final, 1)

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

Em média, os aplicativos de comunicação têm o maior número de instalações: 38.456.119. Este número é fortemente distorcido por alguns aplicativos que têm mais de um bilhão de instalações (WhatsApp, Facebook Messenger, Skype, Google Chrome, Gmail e Hangouts) e alguns outros com mais de 100 e 500 milhões de instalações:

```python
for app in android_final:
    if app[1] == 'COMMUNICATION' and (app[5] == '1,000,000,000+'
                                      or app[5] == '500,000,000+'
                                      or app[5] == '100,000,000+'):
        print(app[0], ':', app[5])
```

Se removêssemos todos os aplicativos de comunicação com mais de 100 milhões de instalações, a média seria reduzida cerca de dez vezes:

```python
under_100_m = []

for app in android_final:
    n_installs = app[5]
    n_installs = n_installs.replace(',', '')
    n_installs = n_installs.replace('+', '')
    if (app[1] == 'COMMUNICATION') and (float(n_installs) < 100000000):
        under_100_m.append(float(n_installs))
        
sum(under_100_m) / len(under_100_m)
```

Vemos o mesmo padrão para a categoria de players de vídeo, que é a segunda colocada com 24.727.872 instalações. O mercado é dominado por aplicativos como Youtube, Google Play Filmes e TV ou MX Player. O padrão é repetido para aplicativos sociais (onde temos gigantes como Facebook, Instagram, Google+, etc.), aplicativos de fotografia (Google Fotos e outros editores de fotos populares) ou aplicativos de produtividade (Microsoft Word, Dropbox, Google Calendar, Evernote, etc. .).

Novamente, a principal preocupação é que esses gêneros de aplicativos possam parecer mais populares do que realmente são. Além disso, esses nichos parecem ser dominados por alguns gigantes contra os quais é difícil competir.

O gênero de jogo parece bastante popular, mas antes descobrimos que essa parte do mercado parece um pouco saturada, então gostaríamos de sugerir um aplicativo diferente, se possível.

Os livros e o gênero de referência também parecem bastante populares, com um número médio de instalações de 8.767.811. É interessante explorar isso com mais profundidade, pois descobrimos que esse gênero tem algum potencial para funcionar bem na App Store, e nosso objetivo é recomendar um gênero de aplicativo que mostra potencial para ser lucrativo tanto na App Store quanto no Google Play.

Vamos dar uma olhada em alguns dos aplicativos desse gênero e seu número de instalações:

```python
for app in android_final:
    if app[1] == 'BOOKS_AND_REFERENCE':
        print(app[0], ':', app[5])
```

O livro e o gênero de referência incluem uma variedade de aplicativos: software para processar e ler e-books, várias coleções de bibliotecas, dicionários, tutoriais sobre programação ou linguagens, etc. Parece que ainda há um pequeno número de aplicativos extremamente populares que distorcem a média:

```python
for app in android_final:
    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])
```

No entanto, parece que existem apenas alguns aplicativos muito populares, então este mercado ainda mostra potencial. Vamos tentar obter algumas ideias de aplicativos com base no tipo de aplicativo que está em algum lugar no meio em termos de popularidade (entre 1.000.000 e 100.000.000 de downloads):

```python
for app in android_final:
    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])
```

Este nicho parece ser dominado por software para processamento e leitura de e-books, bem como várias coleções de bibliotecas e dicionários, então provavelmente não é uma boa ideia construir aplicativos semelhantes, pois haverá uma concorrência significativa.

Também notamos que existem alguns aplicativos desenvolvidos em torno do livro Alcorão, o que sugere que construir um aplicativo em torno de um livro popular pode ser lucrativo. Parece que pegar um livro popular (talvez um livro mais recente) e transformá-lo em um aplicativo pode ser lucrativo para os mercados do Google Play e da App Store.

No entanto, parece que o mercado já está cheio de bibliotecas, então precisamos adicionar alguns recursos especiais além da versão bruta do livro. Isso pode incluir citações diárias do livro, uma versão em áudio do livro, questionários sobre o livro, um fórum onde as pessoas podem discutir o livro, etc.

## **Conclusões**

Neste projeto, analisamos dados sobre aplicativos móveis da App Store e Google Play com o objetivo de recomendar um perfil de aplicativo que possa ser lucrativo para ambos os mercados.

Concluímos que pegar um livro popular (talvez um livro mais recente) e transformá-lo em um aplicativo pode ser lucrativo para os mercados do Google Play e da App Store. Os mercados já estão cheios de bibliotecas, então precisamos adicionar alguns recursos especiais além da versão bruta do livro. Isso pode incluir citações diárias do livro, uma versão em áudio do livro, questionários sobre o livro, um fórum onde as pessoas possam discutir o livro, etc.


## **Referências**

**Este projeto guiado faz parte do [*Data Enginnering Carreer Path*](https://www.dataquest.io/path/data-engineer/) proposto pela**
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/q6iq3cl7ceknfm116uch.png)