En aquesta secció, explorarem els processos de recol·lecció i emmagatzematge de dades, que són fonamentals per a qualsevol projecte de dades. Aprendrem sobre les diferents tècniques i eines disponibles, així com les millors pràctiques per assegurar que les dades recollides siguin de qualitat i emmagatzemades de manera eficient i segura.

Objectius d'Aprenentatge

Al final d'aquesta secció, hauràs de ser capaç de:

  1. Comprendre les diferents tècniques de recol·lecció de dades.
  2. Identificar les eines adequades per a la recol·lecció de dades.
  3. Dissenyar un procés d'emmagatzematge de dades eficient.
  4. Implementar millors pràctiques per a la gestió de dades recollides.

  1. Tècniques de Recol·lecció de Dades

1.1 Fonts de Dades

Les dades poden provenir de diverses fonts, incloent:

  • Bases de dades internes: Dades generades i emmagatzemades dins de l'organització.
  • APIs: Interfícies de programació d'aplicacions que permeten accedir a dades externes.
  • Sensors IoT: Dispositius que recullen dades en temps real.
  • Web Scraping: Tècnica per extreure dades de llocs web.
  • Dades de tercers: Dades comprades o obtingudes de proveïdors externs.

1.2 Mètodes de Recol·lecció

  • Manual: Introducció manual de dades, adequada per a volums petits.
  • Automatitzada: Utilització de scripts i eines per recollir dades de manera automàtica.
  • ETL (Extract, Transform, Load): Procés per extreure dades de diverses fonts, transformar-les segons les necessitats i carregar-les en un sistema d'emmagatzematge.

1.3 Eines de Recol·lecció

  • Python: Llenguatge de programació amb biblioteques com requests i BeautifulSoup per a web scraping.
  • Apache NiFi: Plataforma per automatitzar el moviment de dades entre sistemes.
  • Talend: Eina d'integració de dades que facilita el procés ETL.

Exemple de Web Scraping amb Python

import requests
from bs4 import BeautifulSoup

# URL del lloc web a extreure dades
url = 'http://example.com'

# Sol·licitud HTTP per obtenir el contingut de la pàgina
response = requests.get(url)

# Analitzar el contingut HTML
soup = BeautifulSoup(response.content, 'html.parser')

# Extreure dades específiques (per exemple, tots els títols)
titles = soup.find_all('h1')

for title in titles:
    print(title.get_text())

Explicació: Aquest codi fa una sol·licitud HTTP a un lloc web, analitza el contingut HTML i extreu tots els elements <h1>.

  1. Emmagatzematge de Dades

2.1 Tipus d'Emmagatzematge

  • Bases de dades relacionals: Utilitzen taules per emmagatzemar dades estructurades (ex. MySQL, PostgreSQL).
  • Bases de dades NoSQL: Emmagatzemen dades no estructurades o semi-estructurades (ex. MongoDB, Cassandra).
  • Data Lakes: Emmagatzemen grans volums de dades en el seu format original.
  • Data Warehouses: Emmagatzemen dades estructurades per a anàlisi i reporting.

2.2 Eines d'Emmagatzematge

  • Amazon S3: Servei d'emmagatzematge al núvol per a dades no estructurades.
  • Google BigQuery: Data warehouse al núvol per a anàlisi de dades a gran escala.
  • Hadoop HDFS: Sistema de fitxers distribuït per emmagatzemar grans volums de dades.

2.3 Millors Pràctiques

  • Normalització de Dades: Reduir la redundància i assegurar la integritat de les dades.
  • Seguretat: Implementar mesures de seguretat com xifratge i controls d'accés.
  • Escalabilitat: Assegurar que el sistema d'emmagatzematge pugui créixer amb les necessitats de l'organització.
  • Backup i Recuperació: Establir procediments per a la còpia de seguretat i recuperació de dades.

Exemple de Connexió a una Base de Dades amb Python

import psycopg2

# Connexió a la base de dades PostgreSQL
conn = psycopg2.connect(
    dbname="example_db",
    user="user",
    password="password",
    host="localhost",
    port="5432"
)

# Crear un cursor
cur = conn.cursor()

# Executar una consulta SQL
cur.execute("SELECT * FROM example_table")

# Obtenir els resultats
rows = cur.fetchall()

for row in rows:
    print(row)

# Tancar la connexió
cur.close()
conn.close()

Explicació: Aquest codi es connecta a una base de dades PostgreSQL, executa una consulta SQL per obtenir totes les files d'una taula i imprimeix els resultats.

Exercicis Pràctics

Exercici 1: Recol·lecció de Dades amb Web Scraping

  1. Tria un lloc web d'on vulguis extreure dades.
  2. Escriu un script en Python per recollir dades específiques del lloc web.
  3. Guarda les dades recollides en un fitxer CSV.

Exercici 2: Emmagatzematge de Dades en una Base de Dades

  1. Crea una base de dades relacional (ex. MySQL o PostgreSQL).
  2. Dissenya una taula per emmagatzemar les dades recollides en l'exercici anterior.
  3. Escriu un script en Python per inserir les dades del fitxer CSV a la taula de la base de dades.

Solucions

Solució Exercici 1

import requests
from bs4 import BeautifulSoup
import csv

url = 'http://example.com'
response = requests.get(url)
soup = BeautifulSoup(response.content, 'html.parser')
titles = soup.find_all('h1')

with open('data.csv', 'w', newline='') as file:
    writer = csv.writer(file)
    writer.writerow(['Title'])
    for title in titles:
        writer.writerow([title.get_text()])

Solució Exercici 2

import psycopg2
import csv

conn = psycopg2.connect(
    dbname="example_db",
    user="user",
    password="password",
    host="localhost",
    port="5432"
)
cur = conn.cursor()

cur.execute("""
    CREATE TABLE IF NOT EXISTS example_table (
        id SERIAL PRIMARY KEY,
        title VARCHAR(255)
    )
""")

with open('data.csv', 'r') as file:
    reader = csv.reader(file)
    next(reader)  # Saltar la fila de capçalera
    for row in reader:
        cur.execute("INSERT INTO example_table (title) VALUES (%s)", row)

conn.commit()
cur.close()
conn.close()

Conclusió

En aquesta secció, hem après sobre les diferents tècniques i eines per a la recol·lecció i emmagatzematge de dades. Hem explorat exemples pràctics de com recollir dades mitjançant web scraping i com emmagatzemar-les en una base de dades relacional. Aquests coneixements són fonamentals per assegurar que les dades recollides siguin de qualitat i estiguin emmagatzemades de manera eficient i segura, preparant-nos per a les següents fases de processament i anàlisi de dades.

© Copyright 2024. Tots els drets reservats