Datasets for use with libpysal

As of version 4.2, libpysal has refactored the examples package to:

This notebook highlights the new functionality

Backwards compatibility is maintained

If you were familiar with previous versions of libpysal, the newest version maintains backwards compatibility so any code that relied on the previous API should work.

For example:

from libpysal.examples import get_path
get_path("mexicojoin.dbf")
'/home/runner/micromamba/envs/docs/lib/python3.14/site-packages/libpysal/examples/mexico/mexicojoin.dbf'

An important thing to note here is that the path to the file for this particular example is within the source distribution that was installed. Such an example data set is now referred to as a builtin dataset.

import libpysal

dbf = libpysal.io.open(get_path("mexicojoin.dbf"))
dbf.header
['POLY_ID',
 'AREA',
 'CODE',
 'NAME',
 'PERIMETER',
 'ACRES',
 'HECTARES',
 'PCGDP1940',
 'PCGDP1950',
 'PCGDP1960',
 'PCGDP1970',
 'PCGDP1980',
 'PCGDP1990',
 'PCGDP2000',
 'HANSON03',
 'HANSON98',
 'ESQUIVEL99',
 'INEGI',
 'INEGI2',
 'MAXP',
 'GR4000',
 'GR5000',
 'GR6000',
 'GR7000',
 'GR8000',
 'GR9000',
 'LPCGDP40',
 'LPCGDP50',
 'LPCGDP60',
 'LPCGDP70',
 'LPCGDP80',
 'LPCGDP90',
 'LPCGDP00',
 'TEST']

The function available is also available but has been updated to return a Pandas DataFrame. In addition to the builtin datasets, available will report on what datasets are available, either as builtin or remotes.

from libpysal.examples import available
df = available()
df.shape
(99, 3)
libpysal.examples.summary()
99 datasets available, 27 installed, 72 remote.

We see that there are 98 total datasets available for use with PySAL. On an initial install (i.e., examples has not been used yet), 27 of these are builtin datasets and 71 are remote. The latter can be downloaded and installed.

Downloading Remote Datasets

df.head()
Name Description Installed
0 10740 Albuquerque, New Mexico, Census 2000 Tract Dat... True
1 AirBnB Airbnb rentals, socioeconomics, and crime in C... False
2 Atlanta Atlanta, GA region homicide counts and rates False
3 Baltimore Baltimore house sales prices and hedonics False
4 Bostonhsg Boston housing and neighborhood data False

The remote AirBnB can be installed by calling load_example:

airbnb = libpysal.examples.load_example("AirBnB")
Downloading AirBnB to /home/runner/.local/share/pysal/AirBnB
libpysal.examples.summary()
99 datasets available, 28 installed, 71 remote.

And we see that the number of remotes as declined by one and the number of installed has increased by 1.

Trying to load an example that doesn’t exist will return None and alert the user:

libpysal.examples.load_example("dataset42")
Example not available: dataset42

Getting remote urls

If the url, rather than the dataset, is needed this can be obtained on a remote with get_url. As the Baltimore dataset has not yet been downloaded in this example, we can grab it’s url:

balt_url = libpysal.examples.get_url("Baltimore")
balt_url
'https://geodacenter.github.io/data-and-lab//data/baltimore.zip'

Explaining a dataset

libpysal.examples.explain("taz")
taz
===

Dataset used for regionalization
--------------------------------

* taz.dbf: attribute data. (k=14)
* taz.shp: Polygon shapefile. (n=4109)
* taz.shx: spatial index.
taz = libpysal.examples.load_example("taz")
Downloading taz to /home/runner/.local/share/pysal/taz
taz.get_file_list()
['/home/runner/.local/share/pysal/taz/taz-master/taz.shx',
 '/home/runner/.local/share/pysal/taz/taz-master/README.md',
 '/home/runner/.local/share/pysal/taz/taz-master/taz.shp',
 '/home/runner/.local/share/pysal/taz/taz-master/taz.dbf']
