Feedback needed on First Guided Project: Profitable apps

Hello All,

I have just completed my first guided project and can say this has been
a challenge.
The most difficult part is to put it all together and draw a conclusion.
Also, it feels like some visualization, charts, or graphs are needed to make a
project “speaking for itself”. I am at the beginning of the course and hope to get
some knowledge about visualization soon.

I looking forward to getting any feedback on this project to understand what I can do better.

Guided project :

Profitable Apps.ipynb (73.1 KB)

Click here to view the jupyter notebook file in a new tab


@Stas welcome :raised_hand_with_fingers_splayed: to the community. Congrats :handshake: on completing your project. I know the feeling you are talking about.

Don’t worry about it! You’ll get better as you do more projects. I absolutely appreciate the fact that you want to get more visualization done. I had the same feeling and I did do it later on my project.

Presentation Style
  • Once you are done with a project, make sure to re-run the entire project so that all the cells number correctly. It helps reviewers, refer to the correct cell. You can do it using the following:

  • In the introduction, where you give the links, you can avoid using the word Link and instead associate the link to the words Google Play Store and App Store.

  • I noticed that the subheadings after the heading Plan for analysis has the same size as the main heading. You could reduce the heading size by doing the following.

## 1. The Most Common Genres for each market

Check this for more ideas related to markdowns.

  • It’s usually best to round the average values using the np.round() functions so that the values are more presentable.
  • I really like how you’ve highlighted words in your text like this
    image. It really differentiates the categories from the rest of the text.
Coding Style
  • You’ve commented in great depth. This is commendable. This will help you a great deal going forward. I would recommend that you keep your comments right above your code, like below:
# average number of downloads per category
# dictionary inter_list contains categories as keys and average number 
# downloads as values     
  • This will help to easily understand the context of the code and the comment. You have done it already for some.
  • I have not checked your code, but since you have the output, I believe you are on the right track.
  • I hope to see your project with the visualization, especially since you are keen on it.

You are on the right track, and I’m sure you plan to re-do the project. Looking forward to seeing your projects. Great job and keep the ball rolling :basketball:

1 Like

@jesmaxavier Thanks a lot for your extensive and detailed feedback.
It is valuable to get such an expanded reply, especially at the beginning.
I will update my project as soon as I pick up some knowledge about visualization.

1 Like

I just finished this project, and I have to say great job! You’ve cleaned it up really well and explained everything nicely. I thought the extra analysis on the difference between categories of the 2 datasets was a great addition.

In the code below, there is an issue that would occur if there were multiple rows that had to be deleted.

for i in range(len(google)):
    if len(google[i])!=len(google_header): # Check if length of each entry does not coincide with length of the header
        print('Row ',i,' contains errors.')
        errors_g.append(i)                # In case of error saves the row number in list (errors_g)

for e in errors_g:                        # Loop over list (errors_g) 
    del google[e]                         # and delete rows containing failures from Google Play Market dataset
    print('Row ',e,' deleted')

When iterating over the error list, the indexes will change after each deleted row. This would cause rows with correct data to be deleted and rows with incorrect data to stay. This is demonstrated using the code below.

index_del_test = [0, 1, 2, 3, 4 ,5] # create list with index matching number
to_del = [1, 4] # create list for iterating to delete indexes

for num in to_del:
    print('Deleting index ' + str(num)) # shows the index to delete, should match number below
    print('Index ' + str(num) + '\'s value is ' + str(index_del_test[num])) # shows the value of the index, should match number above
    del index_del_test[num]

The output of the code is then

Deleting index 1
Index 1’s value is 1
Deleting index 4
Index 4’s value is 5

This did not affect the project since there was only one row to delete, but something to be aware of.

Overall, this looked fantastic, and is motivating me to improve my project now! Keep on learning and you’ll do amazing!


Thank you very much for taking the time to give feedback on my project.
It’s cool that you were able to analyze sections of the code and make valuable comments.
I will check the code one more time and make some improvements.