Introduktion till databaser

Effektiv datainläsning med pandas

Amany Mahfouz

Instructor

Relationsdatabaser

  • Data om entiteter organiseras i tabeller
  • Varje rad eller post är en instans av en entitet
  • Varje kolumn innehåller information om ett attribut
  • Tabeller kan länkas till varandra via unika nycklar
  • Stöder mer data, flera samtidiga användare och datakvalitetskontroller
  • Datatyper anges för varje kolumn
  • SQL (Structured Query Language) används för att kommunicera med databaser
Effektiv datainläsning med pandas

Vanliga relationsdatabaser

Microsoft SQL Server-logotyp

Oracle-logotyp

  • SQLite-databaser är datafiler

PostgreSQL-logotyp

SQLite-logotyp

Effektiv datainläsning med pandas

Ansluta till databaser

  • Tvåstegsprocess:
    1. Skapa en anslutning till databasen
    2. Ställ frågor mot databasen

Databas-clipart

Effektiv datainläsning med pandas

Skapa en databasmotor

SQLAlchemy-logotyp

  • sqlalchemy:s create_engine() skapar en motor för att hantera databasanslutningar
    • Kräver databasens URL som sträng
    • SQLite URL-format: sqlite:///filename.db
Effektiv datainläsning med pandas

Fråga databaser

  • pd.read_sql(query, engine) läser in data från en databas
  • Argument
    • query: sträng med SQL-frågan eller tabellnamnet som ska läsas in
    • engine: anslutnings- eller databasmotorobjekt
Effektiv datainläsning med pandas

SQL-repetition: SELECT

  • Används för att hämta data från en databas
  • Grundläggande syntax:
    SELECT [column_names] FROM [table_name];
    
  • Hämta all data i en tabell:
    SELECT * FROM [table_name];
    
  • Kodstil: nyckelord med VERSALER, semikolon (;) avslutar ett uttryck
Effektiv datainläsning med pandas

Hämta data från en databas

# Load pandas and sqlalchemy's create_engine
import pandas as pd
from sqlalchemy import create_engine

# Create database engine to manage connections engine = create_engine("sqlite:///data.db")
# Load entire weather table by table name weather = pd.read_sql("weather", engine)
Effektiv datainläsning med pandas
# Create database engine to manage connections
engine = create_engine("sqlite:///data.db")

# Load entire weather table with SQL weather = pd.read_sql("SELECT * FROM weather", engine)
print(weather.head())
       station                         name  latitude  ...   prcp  snow  tavg tmax  tmin
0  USW00094728  NY CITY CENTRAL PARK, NY US  40.77898  ...   0.00   0.0         52    42
1  USW00094728  NY CITY CENTRAL PARK, NY US  40.77898  ...   0.00   0.0         48    39
2  USW00094728  NY CITY CENTRAL PARK, NY US  40.77898  ...   0.00   0.0         48    42
3  USW00094728  NY CITY CENTRAL PARK, NY US  40.77898  ...   0.00   0.0         51    40
4  USW00094728  NY CITY CENTRAL PARK, NY US  40.77898  ...   0.75   0.0         61    50

[5 rows x 13 columns]
Effektiv datainläsning med pandas

Nu kör vi en övning!

Effektiv datainläsning med pandas

Preparing Video For Download...