Skip to main content

Data Science Toolkit

Project description

sibi-dst

Data Science Toolkit

Data Science Toolkit built with Python, Pandas, Dask, OpenStreetMaps, Scikit-Learn, XGBOOST, Django ORM, SQLAlchemy, DjangoRestFramework, FastAPI

Major Functionality

  1. Build DataCubes, DataSets, and DataObjects from diverse data sources, including relational databases, Parquet files, Excel (.xlsx), delimited tables (.csv, .tsv), JSON, and RESTful APIs (JSON API REST).
  2. Comprehensive DataFrame Management utilities for efficient data handling, transformation, and optimization using Pandas and Dask.
  3. Flexible Data Sharing with client applications by writing to Data Warehouses, local filesystems, and cloud storage platforms such as Amazon S3, Google Cloud Storage (GCS), and Azure Blob Storage.
  4. Microservices for Data Access – Build scalable API-driven services using RESTful APIs (Django REST Framework, FastAPI) and gRPC for high-performance data exchange.

Supported Technologies

  • Data Processing: Pandas, Dask
  • Machine Learning: Scikit-Learn, XGBoost
  • Databases & Storage: SQLAlchemy, Django ORM, Parquet, Amazon S3, GCS, Azure Blob Storage
  • Mapping & Geospatial Analysis: OpenStreetMaps, OSMnx, Geopy
  • API Development: Django REST Framework, gRPC, FastAPI

Installation

pip install sibi-dst

Usage

Loading Data from SQLAlchemy

from sibi_dst.df_helper import DfHelper
from conf.transforms.fields.crm import customer_fields
from conf.credentials import replica_db_conf
from conf.storage import get_fs_instance

config = {
    'backend': 'sqlalchemy',
    'connection_url': replica_db_conf.get('db_url'),
    'table': 'crm_clientes_archivo',
    'field_map': customer_fields,
    'legacy_filters': True,
    'fs': get_fs_instance()
}

df_helper = DfHelper(**config)
result = df_helper.load(id__gte=1)

Saving Data to ClickHouse

clk_creds = {
    'host': '192.168.3.171',
    'port': 18123,
    'user': 'username',
    'database': 'xxxxxxx',
    'table': 'customer_file',
    'order_by': 'id'
}

df_helper.save_to_clickhouse(**clk_creds)

Saving Data to Parquet

df_helper.save_to_parquet(
    parquet_filename='filename.parquet',
    parquet_storage_path='/path/to/my/files/'
)

Backends Supported

Backend Description
sqlalchemy Load data from SQL databases using SQLAlchemy.
django_db Load data from Django ORM models.
parquet Load and save data from Parquet files.
http Fetch data from HTTP endpoints.
osmnx Geospatial mapping and routing using OpenStreetMap.
geopy Geolocation services for address lookup and reverse geocoding.

Geospatial Utilities

**OSMnx Helper (sibi_dst.osmnx_helper)

** Provides OpenStreetMap-based mapping utilities using osmnx and folium.

🔹 Key Features

  • BaseOsmMap: Manages interactive Folium-based maps.
  • PBFHandler: Loads .pbf (Protocolbuffer Binary Format) files for network graphs.

Example: Generating an OSM Map

from sibi_dst.osmnx_helper import BaseOsmMap
osm_map = BaseOsmMap(osmnx_graph=my_graph, df=my_dataframe)
osm_map.generate_map()

**Geopy Helper (sibi_dst.geopy_helper)

** Provides geolocation services using Geopy for forward and reverse geocoding.

🔹 Key Features

  • GeolocationService: Interfaces with Nominatim API for geocoding.
  • Error Handling: Manages GeocoderTimedOut and GeocoderServiceError gracefully.
  • Singleton Geolocator: Efficiently reuses a global geolocator instance.

Example: Reverse Geocoding

from sibi_dst.geopy_helper import GeolocationService
gs = GeolocationService()
location = gs.reverse((9.935,-84.091))
print(location)

Advanced Features

Querying with Custom Filters

Filters can be applied dynamically using Django-style syntax:

result = df_helper.load(date__gte='2023-01-01', status='active')

Parallel Processing

Leverage Dask for parallel execution:

result = df_helper.load_parallel(status='active')

Testing

To run unit tests, use:

pytest tests/

Contributing

Contributions are welcome! Please submit pull requests or open issues for discussions.

License

sibi-dst is licensed under the MIT License.

Project details


Release history Release notifications | RSS feed

Download files

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

Source Distribution

sibi_dst-0.3.51.tar.gz (121.1 kB view details)

Uploaded Source

Built Distribution

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

sibi_dst-0.3.51-py3-none-any.whl (149.9 kB view details)

Uploaded Python 3

File details

Details for the file sibi_dst-0.3.51.tar.gz.

File metadata

  • Download URL: sibi_dst-0.3.51.tar.gz
  • Upload date:
  • Size: 121.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.8.9

File hashes

Hashes for sibi_dst-0.3.51.tar.gz
Algorithm Hash digest
SHA256 ea1cbc7f0ca876a32c99e423a0633741af938aaf592d9a73d2b005e892e93002
MD5 441b8e3bc6f8d7b05562fc700d32f901
BLAKE2b-256 421aa096bc60ffc98a16d72d32f07f9e4ea31b9f6b310b37270a619b631a11d2

See more details on using hashes here.

File details

Details for the file sibi_dst-0.3.51-py3-none-any.whl.

File metadata

  • Download URL: sibi_dst-0.3.51-py3-none-any.whl
  • Upload date:
  • Size: 149.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.8.9

File hashes

Hashes for sibi_dst-0.3.51-py3-none-any.whl
Algorithm Hash digest
SHA256 e28c5b2fc10494ecc07deb326b1c1fea94d9f25789782963501fe6c0418368d6
MD5 3dab3927e8a4c8160e5fd790c35091d2
BLAKE2b-256 8ef992eb47f19911a95dc649d28a50bb522479bb651ce43615b7673ea3394122

See more details on using hashes here.

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