Datové rámce v Pythonu - pandas, geopandas a polars a geopolars

Programování v GIS 2

Jan Caha

2024-04-29

Datové rámce

  • Python tento koncept přímo v sobě neobsahuje (na rozdíl třeba od R)
  • nejstarší podobná implementace je numpy - což jsou obecně multidimenzionální struktury, ale spíše ve smyslu matic a dalších numerických dat
  • pro práci s tabulkovými daty se používá knihovna pandas a chceme-li pracovat s geografickými daty, tak geopandas
  • efektivně se jedná o komplikovanou strukturu s mnoha funkcemi a metodami, které umožňují práci s daty
  • v poslední době se objevují i nové knihovny, které se snaží být efektivnější a rychlejší, např. polars a geopolars
  • obdobně jako v R se pracuje s konceptem sloupců s jednotným datovým typem a řádky s údajem o jednom objektu

Pandas a geopandas

  • zavisí na řadě knihoven, poměrně “těžké”
  • z historických důvodů zde existuje na řadu problémů několik různých přístupů k řešení stejného problému může být zmatečné a komplikované na pochopení
  • chybí zcela ujednocující koncepce
  • nesmírně široké možnosti práce s daty a podpora pro mnoho formátů (platí i pro geoformáty)
  • práci občas stěžuje koncept indexů a jejich správa

Polars

  • modernější iterace na téma datových rámců, značně inspirovaná dplyr
  • napsáno primárně pro Rust a následně portováno do mnoha dalších jazyků (včetně Pythonu)
  • mnohem rychlejší, bezpečnější a efektivnější než pandas
  • podporuje méně formátů než pandas, zejména s ohledem na udržení lehkosti (co se týká závislostí)
  • kód je mnohem čitelnější a obvykle jednodušší na pochopení v porovnání s pandas
  • user guide , Modern Polars - porovnání s pandas a polars

Geopolars

  • geografická extenze polars
  • stále označováno jako experimentální
  • podopruje přímý import velice úzkého spektra formátů (aby se vyhnulo závislosti na GDAL/OGR), ale umí převést data z geopandas
  • workflow, které nemusí dávat smysl z hlediska závislostí atd. ale dává smysl z hlediska rychlosti a efektivity je načítat data přes geopandas a následně je převést do geopolars

Dotazy?