libpysal.examples.explain("Baltimore")
balt = libpysal.examples.load_example("Baltimore")
Downloading Baltimore to /home/runner/.local/share/pysal/Baltimore
libpysal.examples.available()
Name Description Installed
0 10740 Albuquerque, New Mexico, Census 2000 Tract Dat... True
1 AirBnB Airbnb rentals, socioeconomics, and crime in C... True
2 Atlanta Atlanta, GA region homicide counts and rates False
3 Baltimore Baltimore house sales prices and hedonics True
4 Bostonhsg Boston housing and neighborhood data False
... ... ... ...
94 taz Traffic Analysis Zones in So. California True
95 tokyo Tokyo Mortality data True
96 us_income Per-capita income for the lower 48 US states 1... True
97 virginia Virginia counties shapefile True
98 wmat Datasets used for spatial weights testing True

99 rows × 3 columns

Working with an example dataset

explain will render maps for an example if available

from libpysal.examples import explain

explain("Tampa1")
from libpysal.examples import load_example

tampa1 = load_example("Tampa1")
Downloading Tampa1 to /home/runner/.local/share/pysal/Tampa1
tampa1.installed
True
tampa1.get_file_list()
['/home/runner/.local/share/pysal/Tampa1/TampaMSA/tampa_counties.mif',
 '/home/runner/.local/share/pysal/Tampa1/TampaMSA/tampa_final_census2.sbx',
 '/home/runner/.local/share/pysal/Tampa1/TampaMSA/tampa_final_census2.prj',
 '/home/runner/.local/share/pysal/Tampa1/TampaMSA/tampa_final_census2.mif',
 '/home/runner/.local/share/pysal/Tampa1/TampaMSA/tampa_counties.gpkg',
 '/home/runner/.local/share/pysal/Tampa1/TampaMSA/tampa_counties.prj',
 '/home/runner/.local/share/pysal/Tampa1/TampaMSA/tampa_counties.shp',
 '/home/runner/.local/share/pysal/Tampa1/TampaMSA/tampa_final_census2.shp',
 '/home/runner/.local/share/pysal/Tampa1/TampaMSA/tampa_counties.kml',
 '/home/runner/.local/share/pysal/Tampa1/TampaMSA/tampa_counties.dbf',
 '/home/runner/.local/share/pysal/Tampa1/TampaMSA/tampa_final_census2.geojson',
 '/home/runner/.local/share/pysal/Tampa1/TampaMSA/tampa_final_census2.mid',
 '/home/runner/.local/share/pysal/Tampa1/TampaMSA/tampa_final_census2.sqlite',
 '/home/runner/.local/share/pysal/Tampa1/TampaMSA/tampa_final_census2.sbn',
 '/home/runner/.local/share/pysal/Tampa1/TampaMSA/tampa_counties.geojson',
 '/home/runner/.local/share/pysal/Tampa1/TampaMSA/tampa_final_census2.shx',
 '/home/runner/.local/share/pysal/Tampa1/TampaMSA/tampa_final_census2.xlsx',
 '/home/runner/.local/share/pysal/Tampa1/TampaMSA/tampa_final_census2.gpkg',
 '/home/runner/.local/share/pysal/Tampa1/TampaMSA/tampa_final_census2.kml',
 '/home/runner/.local/share/pysal/Tampa1/TampaMSA/tampa_counties.sqlite',
 '/home/runner/.local/share/pysal/Tampa1/TampaMSA/tampa_counties.mid',
 '/home/runner/.local/share/pysal/Tampa1/TampaMSA/TampaMSA.gdb/a00000005.gdbindexes',
 '/home/runner/.local/share/pysal/Tampa1/TampaMSA/TampaMSA.gdb/a00000007.gdbtablx',
 '/home/runner/.local/share/pysal/Tampa1/TampaMSA/TampaMSA.gdb/a00000002.gdbtable',
 '/home/runner/.local/share/pysal/Tampa1/TampaMSA/TampaMSA.gdb/a00000003.gdbtablx',
 '/home/runner/.local/share/pysal/Tampa1/TampaMSA/TampaMSA.gdb/a00000004.spx',
 '/home/runner/.local/share/pysal/Tampa1/TampaMSA/TampaMSA.gdb/a00000004.gdbtablx',
 '/home/runner/.local/share/pysal/Tampa1/TampaMSA/TampaMSA.gdb/a00000006.gdbtablx',
 '/home/runner/.local/share/pysal/Tampa1/TampaMSA/TampaMSA.gdb/a00000006.CatRelsByType.atx',
 '/home/runner/.local/share/pysal/Tampa1/TampaMSA/TampaMSA.gdb/a0000000a.gdbtable',
 '/home/runner/.local/share/pysal/Tampa1/TampaMSA/TampaMSA.gdb/a00000007.CatRelTypesByDestItemTypeID.atx',
 '/home/runner/.local/share/pysal/Tampa1/TampaMSA/TampaMSA.gdb/a0000000a.gdbtablx',
 '/home/runner/.local/share/pysal/Tampa1/TampaMSA/TampaMSA.gdb/a00000005.CatItemTypesByName.atx',
 '/home/runner/.local/share/pysal/Tampa1/TampaMSA/TampaMSA.gdb/a00000004.gdbindexes',
 '/home/runner/.local/share/pysal/Tampa1/TampaMSA/TampaMSA.gdb/a00000009.gdbtable',
 '/home/runner/.local/share/pysal/Tampa1/TampaMSA/TampaMSA.gdb/a00000006.FDO_UUID.atx',
 '/home/runner/.local/share/pysal/Tampa1/TampaMSA/TampaMSA.gdb/a00000005.gdbtablx',
 '/home/runner/.local/share/pysal/Tampa1/TampaMSA/TampaMSA.gdb/a00000005.gdbtable',
 '/home/runner/.local/share/pysal/Tampa1/TampaMSA/TampaMSA.gdb/a00000007.CatRelTypesByForwardLabel.atx',
 '/home/runner/.local/share/pysal/Tampa1/TampaMSA/TampaMSA.gdb/a00000007.gdbtable',
 '/home/runner/.local/share/pysal/Tampa1/TampaMSA/TampaMSA.gdb/a00000001.gdbtablx',
 '/home/runner/.local/share/pysal/Tampa1/TampaMSA/TampaMSA.gdb/a00000007.gdbindexes',
 '/home/runner/.local/share/pysal/Tampa1/TampaMSA/TampaMSA.gdb/timestamps',
 '/home/runner/.local/share/pysal/Tampa1/TampaMSA/TampaMSA.gdb/a00000001.TablesByName.atx',
 '/home/runner/.local/share/pysal/Tampa1/TampaMSA/TampaMSA.gdb/a00000004.FDO_UUID.atx',
 '/home/runner/.local/share/pysal/Tampa1/TampaMSA/TampaMSA.gdb/a00000002.gdbtablx',
 '/home/runner/.local/share/pysal/Tampa1/TampaMSA/TampaMSA.gdb/a00000006.gdbtable',
 '/home/runner/.local/share/pysal/Tampa1/TampaMSA/TampaMSA.gdb/gdb',
 '/home/runner/.local/share/pysal/Tampa1/TampaMSA/TampaMSA.gdb/a00000004.CatItemsByType.atx',
 '/home/runner/.local/share/pysal/Tampa1/TampaMSA/TampaMSA.gdb/a00000005.CatItemTypesByParentTypeID.atx',
 '/home/runner/.local/share/pysal/Tampa1/TampaMSA/TampaMSA.gdb/a0000000a.gdbindexes',
 '/home/runner/.local/share/pysal/Tampa1/TampaMSA/TampaMSA.gdb/a00000009.spx',
 '/home/runner/.local/share/pysal/Tampa1/TampaMSA/TampaMSA.gdb/a00000001.gdbtable',
 '/home/runner/.local/share/pysal/Tampa1/TampaMSA/TampaMSA.gdb/a00000004.gdbtable',
 '/home/runner/.local/share/pysal/Tampa1/TampaMSA/TampaMSA.gdb/a0000000a.spx',
 '/home/runner/.local/share/pysal/Tampa1/TampaMSA/TampaMSA.gdb/a00000004.CatItemsByPhysicalName.atx',
 '/home/runner/.local/share/pysal/Tampa1/TampaMSA/TampaMSA.gdb/a00000006.CatRelsByDestinationID.atx',
 '/home/runner/.local/share/pysal/Tampa1/TampaMSA/TampaMSA.gdb/a00000009.gdbindexes',
 '/home/runner/.local/share/pysal/Tampa1/TampaMSA/TampaMSA.gdb/a00000007.CatRelTypesByOriginItemTypeID.atx',
 '/home/runner/.local/share/pysal/Tampa1/TampaMSA/TampaMSA.gdb/a00000007.CatRelTypesByUUID.atx',
 '/home/runner/.local/share/pysal/Tampa1/TampaMSA/TampaMSA.gdb/a00000003.gdbtable',
 '/home/runner/.local/share/pysal/Tampa1/TampaMSA/TampaMSA.gdb/a00000009.gdbtablx',
 '/home/runner/.local/share/pysal/Tampa1/TampaMSA/TampaMSA.gdb/a00000006.gdbindexes',
 '/home/runner/.local/share/pysal/Tampa1/TampaMSA/TampaMSA.gdb/a00000001.gdbindexes',
 '/home/runner/.local/share/pysal/Tampa1/TampaMSA/TampaMSA.gdb/a00000003.gdbindexes',
 '/home/runner/.local/share/pysal/Tampa1/TampaMSA/TampaMSA.gdb/a00000005.CatItemTypesByUUID.atx',
 '/home/runner/.local/share/pysal/Tampa1/TampaMSA/TampaMSA.gdb/a00000006.CatRelsByOriginID.atx',
 '/home/runner/.local/share/pysal/Tampa1/TampaMSA/TampaMSA.gdb/a00000007.CatRelTypesByBackwardLabel.atx',
 '/home/runner/.local/share/pysal/Tampa1/TampaMSA/TampaMSA.gdb/a00000007.CatRelTypesByName.atx',
 '/home/runner/.local/share/pysal/Tampa1/TampaMSA/tampa_counties.sbx',
 '/home/runner/.local/share/pysal/Tampa1/TampaMSA/tampa_final_census2.dbf',
 '/home/runner/.local/share/pysal/Tampa1/TampaMSA/tampa_counties.shx',
 '/home/runner/.local/share/pysal/Tampa1/TampaMSA/tampa_counties.xlsx',
 '/home/runner/.local/share/pysal/Tampa1/TampaMSA/tampa_counties.sbn',
 '/home/runner/.local/share/pysal/Tampa1/TampaMSA/2000 Census Data Variables_Documentation.pdf',
 '/home/runner/.local/share/pysal/Tampa1/__MACOSX/TampaMSA/._tampa_counties.sbx',
 '/home/runner/.local/share/pysal/Tampa1/__MACOSX/TampaMSA/._2000 Census Data Variables_Documentation.pdf',
 '/home/runner/.local/share/pysal/Tampa1/__MACOSX/TampaMSA/._tampa_counties.sbn',
 '/home/runner/.local/share/pysal/Tampa1/__MACOSX/TampaMSA/._tampa_final_census2.sbn',
 '/home/runner/.local/share/pysal/Tampa1/__MACOSX/TampaMSA/._tampa_final_census2.sbx',
 '/home/runner/.local/share/pysal/Tampa1/__MACOSX/._TampaMSA']
