Select to view content in your preferred language

Import tabulkových dat do geodatabáze pomocí knihoven pandas, numpy a arcpy

237
0
05-17-2022 06:36 AM
MartinKrál
Esri Contributor
0 0 237

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.

table_pandas_melt_schematicky.png