bytes.cat

La wiki d'FP d'informàtica

Eines de l'usuari

Eines del lloc


Barra lateral

ASIX Administració de Sistemes Informàtics i Xarxes
Tots els mòduls del cicle
MP01 Implantació de sistemes operatius
Totes les UFs del modul
MP02 Gestió de bases de dades
Totes les UFs del modul
MP03 Programació bàsica
Totes les UFs del modul
MP04 Llenguatges de marques i sistemes de gestió d'informació
Totes les UFs del modul
MP05 Fonaments de maquinari
Totes les UFs del modul
MP06 Administració de sistemes operatius
Totes les UFs del modul
MP07 Planificació i administració de xarxes
Totes les UFs del modul
MP08 Serveis de xarxa i Internet
Totes les UFs del modul
MP09 Implantació d'aplicacions web
Totes les UFs del modul
MP10 Administració de sistemes gestors de bases de dades
Totes les UFs del modul
MP11 Seguretat i alta disponibilitat
Totes les UFs del modul
MP12 Formació i orientació laboral
Totes les UFs del modul
MP13 Empresa i iniciativa emprenedora
Totes les UFs del modul
MP14 Projecte
Totes les UFs del modul
DAM Desenvolupament d’aplicacions multiplataforma
Tots els mòduls del cicle
MP01 Sistemes informàtics
Totes les UFs del modul
MP02 Bases de dades
Totes les UFs del modul
MP03 Programació bàsica
Totes les UFs del modul
MP04 Llenguatges de marques i sistemes de gestió d'informació
Totes les UFs del modul
MP05 Entorns de desenvolupament
Totes les UFs del modul
MP06 Accés a dades
Totes les UFs del modul
MP07 Desenvolupament d’interfícies
Totes les UFs del modul
MP08 Programació multimèdia i dispositius mòbils
Totes les UFs del modul
MP09 Programació de serveis i processos
Totes les UFs del modul
MP10 Sistemes de gestió empresarial
Totes les UFs del modul
MP11 Formació i orientació laboral
Totes les UFs del modul
MP12 Empresa i iniciativa emprenedora
Totes les UFs del modul
MP13 Projecte de síntesi
Totes les UFs del modul
MPDual Mòdul Dual / Projecte
DAW Desenvolupament d’aplicacions web
Tots els mòduls del cicle
MP01 Sistemes informàtics
Totes les UFs del modul
MP02 Bases de dades
Totes les UFs del modul
MP03 Programació
Totes les UFs del modul
MP04 Llenguatge de marques i sistemes de gestió d’informació
Totes les UFs del modul
MP05 Entorns de desenvolupament
Totes les UFs del modul
MP06 Desenvolupament web en entorn client
Totes les UFs del modul
MP07 Desenvolupament web en entorn servidor
Totes les UFs del modul
MP08 Desplegament d'aplicacions web
Totes les UFs del modul
MP09 Disseny d'interfícies web
Totes les UFs del modul
MP10 Formació i Orientació Laboral
Totes les UFs del modul
MP11 Empresa i iniciativa emprenedora
Totes les UFs del modul
MP12 Projecte de síntesi
Totes les UFs del modul
SMX Sistemes Microinformàtics i Xarxes
Tots els mòduls del cicle
MP01 Muntatge i manteniment d’equips
Totes les UFs del modul
MP02 Sistemes Operatius Monolloc
Totes les UFs del modul
MP03 Aplicacions ofimàtiques
Totes les UFs del modul
MP04 Sistemes operatius en xarxa
Totes les UFs del modul
MP05 Xarxes locals
Totes les UFs del modul
MP06 Seguretat informàtica
Totes les UFs del modul
MP07 Serveis de xarxa
Totes les UFs del modul
MP08 Aplicacions Web
Totes les UFs del modul
MP09 Formació i Orientació Laboral
Totes les UFs del modul
MP10 Empresa i iniciativa emprenedora
Totes les UFs del modul
MP11 Anglès
Totes les UFs del modul
MP12 Síntesi
Totes les UFs del modul
CETI Ciberseguretat en Entorns de les Tecnologies de la Informació
Tots els mòduls del cicle
CiberOT Ciberseguretat en Entorns d'Operació
Tots els mòduls del cicle
opendata_pandas

Aquesta és una revisió antiga del document


Extracció de dades obertes amb la llibreria de Python Pandas.

Objectiu

En aquesta guia veurem com obtenir dades obertes d'un servei web i guardar-les, per tal d'utilitzar-les a la nostra aplicació. Aquesta tècnica es coneix com a web scrapping.

Per aconseguir-ho, en primer lloc provarem Pandas en un programa de Python local i/o amb Jupyter Notebook. Posteriorment, incorporarem el codi d'exemple de Pandas en una aplicació web feta amb Django o Flask.

Per què triem Pandas ?

  • Ens proporciona una col·lecció molt útil, inexistent a Python, el DataFrame. És una taula bidimensional que podem indexar amb la/les columna/es que més ens interessin en cada monment (com a SQL).
  • Pandas detecta automàticament inconsistències de tipus i contingut en les dades. Aconseguim avantatges similars als llenguatges de tipat fort (C, Java).
  • Ens permet tractar grans volums de dades (superiors a 10.000 lines) amb molts mètodes per filtrar la informació.
  • Tenim mètodes que ens permeten importar / exportar dades de fitxers i adreçes web amb formats com CSV, JSON, SQL, HTML de manera eficient. És cert que faltaria la importació de MongoDB.
  • Si organitzem les dades del Dataframe convenientment podem crear gràfics amb llibreries com Matplotlib o Seaborn, amb menys codi que si el posessim en llistes o diccionaris.
  • També facilita la feina si usem llibreries de Machine Learning.
  • És una molt bona alternativa al llenguatge R, amb una corba d'aprentatge inferior si tenim coneixements bàsics de Python.

Instal·lació llibreria Pandas

Amb venv:

$ python3 -m venv env
$ source env/bin/activate
(env) $ pip install pandas

Amb Anaconda:

$ conda activate env
(env) $ conda install -n env -c anaconda pandas

Exemple codi local

Exemple: Volem obtenir el llistat dels equips de la lliga de futbol femení 2022-2023, que hem trobat a: https://www.sport.es/deportes/futbol/liga-femenina-futbol/clasificacion-liga.html

En aquest cas potser acabem abans copiant i enganxant en un full de càlcul els resultats; però a la hora de la veritat no sempre funciona. A més a més, ens interessa automatitzar les tasques.

Pas 1. Obtenir dades

import pandas as pd
from io import StringIO
url: str = None
# Web scrapping: obtenció de dades externes al nostre sistema.
if url:
  print("Obtaining data")
  url: str = "https://www.sport.es/deportes/futbol/liga-femenina-futbol/clasificacion-liga.html"
  classif: pd.DataFrame = pd.read_html(url, attrs={"summary": "Clasificación"})
  # Per algún motiu que desconec la informació que m'interessa me la posa a 
  # la primera posició d'una llista.
  classificacio_df = classif[0]
else:
  print("Data already obtained")

Pas 2. Filtrar dades i obtenir resultats.

# Visualitzem informació rellevant de les dades.
def print_data():
  print(classificacio_df)
  print(classificacio_df.dtypes)
  print(classificacio_df.EQUIPO)

print_data()

Exemple a Jupyter Notebook

https://colab.research.google.com/drive/1vKHXmy5e9KFGv3EnRHwJpzeHTP5zp6I5#scrollTo=NkAqvLeGc8Jg

Pendent millorar.

Exemple aplicació web

Pendent

Conclusions

Menys parlar de futbol a tota hora i més accessibilitat al accedir a les dades generades.

Més info pendent.

opendata_pandas.1688221600.txt.gz · Darrera modificació: 2023/07/01 14:26 per miquel_angel_amoros