Skip to main content

GeoPandas AI is an extension of GeoPandas allowing you to interact with your spatial data in natural language.

Project description

GeoPandas AI Logo

GeoPandas AI

GeoPandas AI is a powerful Python library that brings natural language processing capabilities to your geospatial data analysis workflow. It allows you to interact with GeoDataFrames using natural language queries, making geospatial analysis more accessible and intuitive. It is both suitable for Jupyter notebooks and Python scripts or packages.

Features

  • Natural language interaction with GeoDataFrames
  • Support for multiple LLM providers through LiteLLM
  • Built-in support for Jupyter notebooks
  • Extensible and configurable.

Installation

pip install geopandas-ai

Quick Start

GeoPandas AI is designed to work seamlessly with GeoPandas. Most function available in GeoPandas are also available in GeoPandas AI.

Example Usage 1

import geopandasai as gpdai

gdfai = gpdai.read_file("path/to/your/geodatafile.geojson")

figure = gdfai.chat("Plot the data")
figure = gdfai.improve("Change the title to something more selling and add a basemap")

Example Usage 2

import geopandas as gpd

import geopandasai as gpdai

gdf = gpd.read_file("path/to/your/geodatafile.geojson")

# Convert GeoDataFrame to GeoDataFrameAI, provide a description for the data to provide context to the LLM
gdfai = gpdai.GeoDataFrameAI(gdf, description='A GeoDataFrame containing geospatial data, the fields are..')

# Use the chat method to interact with the GeoDataFrame, syntax sugar to avoid having to go to next line and
# call gdfai.improve again.
gdfai.chat("Plot the data").improve("Change the title to something more selling and add a basemap")

Example Usage 3 (Advanced parameters)

import geopandasai as gpdai

gdfai = gpdai.read_file("path/to/your/geodatafile.geojson")
gdfai.set_description("A GeoDataFrame containing geospatial data, the fields are...")

a_second_df = gpdai.read_file("path/to/another/geodatafile.geojson")
a_second_df.set_description("A second GeoDataFrame containing additional geospatial data.")

value = gdfai.chat(
    "Number of clusters in the data",
    a_second_df,  # Additional GeoDataFrame to use in the query, can add one or more GeoDataFrames
    provided_libraries=['scikit-learn', 'numpy'],  # Additional libraries that can be used in the generated code
    return_type=int
)

value = gdfai.improve(
    "Smaller clusters",
)

# Once happy with the result, you can save the modified GeoDataFrame
gdfai.inject(function_name="find_clusters")

# Then replace the above code with
import ai

ai.find_clusters(
    gdfai,  # The GeoDataFrame to operate on
    a_second_df,  # Additional GeoDataFrame to use in the query
)

For more examples, feel free to check the GitHub examples folder.

⚙️ Configuration: Customizing GeoPandasAI

GeoPandasAI uses a dependency-injected configuration system for managing execution, injection, caching, and LLM-related behavior. This allows you to swap components easily for custom behavior or testing.

You can configure the lite_llm_config by using the same arguments as the ones you would provide to the completion function of LiteLLM.


✨ Update the Configuration

Use update_geopandasai_config(...) to override any subset of the configuration:

from geopandasai import update_geopandasai_config
from geopandasai.external.cache.backend.file_system import FileSystemCacheBackend
from geopandasai.services.description.descriptor.public import PublicDataDescriptor
from geopandasai.services.inject.injectors.print_inject import PrintCodeInjector
from geopandasai.services.code.executor import TrustedCodeExecutor, UntrustedCodeExecutor

update_geopandasai_config(
    lite_llm_config={"model": "your-llm-config"},  # dict | None
    libraries=["pandas", "geopandas", "matplotlib"],  # List[str] | None
    cache_backend=FileSystemCacheBackend(),  # ACacheBackend | None
    descriptor=PublicDataDescriptor(),  # ADescriptor | None
    return_types={int, float},  # Set[type] | None
    injector=PrintCodeInjector(),  # ACodeInjector | None
    executor=TrustedCodeExecutor(),  # ACodeExecutor | None (or UntrustedCodeExecutor())
)

🔧 Access the Current Configuration

from geopandasai import get_geopandasai_config

config = get_geopandasai_config()
print(config.libraries)

Requirements

  • Python 3.8+
  • GeoPandas
  • LiteLLM
  • Matplotlib
  • Folium
  • Contextily

License

MIT + Commercial Platform Restriction (see LICENSE.md)

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

geopandas_ai-0.0.32.tar.gz (25.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

geopandas_ai-0.0.32-py3-none-any.whl (37.2 kB view details)

Uploaded Python 3

File details

Details for the file geopandas_ai-0.0.32.tar.gz.

File metadata

  • Download URL: geopandas_ai-0.0.32.tar.gz
  • Upload date:
  • Size: 25.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for geopandas_ai-0.0.32.tar.gz
Algorithm Hash digest
SHA256 572e8d2da4c753a5251e614ead29f49f4c5a5e1400c95c4f7a05c3d03f8691d3
MD5 0ea6f8c9a61ba248b67c6bfa62bc20f5
BLAKE2b-256 089d331ab75cf5e3d2a18a505184060853ea39b902337199e93f1142d83492ec

See more details on using hashes here.

Provenance

The following attestation bundles were made for geopandas_ai-0.0.32.tar.gz:

Publisher: python-publish.yml on GaspardMerten/geopandas-ai

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file geopandas_ai-0.0.32-py3-none-any.whl.

File metadata

  • Download URL: geopandas_ai-0.0.32-py3-none-any.whl
  • Upload date:
  • Size: 37.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for geopandas_ai-0.0.32-py3-none-any.whl
Algorithm Hash digest
SHA256 811bff0ab6a02befc23aad54ab18c94981b47adb71289fb05a7a46563a69a208
MD5 74a7c85135ba5dd4a0721df64583a1d1
BLAKE2b-256 1d45a0df87e80c51e26b2811062709a7d741e2b4337d6dcab3c0400b86ce80c8

See more details on using hashes here.

Provenance

The following attestation bundles were made for geopandas_ai-0.0.32-py3-none-any.whl:

Publisher: python-publish.yml on GaspardMerten/geopandas-ai

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page