ABOUT 1 MONTH AGO • 3 MIN READ

🐍 The 7 things I wish I knew about Python before learning Python

profile

Grow your geospatial skills

Being a geospatial professional is about embracing your passion. We ask: “how can I impact the world with spatial insights?”, and then build a career that supports that mission. Spatial Stack helps you grow your career both through skills but also practical insights to help you work better and do more.

It’s more than likely that Python is going to become a fundamental skill in all areas in the coming years, just as Excel did in previous decades. Its applications across many domains and ability to automate processes make it one of the most popular languages today.

It’s more than likely that Python is going to become a fundamental skill in all areas in the coming years, just as Excel did in previous decades. Its applications across many domains and ability to automate processes make it one of the most popular languages today.

But in GIS, we already know that. For years, we have used Python scripts to automate data pipelines, create maps, and move data around to make us more efficient.

To stand out and become truly effective with Python, without taking a comprehensive course or reading every single blog post on RealPython.com, here are my top tips for mastering Python for geospatial work.

1. Everything is an object

In Python, every entity, including numbers, strings, and even functions, is an object. Understanding this makes working with complex geospatial libraries like GeoPandas easier. For example, when you use GeoDataFrame, you’re dealing with an object that has its own methods like .buffer(), .intersects(), or .to_crs(). Recognizing these methods allows you to manipulate spatial data directly without complex external functions.

2. Understanding the primitives and library relationships

Learn the basic data types (int, float, str, list, dict, etc.) and how they relate to geospatial libraries. For instance, GeoPandas often works with lists of coordinate tuples, dictionaries for attribute data, and DataFrames for tabular information. Knowing that GeoSeries in GeoPandas is a specialized form of a pandas.Series can help you utilize common pandas operations like .apply() to process spatial data effectively.

3. Keep it simple - small code blocks, data types, and functions

Avoid the temptation to overcomplicate your scripts. Write small functions to handle specific tasks, like transforming a coordinate system or filtering data. For example, instead of one large function that extracts, transforms, and loads data, break it into smaller parts like extract_coordinates(), transform_projection(), and load_to_database(). This modular approach makes debugging easier and improves script readability.

4. If you are using Python for analytics or automation, you don’t need to learn Python programming

Focus on libraries and tools tailored to GIS work. You don’t need to become a software developer to use Python effectively for GIS. For instance, mastering GeoPandas, Shapely, Fiona, and Rasterio for geospatial data analysis or Folium for quick map visualization is far more practical than diving deep into complex concepts like object-oriented programming.

5. Know what things are just “wrappers”

Many geospatial Python libraries are wrappers around more complex, lower-level tools. GeoPandas is a wrapper around pandas and Shapely, simplifying spatial data manipulation. Similarly, Rasterio wraps around GDAL for raster data operations. Understanding that GeoPandas simplifies tasks like reading shapefiles (geopandas.read_file()), but still utilizes Fiona under the hood, helps you identify where performance bottlenecks might arise and when to use lower-level tools directly.

6. Learn how to use docs kwargs

When calling functions in libraries like GeoPandas or Rasterio, you’ll often see **kwargs in the documentation. This means the function accepts additional keyword arguments, giving you more control. For example, in GeoPandas, when using .plot(), you can pass additional styling options (color, linewidth, etc.) using **kwargs.

A great example is the read_parquet() function in GeoPandas, which uses the pyarrow library under the hood. This function accepts **kwargs such as filters and partitioning to optimize data reading. For example:

import geopandas as gpd# Using filters to read only specific rows based on conditionsdf = gpd.read_parquet('data/geodata.parquet', filters=[('city', '==', 'New York')])# Using partitioning to optimize the data reading processdf = gpd.read_parquet('data/geodata.parquet', partitioning='hive')

Here, filters is passed down to pyarrow to read only rows where the 'city' is 'New York,' reducing memory usage. partitioning helps in reading data stored in a partitioned layout, allowing efficient data retrieval.

7. Know how to manipulate and change data - loops, conditionals, arrays, etc.

While libraries like GeoPandas and NumPy can handle spatial data efficiently, understanding how to manipulate data with loops, conditionals, and array operations can save time.

GeoDataFrames are essentially dictionaries with a tabular structure, where each column is a key associated with a series of values. Understanding this allows you to interact with them similarly to how you would manipulate a dict. For example, you can use .iterrows() to loop over rows, or access individual columns (keys) directly:

# Looping through rows in a GeoDataFramefor index, row in gdf.iterrows(): if row['population'] > 10000:# Apply some conditional logicprint(f"High population area: {row['name']}")

Similarly, GeoSeries can be thought of as a list where each element corresponds to a spatial feature (like a Point, LineString, or Polygon). This allows you to perform operations like list comprehensions to modify or extract specific geometry properties:

# Extracting centroid coordinates from a GeoSeriescentroids = [geom.centroid for geom in gdf.geometry]

Understanding these internal structures enables more flexible and creative data manipulation, maximizing the power of geospatial analysis.

113 Cherry St #92768, Seattle, WA 98104-2205
Unsubscribe · Preferences

Grow your geospatial skills

Being a geospatial professional is about embracing your passion. We ask: “how can I impact the world with spatial insights?”, and then build a career that supports that mission. Spatial Stack helps you grow your career both through skills but also practical insights to help you work better and do more.