Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Select an option

  • Save uncoded0123/035e98b97be8f08ab68f2c7ee4d2a17b to your computer and use it in GitHub Desktop.

Select an option

Save uncoded0123/035e98b97be8f08ab68f2c7ee4d2a17b to your computer and use it in GitHub Desktop.
Created on Cognitive Class Labs
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<a href=\"https://cognitiveclass.ai\"><img src = \"https://ibm.box.com/shared/static/ugcqz6ohbvff804xp84y4kqnvvk3bq1g.png\" width = 300, align = \"center\"></a>\n",
"\n",
"<h1 align=center><font size = 5>Lab: Analyzing a real world data-set with SQL and Python</font></h1>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Introduction\n",
"\n",
"This notebook shows how to store a dataset into a database using and analyze data using SQL and Python. In this lab you will:\n",
"1. Understand a dataset of selected socioeconomic indicators in Chicago\n",
"1. Learn how to store data in an Db2 database on IBM Cloud instance\n",
"1. Solve example problems to practice your SQL skills "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Selected Socioeconomic Indicators in Chicago\n",
"\n",
"The city of Chicago released a dataset of socioeconomic data to the Chicago City Portal.\n",
"This dataset contains a selection of six socioeconomic indicators of public health significance and a “hardship index,” for each Chicago community area, for the years 2008 – 2012.\n",
"\n",
"Scores on the hardship index can range from 1 to 100, with a higher index number representing a greater level of hardship.\n",
"\n",
"A detailed description of the dataset can be found on [the city of Chicago's website](\n",
"https://data.cityofchicago.org/Health-Human-Services/Census-Data-Selected-socioeconomic-indicators-in-C/kn9c-c2s2), but to summarize, the dataset has the following variables:\n",
"\n",
"* **Community Area Number** (`ca`): Used to uniquely identify each row of the dataset\n",
"\n",
"* **Community Area Name** (`community_area_name`): The name of the region in the city of Chicago \n",
"\n",
"* **Percent of Housing Crowded** (`percent_of_housing_crowded`): Percent of occupied housing units with more than one person per room\n",
"\n",
"* **Percent Households Below Poverty** (`percent_households_below_poverty`): Percent of households living below the federal poverty line\n",
"\n",
"* **Percent Aged 16+ Unemployed** (`percent_aged_16_unemployed`): Percent of persons over the age of 16 years that are unemployed\n",
"\n",
"* **Percent Aged 25+ without High School Diploma** (`percent_aged_25_without_high_school_diploma`): Percent of persons over the age of 25 years without a high school education\n",
"\n",
"* **Percent Aged Under** 18 or Over 64:Percent of population under 18 or over 64 years of age (`percent_aged_under_18_or_over_64`): (ie. dependents)\n",
"\n",
"* **Per Capita Income** (`per_capita_income_`): Community Area per capita income is estimated as the sum of tract-level aggragate incomes divided by the total population\n",
"\n",
"* **Hardship Index** (`hardship_index`): Score that incorporates each of the six selected socioeconomic indicators\n",
"\n",
"In this Lab, we'll take a look at the variables in the socioeconomic indicators dataset and do some basic analysis with Python.\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Connect to the database\n",
"Let us first load the SQL extension and establish a connection with the database"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"%load_ext sql"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'Connected: cfn69886@BLUDB'"
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Remember the connection string is of the format:\n",
"# %sql ibm_db_sa://my-username:my-password@my-hostname:my-port/my-db-name\n",
"# Enter the connection string for your Db2 on Cloud database instance below\n",
"# i.e. copy after db2:// from the URI string in Service Credentials of your Db2 instance. Remove the double quotes at the end.\n",
"%sql ibm_db_sa://cfn69886:3tvc%2B96lnv2ftzjz@dashdb-txn-sbox-yp-dal09-04.services.dal.bluemix.net:50000/BLUDB"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Store the dataset in a Table\n",
"##### In many cases the dataset to be analyzed is available as a .CSV (comma separated values) file, perhaps on the internet. To analyze the data using SQL, it first needs to be stored in the database.\n",
"\n",
"##### We will first read the dataset source .CSV from the internet into pandas dataframe\n",
"\n",
"##### Then we need to create a table in our Db2 database to store the dataset. The PERSIST command in SQL \"magic\" simplifies the process of table creation and writing the data from a `pandas` dataframe into the table"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" * ibm_db_sa://cfn69886:***@dashdb-txn-sbox-yp-dal09-04.services.dal.bluemix.net:50000/BLUDB\n"
]
},
{
"data": {
"text/plain": [
"'Persisted chicago_socioeconomic_data'"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"import pandas\n",
"chicago_socioeconomic_data = pandas.read_csv('https://data.cityofchicago.org/resource/jcxq-k9xf.csv')\n",
"%sql PERSIST chicago_socioeconomic_data"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"##### You can verify that the table creation was successful by making a basic query like:"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" * ibm_db_sa://cfn69886:***@dashdb-txn-sbox-yp-dal09-04.services.dal.bluemix.net:50000/BLUDB\n",
"Done.\n"
]
},
{
"data": {
"text/html": [
"<table>\n",
" <tr>\n",
" <th>index</th>\n",
" <th>ca</th>\n",
" <th>community_area_name</th>\n",
" <th>percent_of_housing_crowded</th>\n",
" <th>percent_households_below_poverty</th>\n",
" <th>percent_aged_16_unemployed</th>\n",
" <th>percent_aged_25_without_high_school_diploma</th>\n",
" <th>percent_aged_under_18_or_over_64</th>\n",
" <th>per_capita_income_</th>\n",
" <th>hardship_index</th>\n",
" </tr>\n",
" <tr>\n",
" <td>0</td>\n",
" <td>1.0</td>\n",
" <td>Rogers Park</td>\n",
" <td>7.7</td>\n",
" <td>23.6</td>\n",
" <td>8.7</td>\n",
" <td>18.2</td>\n",
" <td>27.5</td>\n",
" <td>23939</td>\n",
" <td>39.0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>1</td>\n",
" <td>2.0</td>\n",
" <td>West Ridge</td>\n",
" <td>7.8</td>\n",
" <td>17.2</td>\n",
" <td>8.8</td>\n",
" <td>20.8</td>\n",
" <td>38.5</td>\n",
" <td>23040</td>\n",
" <td>46.0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>2</td>\n",
" <td>3.0</td>\n",
" <td>Uptown</td>\n",
" <td>3.8</td>\n",
" <td>24.0</td>\n",
" <td>8.9</td>\n",
" <td>11.8</td>\n",
" <td>22.2</td>\n",
" <td>35787</td>\n",
" <td>20.0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>3</td>\n",
" <td>4.0</td>\n",
" <td>Lincoln Square</td>\n",
" <td>3.4</td>\n",
" <td>10.9</td>\n",
" <td>8.2</td>\n",
" <td>13.4</td>\n",
" <td>25.5</td>\n",
" <td>37524</td>\n",
" <td>17.0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>4</td>\n",
" <td>5.0</td>\n",
" <td>North Center</td>\n",
" <td>0.3</td>\n",
" <td>7.5</td>\n",
" <td>5.2</td>\n",
" <td>4.5</td>\n",
" <td>26.2</td>\n",
" <td>57123</td>\n",
" <td>6.0</td>\n",
" </tr>\n",
"</table>"
],
"text/plain": [
"[(0, 1.0, 'Rogers Park', 7.7, 23.6, 8.7, 18.2, 27.5, 23939, 39.0),\n",
" (1, 2.0, 'West Ridge', 7.8, 17.2, 8.8, 20.8, 38.5, 23040, 46.0),\n",
" (2, 3.0, 'Uptown', 3.8, 24.0, 8.9, 11.8, 22.2, 35787, 20.0),\n",
" (3, 4.0, 'Lincoln Square', 3.4, 10.9, 8.2, 13.4, 25.5, 37524, 17.0),\n",
" (4, 5.0, 'North Center', 0.3, 7.5, 5.2, 4.5, 26.2, 57123, 6.0)]"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"%sql SELECT * FROM chicago_socioeconomic_data limit 5;"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Problems\n",
"\n",
"### Problem 1\n",
"\n",
"##### How many rows are in the dataset?"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" * ibm_db_sa://cfn69886:***@dashdb-txn-sbox-yp-dal09-04.services.dal.bluemix.net:50000/BLUDB\n",
"Done.\n"
]
},
{
"data": {
"text/html": [
"<table>\n",
" <tr>\n",
" <th>1</th>\n",
" </tr>\n",
" <tr>\n",
" <td>78</td>\n",
" </tr>\n",
"</table>"
],
"text/plain": [
"[(Decimal('78'),)]"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"%sql SELECT COUNT(*) FROM chicago_socioeconomic_data"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Double-click __here__ for the solution.\n",
"\n",
"<!-- Hint:\n",
"\n",
"%sql SELECT COUNT(*) FROM chicago_socioeconomic_data;\n",
"\n",
"Correct answer: 78\n",
"\n",
"-->"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Problem 2\n",
"\n",
"##### How many community areas in Chicago have a hardship index greater than 50.0?"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" * ibm_db_sa://cfn69886:***@dashdb-txn-sbox-yp-dal09-04.services.dal.bluemix.net:50000/BLUDB\n",
"Done.\n"
]
},
{
"data": {
"text/html": [
"<table>\n",
" <tr>\n",
" <th>1</th>\n",
" </tr>\n",
" <tr>\n",
" <td>38</td>\n",
" </tr>\n",
"</table>"
],
"text/plain": [
"[(Decimal('38'),)]"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"%sql SELECT COUNT(*) FROM chicago_socioeconomic_data WHERE hardship_index > 50;"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Double-click __here__ for the solution.\n",
"\n",
"<!-- Hint:\n",
"\n",
"%sql SELECT COUNT(*) FROM chicago_socioeconomic_data WHERE hardship_index > 50.0;\n",
"Correct answer: 38\n",
"-->\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Problem 3\n",
"\n",
"##### What is the maximum value of hardship index in this dataset?"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" * ibm_db_sa://cfn69886:***@dashdb-txn-sbox-yp-dal09-04.services.dal.bluemix.net:50000/BLUDB\n",
"Done.\n"
]
},
{
"data": {
"text/html": [
"<table>\n",
" <tr>\n",
" <th>1</th>\n",
" </tr>\n",
" <tr>\n",
" <td>98.0</td>\n",
" </tr>\n",
"</table>"
],
"text/plain": [
"[(98.0,)]"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"%sql SELECT MAX(hardship_index) FROM chicago_socioeconomic_data;"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Double-click __here__ for the solution.\n",
"\n",
"<!-- Hint:\n",
"\n",
"%sql SELECT MAX(hardship_index) FROM chicago_socioeconomic_data;\n",
"\n",
"Correct answer: 98.0\n",
"-->\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Problem 4\n",
"\n",
"##### Which community area which has the highest hardship index?\n"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" * ibm_db_sa://cfn69886:***@dashdb-txn-sbox-yp-dal09-04.services.dal.bluemix.net:50000/BLUDB\n",
"Done.\n"
]
},
{
"data": {
"text/html": [
"<table>\n",
" <tr>\n",
" <th>community_area_name</th>\n",
" </tr>\n",
" <tr>\n",
" <td>Riverdale</td>\n",
" </tr>\n",
"</table>"
],
"text/plain": [
"[('Riverdale',)]"
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"%sql SELECT community_area_name FROM chicago_socioeconomic_data WHERE hardship_index = ( select MAX(hardship_index) FROM chicago_socioeconomic_data )"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Double-click __here__ for the solution.\n",
"\n",
"<!-- Hint:\n",
"\n",
"## We can use the result of the last query to as an input to this query:\n",
"%sql SELECT community_area_name FROM chicago_socioeconomic_data where hardship_index=98.0\n",
"\n",
"## or another option:\n",
"%sql SELECT community_area_name FROM chicago_socioeconomic_data ORDER BY hardship_index DESC NULLS LAST FETCH FIRST ROW ONLY;\n",
"\n",
"## or you can use a sub-query to determine the max hardship index:\n",
"%sql select community_area_name from chicago_socioeconomic_data where hardship_index = ( select max(hardship_index) from chicago_socioeconomic_data ) \n",
"\n",
"Correct answer: 'Riverdale'\n",
"-->"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Problem 5\n",
"\n",
"##### Which Chicago community areas have per-capita incomes greater than $60,000?"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" * ibm_db_sa://cfn69886:***@dashdb-txn-sbox-yp-dal09-04.services.dal.bluemix.net:50000/BLUDB\n",
"Done.\n"
]
},
{
"data": {
"text/html": [
"<table>\n",
" <tr>\n",
" <th>community_area_name</th>\n",
" </tr>\n",
" <tr>\n",
" <td>Lake View</td>\n",
" </tr>\n",
" <tr>\n",
" <td>Lincoln Park</td>\n",
" </tr>\n",
" <tr>\n",
" <td>Near North Side</td>\n",
" </tr>\n",
" <tr>\n",
" <td>Loop</td>\n",
" </tr>\n",
"</table>"
],
"text/plain": [
"[('Lake View',), ('Lincoln Park',), ('Near North Side',), ('Loop',)]"
]
},
"execution_count": 16,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"%sql SELECT community_area_name FROM chicago_socioeconomic_data where per_capita_income_ > 60000"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Double-click __here__ for the solution.\n",
"\n",
"<!-- Hint:\n",
"\n",
"%sql SELECT community_area_name FROM chicago_socioeconomic_data WHERE per_capita_income_ > 60000;\n",
"\n",
"Correct answer:Lake View,Lincoln Park, Near North Side, Loop\n",
"-->\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Problem 6\n",
"\n",
"##### Create a scatter plot using the variables `per_capita_income_` and `hardship_index`. Explain the correlation between the two variables."
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" * ibm_db_sa://cfn69886:***@dashdb-txn-sbox-yp-dal09-04.services.dal.bluemix.net:50000/BLUDB\n",
"Done.\n"
]
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x432 with 3 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"import matplotlib.pyplot as plt\n",
"%matplotlib inline\n",
"import seaborn as sns\n",
"\n",
"income_vs_hardship = %sql SELECT per_capita_income_, percent_aged_16_unemployed FROM chicago_socioeconomic_data;\n",
"plot = sns.jointplot(x='per_capita_income_',y='percent_aged_16_unemployed', data=income_vs_hardship.DataFrame())\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Double-click __here__ for the solution.\n",
"\n",
"<!-- Hint:\n",
"# if the import command gives ModuleNotFoundError: No module named 'seaborn'\n",
"# then uncomment the following line i.e. delete the # to install the seaborn package \n",
"# !pip install seaborn\n",
"import matplotlib.pyplot as plt\n",
"%matplotlib inline\n",
"import seaborn as sns\n",
"\n",
"income_vs_hardship = %sql SELECT per_capita_income_, hardship_index FROM chicago_socioeconomic_data;\n",
"plot = sns.jointplot(x='per_capita_income_',y='hardship_index', data=income_vs_hardship.DataFrame())\n",
"\n",
"Correct answer:You can see that as Per Capita Income rises as the Hardship Index decreases. We see that the points on the scatter plot are somewhat closer to a straight line in the negative direction, so we have a negative correlation between the two variables. \n",
"-->\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Conclusion\n",
"\n",
"##### Now that you know how to do basic exploratory data analysis using SQL and python visualization tools, you can further explore this dataset to see how the variable `per_capita_income_` is related to `percent_households_below_poverty` and `percent_aged_16_unemployed`. Try to create interesting visualizations!"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Summary\n",
"\n",
"##### In this lab you learned how to store a real world data set from the internet in a database (Db2 on IBM Cloud), gain insights into data using SQL queries. You also visualized a portion of the data in the database to see what story it tells."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Copyright &copy; 2018 [cognitiveclass.ai](cognitiveclass.ai?utm_source=bducopyrightlink&utm_medium=dswb&utm_campaign=bdu). This notebook and its source code are released under the terms of the [MIT License](https://bigdatauniversity.com/mit-license/).\n"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python",
"language": "python",
"name": "conda-env-python-py"
},
"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.7"
},
"widgets": {
"state": {},
"version": "1.1.2"
}
},
"nbformat": 4,
"nbformat_minor": 4
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment