Počasí pro datovou analýzu

Data o počasí a předpovědi mají významný vliv na každodenní lidský život a ovlivňují mnoho firem - počasí hraje velmi důležitou roli v mnoha odvětvích.

14. 11. 2022

Pokud potřebujete provádět analýzu dat o počasí, tento článek vám pomůže s postupem. Využívá základů jazyka Python a knihovny Pandas pro základní analýzu dat o počasí. Naučíte se, jak spojit data o počasí s vašimi ostatními datovými sadami, provést základní kontrolu dat, vytvořit jednoduché grafy a připravit soubor pro další práci s daty, například pro vytvoření modelů.

V našem příkladu budeme používat sadu dat obsahující náhodná minutová transportní data z různých společností. Předpokládáme, že máte již nainstalovaný jazyk Python na svém počítači a umíte ho spustit a instalovat knihovny pomocí příkazu pip.

Příprava dat pro analýzu

Před zahájením analýzy bude nejprve nutné načíst vaše datové sady z CSV souboru uloženého na vašem počítači.


   import numpy as np
   import pandas as pd
   from scipy import stats
   import matplotlib.pyplot as plt
   import seaborn as sns

   # Load data from csv
   df = pd.read_csv('tranportation_data.csv')

   # Show data sample to see what we have
   df
   

Tímto způsobem uvidíte vaše importovaná data, která mohou mít podobný vzhled jako v našem příkladu. Naše ukázková data obsahují časové značky ve formátu UNIX (časové pásmo UTC), vzdálenosti v mílích a ceny v USD:

Počasí pro datovou analýzu

Protože časové značky jsou ve formátu UNIX, je snadné je převést na objekty datetime:


   df['time_stamp'] = pd.to_datetime(df['time_stamp'], unit='ms', origin='unix', utc=True)
   

Jak přidat informace o počasí do analýzy

Nejjednodušší způsob, jak přidat data o počasí do vašich datových sad, je využití počasí API a již připravených knihoven s jednoduchým použitím. Pokud používáte Python, nainstalujte knihovnu pymeteosource s podporou knihovny Pandas pomocí následujícího příkazu:


   pip3 install pymeteosource[pandas]
   

Poté budete potřebovat unikátní API klíč, který vám umožní stahovat data o počasí. Podrobnější informace o datech a možnostech API najdete na stránce s ceníkem a předplatnými.

Až budete mít váš API klíč připravený, zjistěte, jaká data o počasí jsou k dispozici, abyste věděli, jaký časový rozsah potřebujete extrahovat z Meteosource. Data můžete buď stáhnout přímo ve vaší časové zóně nebo je později převést. Pro náš příklad stáhneme data o počasí v časové zóně UTC a při spojování dat je převedeme do naší místní časové zóny, například US/Eastern.

Pro stažení dat o počasí použijte následující příkazy:


   from datetime import datetime, timedelta
   from pymeteosource.api import Meteosource
   from pymeteosource.types import tiers, units

   # Change this to your actual API key
   YOUR_API_KEY = 'YOUR API KEY'
   # Change this to your actual tier
   YOUR_TIER = tiers.FLEXI

   # Initialize the main Meteosource object
   ms = Meteosource(YOUR_API_KEY, YOUR_TIER)

   # The date range for our dataset
   date_from = df.time_stamp.min().strftime('%Y-%m-%d')
   date_to = df.time_stamp.max().strftime('%Y-%m-%d')

   # Get the historical weather data
   tm = ms.get_time_machine(date_from=date_from, date_to=date_to,
                         place_id='boston', tz='UTC',
                         units=units.US)

   # Convert the result to pandas
   weather = tm.to_pandas()
   

Kontrola dat a jejich vykreslení

Abyste viděli, jaká data o počasí máte k dispozici, použijte následující příkaz, který vypíše sloupce data framu s počasím:


   # See what weather variables we have
   weather.columns
   

Pokud se rozhodnete, že potřebujete pouze některé proměnné o počasí, vyberte si ty, které korelují s vašimi daty.


   # We only need some of the weather variables
   weather = weather[['cloud_cover_total', 'weather', 'precipitation_total', 'temperature', 'wind_speed']]
   

Nyní můžeme vizualizovat některá data o počasí, abychom zjistili, zda je vše v pořádku.


   # Plot frequencies of weather types
   weather_cats = weather['weather'].value_counts().reset_index()
   weather_cats.columns = ['weather', 'count']

   sns.set(rc={'figure.figsize': (12, 6)})
   plt.xticks(rotation=90)
   sns.barplot(x=weather_cats['weather'], y=weather_cats['count'])
   
Typy počasí pro datovou analytiku.

První příklad (nahoře) ukazuje frekvenci předdefinovaných typů počasí, což nám dá představu o tom, jaké počasí je nejčastější na naší lokalitě a jak strukturovat naši analýzu. Můžeme také zobrazit distribuci libovolné proměnné (níže) v našich datech, abychom lépe porozuměli našim datům.


   # Plot distribution of weather data
   def normal(mean, std, color="black"):
       x = np.linspace(mean - 4 * std, mean + 4 * std, 200).clip(0, None)
       p = stats.norm.pdf(x, mean, std)
       z = plt.plot(x, p, color, linewidth=2)

   ax = sns.histplot(x=weather.wind_speed, stat="density")
   normal(weather.wind_speed.mean(), weather.wind_speed.std())
   
Wind data analysis

Slučte data o počasí s vaší datovou sadou pro analýzu

Naše transportní data s časovými značkami mají rozlišení v sekundách, zatímco data o počasí jsou dostupná každou hodinu. Pro sloučení těchto dat je nutné zaokrouhlit časové značky jízd na nejbližší hodinu. Poté spojíme data framy. Pro sloučení použijeme sloupec time_stamp v datech o transportu a index data framu o počasí. Nakonec převedeme datové časy do naší místní časové zóny, například US/Eastern.


   # First we have to round the date_times in the transportation dataset to the nearest hour to match weather data
   df['time_stamp'] = df['time_stamp'].dt.round('H')

   # Now we can merge the data
   data = pd.merge(df, weather, left_on='time_stamp', right_index=True, how='left')

   # We can also convert the time_stamp column from UTC to local timezone (e.g. US/Eastern)
   data['time_stamp'] = data['time_stamp'].dt.tz_convert('US/Eastern')
   

Potřebujete více dat o počasí pro svou analýzu?

V našem příkladu jsme diskutovali o základech přípravy dat pro analýzu a o tom, jak snadno pracovat s daty o počasí v jazyce Python pomocí knihoven. Pokud zjistíte, že potřebujete více dat o počasí než je k dispozici v standardních plánech Meteosource, kontaktujte nás a sdělte nám své potřeby. Rovněž pomáháme podnikům v různých odvětvích s našimi aplikovanými modely na základě strojového učení.

Líbí se Vám tento článek?
Sdílejte článek s přáteli