Loading [MathJax]/extensions/tex2jax.js
≡ Menu

meteostat…

This article provides a comprehensive guide to the Meteostat Python library, an essential tool for accessing and manipulating weather and climate data. It covers key features, installation, and a step-by-step guide on how to fetch and visualize data, including a practical example to plot the temperature for Frattaminore, Italy. The integration with Pandas and its user-friendly approach make it an invaluable asset for analysts, scientists, and weather enthusiasts alike.


Nel mondo della scienza dei dati, l’accesso a dati meteorologici affidabili è fondamentale per vari settori come l’agricoltura, l’energia e la ricerca ambientale. La libreria Meteostat in Python offre un potente strumento per accedere, manipolare e visualizzare dati meteorologici e climatici, facilitando così l’analisi del clima e delle condizioni meteorologiche.

L’installazione della libreria Meteostat si effettua semplicemente tramite pip:

pip install meteostat

Una volta installata, la libreria fornisce un’interfaccia per accedere ai dati meteorologici da varie fonti governative e pubbliche. Le classi chiave utilizzate nel codice sono Point e Monthly. La classe Point consente di specificare una posizione geografica attraverso le coordinate di latitudine e longitudine, mentre la classe Monthly consente di ottenere dati mensili per quel punto.

Ecco un esempio che dimostra come utilizzare queste classi per visualizzare i dati meteo di Frattaminore (provincia di Napoli) dal 1° gennaio 2016 al 1° agosto 2023:

import pandas as pd
from datetime import datetime
import matplotlib.pyplot as plt
from meteostat import Point, Monthly
import ssl

ssl._create_default_https_context = ssl._create_unverified_context

# Set time period
start = datetime(2016, 1, 1)
end = datetime(2023, 8, 1)

# Create Point for Frattaminore
location = Point(40.9333, 14.2567)

# Get monthly data
data = Monthly(location, start, end)
data = data.fetch()

# Plot line chart including minimum and maximum temperature
plt.plot(data['tmax'], label='Temperatura massima')
plt.plot(data['tmin'], label='Temperatura minima')
plt.legend()
plt.title('Temperatura a Frattaminore dal 01/01/2016 al 01/08/2023')
plt.show()

Il codice inizia importando le librerie necessarie, tra cui pandas, datetime, matplotlib e Meteostat. La data di inizio e fine viene impostata usando l’oggetto datetime, che specifica l’intervallo di tempo per il quale si vogliono ottenere i dati.

La classe Point viene utilizzata per definire la posizione di Frattaminore attraverso le sue coordinate geografiche. Successivamente, la classe Monthly viene utilizzata per ottenere i dati mensili per quella posizione nel periodo specificato. I dati vengono quindi recuperati con il metodo fetch().

Infine, la libreria matplotlib viene utilizzata per tracciare i dati recuperati, visualizzando le temperature massime e minime nel periodo specificato.

La scelta di utilizzare Meteostat in combinazione con pandas e matplotlib offre un modo efficace e flessibile per ottenere, manipolare e visualizzare dati meteorologici. La sua integrazione con Pandas consente una manipolazione avanzata dei dati, mentre matplotlib offre potenti strumenti di visualizzazione.

La libreria Meteostat in Python rappresenta uno strumento essenziale per chiunque lavori con dati meteorologici. La facilità d’uso e la flessibilità offerte dalla libreria la rendono un punto di partenza ideale per analisti, scienziati e appassionati del meteo. Il codice presentato in questo articolo dimostra come sia possibile effettuare analisi dettagliate su una località specifica utilizzando dati storici mensili e visualizzarli attraverso un grafico.

{ 0 comments }

L’ombra delle montagne, l’intrico dei fiumi, e il passaggio furtivo dei cavalli selvaggi: queste sono le impressioni che emergono dalle pagine di “Megalith-Still”. Come i versi di un poeta che descrive un sogno appena sfuggito, Mimi Plumb ci invita a condividere il suo dialogo silenzioso con il paesaggio indomabile del Kings Canyon.