tampa_counties_shp = tampa1.load("tampa_counties.shp")
tampa_counties_shp
<libpysal.io.iohandlers.pyShpIO.PurePyShpWrapper at 0x7f6b0b8fcc20>
import geopandas
tampa_df = geopandas.read_file(tampa1.get_path("tampa_counties.shp"))
%matplotlib inline
tampa_df.plot()
<Axes: xlabel='Geodetic longitude [degree]', ylabel='Geodetic latitude [degree]'>
../../_images/82b08ea4f28da6d3f6ae03d60412305686b7fa031d76f4ae58d307de84cbb5d9.png

Other Remotes

In addition to the remote datasets from the GeoData Data Science Center, there are several large remotes available at github repositories.

libpysal.examples.explain("Rio Grande do Sul")
Rio_Grande_do_Sul
======================

Cities of the Brazilian State of Rio Grande do Sul
-------------------------------------------------------

* 43MUE250GC_SIR.dbf: attribute data (k=2)
* 43MUE250GC_SIR.shp: Polygon shapefile (n=499)
* 43MUE250GC_SIR.shx: spatial index
* 43MUE250GC_SIR.cpg: encoding file 
* 43MUE250GC_SIR.prj: projection information 
* map_RS_BR.dbf: attribute data (k=3)
* map_RS_BR.shp: Polygon shapefile (no lakes) (n=497)
* map_RS_BR.prj: projection information
* map_RS_BR.shx: spatial index



