{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Mini tutorial de SQL para científicos" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Hoy en día no se puede seguir trabajando con ficheros de texto habiendo tantas alternativas y, sobretodo, a medida que el tamaño de la información crece y crece y se hace inmanejable tratar ficheros de varios cientos de Mb. Es por ello que hoy vamos a ver por encima cómo podemos hacer consultas, modificar y crear nueva información en una base de datos SQL.\n", "\n", "[Descargo de responsabilidad] Esto no pretende ser un tutorial ni algo serio y riguroso, solo un análisis superficial sobre lo que puede ofrecer el manejo de SQL para trabajar con datos y va dirigido, principalmente, a científicos (o no) que se manejan todo el día con ficheros \\*.dat, \\*.txt o \\*.csv." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# ¿Qué es SQL?" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "SQL es un acrónimo para **S**tructured **Q**uery **L**anguage. Es un lenguaje que nos permite acceder a bases de datos SQL (bases de datos relacionales). Un RDBMS (**R**elational **D**ata**B**ase **M**anagement **S**ystem) es un sistema que nos permite acceder, crear, editar y gestionar bases de datos relacionales. Existen RDBMS muy populares como MySQL (MariaDB), PostgreSQL o SQLite. En el presente tutorial vamos a trabajar con SQLite por simplicidad y porque viene disponible con CPython." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# ¿Y Pandas?" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Pandas dispone de funcionalidad que nos permite leer y escribir información en bases de datos relacionales." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Vamos a crear una base de datos SQLite" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Las bases de datos SQLite son bases de datos que no necesitan un servidor y que se guardan en disco. Para más información [pulsa aquí](https://duckduckgo.com/?q=sqlite). Podéis inspeccionar la base de datos que vayamos a crear, bastante simple, con [SQLite manager, un addon para firefox](https://addons.mozilla.org/en-US/firefox/addon/sqlite-manager/)." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Como siempre, primero importamos todo lo necesario" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": false }, "outputs": [], "source": [ "import sqlite3\n", "import datetime as dt\n", "\n", "import pandas as pd\n", "import numpy as np" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Mi configuración es la siguiente:" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false }, "outputs": [ { "data": { "application/json": { "Software versions": [ { "module": "Python", "version": "3.4.0 64bit [GCC 4.8.2]" }, { "module": "IPython", "version": "3.0.0" }, { "module": "OS", "version": "Linux 3.13.0 24 generic x86_64 with LinuxMint 17 qiana" }, { "module": "pandas", "version": "0.15.2" }, { "module": "numpy", "version": "1.9.2" } ] }, "text/html": [ "
Software | Version |
---|---|
Python | 3.4.0 64bit [GCC 4.8.2] |
IPython | 3.0.0 |
OS | Linux 3.13.0 24 generic x86_64 with LinuxMint 17 qiana |
pandas | 0.15.2 |
numpy | 1.9.2 |
Thu Mar 12 20:07:15 2015 CET |