diff --git a/.gitignore b/.gitignore index 5422084..19203ba 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ .DS_Store -notebooks/EDA_tut01.ipynb \ No newline at end of file +notebooks/EDA_tut01.ipynb +notebooks/James Review.ipynb diff --git a/P01-Checking-Out-Our-Data/content.md b/P01-Checking-Out-Our-Data/content.md index aa1159f..6f3b2e4 100644 --- a/P01-Checking-Out-Our-Data/content.md +++ b/P01-Checking-Out-Our-Data/content.md @@ -1,8 +1,8 @@ -### Welcome to Part 1 of the tutorial series on basic exploratory data science! +### Welcome to Part 1 of the tutorial series on basic exploratory data science! -> NOTE: Add realistic scenario to connect to students. +> NOTE: Add realistic scenario to connect to students. -This tutorial is geared towards introductory data science students at the Make School Product College. +This tutorial is geared towards introductory data science students at the Make School Product College. You should have the following prerequisite skills: @@ -12,21 +12,24 @@ You should have the following prerequisite skills: You may realize as this course goes on that it does not have the same continuous project-based approach as many other Product College courses. -That's because this course is best taught by working through dataset after dataset. +That's because this course is best taught by working through dataset after dataset. -While you'll be able to apply data science skills into any app you build, it is not directly project-focused. +While you'll be able to apply data science skills into any app you build, it is not directly project-focused. --- For this tutorial, navigate to the `notebooks/ ` folder and create a new Jupyter notebook file. -In this course, you'll be working primarily with **Jupyter Notebooks**, a type of interactive Python simulations where you'll be able to easily manipulate, visualize, and model data. +> NOTE: How does one make a new jupyter notebook file? + + +In this course, you'll be working primarily with **Jupyter Notebooks**, a type of interactive Python simulations where you'll be able to easily manipulate, visualize, and model data.
### **EDA: Mobile App Data** -In this tutorial, we'll start you off with a nod towards our mobile developers and roots as a mobile game academy by exploring a **curated dataset on over 10k mobile apps** on the app store. +In this tutorial, we'll start you off with a nod towards our mobile developers and roots as a mobile game academy by exploring a **curated dataset on over 10k mobile apps** on the app store. Consider the following questions as you work through the tutorial: - What's the average byte size of mobile apps? @@ -34,21 +37,21 @@ Consider the following questions as you work through the tutorial: - How many mobile apps are games and what is the general categorical distribution of apps by genre? - What are the most popular mobile games by total popular rating? -As you complete the tutorial, **write down answers you find to these questions** and be sure to ask your own! +As you complete the tutorial, **write down answers you find to these questions** and be sure to ask your own! -A strong part of data science is being able to formulate critical questions based off of observations you see in unknown data. +A strong part of data science is being able to formulate critical questions based off of observations you see in unknown data. --- ##
Introduction
-Welcome to the first tutorial on Exploratory Data Analysis! +Welcome to the first tutorial on Exploratory Data Analysis! -In this tutorial, we'll quickly explore a simple dataset designed to cultivate your interest in extracting unique insights from data. +In this tutorial, we'll quickly explore a simple dataset designed to cultivate your interest in extracting unique insights from data. -As many of you are mobile developers, we'll be exploring the [App Store Mobile Apps](https://www.kaggle.com/ramamet4/app-store-apple-data-set-10k-apps/version/2) dataset from Kaggle! No need to download or set anything up; if you followed the setup instructions correctly, you should have the dataset already downloaded in your local directory! +As many of you are mobile developers, we'll be exploring the [App Store Mobile Apps](https://www.kaggle.com/ramamet4/app-store-apple-data-set-10k-apps/version/2) dataset from Kaggle! No need to download or set anything up; if you followed the setup instructions correctly, you should have the dataset already downloaded in your local directory! -We'll explore trends among mobile app data, including **most popular mobile apps/games**, **top rated games**, and **free vs. paid mobile apps**. +We'll explore trends among mobile app data, including **most popular mobile apps/games**, **top rated games**, and **free vs. paid mobile apps**. ### Before moving any further, ensure you have the following prerequisites met: - Anaconda Navigator installed and running successfully. @@ -58,6 +61,10 @@ We'll explore trends among mobile app data, including **most popular mobile apps Open up a Jupyter Notebook (See Tutorial 0 (link here) for setup instructions.) and enter the following into the first cell to set up our dependencies needed for basic data analysis and visualization. +> NOTE: I already set up anaconda, I don't want to look at that link again. Can't you just tell me how to open it? And also what notebook am I opening up? A picture or gif showing how to do this would be amazing. + +> NOTE: Also what is a cell anyway? + ```py # Pandas is a library for basic data analysis import pandas as pd @@ -76,6 +83,9 @@ Here, we run some basic setup for some visualization work in SeaBorn and MatPlot Don't worry about what this all means now: simply plug this into your next cell for some data visualization setup. +> NOTE: Tell the students about shift + enter to make a new cell + + ```py sns.set(style="white", context="notebook", palette="deep") @@ -84,6 +94,9 @@ COLOR_COLUMNS = ["#66C2FF", "#5CD6D6", "#00CC99", "#85E085", "#FFD966", "#FFB366 sns.set_palette(palette=COLOR_COLUMNS, n_colors=4) ``` +> NOTE: jupyter output says "name 'sns' is not defined" I thought seaborn was imported as sb + + ## Setting up our DataFrame ### NOTE: We'll be quickly reviewing some basic Bash commands in Jupyter. @@ -94,9 +107,9 @@ Here, we can use Bash commands preceded by a percentage sign (%) to check our cu % ls ``` -Next, we can run the following Bash command preceded by '%' to navigate to our raw data file. +Next, we can run the following Bash command preceded by '%' to navigate to our raw data file. -After running the next cell, run the previous cell to see reflected changes in the current directory location! +After running the next cell, run the previous cell to see reflected changes in the current directory location! ```py # NOTE: BASH COMMANDS IN JUPYTER (cont'd) @@ -106,7 +119,7 @@ After running the next cell, run the previous cell to see reflected changes i Sweet! Let's reset now. -Run the following command to navigate to the last location: the starting directory from where this notebook was launched. +Run the following command to navigate to the last location: the starting directory from where this notebook was launched. ```py % cd - @@ -127,9 +140,9 @@ Your output in Jupyter should be the following: ![screenshot01-dfhead](../media/screenshot01_dfhead.png?raw=true) -Look over the data as a whole and see if you can detect any interesting trends or patterns across the data. +Look over the data as a whole and see if you can detect any interesting trends or patterns across the data. -Some good questions to keep in mind: +Some good questions to keep in mind: - Any *convoluted* data? @@ -139,9 +152,9 @@ Some good questions to keep in mind: - Any data that's *difficult to understand*? -All these realizations from a quick glance at the information is crucial to establish a good relationship with your data at the start. +All these realizations from a quick glance at the information is crucial to establish a good relationship with your data at the start. -Your intuition will lead you to deeper questions and important revelations as you sift through more and more data in attempts to answer said questions. +Your intuition will lead you to deeper questions and important revelations as you sift through more and more data in attempts to answer said questions. That being said, time for a quick side note... @@ -149,25 +162,25 @@ That being said, time for a quick side note... ### **Quick Note on Data Cleaning**: -Before we go any further, it's important to make one very important assumption regarding the cleanliness of data in this practice tutorial. +Before we go any further, it's important to make one very important assumption regarding the cleanliness of data in this practice tutorial. -Right now, the majority of your data science work focuses on *data analysis* and *data visualization* - not easy work, especially if your data is **unclean**. +Right now, the majority of your data science work focuses on *data analysis* and *data visualization* - not easy work, especially if your data is **unclean**. -Unclean data is indicative of an important factor now at play: important trends or patterns that exist among your data may be *obscured* by lack of data clarity. +Unclean data is indicative of an important factor now at play: important trends or patterns that exist among your data may be *obscured* by lack of data clarity. This could be for a multitude of reasons, including irregularities in data types, inconsistencies in how data was recorded, or the presence of inappropriate data values such as *null values*. (Remember that term - it'll come up again next tutorial!) -It is crucial as a data scientist to always **question the data in front of you** from as many angles possible, including its validity and cleanliness. +It is crucial as a data scientist to always **question the data in front of you** from as many angles possible, including its validity and cleanliness. -In this tutorial, we simply want to instill that sense of critical thinking in you, but do not wish to throw some complex data cleaning challenges at you just yet. +In this tutorial, we simply want to instill that sense of critical thinking in you, but do not wish to throw some complex data cleaning challenges at you just yet. -However, keep in mind ways that the data in this tutorial could be potentially obscured to make your job tougher; you'll find that industry data science often spends a lot of time tackling the issue of data cleaning and processing. +However, keep in mind ways that the data in this tutorial could be potentially obscured to make your job tougher; you'll find that industry data science often spends a lot of time tackling the issue of data cleaning and processing. --- -Now that we're done rambling, let's get back into checking out the values in our data! +Now that we're done rambling, let's get back into checking out the values in our data! -Let's take a look at the very first app in our dataset and see some of its information. +Let's take a look at the very first app in our dataset and see some of its information. We can see the information from the very first app using either of the following two commands in new Jupyter cells: @@ -179,29 +192,29 @@ df.iloc[0] df.loc[1] ``` -Both commands should return data for the app *PAC-MAN Premium*. +Both commands should return data for the app *PAC-MAN Premium*. -`.iloc[]` and `.loc[]` are powerful selector tools in Pandas that allow you to view either a single or multiple rows, columns, and/or cells in a dataset. +`.iloc[]` and `.loc[]` are powerful selector tools in Pandas that allow you to view either a single or multiple rows, columns, and/or cells in a dataset. -You may be wondering what the difference is between `.iloc[]` and `.loc[]`? +You may be wondering what the difference is between `.iloc[]` and `.loc[]`? -Let's explore that using the example of the number **3**. +Let's explore that using the example of the number **3**. -When I run the following command in a new cell: +When I run the following command in a new cell: ```py df.iloc[3] ``` -Pandas returns the data for the app *eBay: Best App to Buy, Sell, Save! Online Shopping*. +Pandas returns the data for the app *eBay: Best App to Buy, Sell, Save! Online Shopping*. -However, if you notice carefully, the *eBay* app appears in the **fourth position** in the original dataframe. +However, if you notice carefully, the *eBay* app appears in the **fourth position** in the original dataframe. **Why is this the case?** -Well, it turns out that `.iloc[]` is useful for selecting *data by index*. +Well, it turns out that `.iloc[]` is useful for selecting *data by index*. -Since Python (like most languages), has zero-indexed arrays, the input value **3** refers to the **fourth** row of the dataset! +Since Python (like most languages), has zero-indexed arrays, the input value **3** refers to the **fourth** row of the dataset! Let's contrast that with the following command: @@ -209,21 +222,21 @@ Let's contrast that with the following command: df.loc[3] ``` -In this case, Pandas returns the data for the app *WeatherBug - Local Weather, Radar, Apps, Alerts*. +In this case, Pandas returns the data for the app *WeatherBug - Local Weather, Radar, Apps, Alerts*. **Why is this the case?** -Simply put, `.loc[]` is useful for selecting *data by label*. +Simply put, `.loc[]` is useful for selecting *data by label*. -This means that the original label of the data as defined by its leftmost column becomes the selection value. +This means that the original label of the data as defined by its leftmost column becomes the selection value. Therefore, when we ran `df.loc[3]`, rather than selecting the row defined by the third index, it selected the row defined by the number **3** occurring in the leftmost column, which happens to be the second index! If this seems tricky, don't worry. -Even the most advanced Python developers and data scientists can trip up these commands. Practice makes perfect! +Even the most advanced Python developers and data scientists can trip up these commands. Practice makes perfect! -These selector methods also support *slicing*. +These selector methods also support *slicing*. Try running either of the following: @@ -235,11 +248,11 @@ df.iloc[:3] df.loc[:3] ``` -Either one should return you the first three rows appearing in the dataset - accurately sliced from the first data value, as your slice parameter indicates. +Either one should return you the first three rows appearing in the dataset - accurately sliced from the first data value, as your slice parameter indicates. -Ask yourself the following: *why would both slicing index and label selectors return the same output*? +Ask yourself the following: *why would both slicing index and label selectors return the same output*? -Before we go any further, let's take a quick peek at the top of our DataFrame to check the data for any obvious red flags. +Before we go any further, let's take a quick peek at the top of our DataFrame to check the data for any obvious red flags. You can peek at the top of a DataFrame with the following line: @@ -261,13 +274,15 @@ You should see the following: ![screenshot07_dftail](../media/screenshot07_dftail.png?raw=true) -Doesn't this look familiar to some of the original commands we played with, including `.describe()`? +Doesn't this look familiar to some of the original commands we played with, including `.describe()`? + +>NOTE: I don't remember playing with .describe() --- -Let's try something new - let's use our Pythonic powers and attempt to calculate the average price across all apps. +Let's try something new - let's use our Pythonic powers and attempt to calculate the average price across all apps. -In this example, we don't care about which apps are free vs. paid or the general distribution of apps by payment; we only want to calculate the exact average price. +In this example, we don't care about which apps are free vs. paid or the general distribution of apps by payment; we only want to calculate the exact average price. > (For those of you who are more statistically inclined out there, you may be raising an eyebrow.

Good!

That intuition is important for answering more realistic data science questions involving descriptive statistics like the population average.

For now however, it is important to focus on the example at hand and understand the data science process.) @@ -277,15 +292,15 @@ To calculate the exact average price for all apps, we can run the following comm df.price.mean() ``` -This should return the value ``` 1.7262178685562626 ```, suggesting that the average price of an app is about $1.73. +This should return the value ``` 1.7262178685562626 ```, suggesting that the average price of an app is about $1.73. --- -By the way, those selectors seem great, but imagine trying to get general information about **your entire dataset** that way. +By the way, those selectors seem great, but imagine trying to get general information about **your entire dataset** that way. Seems impractical, right? -Pandas agrees - that's why it offers a far better way to grab immediate descriptive statistics on *all columns* across your dataset in a highly visual manner. +Pandas agrees - that's why it offers a far better way to grab immediate descriptive statistics on *all columns* across your dataset in a highly visual manner. Run the following in a new cell to quickly show general column-formatted information on the dataset. @@ -309,15 +324,17 @@ df.describe(include="O") ![screenshot05_advdfdescribe](../media/screenshot05_advdfdescribe.png?raw=true) -### Notice anything interesting? +>NOTE: Or this result: "TypeError: include and exclude must both be non-string sequences" + +### Notice anything interesting? -If you look carefully, the CURRENCY column has a 'count' value of 7000 but also has a 'unique' value of 1. +If you look carefully, the CURRENCY column has a 'count' value of 7000 but also has a 'unique' value of 1. -This means that every value in the CURRENCY column **is the same**! +This means that every value in the CURRENCY column **is the same**! -Looking at the data shows that the value under observation is the type of currency of all data: "USD". +Looking at the data shows that the value under observation is the type of currency of all data: "USD". -This isn't that important to us, so we can make the executive judgment to **drop that column** to reduce the size of the data. +This isn't that important to us, so we can make the executive judgment to **drop that column** to reduce the size of the data. ```py # NOTE: Running this multiple times will throw errors. @@ -326,15 +343,15 @@ df = df.drop("currency", axis="columns") --- -Now imagine we want to know how large our apps are. +Now imagine we want to know how large our apps are. -How can we go about solving that question? +How can we go about solving that question? -In the last few cells, ever take a look at that 'size_bytes' column? +In the last few cells, ever take a look at that 'size_bytes' column? -Pretty nasty, huh? +Pretty nasty, huh? -In fact, on our `.describe( )` cell above, we see that most data contains 'size_bytes' attributes ranging in the millions. +In fact, on our `.describe( )` cell above, we see that most data contains 'size_bytes' attributes ranging in the millions. Well, in the real world, we call those Megabytes and can do some quick reformatting to our DataFrame to clean that up a little. @@ -346,19 +363,19 @@ df["size_Mb"] = df["size_bytes"].apply(_byte_resizer) df.drop("size_bytes", axis="columns", inplace=True) ``` -Notice how in the previous cell, we wrote a custom helper function ```_byte_resizer()``` that contained our logic for grabbing ```size_bytes``` data and dividing it effectively to give us our new ```size_Mb``` column. +Notice how in the previous cell, we wrote a custom helper function ```_byte_resizer()``` that contained our logic for grabbing ```size_bytes``` data and dividing it effectively to give us our new ```size_Mb``` column. -Pandas is full of little gems: tools and tricks that optimize certain tasks, like looking at the beginning few elements of a dataset. +Pandas is full of little gems: tools and tricks that optimize certain tasks, like looking at the beginning few elements of a dataset. -However, the best Python developers and data science experts maintain their flexibility with Python to be able to write custom functions and commands at will based on what they're doing. +However, the best Python developers and data science experts maintain their flexibility with Python to be able to write custom functions and commands at will based on what they're doing. -For instance, take a look at the following command. It does the exact same thing as the previous cell, but is written quite differently using more advanced Python syntax that may not be as nice for readability. +For instance, take a look at the following command. It does the exact same thing as the previous cell, but is written quite differently using more advanced Python syntax that may not be as nice for readability. ```py df["size_Mb"] = df["size_bytes"].apply(lambda num: np.around(num / 1000000, decimals=2)) df.drop("size_bytes", axis="columns", inplace=True) ``` -Which looks cleaner to you? +Which looks cleaner to you? -Use your skills wisely! \ No newline at end of file +Use your skills wisely! diff --git a/P02-Creating-Basic-Visualizations/content.md b/P02-Creating-Basic-Visualizations/content.md index c0ef236..712c8c5 100644 --- a/P02-Creating-Basic-Visualizations/content.md +++ b/P02-Creating-Basic-Visualizations/content.md @@ -1,32 +1,32 @@ -## Part 2: Exploratory Data Science (cont'd) +## Part 2: Exploratory Data Science (cont'd) ## Basic Visualizations -Now that we've spent enough time playing with our data and assuring ourselves that it's relatively clean, let's get to the fun part! +Now that we've spent enough time playing with our data and assuring ourselves that it's relatively clean, let's get to the fun part! -We're going to rely primarily on SeaBorn visualizations to illustrate its authenticity and aptitude for beautiful and simple visualizations. +We're going to rely primarily on SeaBorn visualizations to illustrate its authenticity and aptitude for beautiful and simple visualizations. -Each of these can also be replicated through MatPlotLib, though it would take much longer. +Each of these can also be replicated through MatPlotLib, though it would take much longer. ### Let's explore the distribution of apps based on file size. -Remember that reformat we did to change 'size_bytes' data to 'size_Mb' data? +Remember that reformat we did to change 'size_bytes' data to 'size_Mb' data? -That's going to come in handy, as we're going to generate a histogram of frequency occurrences (counts) based on general data byte size. +That's going to come in handy, as we're going to generate a histogram of frequency occurrences (counts) based on general data byte size. -First things first: let's set up the plotting space in a new cell. +First things first: let's set up the plotting space in a new cell. -This should be continued in the same Jupyter notebook as the previous tutorial section. +This should be continued in the same Jupyter notebook as the previous tutorial section. ```py plt.subplots(figsize=(10, 8)) ``` -Nice! +Nice! -Next, let's initialize the bins by which our histogram data will fall. +Next, let's initialize the bins by which our histogram data will fall. -Take note that for this example, the bins are not evenly sized but grow exponentially. +Take note that for this example, the bins are not evenly sized but grow exponentially. Why do you think this is the case? @@ -37,18 +37,21 @@ LABELS = ["<10m", "10-20m", "20-50m", "50-100m", "100-200m", "200-500m", "500-10 Finally, let's produce our plotting object of frequency counts and use SeaBorn to visualize it for us. -Enter the following into a new cell: +Enter the following into a new cell: ```py freqs = pd.cut(df["size_Mb"], BINS, include_lowest=True, labels=LABELS) sns.barplot(y=freqs.value_counts().values, x=freqs.value_counts().index) ``` -If all is well, you should see your very first tutorial visualization with SeaBorn here: +If all is well, you should see your very first tutorial visualization with SeaBorn here: ![screenshot08_bargraph](../media/screenshot08_bargraph.png?raw=true) -### Looks great! Let's take a further look into priced vs. unpriced apps on the mobile store. +>NOTE: I had to do plt.show() afterwards to see the visualization. +>NOTE: If you put "%matplotlib inline" after importing matplotlib it works fine. + +### Looks great! Let's take a further look into priced vs. unpriced apps on the mobile store. We'll generate a doughnut plot using basic MatPlotLib to get a basic sense as to the distribution of paid vs. free apps on the app store. @@ -56,7 +59,7 @@ First things first, let's set up our parameters in a new cell. We want to look at two main categories: whether or not an app is free or paid. -Enter the following into a new cell: +Enter the following into a new cell: ```py BINS = [-np.inf, 0.00, np.inf] @@ -64,37 +67,37 @@ LABELS = ["FREE", "PAID"] colors = ['lightcoral', 'yellowgreen'] ``` -When we look back at the data, our data contains numerical price data. +When we look back at the data, our data contains numerical price data. Let's run a quick script to add a column containing free vs. paid price attributes for ease of use. -Enter the following into a new cell: +Enter the following into a new cell: ```py df["price_categories"] = pd.cut(df["price"], BINS, include_lowest=True, labels=LABELS) ``` -Now, let's initialize our plotting space in MatPlotLib. +Now, let's initialize our plotting space in MatPlotLib. -You'll often see this syntax `fig, ax` being used. +You'll often see this syntax `fig, ax` being used. ```py fig, axs = plt.subplots(figsize=(10, 5)) ``` -For easier reference, we'll slice our DataFrame to easily grab the data we want to look at. +For easier reference, we'll slice our DataFrame to easily grab the data we want to look at. You can do this with ANY column or feature in your data. -Enter the following into a new cell: +Enter the following into a new cell: ```py price_df = df["price_categories"].value_counts() ``` -Finally, we'll generate a nice looking doughnut plot in MatPlotLib by plotting our data using a standard pie chart, then modifying the chart with a superimposed white circle to give the visualization some pizzazz. +Finally, we'll generate a nice looking doughnut plot in MatPlotLib by plotting our data using a standard pie chart, then modifying the chart with a superimposed white circle to give the visualization some pizzazz. -Enter all this into a single cell: +Enter all this into a single cell: ```py plt.pie(price_df.values, labels=LABELS, colors=colors, autopct='%1.1f%%', shadow=True) @@ -106,13 +109,15 @@ fig.gca().add_artist(centre_circle) plt.axis('equal') ``` -A little bit of convoluted code, but if you followed it carefully in the same cell, you should see the following: +A little bit of convoluted code, but if you followed it carefully in the same cell, you should see the following: ![screenshot09_donutgraph](../media/screenshot09_donutgraph.png?raw=true) -Awesome! More paid apps than I expected, at least. +>NOTE: It works well but I don't understand anything I pasted in. + +Awesome! More paid apps than I expected, at least. -### Let's keep moving with this idea and check out the highest rated free and paid apps. +### Let's keep moving with this idea and check out the highest rated free and paid apps. First things first: let's slice our categorical price data into two objects based on category in a new cell. @@ -128,9 +133,9 @@ free_apps_rated = free_apps.sort_values(by=["rating_count_tot"], ascending=False paid_apps_rated = paid_apps.sort_values(by=["rating_count_tot"], ascending=False) ``` -Now that we have our rated free and rated paid apps objects, let's visualize them one at a time. +Now that we have our rated free and rated paid apps objects, let's visualize them one at a time. -For the sake of clarity, we'll only visualize the top ten highest rated apps in each category. +For the sake of clarity, we'll only visualize the top ten highest rated apps in each category. First, let's look at free apps. (Feel free to put this in a new cell.) @@ -142,9 +147,9 @@ You should see the following output: ![screenshot10_sidebargraph](../media/screenshot10_sidebargraph.png?raw=true) -Interesting. Personally, I'm shocked that Clash of Clans is more popular than Temple Run. +Interesting. Personally, I'm shocked that Clash of Clans is more popular than Temple Run. -Next, let's take a look at paid apps. Put it in a new cell. +Next, let's take a look at paid apps. Put it in a new cell. ```py sns.barplot(x=paid_apps_rated["rating_count_tot"][:10], y=paid_apps_rated["track_name"][:10]) @@ -156,25 +161,25 @@ You should see the following (looks familiar?): Looks like as much as I like Minecraft, it clearly doesn't hold a sword up to Fruit Ninja Classic. -### By the way, what if we just want to know the highest rated apps of all time, regardless of price? +### By the way, what if we just want to know the highest rated apps of all time, regardless of price? -Not much setup to do here, so let's just dive into it. +Not much setup to do here, so let's just dive into it. -First, let's initialize our plotting space. New cell! +First, let's initialize our plotting space. New cell! ```py plt.subplots(figsize=(20, 20)) ``` -Next, let's grab our data sorted by ratings as an object. In a new cell. +Next, let's grab our data sorted by ratings as an object. In a new cell. ```py ratings = df.sort_values(by=["rating_count_tot"], ascending=False) ``` -Finally, let's plot it. +Finally, let's plot it. -For the sake of clarity, we'll plot the top thirty apps. And guess what? You'll put it in a new cell! +For the sake of clarity, we'll plot the top thirty apps. And guess what? You'll put it in a new cell! ```py sns.barplot(x=ratings["rating_count_tot"][:30], y=ratings["track_name"][:30]) @@ -184,10 +189,10 @@ After all this, you should see the following: ![screenshot12_sidebargraph](../media/screenshot12_sidebargraph.png?raw=true) -I don't think anyone's truly surprised that Mark Zuckerberg commands the mobile app market. +I don't think anyone's truly surprised that Mark Zuckerberg commands the mobile app market. Think of any simple visualization-based questions you have from the basic data. **How would you go about slicing the DataFrame and creating a visualization based on that?** -Ponder these questions and others you may have regarding the newly explored data as we move on to our *third and final section of this tutorial*. \ No newline at end of file +Ponder these questions and others you may have regarding the newly explored data as we move on to our *third and final section of this tutorial*. diff --git a/notebooks/.ipynb_checkpoints/James Review-checkpoint.ipynb b/notebooks/.ipynb_checkpoints/James Review-checkpoint.ipynb new file mode 100644 index 0000000..a67c6d6 --- /dev/null +++ b/notebooks/.ipynb_checkpoints/James Review-checkpoint.ipynb @@ -0,0 +1,3282 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 119, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# Pandas is a library for basic data analysis\n", + "import pandas as pd\n", + "\n", + "# NumPy is a library for advanced mathematical computation\n", + "import numpy as np\n", + "\n", + "# MatPlotLib is a library for basic data visualization\n", + "import matplotlib.pyplot as plt\n", + "%matplotlib inline\n", + "\n", + "# SeaBorn is a library for advanced data visualization\n", + "import seaborn as sns" + ] + }, + { + "cell_type": "code", + "execution_count": 120, + "metadata": {}, + "outputs": [], + "source": [ + "sns.set(style=\"white\", context=\"notebook\", palette=\"deep\")\n", + "\n", + "COLOR_COLUMNS = [\"#66C2FF\", \"#5CD6D6\", \"#00CC99\", \"#85E085\", \"#FFD966\", \"#FFB366\", \"#FFB3B3\", \"#DAB3FF\", \"#C2C2D6\"]\n", + "\n", + "sns.set_palette(palette=COLOR_COLUMNS, n_colors=4)" + ] + }, + { + "cell_type": "code", + "execution_count": 121, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
idtrack_namesize_bytescurrencypricerating_count_totrating_count_veruser_ratinguser_rating_ververcont_ratingprime_genresup_devices.numipadSc_urls.numlang.numvpp_lic
1281656475PAC-MAN Premium100788224USD3.9921292264.04.56.3.54+Games385101
2281796108Evernote - stay organized158578688USD0.00161065264.03.58.2.24+Productivity375231
3281940292WeatherBug - Local Weather, Radar, Maps, Alerts100524032USD0.0018858328223.54.55.0.04+Weather37531
4282614216eBay: Best App to Buy, Sell, Save! Online Shop...128512000USD0.002622416494.04.55.10.012+Shopping37591
5282935706Bible92774400USD0.0098592053204.55.07.5.14+Reference375451
6283619399Shanghai Mahjong10485713USD0.99825355164.04.01.84+Games47511
7283646709PayPal - Send and request money safely227795968USD0.001194878794.04.56.12.04+Finance370191
8284035177Pandora - Music & Radio130242560USD0.00112687935944.04.58.4.112+Music37411
9284666222PCalc - The Best Calculator49250304USD9.99111744.55.03.6.64+Utilities37511
10284736660Ms. PAC-MAN70023168USD3.997885404.04.04.0.44+Games380101
11284791396Solitaire by MobilityWare49618944USD4.997672040174.54.54.10.14+Games384111
12284815117SCRABBLE Premium227547136USD7.991057761663.52.55.19.04+Games37061
13284815942Google – Search made just for mobile179979264USD0.004794402033.54.02717+Utilities374331
14284847138Bank of America - Mobile Banking160925696USD0.0011977323363.54.57.3.84+Finance37021
15284862767FreeCell55153664USD4.9963406684.54.54.0.34+Games38521
16284876795TripAdvisor Hotels Flights Restaurants207907840USD0.0056194874.03.521.14+Travel371261
17284882215Facebook389879808USD0.0029746762123.53.5954+Social Networking371291
18284910350Yelp - Nearby Restaurants, Shopping & Services167407616USD0.0022388537264.04.511.15.012+Travel375181
20284993459Shazam - Discover music, artists, videos & lyrics147093504USD0.004029251364.04.511.0.312+Music373161
21285005463Crash Bandicoot Nitro Kart 3D10735026USD2.993145641784.03.51.0.04+Games47011
22285946052iQuran70707916USD1.9929299664.54.53.34+Reference43021
23285994151:) Sudoku +6169600USD2.99114477815.05.05.2.64+Games40511
24286058814Yahoo Sports - Teams, Scores, News & Highlights130583552USD0.001379511314.04.56.94+Sports37261
25286070473Mileage Log | Fahrtenbuch71203840USD5.99804.50.09.0.54+Business37531
27286799607Cleartune - Chromatic Tuner11423008USD3.9932412974.04.02.1.34+Music432101
28286906691Lifesum – Inspiring healthy lifestyle app188017664USD0.005795123.54.08.4.14+Health & Fitness375111
29286911400Hangman.4765696USD0.00423162483.03.52.0.69+Games38011
31288113403iTranslate - Language Translator & Dictionary287933440USD0.00123215253.55.010.5.44+Productivity375231
32288120394TouchOSC4263936USD4.9978274.03.51.9.84+Music43111
33288419283RadarScope172772352USD9.993449234.04.53.4.14+Weather37511
...................................................
109951182265441脱出ゲーム わたしをみつけて -おじいさんとわたしの物語-177498112USD0.00111.01.01.0.14+Games38411
109981182331762Escape from the frigid Igloo.89188352USD0.00334.04.01.0.14+Games38511
110021182568288Talking Santa - Video santa claus calls you32685056USD2.99933.03.51.0.14+Entertainment370311
110101183234072CTFxCmoji26077184USD0.003945.05.01.39+Social Networking37111
110131183260922Room Escape Game - Santa's Room143346688USD0.0010105.05.014+Games40011
110161183548754Rescue the Enchanter242505728USD3.9955294.54.51.44+Games40511
110191183709176My Diary - 你的名字非官方18164736USD0.99000.00.01.14+Utilities37011
110221183856228VR Thrills: Roller Coaster 360 (Google Cardboard)169535488USD0.001444.03.51.3.04+Games37511
110241183986102Santa Kids Hair Salon - Christmas Makeover Games64244736USD0.0041194.54.51.34+Games375251
110271184711626Human Juggling Cup184324096USD0.00000.00.01.0.14+Games40411
110311184800011Again - room escape game33946624USD0.001184.04.01.1.04+Games37511
110331185209084Saloons Unleashed327731200USD0.99000.00.01.14+Games37511
110351185328193Fam — Group video calling for iMessage113382400USD0.0027953.53.00.6.414+Social Networking37411
110361185365336Laurie Hernandez the Human Emoji94008320USD0.002635.05.01.0.59+Utilities37411
110381185428381剑倚手游178160640USD0.99000.00.019+Games40501
110401185538497camera for filter9362432USD0.00000.00.01.0.34+Photo & Video37011
110411185580782Survivalcraft 257349120USD3.992922924.04.02.0.20.19+Games40511
110421185731859剑客情缘-高爆率高掉落天天疯玩171944960USD0.00000.00.019+Games40501
110431185777521问仙奇遇-新玩法新套装嗨到爆208026624USD0.99000.00.019+Games38511
110501186108496脱出ゲーム - 書道教室 - \"漢字\"の謎に満ちた部屋からの 脱出85580800USD0.00112.02.01.0.14+Games38511
110511186126548Escape Game: illumination52342784USD0.0023234.54.514+Games37521
110601186384912Demolition Derby Virtual Reality (VR) Racing168774656USD0.0018184.04.01.0.012+Games38411
110741187128255飞刀传奇-动作武侠热血江湖即时PK传奇(登录爆金装)537462784USD0.99000.00.02.1.09+Games38511
110771187279979Add-Ons Studio for Minecraft22999040USD2.9997973.03.014+Games37531
110791187282363Plead the Fifth - The Game27853824USD2.991104.00.01.1.117+Games37011
110811187617475Kubik126644224USD0.00142754.54.51.34+Games38511
110821187682390VR Roller-Coaster120760320USD0.0030304.54.50.94+Games38011
110871187779532Bret Michaels Emojis + Lyric Keyboard111322112USD1.991504.50.01.0.29+Utilities37111
110891187838770VR Roller Coaster World - Virtual Reality97235968USD0.0085324.54.51.0.1512+Games38021
110971188375727Escape the Sweet Shop Series90898432USD0.00335.05.014+Games40021
\n", + "

