Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save AakashVasudevan/a344bb6900542fc713d1f589b342800f to your computer and use it in GitHub Desktop.
Save AakashVasudevan/a344bb6900542fc713d1f589b342800f 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": [
"<center>\n",
" <img src=\"https://s3-api.us-geo.objectstorage.softlayer.net/cf-courses-data/CognitiveClass/Logos/organization_logo/organization_logo.png\" width=\"300\" alt=\"cognitiveclass.ai logo\" />\n",
"</center>\n",
"\n",
"# Analyzing a real world data-set with SQL and Python\n",
"\n",
"Estaimted time needed: **15** minutes\n",
"\n",
"## Objectives\n",
"\n",
"After complting this lab you will be able to:\n",
"\n",
"- Understand a dataset of selected socioeconomic indicators in Chicago\n",
"- Learn how to store data in an Db2 database on IBM Cloud instance\n",
"- Solve example problems to practice your SQL skills\n"
]
},
{
"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](https://data.cityofchicago.org/Health-Human-Services/Census-Data-Selected-socioeconomic-indicators-in-C/kn9c-c2s2?cm_mmc=Email_Newsletter-_-Developer_Ed%2BTech-_-WW_WW-_-SkillsNetwork-Courses-IBMDeveloperSkillsNetwork-DB0201EN-SkillsNetwork-20127838&cm_mmca1=000026UJ&cm_mmca2=10006555&cm_mmca3=M12345678&cvosrc=email.Newsletter.M12345678&cvo_campaign=000026UJ&cm_mmc=Email_Newsletter-_-Developer_Ed%2BTech-_-WW_WW-_-SkillsNetwork-Courses-IBMDeveloperSkillsNetwork-DB0201EN-SkillsNetwork-20127838&cm_mmca1=000026UJ&cm_mmca2=10006555&cm_mmca3=M12345678&cvosrc=email.Newsletter.M12345678&cvo_campaign=000026UJ), 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",
"\n",
"Let us first load the SQL extension and establish a connection with the database\n"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"%load_ext sql"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'Connected: lnx60378@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://"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Store the dataset in a Table\n",
"\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\n"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" * ibm_db_sa://lnx60378:***@dashdb-txn-sbox-yp-dal09-12.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:\n"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" * ibm_db_sa://lnx60378:***@dashdb-txn-sbox-yp-dal09-12.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?\n"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"78"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"chicago_socioeconomic_data.shape[0]"
]
},
{
"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",
"-->\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Problem 2\n",
"\n",
"##### How many community areas in Chicago have a hardship index greater than 50.0?\n"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" * ibm_db_sa://lnx60378:***@dashdb-txn-sbox-yp-dal09-12.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": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"%%sql\n",
"select count(*) from chicago_socioeconomic_data\n",
"where hardship_index > 50.0"
]
},
{
"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?\n"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" * ibm_db_sa://lnx60378:***@dashdb-txn-sbox-yp-dal09-12.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": 9,
"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": 11,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" * ibm_db_sa://lnx60378:***@dashdb-txn-sbox-yp-dal09-12.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": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"%%sql \n",
"select community_area_name from chicago_socioeconomic_data\n",
"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",
"-->\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Problem 5\n",
"\n",
"##### Which Chicago community areas have per-capita incomes greater than $60,000?\n"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" * ibm_db_sa://lnx60378:***@dashdb-txn-sbox-yp-dal09-12.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": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"%%sql\n",
"select community_area_name from chicago_socioeconomic_data\n",
"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.\n"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Text(0.5, 1.0, 'Per Capita Income vs Hardship Index')"
]
},
"execution_count": 21,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"import seaborn as sns\n",
"plt = sns.scatterplot(x = 'per_capita_income_' , y = 'hardship_index' , data = chicago_socioeconomic_data)\n",
"plt.set_title('Per Capita Income vs Hardship Index')"
]
},
{
"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!\n"
]
},
{
"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.\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Author\n",
"\n",
"<a href=\"https://www.linkedin.com/in/ravahuja/\" target=\"_blank\">Rav Ahuja</a>\n",
"\n",
"## Change Log\n",
"\n",
"| Date (YYYY-MM-DD) | Version | Changed By | Change Description |\n",
"| ----------------- | ------- | ---------- | ---------------------------------- |\n",
"| 2020-08-28 | 2.0 | Lavanya | Moved lab to course repo in GitLab |\n",
"\n",
"<hr>\n",
"\n",
"## <h3 align=\"center\"> © IBM Corporation 2020. All rights reserved. <h3/>\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.11"
},
"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