{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "In this short post, I will outline how one can access data stored in a database like MariaDB or MySQL for analysis inside an Ipython Notebook. There are many reasons why you might want to store your data in a proper database. For me the most important are:\n", "\n", "1. All of my data resides in a password protected and more secure place than having a multitude of csv, mat, and dta files scattered all over my file system. \n", "\n", "2. If you access the same data for multiple projects, any changes to the underlying data will be propagated to your analysis, without having to update copies of project data.\n", "\n", "3. Having data in a central repository makes backup and recover significantly easier.\n", "\n", "4. This allows for two-way interaction with your database. You can read and write tables from/to your database. Rather than use SQL, you can create database tables using pandas/ipython. \n", "\n", "\n", "\n", "In what follows, I focus on techniques specifically for MariaDB and MySQL, although similar steps would work with other database products out there.\n", "\n", "[Instructions for doing this in Stata](http://www.stata.com/support/faqs/data-management/using-plugin-to-connect-to-database/)\n", "\n", "First, load the python libraries we'll need:" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": false }, "outputs": [], "source": [ "%matplotlib inline\n", "import MySQLdb as mariadb\n", "import getpass # so we don't need to store passwords on disk\n", "import pandas as pd" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The following code uses the getpass package to record password information, and sets up the database connection to a mariadb/mysql database on localhost. Once the connection is established, it runs the query \n", "\n", "``\n", "select * from ipython_out\n", "``\n", "\n", "for copying the table `ipython_out` to the pandas dataframe `data`. Note, you need to supply your own username (`myusername`) and database name (`dbname`)." ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "(209594, 27)" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# importing via mariadb directly into pandas dataframe:\n", "password = getpass.getpass() # asks for password in the console window so we don't store it here\n", "conn = mariadb.connect('localhost','myusername',password,'dbname');\n", "data = pd.io.sql.read_sql('select * from ipython_out', conn)\n", "conn.close()\n", "data.shape" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "As can be seen above, this table (now a dataframe in ipython) has over 200k rows and 27 columns. Let's grab a list of columns:" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "array(['year', 'donor', 'donor_iso2', 'donor_iso3', 'donor_project_id',\n", " 'umbrella', 'recipient', 'recipient_iso2', 'recipient_iso3',\n", " 'donor_type', 'bi_multi', 'environment',\n", " 'environmental_impact_assessment', 'commitment_amount_usd_nominal',\n", " 'commitment_amount_usd_constant', 'title', 'short_description',\n", " 'long_description', 'aiddata_activity_name', 'aiddata_id',\n", " 'score_title', 'score_short_description', 'score_long_description',\n", " 'score_activity', 'score_purpose', 'coalesced_purpose_name',\n", " 'total_score'], dtype=object)" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data.columns.values" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "collapsed": false }, "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", "
yeardonordonor_iso2donor_iso3donor_project_idumbrellarecipientrecipient_iso2recipient_iso3donor_type...long_descriptionaiddata_activity_nameaiddata_idscore_titlescore_short_descriptionscore_long_descriptionscore_activityscore_purposecoalesced_purpose_nametotal_score
0 1998 World Bank - International Finance Corporation... None None None WORLD BANK Honduras HN HND Multilateral... <br> Electrical transmission/ distribution, activit... 3010916 1 0 0 0 0 Electrical transmission/ distribution 1
1 2001 Asian Development Bank (ASDB) None None None ASDB Pakistan PK PAK Multilateral... None Systems of government|Improving public expendi... 2403576 0 0 0 1 1 Public sector financial management 2
2 2005 Inter-American Development Bank (IADB) None None None IADB America, regional Multilateral... The aim of this operation is to improve the fi... Agricultural services |Agricultural financial ... 2389476 1 0 1 0 0 Agricultural services, purpose 2
3 1988 Asian Development Bank (ASDB) None None None ASDB China CN CHN Multilateral... None Energy conservation 2445959 0 0 0 0 1 Energy policy and administrative management 1
4 1994 Asian Development Bank (ASDB) None None None ASDB Laos LA LAO Multilateral... None Financial policy and administrative management... 2446645 0 0 0 1 1 Financial policy and administrative management 2
\n", "

5 rows × 27 columns

\n", "
" ], "text/plain": [ " year donor donor_iso2 \\\n", "0 1998 World Bank - International Finance Corporation... None \n", "1 2001 Asian Development Bank (ASDB) None \n", "2 2005 Inter-American Development Bank (IADB) None \n", "3 1988 Asian Development Bank (ASDB) None \n", "4 1994 Asian Development Bank (ASDB) None \n", "\n", " donor_iso3 donor_project_id umbrella recipient recipient_iso2 \\\n", "0 None None WORLD BANK Honduras HN \n", "1 None None ASDB Pakistan PK \n", "2 None None IADB America, regional \n", "3 None None ASDB China CN \n", "4 None None ASDB Laos LA \n", "\n", " recipient_iso3 donor_type ... \\\n", "0 HND Multilateral ... \n", "1 PAK Multilateral ... \n", "2 Multilateral ... \n", "3 CHN Multilateral ... \n", "4 LAO Multilateral ... \n", "\n", " long_description \\\n", "0
\n", "1 None \n", "2 The aim of this operation is to improve the fi... \n", "3 None \n", "4 None \n", "\n", " aiddata_activity_name aiddata_id score_title \\\n", "0 Electrical transmission/ distribution, activit... 3010916 1 \n", "1 Systems of government|Improving public expendi... 2403576 0 \n", "2 Agricultural services |Agricultural financial ... 2389476 1 \n", "3 Energy conservation 2445959 0 \n", "4 Financial policy and administrative management... 2446645 0 \n", "\n", " score_short_description score_long_description score_activity \\\n", "0 0 0 0 \n", "1 0 0 1 \n", "2 0 1 0 \n", "3 0 0 0 \n", "4 0 0 1 \n", "\n", " score_purpose coalesced_purpose_name total_score \n", "0 0 Electrical transmission/ distribution 1 \n", "1 1 Public sector financial management 2 \n", "2 0 Agricultural services, purpose 2 \n", "3 1 Energy policy and administrative management 1 \n", "4 1 Financial policy and administrative management 2 \n", "\n", "[5 rows x 27 columns]" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Of course, with the data in ipython, we can do lots of things like plotting:" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": [ "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\n", "/wHPycvGClbG1gAAAABJRU5ErkJggg==\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "data.total_score.plot(kind='hist')" ] } ], "metadata": { "kernelspec": { "display_name": "Python 2", "language": "python", "name": "python2" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 2 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", "version": "2.7.8" } }, "nbformat": 4, "nbformat_minor": 0 }