Source: Renan Xavier Cortes 
Reference: https://github.com/pysal/pysal/issues/889#issuecomment-396693495

Note that the explain function generates a textual description of this example dataset - no rendering of the map is done as the source repository does not include that functionality.

rio = libpysal.examples.load_example("Rio Grande do Sul")
Downloading Rio Grande do Sul to /home/runner/.local/share/pysal/Rio_Grande_do_Sul
libpysal.examples.remote_datasets.datasets  # a listing of all remotes
{'AirBnB': <libpysal.examples.base.Example at 0x7f6b0e6ad160>,
 'Atlanta': <libpysal.examples.base.Example at 0x7f6b0e639810>,
 'Baltimore': <libpysal.examples.base.Example at 0x7f6b0e639a90>,
 'Bostonhsg': <libpysal.examples.base.Example at 0x7f6b0e7a7820>,
 'Buenosaires': <libpysal.examples.base.Example at 0x7f6b0e7a7950>,
 'Charleston1': <libpysal.examples.base.Example at 0x7f6b0e4f8490>,
 'Charleston2': <libpysal.examples.base.Example at 0x7f6b0e4f86b0>,
 'Chicago Health': <libpysal.examples.base.Example at 0x7f6b0e9d5350>,
 'Chicago commpop': <libpysal.examples.base.Example at 0x7f6b0e6b6350>,
 'Chicago parcels': <libpysal.examples.base.Example at 0x7f6b0e514320>,
 'Chile Labor': <libpysal.examples.base.Example at 0x7f6b0e514410>,
 'Chile Migration': <libpysal.examples.base.Example at 0x7f6b0e4f4e50>,
 'Cincinnati': <libpysal.examples.base.Example at 0x7f6b0e4f5010>,
 'Cleveland': <libpysal.examples.base.Example at 0x7f6b0e9cc6d0>,
 'Columbus': <libpysal.examples.base.Example at 0x7f6b0e66cad0>,
 'Elections': <libpysal.examples.base.Example at 0x7f6b0e66ca10>,
 'Grid100': <libpysal.examples.base.Example at 0x7f6b70a77750>,
 'Groceries': <libpysal.examples.base.Example at 0x7f6b0fd33cd0>,
 'Guerry': <libpysal.examples.base.Example at 0x7f6b0e6474d0>,
 'Health+': <libpysal.examples.base.Example at 0x7f6b0e6476b0>,
 'Health Indicators': <libpysal.examples.base.Example at 0x7f6b0e6479d0>,
 'Hickory1': <libpysal.examples.base.Example at 0x7f6b0e647250>,
 'Hickory2': <libpysal.examples.base.Example at 0x7f6b0e6477f0>,
 'Home Sales': <libpysal.examples.base.Example at 0x7f6b0e647890>,
 'Houston': <libpysal.examples.base.Example at 0x7f6b0e647930>,
 'Juvenile': <libpysal.examples.base.Example at 0x7f6b0e6471b0>,
 'Lansing1': <libpysal.examples.base.Example at 0x7f6b0e647a70>,
 'Lansing2': <libpysal.examples.base.Example at 0x7f6b0e647b10>,
 'Laozone': <libpysal.examples.base.Example at 0x7f6b0e647cf0>,
 'LasRosas': <libpysal.examples.base.Example at 0x7f6b0e647e30>,
 'Liquor Stores': <libpysal.examples.base.Example at 0x7f6b0e647ed0>,
 'Malaria': <libpysal.examples.base.Example at 0x7f6b0e647f70>,
 'Milwaukee1': <libpysal.examples.base.Example at 0x7f6b0e524050>,
 'Milwaukee2': <libpysal.examples.base.Example at 0x7f6b0e5240f0>,
 'NCOVR': <libpysal.examples.base.Example at 0x7f6b0e524190>,
 'Natregimes': <libpysal.examples.base.Example at 0x7f6b0e524230>,
 'NDVI': <libpysal.examples.base.Example at 0x7f6b0e5242d0>,
 'Nepal': <libpysal.examples.base.Example at 0x7f6b0e524370>,
 'NYC': <libpysal.examples.base.Example at 0x7f6b0e524410>,
 'NYC Earnings': <libpysal.examples.base.Example at 0x7f6b0e5244b0>,
 'NYC Education': <libpysal.examples.base.Example at 0x7f6b0e524550>,
 'NYC Neighborhoods': <libpysal.examples.base.Example at 0x7f6b0e5245f0>,
 'NYC Socio-Demographics': <libpysal.examples.base.Example at 0x7f6b0e524690>,
 'Ohiolung': <libpysal.examples.base.Example at 0x7f6b0e524730>,
 'Orlando1': <libpysal.examples.base.Example at 0x7f6b0e5247d0>,
 'Orlando2': <libpysal.examples.base.Example at 0x7f6b0e524870>,
 'Oz9799': <libpysal.examples.base.Example at 0x7f6b0e524910>,
 'Phoenix ACS': <libpysal.examples.base.Example at 0x7f6b0e5249b0>,
 'Pittsburgh': <libpysal.examples.base.Example at 0x7f6b0e524a50>,
 'Police': <libpysal.examples.base.Example at 0x7f6b0e524af0>,
 'Sacramento1': <libpysal.examples.base.Example at 0x7f6b0e524b90>,
 'Sacramento2': <libpysal.examples.base.Example at 0x7f6b0e524c30>,
 'SanFran Crime': <libpysal.examples.base.Example at 0x7f6b0e524cd0>,
 'Savannah1': <libpysal.examples.base.Example at 0x7f6b0e524d70>,
 'Savannah2': <libpysal.examples.base.Example at 0x7f6b0e524e10>,
 'Scotlip': <libpysal.examples.base.Example at 0x7f6b0e524eb0>,
 'Seattle1': <libpysal.examples.base.Example at 0x7f6b0e524f50>,
 'Seattle2': <libpysal.examples.base.Example at 0x7f6b0e524ff0>,
 'SIDS': <libpysal.examples.base.Example at 0x7f6b0e525090>,
 'SIDS2': <libpysal.examples.base.Example at 0x7f6b0e525130>,
 'Snow': <libpysal.examples.base.Example at 0x7f6b0e5251d0>,
 'South': <libpysal.examples.base.Example at 0x7f6b0e525270>,
 'Spirals': <libpysal.examples.base.Example at 0x7f6b0e525310>,
 'StLouis': <libpysal.examples.base.Example at 0x7f6b0e5253b0>,
 'Tampa1': <libpysal.examples.base.Example at 0x7f6b0e525450>,
 'US SDOH': <libpysal.examples.base.Example at 0x7f6b0e5254f0>,
 'Rio Grande do Sul': <libpysal.examples.base.Example at 0x7f6b0e525590>,
 'nyc_bikes': <libpysal.examples.base.Example at 0x7f6b0e525630>,
 'taz': <libpysal.examples.base.Example at 0x7f6b0e5256d0>,
 'clearwater': <libpysal.examples.base.Example at 0x7f6b0e525770>,
 'newHaven': <libpysal.examples.base.Example at 0x7f6b0e525810>,
 'chicagoSDOH': <libpysal.examples.base.Example at 0x7f6b0e5258b0>}