7197 rows × 16 columns

\n", + "
" + ], + "text/plain": [ + " id track_name \\\n", + "1 281656475 PAC-MAN Premium \n", + "2 281796108 Evernote - stay organized \n", + "3 281940292 WeatherBug - Local Weather, Radar, Maps, Alerts \n", + "4 282614216 eBay: Best App to Buy, Sell, Save! Online Shop... \n", + "5 282935706 Bible \n", + "6 283619399 Shanghai Mahjong \n", + "7 283646709 PayPal - Send and request money safely \n", + "8 284035177 Pandora - Music & Radio \n", + "9 284666222 PCalc - The Best Calculator \n", + "10 284736660 Ms. PAC-MAN \n", + "11 284791396 Solitaire by MobilityWare \n", + "12 284815117 SCRABBLE Premium \n", + "13 284815942 Google – Search made just for mobile \n", + "14 284847138 Bank of America - Mobile Banking \n", + "15 284862767 FreeCell \n", + "16 284876795 TripAdvisor Hotels Flights Restaurants \n", + "17 284882215 Facebook \n", + "18 284910350 Yelp - Nearby Restaurants, Shopping & Services \n", + "20 284993459 Shazam - Discover music, artists, videos & lyrics \n", + "21 285005463 Crash Bandicoot Nitro Kart 3D \n", + "22 285946052 iQuran \n", + "23 285994151 :) Sudoku + \n", + "24 286058814 Yahoo Sports - Teams, Scores, News & Highlights \n", + "25 286070473 Mileage Log | Fahrtenbuch \n", + "27 286799607 Cleartune - Chromatic Tuner \n", + "28 286906691 Lifesum – Inspiring healthy lifestyle app \n", + "29 286911400 Hangman. \n", + "31 288113403 iTranslate - Language Translator & Dictionary \n", + "32 288120394 TouchOSC \n", + "33 288419283 RadarScope \n", + "... ... ... \n", + "10995 1182265441 脱出ゲーム わたしをみつけて -おじいさんとわたしの物語- \n", + "10998 1182331762 Escape from the frigid Igloo. \n", + "11002 1182568288 Talking Santa - Video santa claus calls you \n", + "11010 1183234072 CTFxCmoji \n", + "11013 1183260922 Room Escape Game - Santa's Room \n", + "11016 1183548754 Rescue the Enchanter \n", + "11019 1183709176 My Diary - 你的名字非官方 \n", + "11022 1183856228 VR Thrills: Roller Coaster 360 (Google Cardboard) \n", + "11024 1183986102 Santa Kids Hair Salon - Christmas Makeover Games \n", + "11027 1184711626 Human Juggling Cup \n", + "11031 1184800011 Again - room escape game \n", + "11033 1185209084 Saloons Unleashed \n", + "11035 1185328193 Fam — Group video calling for iMessage \n", + "11036 1185365336 Laurie Hernandez the Human Emoji \n", + "11038 1185428381 剑倚手游 \n", + "11040 1185538497 camera for filter \n", + "11041 1185580782 Survivalcraft 2 \n", + "11042 1185731859 剑客情缘-高爆率高掉落天天疯玩 \n", + "11043 1185777521 问仙奇遇-新玩法新套装嗨到爆 \n", + "11050 1186108496 脱出ゲーム - 書道教室 - \"漢字\"の謎に満ちた部屋からの 脱出 \n", + "11051 1186126548 Escape Game: illumination \n", + "11060 1186384912 Demolition Derby Virtual Reality (VR) Racing \n", + "11074 1187128255 飞刀传奇-动作武侠热血江湖即时PK传奇(登录爆金装) \n", + "11077 1187279979 Add-Ons Studio for Minecraft \n", + "11079 1187282363 Plead the Fifth - The Game \n", + "11081 1187617475 Kubik \n", + "11082 1187682390 VR Roller-Coaster \n", + "11087 1187779532 Bret Michaels Emojis + Lyric Keyboard \n", + "11089 1187838770 VR Roller Coaster World - Virtual Reality \n", + "11097 1188375727 Escape the Sweet Shop Series \n", + "\n", + " size_bytes currency price rating_count_tot rating_count_ver \\\n", + "1 100788224 USD 3.99 21292 26 \n", + "2 158578688 USD 0.00 161065 26 \n", + "3 100524032 USD 0.00 188583 2822 \n", + "4 128512000 USD 0.00 262241 649 \n", + "5 92774400 USD 0.00 985920 5320 \n", + "6 10485713 USD 0.99 8253 5516 \n", + "7 227795968 USD 0.00 119487 879 \n", + "8 130242560 USD 0.00 1126879 3594 \n", + "9 49250304 USD 9.99 1117 4 \n", + "10 70023168 USD 3.99 7885 40 \n", + "11 49618944 USD 4.99 76720 4017 \n", + "12 227547136 USD 7.99 105776 166 \n", + "13 179979264 USD 0.00 479440 203 \n", + "14 160925696 USD 0.00 119773 2336 \n", + "15 55153664 USD 4.99 6340 668 \n", + "16 207907840 USD 0.00 56194 87 \n", + "17 389879808 USD 0.00 2974676 212 \n", + "18 167407616 USD 0.00 223885 3726 \n", + "20 147093504 USD 0.00 402925 136 \n", + "21 10735026 USD 2.99 31456 4178 \n", + "22 70707916 USD 1.99 2929 966 \n", + "23 6169600 USD 2.99 11447 781 \n", + "24 130583552 USD 0.00 137951 131 \n", + "25 71203840 USD 5.99 8 0 \n", + "27 11423008 USD 3.99 3241 297 \n", + "28 188017664 USD 0.00 5795 12 \n", + "29 4765696 USD 0.00 42316 248 \n", + "31 287933440 USD 0.00 123215 25 \n", + "32 4263936 USD 4.99 782 7 \n", + "33 172772352 USD 9.99 3449 23 \n", + "... ... ... ... ... ... \n", + "10995 177498112 USD 0.00 1 1 \n", + "10998 89188352 USD 0.00 3 3 \n", + "11002 32685056 USD 2.99 9 3 \n", + "11010 26077184 USD 0.00 39 4 \n", + "11013 143346688 USD 0.00 10 10 \n", + "11016 242505728 USD 3.99 55 29 \n", + "11019 18164736 USD 0.99 0 0 \n", + "11022 169535488 USD 0.00 14 4 \n", + "11024 64244736 USD 0.00 41 19 \n", + "11027 184324096 USD 0.00 0 0 \n", + "11031 33946624 USD 0.00 11 8 \n", + "11033 327731200 USD 0.99 0 0 \n", + "11035 113382400 USD 0.00 279 5 \n", + "11036 94008320 USD 0.00 26 3 \n", + "11038 178160640 USD 0.99 0 0 \n", + "11040 9362432 USD 0.00 0 0 \n", + "11041 57349120 USD 3.99 292 292 \n", + "11042 171944960 USD 0.00 0 0 \n", + "11043 208026624 USD 0.99 0 0 \n", + "11050 85580800 USD 0.00 1 1 \n", + "11051 52342784 USD 0.00 23 23 \n", + "11060 168774656 USD 0.00 18 18 \n", + "11074 537462784 USD 0.99 0 0 \n", + "11077 22999040 USD 2.99 97 97 \n", + "11079 27853824 USD 2.99 11 0 \n", + "11081 126644224 USD 0.00 142 75 \n", + "11082 120760320 USD 0.00 30 30 \n", + "11087 111322112 USD 1.99 15 0 \n", + "11089 97235968 USD 0.00 85 32 \n", + "11097 90898432 USD 0.00 3 3 \n", + "\n", + " user_rating user_rating_ver ver cont_rating prime_genre \\\n", + "1 4.0 4.5 6.3.5 4+ Games \n", + "2 4.0 3.5 8.2.2 4+ Productivity \n", + "3 3.5 4.5 5.0.0 4+ Weather \n", + "4 4.0 4.5 5.10.0 12+ Shopping \n", + "5 4.5 5.0 7.5.1 4+ Reference \n", + "6 4.0 4.0 1.8 4+ Games \n", + "7 4.0 4.5 6.12.0 4+ Finance \n", + "8 4.0 4.5 8.4.1 12+ Music \n", + "9 4.5 5.0 3.6.6 4+ Utilities \n", + "10 4.0 4.0 4.0.4 4+ Games \n", + "11 4.5 4.5 4.10.1 4+ Games \n", + "12 3.5 2.5 5.19.0 4+ Games \n", + "13 3.5 4.0 27 17+ Utilities \n", + "14 3.5 4.5 7.3.8 4+ Finance \n", + "15 4.5 4.5 4.0.3 4+ Games \n", + "16 4.0 3.5 21.1 4+ Travel \n", + "17 3.5 3.5 95 4+ Social Networking \n", + "18 4.0 4.5 11.15.0 12+ Travel \n", + "20 4.0 4.5 11.0.3 12+ Music \n", + "21 4.0 3.5 1.0.0 4+ Games \n", + "22 4.5 4.5 3.3 4+ Reference \n", + "23 5.0 5.0 5.2.6 4+ Games \n", + "24 4.0 4.5 6.9 4+ Sports \n", + "25 4.5 0.0 9.0.5 4+ Business \n", + "27 4.0 4.0 2.1.3 4+ Music \n", + "28 3.5 4.0 8.4.1 4+ Health & Fitness \n", + "29 3.0 3.5 2.0.6 9+ Games \n", + "31 3.5 5.0 10.5.4 4+ Productivity \n", + "32 4.0 3.5 1.9.8 4+ Music \n", + "33 4.0 4.5 3.4.1 4+ Weather \n", + "... ... ... ... ... ... \n", + "10995 1.0 1.0 1.0.1 4+ Games \n", + "10998 4.0 4.0 1.0.1 4+ Games \n", + "11002 3.0 3.5 1.0.1 4+ Entertainment \n", + "11010 5.0 5.0 1.3 9+ Social Networking \n", + "11013 5.0 5.0 1 4+ Games \n", + "11016 4.5 4.5 1.4 4+ Games \n", + "11019 0.0 0.0 1.1 4+ Utilities \n", + "11022 4.0 3.5 1.3.0 4+ Games \n", + "11024 4.5 4.5 1.3 4+ Games \n", + "11027 0.0 0.0 1.0.1 4+ Games \n", + "11031 4.0 4.0 1.1.0 4+ Games \n", + "11033 0.0 0.0 1.1 4+ Games \n", + "11035 3.5 3.0 0.6.41 4+ Social Networking \n", + "11036 5.0 5.0 1.0.5 9+ Utilities \n", + "11038 0.0 0.0 1 9+ Games \n", + "11040 0.0 0.0 1.0.3 4+ Photo & Video \n", + "11041 4.0 4.0 2.0.20.1 9+ Games \n", + "11042 0.0 0.0 1 9+ Games \n", + "11043 0.0 0.0 1 9+ Games \n", + "11050 2.0 2.0 1.0.1 4+ Games \n", + "11051 4.5 4.5 1 4+ Games \n", + "11060 4.0 4.0 1.0.0 12+ Games \n", + "11074 0.0 0.0 2.1.0 9+ Games \n", + "11077 3.0 3.0 1 4+ Games \n", + "11079 4.0 0.0 1.1.1 17+ Games \n", + "11081 4.5 4.5 1.3 4+ Games \n", + "11082 4.5 4.5 0.9 4+ Games \n", + "11087 4.5 0.0 1.0.2 9+ Utilities \n", + "11089 4.5 4.5 1.0.15 12+ Games \n", + "11097 5.0 5.0 1 4+ Games \n", + "\n", + " sup_devices.num ipadSc_urls.num lang.num vpp_lic \n", + "1 38 5 10 1 \n", + "2 37 5 23 1 \n", + "3 37 5 3 1 \n", + "4 37 5 9 1 \n", + "5 37 5 45 1 \n", + "6 47 5 1 1 \n", + "7 37 0 19 1 \n", + "8 37 4 1 1 \n", + "9 37 5 1 1 \n", + "10 38 0 10 1 \n", + "11 38 4 11 1 \n", + "12 37 0 6 1 \n", + "13 37 4 33 1 \n", + "14 37 0 2 1 \n", + "15 38 5 2 1 \n", + "16 37 1 26 1 \n", + "17 37 1 29 1 \n", + "18 37 5 18 1 \n", + "20 37 3 16 1 \n", + "21 47 0 1 1 \n", + "22 43 0 2 1 \n", + "23 40 5 1 1 \n", + "24 37 2 6 1 \n", + "25 37 5 3 1 \n", + "27 43 2 10 1 \n", + "28 37 5 11 1 \n", + "29 38 0 1 1 \n", + "31 37 5 23 1 \n", + "32 43 1 1 1 \n", + "33 37 5 1 1 \n", + "... ... ... ... ... \n", + "10995 38 4 1 1 \n", + "10998 38 5 1 1 \n", + "11002 37 0 31 1 \n", + "11010 37 1 1 1 \n", + "11013 40 0 1 1 \n", + "11016 40 5 1 1 \n", + "11019 37 0 1 1 \n", + "11022 37 5 1 1 \n", + "11024 37 5 25 1 \n", + "11027 40 4 1 1 \n", + "11031 37 5 1 1 \n", + "11033 37 5 1 1 \n", + "11035 37 4 1 1 \n", + "11036 37 4 1 1 \n", + "11038 40 5 0 1 \n", + "11040 37 0 1 1 \n", + "11041 40 5 1 1 \n", + "11042 40 5 0 1 \n", + "11043 38 5 1 1 \n", + "11050 38 5 1 1 \n", + "11051 37 5 2 1 \n", + "11060 38 4 1 1 \n", + "11074 38 5 1 1 \n", + "11077 37 5 3 1 \n", + "11079 37 0 1 1 \n", + "11081 38 5 1 1 \n", + "11082 38 0 1 1 \n", + "11087 37 1 1 1 \n", + "11089 38 0 2 1 \n", + "11097 40 0 2 1 \n", + "\n", + "[7197 rows x 16 columns]" + ] + }, + "execution_count": 121, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "FILEPATH = \"../datasets/AppleStore.csv\"\n", + "\n", + "df = pd.read_csv(FILEPATH, index_col=\"Unnamed: 0\")\n", + "df" + ] + }, + { + "cell_type": "code", + "execution_count": 122, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "1.7262178685562626" + ] + }, + "execution_count": 122, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.price.mean()" + ] + }, + { + "cell_type": "code", + "execution_count": 123, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
idsize_bytespricerating_count_totrating_count_veruser_ratinguser_rating_versup_devices.numipadSc_urls.numlang.numvpp_lic
count7.197000e+037.197000e+037197.0000007.197000e+037197.0000007197.0000007197.0000007197.0000007197.0000007197.0000007197.000000
mean8.631310e+081.991345e+081.7262181.289291e+04460.3739063.5269563.25357837.3618173.7071005.4349030.993053
std2.712368e+083.592069e+085.8330067.573941e+043920.4551831.5179481.8093633.7377151.9860057.9195930.083066
min2.816565e+085.898240e+050.0000000.000000e+000.0000000.0000000.0000009.0000000.0000000.0000000.000000
25%6.000937e+084.692275e+070.0000002.800000e+011.0000003.5000002.50000037.0000003.0000001.0000001.000000
50%9.781482e+089.715302e+070.0000003.000000e+0223.0000004.0000004.00000037.0000005.0000001.0000001.000000
75%1.082310e+091.819249e+081.9900002.793000e+03140.0000004.5000004.50000038.0000005.0000008.0000001.000000
max1.188376e+094.025970e+09299.9900002.974676e+06177050.0000005.0000005.00000047.0000005.00000075.0000001.000000
\n", + "
" + ], + "text/plain": [ + " id size_bytes price rating_count_tot \\\n", + "count 7.197000e+03 7.197000e+03 7197.000000 7.197000e+03 \n", + "mean 8.631310e+08 1.991345e+08 1.726218 1.289291e+04 \n", + "std 2.712368e+08 3.592069e+08 5.833006 7.573941e+04 \n", + "min 2.816565e+08 5.898240e+05 0.000000 0.000000e+00 \n", + "25% 6.000937e+08 4.692275e+07 0.000000 2.800000e+01 \n", + "50% 9.781482e+08 9.715302e+07 0.000000 3.000000e+02 \n", + "75% 1.082310e+09 1.819249e+08 1.990000 2.793000e+03 \n", + "max 1.188376e+09 4.025970e+09 299.990000 2.974676e+06 \n", + "\n", + " rating_count_ver user_rating user_rating_ver sup_devices.num \\\n", + "count 7197.000000 7197.000000 7197.000000 7197.000000 \n", + "mean 460.373906 3.526956 3.253578 37.361817 \n", + "std 3920.455183 1.517948 1.809363 3.737715 \n", + "min 0.000000 0.000000 0.000000 9.000000 \n", + "25% 1.000000 3.500000 2.500000 37.000000 \n", + "50% 23.000000 4.000000 4.000000 37.000000 \n", + "75% 140.000000 4.500000 4.500000 38.000000 \n", + "max 177050.000000 5.000000 5.000000 47.000000 \n", + "\n", + " ipadSc_urls.num lang.num vpp_lic \n", + "count 7197.000000 7197.000000 7197.000000 \n", + "mean 3.707100 5.434903 0.993053 \n", + "std 1.986005 7.919593 0.083066 \n", + "min 0.000000 0.000000 0.000000 \n", + "25% 3.000000 1.000000 1.000000 \n", + "50% 5.000000 1.000000 1.000000 \n", + "75% 5.000000 8.000000 1.000000 \n", + "max 5.000000 75.000000 1.000000 " + ] + }, + "execution_count": 123, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df = df.drop(\"currency\", axis=\"columns\")\n", + "df.describe()" + ] + }, + { + "cell_type": "code", + "execution_count": 124, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
idtrack_namepricerating_count_totrating_count_veruser_ratinguser_rating_ververcont_ratingprime_genresup_devices.numipadSc_urls.numlang.numvpp_licsize_Mb
1281656475PAC-MAN Premium3.9921292264.04.56.3.54+Games385101100.79
2281796108Evernote - stay organized0.00161065264.03.58.2.24+Productivity375231158.58
3281940292WeatherBug - Local Weather, Radar, Maps, Alerts0.0018858328223.54.55.0.04+Weather37531100.52
4282614216eBay: Best App to Buy, Sell, Save! Online Shop...0.002622416494.04.55.10.012+Shopping37591128.51
5282935706Bible0.0098592053204.55.07.5.14+Reference37545192.77
6283619399Shanghai Mahjong0.99825355164.04.01.84+Games4751110.49
7283646709PayPal - Send and request money safely0.001194878794.04.56.12.04+Finance370191227.80
8284035177Pandora - Music & Radio0.00112687935944.04.58.4.112+Music37411130.24
9284666222PCalc - The Best Calculator9.99111744.55.03.6.64+Utilities3751149.25
10284736660Ms. PAC-MAN3.997885404.04.04.0.44+Games38010170.02
11284791396Solitaire by MobilityWare4.997672040174.54.54.10.14+Games38411149.62
12284815117SCRABBLE Premium7.991057761663.52.55.19.04+Games37061227.55
13284815942Google – Search made just for mobile0.004794402033.54.02717+Utilities374331179.98
14284847138Bank of America - Mobile Banking0.0011977323363.54.57.3.84+Finance37021160.93
15284862767FreeCell4.9963406684.54.54.0.34+Games3852155.15
16284876795TripAdvisor Hotels Flights Restaurants0.0056194874.03.521.14+Travel371261207.91
17284882215Facebook0.0029746762123.53.5954+Social Networking371291389.88
18284910350Yelp - Nearby Restaurants, Shopping & Services0.0022388537264.04.511.15.012+Travel375181167.41
20284993459Shazam - Discover music, artists, videos & lyrics0.004029251364.04.511.0.312+Music373161147.09
21285005463Crash Bandicoot Nitro Kart 3D2.993145641784.03.51.0.04+Games4701110.74
22285946052iQuran1.9929299664.54.53.34+Reference4302170.71
23285994151:) Sudoku +2.99114477815.05.05.2.64+Games405116.17
24286058814Yahoo Sports - Teams, Scores, News & Highlights0.001379511314.04.56.94+Sports37261130.58
25286070473Mileage Log | Fahrtenbuch5.99804.50.09.0.54+Business3753171.20
27286799607Cleartune - Chromatic Tuner3.9932412974.04.02.1.34+Music43210111.42
28286906691Lifesum – Inspiring healthy lifestyle app0.005795123.54.08.4.14+Health & Fitness375111188.02
29286911400Hangman.0.00423162483.03.52.0.69+Games380114.77
31288113403iTranslate - Language Translator & Dictionary0.00123215253.55.010.5.44+Productivity375231287.93
32288120394TouchOSC4.9978274.03.51.9.84+Music431114.26
33288419283RadarScope9.993449234.04.53.4.14+Weather37511172.77
................................................
109951182265441脱出ゲーム わたしをみつけて -おじいさんとわたしの物語-0.00111.01.01.0.14+Games38411177.50
109981182331762Escape from the frigid Igloo.0.00334.04.01.0.14+Games3851189.19
110021182568288Talking Santa - Video santa claus calls you2.99933.03.51.0.14+Entertainment37031132.69
110101183234072CTFxCmoji0.003945.05.01.39+Social Networking3711126.08
110131183260922Room Escape Game - Santa's Room0.0010105.05.014+Games40011143.35
110161183548754Rescue the Enchanter3.9955294.54.51.44+Games40511242.51
110191183709176My Diary - 你的名字非官方0.99000.00.01.14+Utilities3701118.16
110221183856228VR Thrills: Roller Coaster 360 (Google Cardboard)0.001444.03.51.3.04+Games37511169.54
110241183986102Santa Kids Hair Salon - Christmas Makeover Games0.0041194.54.51.34+Games37525164.24
110271184711626Human Juggling Cup0.00000.00.01.0.14+Games40411184.32
110311184800011Again - room escape game0.001184.04.01.1.04+Games3751133.95
110331185209084Saloons Unleashed0.99000.00.01.14+Games37511327.73
110351185328193Fam — Group video calling for iMessage0.0027953.53.00.6.414+Social Networking37411113.38
110361185365336Laurie Hernandez the Human Emoji0.002635.05.01.0.59+Utilities3741194.01
110381185428381剑倚手游0.99000.00.019+Games40501178.16
110401185538497camera for filter0.00000.00.01.0.34+Photo & Video370119.36
110411185580782Survivalcraft 23.992922924.04.02.0.20.19+Games4051157.35
110421185731859剑客情缘-高爆率高掉落天天疯玩0.00000.00.019+Games40501171.94
110431185777521问仙奇遇-新玩法新套装嗨到爆0.99000.00.019+Games38511208.03
110501186108496脱出ゲーム - 書道教室 - \"漢字\"の謎に満ちた部屋からの 脱出0.00112.02.01.0.14+Games3851185.58
110511186126548Escape Game: illumination0.0023234.54.514+Games3752152.34
110601186384912Demolition Derby Virtual Reality (VR) Racing0.0018184.04.01.0.012+Games38411168.77
110741187128255飞刀传奇-动作武侠热血江湖即时PK传奇(登录爆金装)0.99000.00.02.1.09+Games38511537.46
110771187279979Add-Ons Studio for Minecraft2.9997973.03.014+Games3753123.00
110791187282363Plead the Fifth - The Game2.991104.00.01.1.117+Games3701127.85
110811187617475Kubik0.00142754.54.51.34+Games38511126.64
110821187682390VR Roller-Coaster0.0030304.54.50.94+Games38011120.76
110871187779532Bret Michaels Emojis + Lyric Keyboard1.991504.50.01.0.29+Utilities37111111.32
110891187838770VR Roller Coaster World - Virtual Reality0.0085324.54.51.0.1512+Games3802197.24
110971188375727Escape the Sweet Shop Series0.00335.05.014+Games4002190.90
\n", + "

