Pandas

From Wildsong
Jump to navigationJump to search

All this stuff is amazing but hard to wrap my head around because it's more like working with SQL than nice linear procedural programming.

When something is hard for me, I write about it in my Wiki.

This page currently is really all about GeoPandas, for now.

There is also the ArcGIS version and I should write about that here too.

Pandas

This is a Python package for manipulating data that implements dataframes. Dataframes are well amazing. Also extremely well documented elsewhere.

So run along and learn Pandas THEN come back and learn GeoPandas.

Esri "ArcGIS API for Python"

Yeah so you can go install this and learn about it, docs are... difficult.

They have these installed,

 packages in environment at C:\Program Files\ArcGIS\Pro\bin\Python\envs\arcgispro-py3:
#
# Name                    Version                   Build  Channel
appdirs                   1.4.4                      py_0
arcgis                    1.8.3                 py37_1668    esri
arcgispro                 2.7                           0    esri
arcpy                     2.7             py37_arcgispro_26810  [arcgispro]  esri
argon2-cffi               20.1.0           py37he774522_1
asn1crypto                1.4.0                      py_0
async_generator           1.10                       py_0
atomicwrites              1.4.0                      py_0
attrs                     20.2.0                     py_0
backcall                  0.2.0                      py_0
black                     19.10b0                    py_0
blas                      1.0                         mkl
bleach                    3.2.1                      py_0
blinker                   1.4                      py37_0
brotlipy                  0.7.0           py37he774522_1000
cached-property           1.5.2                      py_0
certifi                   2020.6.20                py37_0
cffi                      1.14.3           py37h7a1dbc1_0
cftime                    1.0.0b1                  py37_0    esri
chardet                   3.0.4                 py37_1003
click                     7.1.2                      py_0
colorama                  0.4.3                      py_0
cppzmq                    4.4.1                         2    esri
cryptography              2.8                      py37_0    esri
cycler                    0.10.0                   py37_0
decorator                 4.4.2                      py_0
defusedxml                0.6.0                      py_0
despatch                  0.1.0                    py37_0    esri
entrypoints               0.3                      py37_0
et_xmlfile                1.0.1                   py_1001
fastcache                 1.1.0            py37he774522_0
flake8                    3.8.3                      py_0
freetype                  2.10.1                   vc14_0  [vc14]  esri
future                    0.18.2                   py37_0    esri
gdal                      2.3.3           arcgispro_py37_16713  [arcgispro]  esri
h5py                      2.10.0          py37_arcgispro_9  [arcgispro]  esri
html5lib                  1.1                        py_0
icc_rt                    2019.0.5            arcgispro_0  [arcgispro]  esri
idna                      2.10                       py_0
importlib-metadata        1.7.0                    py37_0
importlib_metadata        1.7.0                         0
iniconfig                 1.0.1                      py_0
intel-openmp              2020.0            arcgispro_166  [arcgispro]  esri
ipykernel                 5.3.4            py37h5ca1d4c_0
ipython                   7.18.1                   py37_0    esri
ipython_genutils          0.2.0                    py37_0
ipywidgets                7.5.1                      py_1
jdcal                     1.4.1                      py_0
jedi                      0.17.2                   py37_0    esri
jinja2                    2.11.2                     py_0
jpeg                      9d                            0    esri
json5                     0.9.4                    py37_0    esri
jsonschema                3.2.0                    py37_1
jupyter_client            6.1.7                      py_0    esri
jupyter_console           6.2.0                      py_2    esri
jupyter_contrib_core      0.3.3                    py37_3    esri
jupyter_contrib_nbextensions 0.5.1                   py37_10    esri
jupyter_core              4.6.3                    py37_2    esri
jupyter_highlight_selected_word 0.2.0                    py37_2    esri
jupyter_latex_envs        1.4.4                    py37_1    esri
jupyter_nbextensions_configurator 0.4.1                    py37_1    esri
jupyterlab                2.2.7                      py_0    esri
jupyterlab_pygments       0.1.1                      py_1    esri
jupyterlab_server         1.2.0                      py_0
keyring                   21.4.0                   py37_0    esri
kiwisolver                1.2.0            py37h74a9793_0
lerc                      2.2                        py_0    esri
libpng                    1.6.37               h2a8f88b_0
libsodium                 1.0.18                        1    esri
libtiff                   4.1.0                         0    esri
libxml2                   2.9.10              arcgispro_0  [arcgispro]  esri
libxslt                   1.1.34               he774522_0
lxml                      4.5.2            py37h1350720_0
lz4-c                     1.9.2                hf4a77e7_3
markupsafe                1.1.1            py37hfa6e2cd_1
matplotlib                3.3.1           py37_arcgispro_0  [arcgispro]  esri
mccabe                    0.6.1                    py37_1
mistune                   0.8.4           py37hfa6e2cd_1001
mkl                       2020.0            arcgispro_167  [arcgispro]  esri
mkl-service               2.3.0            py37hb782905_0
mkl_fft                   1.2.0            py37h45dec08_0
mkl_random                1.2.0                    py37_0    esri
mpmath                    1.1.0                    py37_0
mypy_extensions           0.4.3                    py37_0
nbclient                  0.5.0                      py_0    esri
nbconvert                 5.6.1                    py37_0    esri
nbformat                  5.0.7                      py_1    esri
nest-asyncio              1.3.2                      py_0    esri
netcdf4                   1.5.4           py37_arcgispro_5  [arcgispro]  esri
networkx                  2.5                      py37_0    esri
nlohmann_json             3.7.0                         1    esri
nose                      1.3.7                 py37_1004
notebook                  5.7.10                   py37_0
ntlm-auth                 1.4.0                      py_0    esri
numexpr                   2.7.1            py37h25d0782_0
numpy                     1.19.1           py37h5510c5b_0
numpy-base                1.19.1           py37ha3acd2a_0
oauthlib                  3.1.0                      py_0
olefile                   0.46                     py37_0
openpyxl                  3.0.5                      py_0
openssl                   1.1.1g                        2    esri
packaging                 20.4                       py_0
pandas                    1.1.1            py37ha925a31_0
pandocfilters             1.4.2                    py37_1
parso                     0.7.0                      py_0
pathspec                  0.7.0                      py_0
pefile                    2019.4.18                  py_0
pickleshare               0.7.5                 py37_1001
pillow-simd               7.1.2                    py37_3    esri
pip                       20.2.2                   py37_0
pluggy                    0.13.1                   py37_0
pro_notebook_integration  2.7                      py37_1    esri
prometheus_client         0.8.0                      py_0    esri
prompt_toolkit            3.0.5                      py_0    esri
psutil                    5.7.2            py37he774522_0
py                        1.9.0                      py_0
pybind11                  2.3.0                         1    esri
pycodestyle               2.6.0                      py_0
pycparser                 2.20                       py_2
pyflakes                  2.2.0                      py_0
pygments                  2.7.0                      py_0    esri
pyjwt                     1.7.1                    py37_0
pyopenssl                 19.1.0                     py_1
pyparsing                 2.4.7                      py_0
pypdf2                    1.26.0                     py_2    esri
pyrsistent                0.17.3           py37he774522_0
pyshp                     2.1.2                      py_0
pysocks                   1.7.1                    py37_1
pytest                    6.1.1                    py37_0    esri
python                    3.7.9                         2    esri
python-certifi-win32      1.2                      py37_0    esri
python-dateutil           2.8.1                      py_0
pytz                      2020.1                   py37_0    esri
pywin32-ctypes            0.2.0                    pypi_0    pypi
pywin32-security          228                      py37_3    esri
pywinpty                  0.5.7                    py37_0    esri
pyyaml                    5.3.1            py37he774522_1
pyzmq                     19.0.2                   py37_1    esri
regex                     2020.7.14        py37he774522_0
requests                  2.24.0                     py_0
requests-kerberos         0.12.0                        0    esri
requests-negotiate-sspi   0.5.2                    py37_1    esri
requests-oauthlib         1.3.0                      py_0
requests-toolbelt         0.9.1                      py_0
requests_ntlm             1.1.0                      py_0    esri
scipy                     1.5.2            py37h9439919_0
send2trash                1.5.0                    py37_0
setuptools                49.6.0                   py37_0
simplegeneric             0.8.1                    py37_2
six                       1.15.0                     py_0
sqlite                    3.33.0               h2a8f88b_0
sympy                     1.5.1                    py37_0    esri
terminado                 0.8.3                    py37_0
testpath                  0.4.4                      py_0
toml                      0.10.1                     py_0
tornado                   6.0.4            py37he774522_1
traitlets                 4.3.3                    py37_0
typed-ast                 1.4.1            py37he774522_0
typing_extensions         3.7.4.3                    py_0
ujson                     3.1.0            py37ha925a31_0
urllib3                   1.25.10                    py_0
vc                        14.1                 h0510ff6_4
vs2015_runtime            14.16.27012          hf0eaf9b_0    esri
wcwidth                   0.2.5                      py_0
webencodings              0.5.1                    py37_1
wheel                     0.35.1                     py_0
widgetsnbextension        3.5.1                    py37_0
win_inet_pton             1.1.0                    py37_0
wincertstore              0.2                      py37_0
winkerberos               0.7.0                    py37_1
winpty                    0.4.3                         4
wrapt                     1.12.1           py37he774522_1
x86cpu                    0.4                      py37_1    esri
xarray                    0.16.0                     py_0
xeus                      0.24.1                        1    esri
xlrd                      1.2.0                      py_0
xlwt                      1.3.0                    py37_0
xtl                       0.6.5                         1    esri
xz                        5.2.5                h62dcd97_0
yaml                      0.2.5                         0    esri
zeromq                    4.3.2                         2    esri
zipp                      3.1.0                      py_0
zlib                      1.2.11               h62dcd97_4
zstd                      1.4.5                h04227a9_0

