Pomocí funkce arcpy.da.NumPyArrayToTable lze do tabulky v geodatabázi snadno importovat data z python objektu numpy array. Do tohoto objektu, určeného pro práci s multidimenzionálními daty v pythonu, lze importovat mnoho tabulkových datových formátů, například z objektu data frame knihovny pandas. Knihovna pandas umožňuje, vedle mnoha funkcí pro zpracování tabulkových dat, také import celé řady tabulkových formátů, a díky tomu pak není problém pomocí tří řádků pythonu (řešících jednotlivé převody v řetězci původní data – pandas data frame – numpy array – tabulka v geodatabázi) naimportovat rozličná data.
Vezměme si například CSV data na nějaké webové stránce.
import pandas as pd
import numpy as np
import arcpy
pandas_df = pd.read_csv("https://raw.githubusercontent.com/CSSEGISandData/COVID-19/master/csse_covid_19_data/csse_covid_19_ti...", index_col=None, header=0)
numpy_array=np.rec.fromrecords(pandas_df.values, names = (pandas_df.columns.values).tolist())
arcpy.da.NumPyArrayToTable(numpy_array,"Default.gdb/covid_confirmed_timeseries_columns")
K tomuto importu není problém přidat i řádek převádějící X/Y tabulková data do třídy prvků.
arcpy.XYTableToPoint_management('covid_confirmed_timeseries_columns',"Default.gdb/covid_confirmed_XY_FC", 'Long', 'Lat')
Výhodou tohoto postupu je nejen rychlejší import „bez klikání“ a automatizace načítání většího počtu tabulek, ale také mohou být zapojeny nástroje, které knihovny numpy a pandas pro práci s tabulkovými daty obsahují. Dají se tak například velmi efektivně provádět filtrace, slicing multidimenzionálních dat, agregace, spojování tabulek, překlápění řádků a sloupců nebo třeba tzv. melting.
V našem příkladu by se například přidáním jednoho řádku pomocí funkce pandas.melt tabulka snadno upravila z časových řad, kde jeden řádek odpovídá jedné lokalitě (a data za jednotlivé dny se nacházejí v mnoha sloupcích), do formy denních reportů, kde každá lokalita a každý den tvoří jeden řádek s jednou hodnotou.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.