La natura, nel suo stato più puro, diventa un enigma in grado di svelare la nostra essenza, richiedendo una sintonia delicata e una dedizione che supera l’osservazione superficiale. Il branco di cavalli diventa un segreto rivelato solo a coloro che hanno la pazienza di attendere, di comprendere il linguaggio sottile dei movimenti e dei ritmi della terra. Gli incontri ravvicinati dell’autrice con questi cavalli non sono semplici osservazioni, ma piuttosto delle danze, dialoghi mudi in cui la vita si svela nei suoi dettagli più intimi e misteriosi. E come la corsa dietro ai cavalli, ogni tentativo di catturare pienamente questi momenti rimane elusivo, sempre un passo avanti alla comprensione umana.
“Megalith-Still” non è un libro, ma un prato, un fiume, un cavallo che corre. È l’invito di un’artista a rimuovere le scarpe e i calzini, ad arrotolare i pantaloni, e ad entrare nell’acqua del mistero e della bellezza. È un invito ad abbandonare le sicurezze per inseguire qualcosa di più grande e più profondo, proprio come i cavalli che abbandonano bruscamente il prato, lasciandoci in uno stato di meraviglia e di desiderio.


In un’epoca in cui le distanze si misurano in clic, Plumb ci ricorda che il viaggio vero richiede tempo, fatica e la capacità di vedere oltre l’ovvio. La sua ricerca del sublime ci sfida a fare lo stesso, a cercare il medesimo branco di cavalli nelle nostre vite, nelle nostre anime. Un libro non solo da leggere, ma da vivere, come una melodia antica che risuona nelle profondità dell’essere.

{ 0 comments }

In un caldo giorno d’Agosto, l’aria è impregnata di un calore soffocante e afoso, una calura che sembra stringere la terra in una morsa silenziosa. Le voci del giorno sussurrano languide, stanche dalla lotta con l’implacabile abbraccio del sole. Ma l’orizzonte comincia a fremere, a turbarsi con un palpito impercettibile. Le nuvole, prima lontane e innocue, avanzano come un esercito sordo, e l’ombra di un cambiamento si stende lentamente sulla terra assetata.
Il vento, prima assente, sorge con un sospiro gelido, come se trae respiro dalle profondità del mare. Le foglie delle alberature si agitano, scuotendosi dal torpore estivo, e l’aria si riempie del profumo di un imminente ristoro.
E poi, in un istante sospeso, una magia silenziosa: il primo ticchettio della pioggia sull’ombrellone, timido come un bacio rubato. Il sole, fino a quel momento sovrano incontrastato, è oscurato da un sipario di nuvole grigie, un velo che copre l’ardore della sua fiamma. Le gocce diventano una melodia, una canzone d’amore tra cielo e terra. La pioggia lava via l’arsura, accarezza la pelle dei presenti, bagna la terra arida. È un canto armonico, un ritorno alla vita, una danza fra gli elementi.
In questa pioggia d’Agosto, tutto parla, tutto canta, e il mondo sembra ritrovare un ordine più profondo, una bellezza nascosta. È un attimo fuori dal tempo, un sussurro della natura che racchiude in sé l’eternità.

{ 0 comments }

Web scraping is a technique that allows extracting and processing large amounts of unstructured data from the web through automated scripts that analyze the HTML structure of pages to identify and acquire the desired information; it allows quickly obtaining large amounts of online data for research, monitoring and data analytics, for example by extracting all prices and descriptions from an e-commerce site; the core Python libraries for scraping are Requests to download page content, BeautifulSoup to analyze HTML, and Selenium to handle dynamic pages with JavaScript; with BeautifulSoup it is possible to navigate the HTML as a tree of objects, searching and finding elements through tags, id, class and attributes; for scraping sites with multiple pages, loops can be used that visit each URL in automatic sequence; by adopting best practices with these tools it is possible to create effective, scalable and automated scraping scripts to extract and process large volumes of unstructured data for research, monitoring and data analytics purposes.


Il web scraping è una tecnica fondamentale per raccogliere ed elaborare grandi quantità di dati dal web. In questo articolo analizzeremo in dettaglio i concetti chiave, le migliori pratiche e gli strumenti necessari per iniziare a fare web scraping in modo efficace.