GeoPandas

GeoPandas is geospatially enabled Pandas. Go right to the page for full info, https://geopandas.org.

Installation

I have an OSGEO env so I added Geopandas to it. I said "conda install geopandas" and it said

 attrs              conda-forge/noarch::attrs-20.3.0-pyhd3deb0d_0
 boost-cpp          conda-forge/win-64::boost-cpp-1.74.0-h54f0996_2
 bzip2              conda-forge/win-64::bzip2-1.0.8-h8ffe710_4
 cairo              conda-forge/win-64::cairo-1.16.0-hb19e0ff_1008
 cfitsio            conda-forge/win-64::cfitsio-3.470-h0af3d06_7
 click              conda-forge/noarch::click-7.1.2-pyh9f0ad1d_0
 click-plugins      conda-forge/noarch::click-plugins-1.1.1-py_0
 cligj              conda-forge/noarch::cligj-0.7.1-pyhd8ed1ab_0
 curl               conda-forge/win-64::curl-7.75.0-hf1763fc_0
 expat              conda-forge/win-64::expat-2.2.10-h39d44d4_0
 fiona              conda-forge/win-64::fiona-1.8.18-py36hdce5812_1
 fontconfig         conda-forge/win-64::fontconfig-2.13.1-h1989441_1004
 freetype           conda-forge/win-64::freetype-2.10.4-h546665d_1
 freexl             conda-forge/win-64::freexl-1.0.6-ha8e266a_0
 gdal               conda-forge/win-64::gdal-3.2.2-py36hfaf0fdc_0
 geopandas          conda-forge/noarch::geopandas-0.9.0-pyhd8ed1ab_0
 geos               conda-forge/win-64::geos-3.9.1-h39d44d4_2
 geotiff            conda-forge/win-64::geotiff-1.6.0-h8e90983_5
 librttopo          conda-forge/win-64::librttopo-1.1.0-hb340de5_6
 libspatialindex    conda-forge/win-64::libspatialindex-1.9.3-h39d44d4_3
 libspatialite      conda-forge/win-64::libspatialite-5.0.1-h6b539a6_4
 libssh2            conda-forge/win-64::libssh2-1.9.0-h680486a_6
 libtiff            conda-forge/win-64::libtiff-4.2.0-hc10be44_0
 libwebp-base       conda-forge/win-64::libwebp-base-1.2.0-h8ffe710_2
 libxml2            conda-forge/win-64::libxml2-2.9.10-hf5bbc77_3
 lz4-c              conda-forge/win-64::lz4-c-1.9.3-h8ffe710_0
 mkl                conda-forge/win-64::mkl-2020.4-hb70f87d_311
 munch              conda-forge/noarch::munch-2.5.0-py_0
 numpy              conda-forge/win-64::numpy-1.19.5-py36hd1b969e_1
 openjpeg           conda-forge/win-64::openjpeg-2.4.0-h48faf41_0
 pandas             conda-forge/win-64::pandas-1.1.5-py36he38d939_0
 pcre               conda-forge/win-64::pcre-8.44-ha925a31_0
 pixman             conda-forge/win-64::pixman-0.40.0-h8ffe710_0
 poppler            conda-forge/win-64::poppler-21.03.0-h9ff6ed8_0
 poppler-data       conda-forge/noarch::poppler-data-0.4.10-0
 postgresql         conda-forge/win-64::postgresql-13.1-h0f1a9bc_2
 proj               conda-forge/win-64::proj-8.0.0-h1cfcee9_0
 pyproj             conda-forge/win-64::pyproj-3.0.1-py36h86093ec_1
 python-dateutil    conda-forge/noarch::python-dateutil-2.8.1-py_0
 pytz               conda-forge/noarch::pytz-2021.1-pyhd8ed1ab_0
 rtree              pkgs/main/win-64::rtree-0.9.4-py36h21ff451_1
 shapely            conda-forge/win-64::shapely-1.7.1-py36hd33d9d6_4
 sqlite             conda-forge/win-64::sqlite-3.35.2-h8ffe710_0
 tiledb             conda-forge/win-64::tiledb-2.2.7-hf84e3da_0
 tk                 conda-forge/win-64::tk-8.6.10-h8ffe710_1
 xerces-c           conda-forge/win-64::xerces-c-3.2.3-h0e60522_2
 xz                 conda-forge/win-64::xz-5.2.5-h62dcd97_1
 zlib               conda-forge/win-64::zlib-1.2.11-h62dcd97_1010
 zstd               conda-forge/win-64::zstd-1.4.9-h6255e5f_0

ZOW. Now I wonder what was in there in the first place before installing geopandas. Lots of good stuff in these dependencies like gdal and fiona and proj and geos.

Hello World from GeoPandas

In VSCODE, start a Jupyter Notebook. Well, first,

conda install jupyter

References

Mastering pandas - Second Edition has a short but sweet chapter on GeoPandas.

Learning Geospatial Analysis with Python - Third Edition has just a brief description of GeoPandas

There are some older references in O'Reilly as well.

This video with Andy Eschbacher has some talk about GeoPandas starting at about 30:00 More tools to look at (ugh): matplotlib, Folium