Conversion between DMS and decimal degrees:
\[DD = D + \frac{M}{60} + \frac{S}{3600}\]
GeoPandas: Python package that extends pandas to represent geographic objects as GeoDataFrames
Key column: geometry
, which represents the geometry
type of the data (point, line, or polygon) and the sequence of
coordinates
Google Colab has many Python packages you’ll need for your work pre-installed, but not all!
Packages can be installed from the Python Package Index using the
pip
command prefaced with an exclamation mark
gp.GeoDataFrame()
: function used to generate the
GeoDataFrame, which can take an existing pandas
DataFrame as its first argument
Parameters:
geometry
: how to represent the data as a geographic
object. We use the gp.points_from_xy()
function here to
“make” the geometry from existing Longitude
and
Latitude
columns.crs
: a code that specifies the dataset’s coordinate
reference system. Most coordinate systems can be represented by 4-
or 5-digit codes (see https://spatialreference.org/)Extension to the JSON format that encodes geographic coordinates for datasets
mxgeo = gp.read_file("https://gist.githubusercontent.com/walkerke/76cb8cc5f949432f9555/raw/363c297ce82a4dcb9bdf003d82aa4f64bc695cf1/mx.geojson")
import seaborn as sns
sns.set(style = "white")
mxgeo.plot(column = "pri10", cmap = "RdPu", figsize = (10, 8),
legend = True)
# Or, interactively:
mxgeo.explore(column = "pri10", cmap = "RdPu")
import pandas as pd, seaborn as sns, matplotlib.pyplot as plt
sns.set(style="whitegrid", font_scale = 1.3)
df = pd.read_csv("http://personal.tcu.edu/kylewalker/mexico.csv")
plt.figure(figsize = (10, 8))
p = sns.stripplot(data = df.sort_values('pri10', ascending = False),
x = 'pri10', y = 'name', palette = "RdPu_r",
orient = 'h', size = 8, hue = 'pri10', legend = False)
p.set(xlabel = "% of workforce in primary sector",
xlim = (0, 50), ylabel = "")
p.axes.xaxis.grid(False)
p.axes.yaxis.grid(True)
sns.despine(left = True, bottom = True)
We’ve discussed getting data from APIs to stream data in to your analysis session
pygris: Python package I wrote to automate acquisition of Census Bureau geographic data
Let’s try it out!
from pygris.data import get_census
income_data = get_census(
dataset = "acs/acs5",
year = 2022,
variables = "B19013_001E",
params = {
"for": "tract:*",
"in": ["state:48", "county:439"]
},
return_geoid = True,
guess_dtypes = True
)
tarrant_income = tarrant_tracts.merge(income_data, on = "GEOID")
tarrant_income.explore(column = "B19013_001E")