Cos’è il web scraping

Il web scraping consiste nell’estrarre e raccogliere dati da pagine web tramite script automatizzati. Funziona analizzando la struttura HTML delle pagine per identificare e acquisire le informazioni desiderate.

Il principale vantaggio dello scraping è la possibilità di ottenere velocemente un grande volume di dati non strutturati da fonti online per scopi di ricerca, monitoraggio, data analytics. Ad esempio, è possibile estrarre tutti i prezzi e le descrizioni da un e-commerce per analizzarne le dinamiche nel tempo.

Preparazione dell’ambiente

Per iniziare a fare web scraping in Python, è necessario installare alcune librerie fondamentali:

  • Requests: permette di scaricare il contenuto HTML delle pagine web
  • Beautiful Soup: analizza l’HTML e permette di estrarre facilmente dati selezionati
  • Selenium: per interagire con pagine web dinamiche che richiedono l’esecuzione di codice JavaScript

Si possono installare tramite il comando pip:

pip install requests beautifulsoup4 selenium

Scraping di base con Requests e BeautifulSoup

Importiamo le librerie necessarie:

import requests 
from bs4 import BeautifulSoup

Scarichiamo il contenuto HTML di una pagina con Requests:

url = 'https://example.com'
response = requests.get(url)

Analizziamolo con BeautifulSoup per estrarre il titolo e i paragrafi:

soup = BeautifulSoup(response.text, 'html.parser')
title = soup.title.text 
paragraphs = soup.find_all('p')

E scriviamo i dati estratti su file CSV per un’ulteriore elaborazione:

import csv
with open('output.csv', 'w') as file:
    writer = csv.writer(file)
    writer.writerow([title])
    for p in paragraphs:
        writer.writerow([p.text])

Navigazione nella struttura HTML

BeautifulSoup mette a disposizione una serie di metodi per scorrere ed esplorare l’HTML come albero ad oggetti:

  • find() ricerca il primo elemento corrispondente
  • find_all() restituisce tutti gli elementi corrispondenti

Ad esempio, per estrarre tutti i link di una pagina:

links = soup.find_all('a')
for link in links:
   print(link['href'])

È possibile ricercare elementi tramite id, classe o altri attributi per individuare precisamente i dati desiderati.

Scraping di pagine JavaScript dinamiche

Molti siti web moderni utilizzano JavaScript per generare contenuti e pagine dinamicamente. In questi casi, è necessario Selenium, che consente di controllare un browser web per interagire pienamente con le pagine.

Ad esempio, per caricare una pagina dinamica e cliccare su un pulsante prima di scaricarne il contenuto:

from selenium import webdriver
driver = webdriver.Chrome()
driver.get(url)
button = driver.find_element_by_id('load-more')
button.click()
html = driver.page_source
soup = BeautifulSoup(html)

Gestione di pagine multiple

Per scaricare dati da siti web con più pagine, è possibile realizzare script che visitano ogni URL utilizzando cicli e paginazione automatica.

Ad esempio, per estrarre prodotti da un e-commerce con più pagine:

import requests
from bs4 import BeautifulSoup
base_url = 'https://example.com/products?page='
final_page = 10
for x in range(1, final_page+1):
    print(f'Page {x}')
    url = base_url + str(x)
    
    response = requests.get(url)
    soup = BeautifulSoup(response.text)
    
    products = soup.find_all('div', class_='product')
    
    for product in products:
         name = product.find('h2').text
         print(name)

Come abbiamo visto, il web scraping è una tecnica potente che permette di ottenere ed elaborare grandi moli di dati non strutturati da fonti online. Requisiti fondamentali sono librerie come Requests, BeautifulSoup e Selenium, che consentono di automatizzare il processo di estrazione dati anche da pagine web complesse e dinamiche. Adottando le migliori pratiche illustrate e una strategia strutturata, è possibile realizzare script di scraping efficaci e scalabili per progetti di data analytics, monitoraggio, ricerca e altro ancora.

{ 0 comments }

