{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Analyzing and Visualizing Data From a Database\n", "\n", "In the [previous notebook](intro%20to%20sql.ipynb) you combined some csv tables into a SQLite database. You learned how to write various queries to examine the data. In this notebook, you'll write a query into a 'dataframe', a table that you can then manipulate or visualize.\n", "\n", "*NB* you need to have created the `roman.db` in the first notebook (part one of that notebook) before you can progress any further here." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "# We tell python to use the sqlite3 and pandas modules\n", "\n", "import sqlite3\n", "import pandas as pd\n", "\n", "# we connect our database\n", "db = sqlite3.connect('roman.db')" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [], "source": [ "# now we run a query; but unlike in the previous notebook, we'll put all of the SQL commands on a single line\n", "# the line below defines a dataframe, 'df', and uses the pandas command pd.read_sql_query to run a query on the database connection we defined above, db.\n", "\n", "df = pd.read_sql_query(\"SELECT id, elevation, capacity FROM amphi ORDER BY elevation DESC\", db)" ] }, { "cell_type": "code", "execution_count": 19, "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", "
idelevationcapacity
0lambaesisAmphitheater117015400
1albaFucensAmphitheater97710720
2mactarisAmphitheater9115000
3tebessaAmphitheater8779400
4leonAmphitheater846
5bostraAmphitheater845
6segobrigaAmphitheater8177500
7siccaVeneriaAmphitheater74811300
8sanBenedettoDeiMarsiAmphitheater683
9sanVittorinoAmphitheater67220000
\n", "
" ], "text/plain": [ " id elevation capacity\n", "0 lambaesisAmphitheater 1170 15400\n", "1 albaFucensAmphitheater 977 10720\n", "2 mactarisAmphitheater 911 5000\n", "3 tebessaAmphitheater 877 9400\n", "4 leonAmphitheater 846 \n", "5 bostraAmphitheater 845 \n", "6 segobrigaAmphitheater 817 7500\n", "7 siccaVeneriaAmphitheater 748 11300\n", "8 sanBenedettoDeiMarsiAmphitheater 683 \n", "9 sanVittorinoAmphitheater 672 20000" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# let's check that we got the info. we call the first five rows of the dataframe like so:\n", "\n", "df[0:10]" ] }, { "cell_type": "code", "execution_count": 37, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "True" ] }, "execution_count": 37, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# those empty cells are problematic\n", "# Pandas expects missing values to be coded NaN rather than just be empty cells.\n", "\n", "# We need to check to see whether or not our data is actually numeric\n", "\n", "from pandas.api.types import is_string_dtype\n", "from pandas.api.types import is_numeric_dtype\n", "\n", "# is the data of the type 'string'?\n", "is_string_dtype(df['capacity'])\n" ] }, { "cell_type": "code", "execution_count": 36, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "False" ] }, "execution_count": 36, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# is the data of the type 'numeric'? We need it to be numeric in order to plot it.\n", "is_numeric_dtype(df['capacity'])" ] }, { "cell_type": "code", "execution_count": 42, "metadata": {}, "outputs": [], "source": [ "# We covert the column to the numeric data type.\n", "df['capacity'] = df['capacity'].apply(pd.to_numeric, errors='coerce')" ] }, { "cell_type": "code", "execution_count": 43, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "False" ] }, "execution_count": 43, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# checking to see\n", "is_string_dtype(df['capacity'])" ] }, { "cell_type": "code", "execution_count": 44, "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", "
idelevationcapacity
0lambaesisAmphitheater117015400.0
1albaFucensAmphitheater97710720.0
2mactarisAmphitheater9115000.0
3tebessaAmphitheater8779400.0
4leonAmphitheater846NaN
\n", "
" ], "text/plain": [ " id elevation capacity\n", "0 lambaesisAmphitheater 1170 15400.0\n", "1 albaFucensAmphitheater 977 10720.0\n", "2 mactarisAmphitheater 911 5000.0\n", "3 tebessaAmphitheater 877 9400.0\n", "4 leonAmphitheater 846 NaN" ] }, "execution_count": 44, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# compare the results here with the first time we looked. What's different?\n", "df[0:5]" ] }, { "cell_type": "code", "execution_count": 45, "metadata": {}, "outputs": [], "source": [ "# Now we can begin to plot data.\n", "# to plot things with pandas, we also need a package called matplotlib\n", "%matplotlib inline\n", "import matplotlib.pyplot as plt\n" ] }, { "cell_type": "code", "execution_count": 46, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# here's how we make a simple scatter plot\n", "# you will be able to find lots of documentation online for the various kinds of things matplotlib can do.\n", "\n", "X = [590,540,740,130,810,300,320,230,470,620,770,250]\n", "Y = [32,36,39,52,61,72,77,75,68,57,48,48]\n", "\n", "plt.scatter(X,Y)\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 48, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Let's plot elevation against capacity. There are many ways of doing it; here we show two that both produce the same result. Uncomment and comment out (remove or add the #) to try one versus the other\n", "df.plot.scatter('elevation', 'capacity')\n", "# plt.scatter(df['elevation'], df['capacity'])\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 51, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Text(0,0.5,'Capacity')" ] }, "execution_count": 51, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Let's make the plot pretty\n", "\n", "plt.scatter(df['elevation'], df['capacity'])\n", "#add title\n", "plt.title('Relationship Between Elevation and Capacity in Roman Amphitheatres')\n", "\n", "#add x and y labels\n", "plt.xlabel('Elevation')\n", "plt.ylabel('Capacity')" ] }, { "cell_type": "code", "execution_count": 67, "metadata": {}, "outputs": [], "source": [ "# let's print the plot to raster and to vector image\n", "# solution courtesy https://stackoverflow.com/questions/9622163/save-plot-to-image-file-instead-of-displaying-it-using-matplotlib\n", "\n", "fig, ax = plt.subplots( nrows=1, ncols=1 ) # create figure & 1 axis\n", "ax.scatter(df['elevation'], df['capacity']) \n", "plt.title('Relationship Between Elevation and Capacity \\n in Roman Amphitheatres') # the \\n is an escape character that tells the machine to insert a newline\n", "plt.ylabel('Capacity')\n", "plt.xlabel('Elevation')\n", "fig.savefig('demo.png') # save the figure to file for raster image\n", "fig.savefig('demo.pdf') # save the figure to file for vector image\n", "plt.close(fig) #" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "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.5" } }, "nbformat": 4, "nbformat_minor": 2 }