7197 rows × 15 columns

\n", + "
" + ], + "text/plain": [ + " id track_name price \\\n", + "1 281656475 PAC-MAN Premium 3.99 \n", + "2 281796108 Evernote - stay organized 0.00 \n", + "3 281940292 WeatherBug - Local Weather, Radar, Maps, Alerts 0.00 \n", + "4 282614216 eBay: Best App to Buy, Sell, Save! Online Shop... 0.00 \n", + "5 282935706 Bible 0.00 \n", + "6 283619399 Shanghai Mahjong 0.99 \n", + "7 283646709 PayPal - Send and request money safely 0.00 \n", + "8 284035177 Pandora - Music & Radio 0.00 \n", + "9 284666222 PCalc - The Best Calculator 9.99 \n", + "10 284736660 Ms. PAC-MAN 3.99 \n", + "11 284791396 Solitaire by MobilityWare 4.99 \n", + "12 284815117 SCRABBLE Premium 7.99 \n", + "13 284815942 Google – Search made just for mobile 0.00 \n", + "14 284847138 Bank of America - Mobile Banking 0.00 \n", + "15 284862767 FreeCell 4.99 \n", + "16 284876795 TripAdvisor Hotels Flights Restaurants 0.00 \n", + "17 284882215 Facebook 0.00 \n", + "18 284910350 Yelp - Nearby Restaurants, Shopping & Services 0.00 \n", + "20 284993459 Shazam - Discover music, artists, videos & lyrics 0.00 \n", + "21 285005463 Crash Bandicoot Nitro Kart 3D 2.99 \n", + "22 285946052 iQuran 1.99 \n", + "23 285994151 :) Sudoku + 2.99 \n", + "24 286058814 Yahoo Sports - Teams, Scores, News & Highlights 0.00 \n", + "25 286070473 Mileage Log | Fahrtenbuch 5.99 \n", + "27 286799607 Cleartune - Chromatic Tuner 3.99 \n", + "28 286906691 Lifesum – Inspiring healthy lifestyle app 0.00 \n", + "29 286911400 Hangman. 0.00 \n", + "31 288113403 iTranslate - Language Translator & Dictionary 0.00 \n", + "32 288120394 TouchOSC 4.99 \n", + "33 288419283 RadarScope 9.99 \n", + "... ... ... ... \n", + "10995 1182265441 脱出ゲーム わたしをみつけて -おじいさんとわたしの物語- 0.00 \n", + "10998 1182331762 Escape from the frigid Igloo. 0.00 \n", + "11002 1182568288 Talking Santa - Video santa claus calls you 2.99 \n", + "11010 1183234072 CTFxCmoji 0.00 \n", + "11013 1183260922 Room Escape Game - Santa's Room 0.00 \n", + "11016 1183548754 Rescue the Enchanter 3.99 \n", + "11019 1183709176 My Diary - 你的名字非官方 0.99 \n", + "11022 1183856228 VR Thrills: Roller Coaster 360 (Google Cardboard) 0.00 \n", + "11024 1183986102 Santa Kids Hair Salon - Christmas Makeover Games 0.00 \n", + "11027 1184711626 Human Juggling Cup 0.00 \n", + "11031 1184800011 Again - room escape game 0.00 \n", + "11033 1185209084 Saloons Unleashed 0.99 \n", + "11035 1185328193 Fam — Group video calling for iMessage 0.00 \n", + "11036 1185365336 Laurie Hernandez the Human Emoji 0.00 \n", + "11038 1185428381 剑倚手游 0.99 \n", + "11040 1185538497 camera for filter 0.00 \n", + "11041 1185580782 Survivalcraft 2 3.99 \n", + "11042 1185731859 剑客情缘-高爆率高掉落天天疯玩 0.00 \n", + "11043 1185777521 问仙奇遇-新玩法新套装嗨到爆 0.99 \n", + "11050 1186108496 脱出ゲーム - 書道教室 - \"漢字\"の謎に満ちた部屋からの 脱出 0.00 \n", + "11051 1186126548 Escape Game: illumination 0.00 \n", + "11060 1186384912 Demolition Derby Virtual Reality (VR) Racing 0.00 \n", + "11074 1187128255 飞刀传奇-动作武侠热血江湖即时PK传奇(登录爆金装) 0.99 \n", + "11077 1187279979 Add-Ons Studio for Minecraft 2.99 \n", + "11079 1187282363 Plead the Fifth - The Game 2.99 \n", + "11081 1187617475 Kubik 0.00 \n", + "11082 1187682390 VR Roller-Coaster 0.00 \n", + "11087 1187779532 Bret Michaels Emojis + Lyric Keyboard 1.99 \n", + "11089 1187838770 VR Roller Coaster World - Virtual Reality 0.00 \n", + "11097 1188375727 Escape the Sweet Shop Series 0.00 \n", + "\n", + " rating_count_tot rating_count_ver user_rating user_rating_ver \\\n", + "1 21292 26 4.0 4.5 \n", + "2 161065 26 4.0 3.5 \n", + "3 188583 2822 3.5 4.5 \n", + "4 262241 649 4.0 4.5 \n", + "5 985920 5320 4.5 5.0 \n", + "6 8253 5516 4.0 4.0 \n", + "7 119487 879 4.0 4.5 \n", + "8 1126879 3594 4.0 4.5 \n", + "9 1117 4 4.5 5.0 \n", + "10 7885 40 4.0 4.0 \n", + "11 76720 4017 4.5 4.5 \n", + "12 105776 166 3.5 2.5 \n", + "13 479440 203 3.5 4.0 \n", + "14 119773 2336 3.5 4.5 \n", + "15 6340 668 4.5 4.5 \n", + "16 56194 87 4.0 3.5 \n", + "17 2974676 212 3.5 3.5 \n", + "18 223885 3726 4.0 4.5 \n", + "20 402925 136 4.0 4.5 \n", + "21 31456 4178 4.0 3.5 \n", + "22 2929 966 4.5 4.5 \n", + "23 11447 781 5.0 5.0 \n", + "24 137951 131 4.0 4.5 \n", + "25 8 0 4.5 0.0 \n", + "27 3241 297 4.0 4.0 \n", + "28 5795 12 3.5 4.0 \n", + "29 42316 248 3.0 3.5 \n", + "31 123215 25 3.5 5.0 \n", + "32 782 7 4.0 3.5 \n", + "33 3449 23 4.0 4.5 \n", + "... ... ... ... ... \n", + "10995 1 1 1.0 1.0 \n", + "10998 3 3 4.0 4.0 \n", + "11002 9 3 3.0 3.5 \n", + "11010 39 4 5.0 5.0 \n", + "11013 10 10 5.0 5.0 \n", + "11016 55 29 4.5 4.5 \n", + "11019 0 0 0.0 0.0 \n", + "11022 14 4 4.0 3.5 \n", + "11024 41 19 4.5 4.5 \n", + "11027 0 0 0.0 0.0 \n", + "11031 11 8 4.0 4.0 \n", + "11033 0 0 0.0 0.0 \n", + "11035 279 5 3.5 3.0 \n", + "11036 26 3 5.0 5.0 \n", + "11038 0 0 0.0 0.0 \n", + "11040 0 0 0.0 0.0 \n", + "11041 292 292 4.0 4.0 \n", + "11042 0 0 0.0 0.0 \n", + "11043 0 0 0.0 0.0 \n", + "11050 1 1 2.0 2.0 \n", + "11051 23 23 4.5 4.5 \n", + "11060 18 18 4.0 4.0 \n", + "11074 0 0 0.0 0.0 \n", + "11077 97 97 3.0 3.0 \n", + "11079 11 0 4.0 0.0 \n", + "11081 142 75 4.5 4.5 \n", + "11082 30 30 4.5 4.5 \n", + "11087 15 0 4.5 0.0 \n", + "11089 85 32 4.5 4.5 \n", + "11097 3 3 5.0 5.0 \n", + "\n", + " ver cont_rating prime_genre sup_devices.num \\\n", + "1 6.3.5 4+ Games 38 \n", + "2 8.2.2 4+ Productivity 37 \n", + "3 5.0.0 4+ Weather 37 \n", + "4 5.10.0 12+ Shopping 37 \n", + "5 7.5.1 4+ Reference 37 \n", + "6 1.8 4+ Games 47 \n", + "7 6.12.0 4+ Finance 37 \n", + "8 8.4.1 12+ Music 37 \n", + "9 3.6.6 4+ Utilities 37 \n", + "10 4.0.4 4+ Games 38 \n", + "11 4.10.1 4+ Games 38 \n", + "12 5.19.0 4+ Games 37 \n", + "13 27 17+ Utilities 37 \n", + "14 7.3.8 4+ Finance 37 \n", + "15 4.0.3 4+ Games 38 \n", + "16 21.1 4+ Travel 37 \n", + "17 95 4+ Social Networking 37 \n", + "18 11.15.0 12+ Travel 37 \n", + "20 11.0.3 12+ Music 37 \n", + "21 1.0.0 4+ Games 47 \n", + "22 3.3 4+ Reference 43 \n", + "23 5.2.6 4+ Games 40 \n", + "24 6.9 4+ Sports 37 \n", + "25 9.0.5 4+ Business 37 \n", + "27 2.1.3 4+ Music 43 \n", + "28 8.4.1 4+ Health & Fitness 37 \n", + "29 2.0.6 9+ Games 38 \n", + "31 10.5.4 4+ Productivity 37 \n", + "32 1.9.8 4+ Music 43 \n", + "33 3.4.1 4+ Weather 37 \n", + "... ... ... ... ... \n", + "10995 1.0.1 4+ Games 38 \n", + "10998 1.0.1 4+ Games 38 \n", + "11002 1.0.1 4+ Entertainment 37 \n", + "11010 1.3 9+ Social Networking 37 \n", + "11013 1 4+ Games 40 \n", + "11016 1.4 4+ Games 40 \n", + "11019 1.1 4+ Utilities 37 \n", + "11022 1.3.0 4+ Games 37 \n", + "11024 1.3 4+ Games 37 \n", + "11027 1.0.1 4+ Games 40 \n", + "11031 1.1.0 4+ Games 37 \n", + "11033 1.1 4+ Games 37 \n", + "11035 0.6.41 4+ Social Networking 37 \n", + "11036 1.0.5 9+ Utilities 37 \n", + "11038 1 9+ Games 40 \n", + "11040 1.0.3 4+ Photo & Video 37 \n", + "11041 2.0.20.1 9+ Games 40 \n", + "11042 1 9+ Games 40 \n", + "11043 1 9+ Games 38 \n", + "11050 1.0.1 4+ Games 38 \n", + "11051 1 4+ Games 37 \n", + "11060 1.0.0 12+ Games 38 \n", + "11074 2.1.0 9+ Games 38 \n", + "11077 1 4+ Games 37 \n", + "11079 1.1.1 17+ Games 37 \n", + "11081 1.3 4+ Games 38 \n", + "11082 0.9 4+ Games 38 \n", + "11087 1.0.2 9+ Utilities 37 \n", + "11089 1.0.15 12+ Games 38 \n", + "11097 1 4+ Games 40 \n", + "\n", + " ipadSc_urls.num lang.num vpp_lic size_Mb \n", + "1 5 10 1 100.79 \n", + "2 5 23 1 158.58 \n", + "3 5 3 1 100.52 \n", + "4 5 9 1 128.51 \n", + "5 5 45 1 92.77 \n", + "6 5 1 1 10.49 \n", + "7 0 19 1 227.80 \n", + "8 4 1 1 130.24 \n", + "9 5 1 1 49.25 \n", + "10 0 10 1 70.02 \n", + "11 4 11 1 49.62 \n", + "12 0 6 1 227.55 \n", + "13 4 33 1 179.98 \n", + "14 0 2 1 160.93 \n", + "15 5 2 1 55.15 \n", + "16 1 26 1 207.91 \n", + "17 1 29 1 389.88 \n", + "18 5 18 1 167.41 \n", + "20 3 16 1 147.09 \n", + "21 0 1 1 10.74 \n", + "22 0 2 1 70.71 \n", + "23 5 1 1 6.17 \n", + "24 2 6 1 130.58 \n", + "25 5 3 1 71.20 \n", + "27 2 10 1 11.42 \n", + "28 5 11 1 188.02 \n", + "29 0 1 1 4.77 \n", + "31 5 23 1 287.93 \n", + "32 1 1 1 4.26 \n", + "33 5 1 1 172.77 \n", + "... ... ... ... ... \n", + "10995 4 1 1 177.50 \n", + "10998 5 1 1 89.19 \n", + "11002 0 31 1 32.69 \n", + "11010 1 1 1 26.08 \n", + "11013 0 1 1 143.35 \n", + "11016 5 1 1 242.51 \n", + "11019 0 1 1 18.16 \n", + "11022 5 1 1 169.54 \n", + "11024 5 25 1 64.24 \n", + "11027 4 1 1 184.32 \n", + "11031 5 1 1 33.95 \n", + "11033 5 1 1 327.73 \n", + "11035 4 1 1 113.38 \n", + "11036 4 1 1 94.01 \n", + "11038 5 0 1 178.16 \n", + "11040 0 1 1 9.36 \n", + "11041 5 1 1 57.35 \n", + "11042 5 0 1 171.94 \n", + "11043 5 1 1 208.03 \n", + "11050 5 1 1 85.58 \n", + "11051 5 2 1 52.34 \n", + "11060 4 1 1 168.77 \n", + "11074 5 1 1 537.46 \n", + "11077 5 3 1 23.00 \n", + "11079 0 1 1 27.85 \n", + "11081 5 1 1 126.64 \n", + "11082 0 1 1 120.76 \n", + "11087 1 1 1 111.32 \n", + "11089 0 2 1 97.24 \n", + "11097 0 2 1 90.90 \n", + "\n", + "[7197 rows x 15 columns]" + ] + }, + "execution_count": 124, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def _byte_resizer(data):\n", + " return np.around(data / 1000000, decimals=2)\n", + "\n", + "df[\"size_Mb\"] = df[\"size_bytes\"].apply(_byte_resizer)\n", + "df.drop(\"size_bytes\", axis=\"columns\", inplace=True)\n", + "df" + ] + }, + { + "cell_type": "code", + "execution_count": 125, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 125, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\nAJEFAFCAyAIAKEBkAQAUILIAAAoQWQAABYgsAIACRBYAQAEiCwCgAJEFAFCAyAIAKEBkAQAUILIA\nAAoQWQAABYgsAIACRBYAQAEiCwCgAJEFAFCAyAIAKKBDkfX4449nwoQJSZLGxsYceOCBmTBhQiZM\nmJCf/vSnSZJrrrkmo0ePztixY/PEE08kSZYvX55x48Zl/PjxueCCC9La2lpoGQAA3UvNpg6YP39+\n7rzzzmy77bZJkieffDInn3xyJk6c2HZMY2NjlixZkttvvz0vvfRSJk+enB//+Me57LLLMmXKlOy3\n336ZMWNG7r333owaNarcagAAuolNnskaOHBg5s6d23Z52bJluf/++3PCCSdk2rRpaWpqytKlSzNy\n5MhUVVVlt912S0tLS1auXJnGxsbsu+++SZKDDjooDz30ULmVAAB0I5uMrPr6+tTU/O8Jr+HDh+ec\nc87JggULsvvuu+faa69NU1NTamtr247p06dPVq1alUqlkqqqqvWuAwD4KNjsF76PGjUqw4YNa/vf\nTz75ZGpra9Pc3Nx2THNzc/r27ZsePXqsd12/fv22wMgAAN3fZkfWpEmT2l7Yvnjx4uy9994ZMWJE\nHnjggbS2tubFF19Ma2tr+vfvn6FDh+bhhx9OkixatCh1dXVbdnoAgG5qky98f68LL7wwl1xySXr2\n7Jkddtghl1xySWpra1NXV5cxY8aktbU1M2bMSJJMnTo106dPz5w5czJkyJDU19dv8QUAAHRHHYqs\nAQMGZOHChUmSvffeO7feeusGx0yePDmTJ09e77rBgwfn5ptv3gJjAgB8sHgzUgCAAkQWAEABIgsA\noACRBQBQgMgCAChAZAEAFCCyAAAKEFkAAAWILACAAkQWAEABIgsAoACRBQBQgMgCAChAZAEAFCCy\nAAAKEFkAAAWILACAAkQWAEABIgsAoACRBQBQgMgCAChAZAEAFCCyAAAKEFkAAAWILACAAkQWAEAB\nIgsAoACRBQBQgMgCAChAZAEAFCCyAAAKEFkAAAWILACAAkQWAEABIgsAoACRBQBQgMgCAChAZAEA\nFCCyAAAKEFkAAAWILACAAkQWAEABIgsAoACRBQBQgMgCAChAZAEAFFDTkYMef/zxXHXVVWloaMjv\nfve7XHLJJamurs4222yTyy+/PDvssENmzpyZRx99NH369EmSzJs3L2vXrs1ZZ52Vt956KzvttFMu\nu+yybLvttkUXBADQHWzyTNb8+fNz/vnnZ/Xq1UmSSy+9NNOnT09DQ0NGjRqV+fPnJ0kaGxtzww03\npKGhIQ0NDenbt2/mzZuXww8/PLfcckuGDh2a2267rexqAAC6iU1G1sCBAzN37ty2y3PmzMmnP/3p\nJElLS0t69eqV1tbWLF++PDNmzMjYsWNzxx13JEmWLl2aAw88MEly0EEH5aGHHiqxBgCAbmeTTxfW\n19fn+eefb7u80047JUkeffTR3HzzzVmwYEH++te/5sQTT8zJJ5+clpaWnHTSSRk2bFiamprSt2/f\nJEmfPn2yatWqQssAAOheOvSarPf66U9/muuuuy7f//73079//7aweuf1Vvvvv3+eeuqp1NbWprm5\nOb17905zc3P69eu3RYcHAOiuNvuvC//93/89N998cxoaGrL77rsnSf785z9n/PjxaWlpydq1a/Po\no49m7733zogRI/LLX/4ySbJo0aJ8/vOf37LTAwB0U5t1JqulpSWXXnppdt1110yePDlJ8g//8A85\n88wzc8QRR+T4449Pz549c9RRR2WvvfbKaaedlqlTp2bhwoX5+Mc/nquvvrrIIgAAupsORdaAAQOy\ncOHCJMmSJUvaPeaUU07JKaecst51O+ywQ2688cb3OSIAwAePNyMFAChAZAEAFNCpvy6EraHhpvqu\nHuF9m/B/ftbVIwDQRZzJAgAoQGQBABQgsgAAChBZAAAFiCwAgAJEFgBAASILAKAAkQUAUIDIAgAo\nQGQBABQgsgAAChBZAAAFiCwAgAJEFgBAASILAKAAkQUAUIDIAgAoQGQBABQgsgAAChBZAAAFiCwA\ngAJEFgBAASILAKAAkQUAUIDIAgAoQGQBABQgsgAAChBZAAAFiCwAgAJEFgBAASILAKAAkQUAUIDI\nAgAoQGQBABQgsgAAChBZAAAFiCwAgAJEFgBAASILAKAAkQUAUIDIAgAoQGQBABQgsgAACuhQZD3+\n+OOZMGFCkmT58uUZN25cxo8fnwsuuCCtra1JkmuuuSajR4/O2LFj88QTT/zNYwEAPuw2GVnz58/P\n+eefn9WrVydJLrvsskyZMiW33HJLKpVK7r333jQ2NmbJkiW5/fbbM2fOnFx00UUbPRYA4KNgk5E1\ncODAzJ07t+1yY2Nj9t133yTJQQcdlIceeihLly7NyJEjU1VVld122y0tLS1ZuXJlu8cCAHwUbDKy\n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\nKEBkAQAUILIAAAoQWQAABYgsAIACRBYAQAEiCwCggA/UO76/ct3NXT3C+7bjaSd29QgAwFbgTBYA\nQAEiCwCgAJEFAFBAp16TtXbt2kybNi0vvPBC1qxZk9NOOy277LJLTj311Pzd3/1dkmTcuHE57LDD\ncs011+T+++9PTU1Npk2bluHDh2/J+QEAuqVORdadd96Z7bffPldeeWVeffXVfPWrX83pp5+ek08+\nORMnTmw7rrGxMUuWLMntt9+el156KZMnT86Pf/zjLTY8AEB31anI+vKXv5z6+vq2y9XV1Vm2bFme\nffbZ3HvvvRk0aFCmTZuWpUuXZuTIkamqqspuu+2WlpaWrFy5Mv37999iCwAA6I46FVl9+vRJkjQ1\nNeXMM8/MlClTsmbNmhx33HEZNmxYrrvuulx77bXp27dvtt9++/Vut2rVKpEFAHzodfqF7y+99FJO\nOumkHHXUUTniiCMyatSoDBs2LEkyatSoPPnkk6mtrU1zc3PbbZqbm9O3b9/3PzUAQDfXqchasWJF\nJk6cmLPPPjujR49OkkyaNClPPPFEkmTx4sXZe++9M2LEiDzwwANpbW3Niy++mNbWVmexAICPhE49\nXXj99dfnjTfeyLx58zJv3rwkybnnnptZs2alZ8+e2WGHHXLJJZektrY2dXV1GTNmTFpbWzNjxowt\nOjwAQHfVqcg6//zzc/75529w/a233rrBdZMnT87kyZM7820AAD6wvBkpAEABIgsAoACRBQBQgMgC\nAChAZAEAFNCpvy4EADbfg//fK109wvv2hZN27OoRPjCcyQIAKEBkAQAUILIAAAoQWQAABYgsAIAC\nRBYAQAEiCwCgAJEFAFCAyAIAKEBkAQAUILIAAAoQWQAABYgsAIACRBYAQAEiCwCgAJEFAFCAyAIA\nKEBkAQAUILIAAAoQWQAABYgsAIACRBYAQAEiCwCgAJEFAFCAyAIAKEBkAQAUILIAAAoQWQAABYgs\nAIACRBYAQAE1XT0AAPDh9pfvPtHVI7xvO39z+GbfxpksAIACRBYAQAEiCwCgAJEFAFCAyAIAKEBk\nAQAUILIAAAoQWQAABYgsAIACRBYAQAHFP1antbU1F154YZ5++ulss802mTlzZgYNGlT62wIAdKni\nZ7J+8YtfZM2aNbntttvy7W9/O7Nnzy79LQEAulzxM1lLly7NgQcemCTZZ599smzZso0e29LSkiR5\n+eWX2/36ytdf2/IDbmWrn39+s2/z36+vLTDJ1vV8J9b92msfzXW/tfKjue61r75RYJKtq3PrXllg\nkq2rM+t+c2X7/85/kDz/fNVm32bFax+Gx3v1Zt9mxRv/XWCSrWttO/v8nV55p1/eq6pSqVRKDvWd\n73wnhx56aL74xS8mSb70pS/lF7/4RWpqNuy7Rx55JCeccELJcQAAtqgFCxakrq5ug+uLn8mqra1N\nc3Nz2+XW1tZ2AytJhg0blgULFmTHHXdMdXV16dEAADqtpaUlr7zySoYNG9bu14tH1ogRI3Lffffl\nsMMOy2OPPZZPfvKTGz22d+/e7ZYgAEB39Lf+mK/404Xv/HXh73//+1QqlcyaNSt77LFHyW8JANDl\nikcWAMBHkTcjBQAoQGQBABRQ/IXv3dVNN92UFStW5KyzzkqS/Od//meuvfba1NTU5Nhjj83xxx/f\nxRNuvscffzxXXXVVGhoasnz58px77rmpqqrKXnvtlQsuuCA9eqzf1IsXL873vve91NTU5BOf+EQu\nv/zybLvttrnmmmty//33p6amJtOmTcvw4cO7aEV/29q1azNt2rS88MILWbNmTU477bTsueeem1z3\nPffckyuuuCK77rprkmTy5Mmpq6vr9p9McPTRR6dv375JkgEDBmTMmDG59NJLU11dnZEjR+aMM85o\n93ZvvvlmTj755Fx66aXZY489NvopDI899liH7m9r6ch+3tRebW+PHHzwwZ2+v5I2Zz93ZM737pfL\nLrus3ce4Kz+VoyN7enPm+/nPf5677747V199dZJs1nq72/5vz7t/J95tY/s8Se66664sWLAgSVJd\nXZ1PfepTOfvss7PNNtts9fm3pBdffDHTpk1LS0tLKpVKLr744gwZMiTr1q3L9ddfn1/+8pfp1atX\nkuSII47ImDFjumbQykfEmjVrKnfffXflqaeeqnz729+ujBo1qnLllVe2fe2QQw6pvPbaa5XVq1dX\njjnmmMp///d/d/HEm+f73/9+5fDDD68cd9xxlUqlUvmnf/qnyq9+9atKpVKpTJ8+vXLPPfdscJtD\nDz208sorr1QqlUrlqquuqvzwhz+sLFu2rDJhwoRKa2tr5YUXXqgcc8wxW28Rm+mOO+6ozJw5s1Kp\nVCorV66sfPGLX+zQuufMmVO5++6717vuZz/7WWXq1KmVSqVS+c1vflM59dRTC0+/ed56663KUUcd\ntd51Rx55ZGX58uWV1tbWyte+9rXKsmXLNrjdE088UfnqV79aOeCAAyrPPPNMpVLZ+Fo7cn9bS0f2\nc0f2ant75P3cX0kd3c8dmbO9/VKptP8Yd9Xe7+ie7uh8l1xySaW+vr4yZcqUTt1fd9r/7Xnv78S7\nbWyf33///ZWTTjqp8vrrr1cqlUqltbW1cumll1Zuu+22rTb3lvDQQw9Vli5dut5155xzTuXnP/95\npVKpVBYtWlQ5/fTTK5VKpXLFFVdUZs+eXVm3bl2lUqlUmpqaKieccELbv39b24f+TNZzzz2X22+/\nPUuWLMmBBx6Y/fffP0cffXQOOOCA/OlPf0qS/PGPf8zAgQOz3XbbJUk+//nP55FHHskzzzyT5cuX\n59VXX83rr7+e8ePH55577smzzz6byy+/PPvss09XLm09AwcOzNy5c3POOeckSRobG7PvvvsmSQ46\n6KA8+OCDGTVq1Hq3aWhoyA477JAkWbduXXr16pWlS5dm5MiRqaqqym677ZaWlpasXLky//zP/5y/\n//u/zx/+8Id87GMfS11dXR544IG88cYb+dd//de2n93W9OUvfzn19fVtl6urqzu07sbGxvzud7/L\nD3/4wwwfPjxnnXXWRj+Z4IgjjkhdXV1+//vfZ/DgwfnEJz6RRx55JNtss02+//3vp2fPnltlrU89\n9VTefPPNTJw4MevWrcvkyZOzZs2aDBw4MEkycuTILF68OHvvvfd6t1uzZk2uvfbatn2RtP8pDE1N\nTe3e39NPP5377rsvb731Vl555ZWcdNJJuffee/OHP/wh55xzTg455JAi6+3Ifh48eHC7e7V///5t\n99PeHtnc+9tae7+j+7kj637vfvnWt76VPffcs93H+JVXXumSvd/RPb2x+d5rxIgROeSQQ3Lbbbcl\nyUb3dHv31932f3ve+zvxbhvb5w0NDTnnnHPSr1+/JElVVVXOO++8VFVt/jvVd6VddtklN910U668\n8sp85StfyVFHHZWpU6e2nQVtaWlJr169sm7duvzHf/xH7rnnnrafQZ8+fdLQ0NBla/5QvyZrwYIF\nmTBhQurq6nLrrbfmjDPOyHbbbZeRI0eud1xTU1Pbg5W8/aA0NTUlefu9u2688cYceuih+eUvf5nr\nr78+X//613PXXXdt1bVsSn19/Xpv8lqpVNo2VZ8+fbJq1aoNbrPTTjslefsU+8MPP5yjjz46TU1N\nqa2tbTvm3bcdPnx4fvjDH2bNmjXp3bt3fvCDH2TPPffMr3/965JL26g+ffqktrY2TU1NOfPMMzNl\nypQOrfsLX/hCpk+fngULFuSvf/1rbr311g3WXV1dnXXr1qW5uTmHH354FixYkEceeSQjRozIggUL\nsnbt2jzzzDNbba29e/fOpEkFC4hqAAAGDElEQVSTcuONN+aiiy7Keeedl2233bbt6xtb6+c///m2\np0Xf0d5a/9bj3tzcnPnz5+eUU07Jj370o1xzzTW5+OKL85Of/GRLL7NNR/bz35r53de9d4905v62\nxt7v6H7uyLrfu1/OOuusjd6uq/Z+R/f0xuZ7r8MOO2y9/5Buznq72/5vz3t/J95tY/v8+eefb3tq\n9Te/+U0mTJiQcePG5Zvf/OZWm3tLGDx4cC666KL84Ac/SKVSySGHHJKXXnopPXv2zJ/+9Kdcfvnl\nOf300/Pqq69mu+22a/s53XLLLZkwYUKOPfbY3HTTTV0y+4f6TNZhhx2W1atX5/rrr8+vfvWrjB49\nut336Hrvu9I3Nzenb9++efnllzN06NAkSd++fbPnnnsmSbbbbrusXr35n920Nb37dUjNzc3p169f\nbr755vzsZz9Lklx11VXZeeedc9NNN+Xuu+/ODTfckF69em30Z5Gk7SxJv3792n4W/fr169KfxUsv\nvZTTTz8948ePzxFHHJErr7yy7WsbW/exxx7b9v/sDj744PzsZz9L3759N/rJBO9e9zv7Z2uve/Dg\nwRk0aFCqqqoyePDg9O3bN6+99r+f5fnOWr/73e/m0UcfTfL26w7b++SE9j6Fob3H/Z2f0ac//ekk\nb/8O7LHHHqmqqtrqvwPt7ef2Zu7Vq1cmTJiQJDnggANy2mmnbbBHNuf+tvbe78h+7si6J02atN5+\n2X777dPS0tLuY/zWW291yd7v6J5ub74XXngh559/fpLkyCOPzHHHHbfB/W9sT7d3f919/79Xc3Nz\nTj311CR/e5/vuuuuef755/OpT30qn/vc59LQ0JA//vGPufDCC7ts9s6oVCpZsmRJbr/99rz66qu5\n4IILstdee+VXv/pVLrroolxxxRUZMmRI1q5dm9deey0tLS2prq7O+PHjM378+PzoRz/KihUrumT2\nD/WZrI9//OOZOHFifvSjH+VLX/pS5s2bl9/+9rcbHLfHHntk+fLlee2117JmzZo88sgj+dznPpck\nH7jTqu8YOnRoHn744STJokWLUldXlxNPPDENDQ1paGjIzjvvnOuuuy6PPPJIbrrppranGkaMGJEH\nHnggra2tefHFF9Pa2rre0xDdyYoVKzJx4sScffbZGT16dJJNr3unnXbKkUce2fahnu88xTZixIgs\nWrQoSTb4ZILusAfuuOOOzJ49O0nyl7/8JW+++WY+9rGP5bnnnkulUskDDzyQurq6fPOb32xb68Y+\nmqq9tdbW1qZnz54b3F/SPdbf3uPa3l7dZZdd2tZ/2mmntbtHNuf+tube7+h+7si637tfmpqasvPO\nO7f7GHfV3u/onm5vvkGDBrWtt73ASrLRPf1B3P/v9c5TYJva5yeeeGKuuOKK9c50LlmypCtGfl8W\nLlyY++67L9/4xjdy44035vDDD8+jjz6aSy+9NDfccEM+85nPJEl69uyZQw89NN/73vfS2tqaJFm9\nenUef/zxLnscP9Rnst5tv/32y3777dfu13r27Jlzzz03kyZNSqVSybHHHpudd955K0+4ZU2dOjXT\np0/PnDlzMmTIkPWer0/e/gf92muvzdChQ3PKKackSb7yla9k/Pjxqaury5gxY9La2poZM2Z0xfgd\ncv311+eNN97IvHnzMm/evCRvfyD5zJkzN7ruqqqqzJw5M2eccUZ69+6dPfbYI8cff3yqq6vz4IMP\nZuzYsW2fTNCdjB49Ouedd17GjRuXqqqqzJo1Kz169MhZZ52VlpaWjBw5Mp/97Gc7dF+jRo1qd63v\nPK307vv74x//WHJZHdbefq6urt7kXm1vj8yfP7/T91dSR/dzR+Zsb7/U1NS0+xh/5jOf6ZK939E9\n/X7m25z1duf9vykb2+cHH3xw1q1bl2984xtJ3j4D9qlPfSqXX355V4672dr7y8BZs2Zl7dq1Offc\nc5O8fWb04osvztlnn50bbrghJ5xwQmpqatLU1JRDDjkkJ5988tYeO4l3fAcAKOJD/XQhAEBXEVkA\nAAWILACAAkQWAEABIgsAoACRBQBQgMgCAChAZAEAFPB/AUD2W2hopzCPAAAAAElFTkSuQmCC\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.subplots(figsize=(10, 8))\n", + "BINS = [0.00, 10.00, 20.00, 50.00, 100.00, 200.00, 500.00, 1000.00, 2000.00, np.inf]\n", + "LABELS = [\"<10m\", \"10-20m\", \"20-50m\", \"50-100m\", \"100-200m\", \"200-500m\", \"500-1000m\", \"1-2G\", \">2G\"]\n", + "freqs = pd.cut(df[\"size_Mb\"], BINS, include_lowest=True, labels=LABELS)\n", + "sns.barplot(y=freqs.value_counts().values, x=freqs.value_counts().index)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 126, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "BINS = [-np.inf, 0.00, np.inf]\n", + "LABELS = [\"FREE\", \"PAID\"]\n", + "colors = ['lightcoral', 'yellowgreen']" + ] + }, + { + "cell_type": "code", + "execution_count": 128, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(-1.1057396083108322,\n", + " 1.1002733599434824,\n", + " -1.1276675874208923,\n", + " 1.1112839653444184)" + ] + }, + "execution_count": 128, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\nPEREROT2/h9KGoVoZf7tIAAAAABJRU5ErkJggg==\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "df[\"price_categories\"] = pd.cut(df[\"price\"], BINS, include_lowest=True, labels=LABELS)\n", + "fig, axs = plt.subplots(figsize=(10, 5))\n", + "price_df = df[\"price_categories\"].value_counts()\n", + "plt.pie(price_df.values, labels=LABELS, colors=colors, autopct='%1.1f%%', shadow=True)\n", + "centre_circle = plt.Circle((0,0),0.75,color='black', fc='white',linewidth=1.25)\n", + "\n", + "fig = plt.gcf()\n", + "fig.gca().add_artist(centre_circle)\n", + "\n", + "plt.axis('equal')\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "free_apps = df.loc[df[\"price_categories\"] == \"FREE\"]\n", + "paid_apps = df.loc[df[\"price_categories\"] == \"PAID\"]\n", + "free_apps_rated = free_apps.sort_values(by=[\"rating_count_tot\"], ascending=False)\n", + "paid_apps_rated = paid_apps.sort_values(by=[\"rating_count_tot\"], ascending=False)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +}