Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save petermcmaster9/c0b832af288b2f6955cef541c9e85ffe to your computer and use it in GitHub Desktop.
Save petermcmaster9/c0b832af288b2f6955cef541c9e85ffe to your computer and use it in GitHub Desktop.
Created on Skills Network 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: hdq91333@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://hdq91333:gmppb8rlx%[email protected]: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://hdq91333:***@dashdb-txn-sbox-yp-dal09-08.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://hdq91333:***@dashdb-txn-sbox-yp-dal09-08.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://hdq91333:***@dashdb-txn-sbox-yp-dal09-08.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": 11,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" * ibm_db_sa://hdq91333:***@dashdb-txn-sbox-yp-dal09-08.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": 11,
"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": 14,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" * ibm_db_sa://hdq91333:***@dashdb-txn-sbox-yp-dal09-08.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": 14,
"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": 21,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" * ibm_db_sa://hdq91333:***@dashdb-txn-sbox-yp-dal09-08.services.dal.bluemix.net:50000/BLUDB\n",
"Done.\n"
]
},
{
"data": {
"text/html": [
"<table>\n",
" <tr>\n",
" <th>community_area_name</th>\n",
" <th>hardship_index</th>\n",
" </tr>\n",
" <tr>\n",
" <td>Riverdale</td>\n",
" <td>98.0</td>\n",
" </tr>\n",
"</table>"
],
"text/plain": [
"[('Riverdale', 98.0)]"
]
},
"execution_count": 21,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"%sql SELECT community_area_name, hardship_index 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": 24,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" * ibm_db_sa://hdq91333:***@dashdb-txn-sbox-yp-dal09-08.services.dal.bluemix.net:50000/BLUDB\n",
"Done.\n"
]
},
{
"data": {
"text/html": [
"<table>\n",
" <tr>\n",
" <th>community_area_name</th>\n",
" <th>per_capita_income_</th>\n",
" </tr>\n",
" <tr>\n",
" <td>Lake View</td>\n",
" <td>60058</td>\n",
" </tr>\n",
" <tr>\n",
" <td>Lincoln Park</td>\n",
" <td>71551</td>\n",
" </tr>\n",
" <tr>\n",
" <td>Near North Side</td>\n",
" <td>88669</td>\n",
" </tr>\n",
" <tr>\n",
" <td>Loop</td>\n",
" <td>65526</td>\n",
" </tr>\n",
"</table>"
],
"text/plain": [
"[('Lake View', 60058),\n",
" ('Lincoln Park', 71551),\n",
" ('Near North Side', 88669),\n",
" ('Loop', 65526)]"
]
},
"execution_count": 24,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"%sql SELECT community_area_name, per_capita_income_ 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": 41,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" * ibm_db_sa://hdq91333:***@dashdb-txn-sbox-yp-dal09-08.services.dal.bluemix.net:50000/BLUDB\n",
"Done.\n",
"There is a strong negative correlation between the hardsip index and per capita income.\n"
]
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"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": [
"pcivhi = %sql SELECT per_capita_income_ as \"pci\", hardship_index as \"hi\" from chicago_socioeconomic_data;\n",
"dataframe = pcivhi.DataFrame()\n",
"\n",
"%matplotlib inLine\n",
"import seaborn\n",
"\n",
"plot = seaborn.scatterplot(x='pci', y='hi', data=dataframe)\n",
"print(\"There is a strong negative correlation between the hardsip index and per capita income.\")\n",
"\n",
"plot1 = seaborn.jointplot(x='pci', y='hi', data=dataframe)"
]
},
{
"cell_type": "code",
"execution_count": 45,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Analysis: (1) wealth inequality exists, with a vast majority of individuals attaining less than $40,000 income per year. (2) An increase in the income of an individual from $15,000 to $35,000 per year is associated with a decrease of Hardship Index score from 80 to 20\n"
]
}
],
"source": [
"print(\"Analysis: (1) wealth inequality exists, with a vast majority of individuals attaining less than $40,000 income per year. (2) An increase in the income of an individual from $15,000 to $35,000 per year is associated with a decrease of Hardship Index score from 80 to 20\")"
]
},
{
"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"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"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.10"
},
"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