Nelle notturne strade del ricordo e dell’anima, l’obiettivo del fotografo Martin Usborne ha immortalato un sentimento che trova la sua eco in ciascuno di noi: la solitudine, la paura dell’abbandono e quel barlume di speranza che si cela nel silenzio.

“The Silence of Dogs in Cars” non è un semplice progetto fotografico, ma un viaggio nel profondo dell’essere umano e dell’animale, una simbiosi che va oltre la mera apparenza.

In questi scatti, i cani, relegati nei loro abitacoli notturni, diventano i custodi di un’emozione pura e inespressa, quasi una metafora della nostra stessa esistenza. Ogni sguardo catturato è un ponte verso l’introspezione, una riflessione sulla nostra natura, così vicina a quella dell’animale, eppure così spesso dimenticata.
Martin ha saputo legare il filo invisibile del suo passato con una sensibilità unica, offrendo all’osservatore una visione che va oltre l’immagine. In un mondo sempre più caotico e rumoroso, questi cani ci invitano a fermarci, a riflettere sul silenzio, su quel buio che non è vuoto, ma pieno di vita, di emozioni, di attese.


“The Silence of Dogs in Cars” è un inno alla vulnerabilità, all’umiltà, all’empatia. È un’opera che, con la sua eleganza silenziosa, ci ricorda che anche nel buio più profondo, nel silenzio più assordante, c’è sempre una speranza, un’attesa, un amore incondizionato che ci lega gli uni agli altri, uomini e animali, in un eterno abbraccio dell’anima.

{ 0 comments }

Everywhere…

It’s not the night, it’s not the road. It’s not the fear, nor the desire. It’s not the past, it’s not the memories, the doubts, the vigils, the words you can’t hide in your wrists, the decisions you make and those you’d be better off avoiding. Everywhere is the perfect place, the best spot, the starting point and the destination.

{ 0 comments }

n-narcissistic numbers…


This Python code is designed to find all n-narcissistic numbers for a given value of ( n ). An n-narcissistic number is an n-digit number that is equal to the sum of its own digits each raised to the power of ( n ).

The code consists of a function find_n_narcissistic_numbers(n), which takes an integer ( n ) as input and returns a list of all n-narcissistic numbers up to the specified value.

  1. Upper Bound Calculation: The code first calculates the upper bound for the search, which is the maximum possible n-narcissistic number. This is done by multiplying ( n ) by ( 9^n ), as 9 is the largest digit, and there are ( n ) digits in the number.
  2. Loop Through Potential Numbers: The code then iterates through all numbers from 0 to the upper bound. For each number, it: a. Converts the Number to a List of Digits: This is done by converting the number to a string and then into a list of integers. b. Checks if the Number is n-Narcissistic: The code verifies whether the sum of the digits each raised to the power of ( n ) is equal to the original number, and that the number of digits is equal to ( n ). If both conditions are met, the number is appended to the list of narcissistic numbers.
  3. User Input and Execution: Outside of the function, the code asks the user to input a value for ( n ) and then calls the function to find and print the n-narcissistic numbers.

By employing this approach, the code efficiently finds all n-narcissistic numbers for a given value of ( n ), providing insight into an interesting mathematical concept.

{ 0 comments }

Giornata Mondiale della Fotografia…

Oggi, 19 agosto, è la Giornata Mondiale della Fotografia; e dunque torno a parlarvi dei miei gusti in questo campo. Non vi offro il ritratto di un solo autore, ma un insieme di scatti che risonano con la mia anima. Questa non è una sentenza, ma un viaggio personale, una riflessione che potrebbe trovare eco in ogni collezionista o amante delle immagini.
Le fotografie si dispongono senza ordine nel mio cuore, e lì restano, guide silenziose che educano le mie scelte. Perché le amo? Sarebbe troppo facile dire “mi piacciono” e chiudere la porta. Le trovo complete, in ogni scatto una connessione profonda tra l’artista, l’osservatore e il tempo in cui l’immagine è stata catturata, un tempo che si trasforma in Storia.
Queste immagini costituiscono il mio personale tesoro cognitivo. Non mi faccio illusioni sul fatto che ognuno possa vedere ciò che vedo io. Ogni appassionato ha un mondo negli occhi, ed è giusto che guardi in altre direzioni. Io vi offro il mio, con la delicatezza di chi condivide un pensiero, con la speranza che possiate ritrovarvi in qualche angolo di esso…

{ 0 comments }

La bellezza…

La bellezza si mostra in forme inaspettate. Non è l’immagine riflessa in uno specchio, la perfezione di una scultura, la simmetria di un volto. È un sentimento, una risonanza, un fremito nell’anima. Le smagliature, le rughe, i chili in più sono visti spesso come imperfezioni, ostacoli al sentiero dell’ideale. Ma essi sono, in realtà, segni del nostro cammino, cicatrici delle nostre battaglie, prove del nostro amore.
Gli standard di bellezza, imposti e onnipresenti, sono stati scolpiti con mani fredde, prive di empatia. Ci dicono cosa dovremmo essere, e in questo dictat perdiamo noi stessi. Ma la bellezza non può essere incasellata, non può essere definita o limitata. La bellezza è nel modo in cui ci muoviamo, nel nostro incespicare, nei passi nudi, nei sorrisi imbarazzati. È nelle parole che scegliamo, nelle idee in cui crediamo. È nel brivido di uno sguardo, nel tremore di un gesto. Non possiamo confinare la bellezza in una norma, perché essa è senza confini. È un concerto silenzioso che riecheggia nei cuori e nelle menti di chi sa ascoltare.
Guardiamo oltre la superficie, oltre gli standard. La vera bellezza ci aspetta là, nel profondo dell’essere, nell’intimità del nostro io. Là dove la vita danza e canta, là dove l’amore abbraccia e guarisce, là dove noi siamo veramente noi.

{ 0 comments }

È un libro che ci insegna a navigare dentro l’anima umana, a tracciare il confine labile tra ciò che è reale e ciò che è immaginario. Siamo in una Mosca impregnata di mistero, nel cuore pulsante della Russia, laddove un sedicente professore di magia nera – che altri non è se non il diavolo – trascina il lettore in un viaggio straordinario attraverso il tempo, la storia e le passioni umane. “Il Maestro e Margherita” non è soltanto una narrazione, ma una sinfonia, un ritmo che avanza con la grazia di un danzatore e la forza di un combattente. Bulgakov svela l’anima del popolo russo, le sue paure, le sue aspettative, la sua lotta eterna contro la censura e l’oppressione, in un tempo in cui parlare era un rischio, scrivere un’eresia.

Margherita e il Maestro, due figure che si perdono e si ritrovano, sono il simbolo della creatività e dell’amore che sfidano le convenzioni e le aspettative sociali. Il loro amore è un inno alla libertà dell’essere, un richiamo a quel desiderio profondo di autenticità che risiede in ognuno di noi.

Le parti censurate del romanzo, il suo percorso tormentato dalla stesura alla pubblicazione, non sono che l’eco della lotta di Bulgakov stesso contro un mondo che non voleva ascoltare, che temeva la verità celata nelle parole. La scrittura diventa, quindi, non solo un atto di ribellione, ma una preghiera, un canto di speranza.

In questo romanzo, il gatto Behemot, il diavolo, e le scene di magia sono messaggeri di un mondo che va oltre la ragione, oltre la comprensione. Sono un monito che ci ricorda come la vita sia un intreccio inestricabile di luci e ombre, di bene e male, e come sia nostro dovere accettarlo nella sua interezza.

“Il Maestro e Margherita” è, infine, una lezione sull’arte del narrare, una riflessione profonda sul potere delle parole e sulla responsabilità di chi le usa. È un invito a leggere, a scrivere, a pensare con coraggio, con audacia, con l’ardore di chi sa che le parole possono cambiare il mondo.

Un romanzo per chi ama, per chi sogna, per chi lotta. Un libro che non invecchia, che cresce con noi, che ci accompagna nel nostro cammino, sussurrandoci all’orecchio che la magia esiste, che è dentro di noi, se solo abbiamo il coraggio di cercarla.

{ 0 comments }