Skip to main content

Immutable and grow-only Pandas-like DataFrames with a more explicit and consistent interface

Project description

A library of immutable and grow-only Pandas-like DataFrames with a more explicit and consistent interface. StaticFrame is suitable for applications in data science, data engineering, finance, scientific computing, and related fields where reducing opportunities for error by prohibiting in-place mutation is critical.

While many interfaces are similar to Pandas, StaticFrame deviates from Pandas in many ways: all data is immutable, and all indices are unique; the full range of NumPy data types is preserved, and date-time indices use discrete NumPy types; hierarchical indices are seamlessly integrated; and uniform approaches to element, row, and column iteration and function application are provided. Core StaticFrame depends only on NumPy and two C-extension packages (maintained by the StaticFrame team): Pandas is not a dependency.

A wide variety of table storage and representation formats are supported, including input from and output to CSV, TSV, JSON, MessagePack, Excel XLSX, SQLite, HDF5, NumPy, Pandas, Arrow, and Parquet; additionally, output to xarray, VisiData, HTML, RST, Markdown, and LaTeX is supported, as well as HTML representations in Jupyter notebooks.

StaticFrame features a family of multi-table containers: the Bus is lazily loaded container of tables, the Batch is a deferred processor of tables, and the Quilt is a virtual concatenation of tables. All permit operating on large collections of tables with minimal memory overhead, as well as writing too and reading from zipped bundles of pickles, Parquet, or delimited files, as well as XLSX workbooks, SQLite, and HDF5.

Code: https://github.com/InvestmentSystems/static-frame

Docs: http://static-frame.readthedocs.io

Packages: https://pypi.org/project/static-frame

Benchmarks: https://investmentsystems.github.io/static-frame-benchmark

Context: Ten Reasons to Use StaticFrame instead of Pandas

Why Immutable Data?

The following example, executed in a low-memory environment (using prlimit), shows how Pandas cannot re-label columns of a DataFrame or concatenate a DataFrame to itself without copying underlying data. By using immutable NumPy arrays, StaticFrame can perform these operations in the same low-memory environment. By reusing immutable arrays without copying, StaticFrame can achieve more efficient memory usage.

https://raw.githubusercontent.com/InvestmentSystems/static-frame/master/doc/images/animate-low-memory-ops-verbose.svg

Colorful Types

Unexpected type coercions can expose errors or degrade performance. StaticFrame’s container display provides full visibility into the types in a Frame, and provides a variety of ways to configure the presentation and color of those types.

https://raw.githubusercontent.com/InvestmentSystems/static-frame/master/doc/images/animate-display-config.svg

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

static-frame-0.8.15.tar.gz (475.5 kB view details)

Uploaded Source

Built Distribution

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

static_frame-0.8.15-py3-none-any.whl (518.0 kB view details)

Uploaded Python 3

File details

Details for the file static-frame-0.8.15.tar.gz.

File metadata

  • Download URL: static-frame-0.8.15.tar.gz
  • Upload date:
  • Size: 475.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.45.0 CPython/3.7.4

File hashes

Hashes for static-frame-0.8.15.tar.gz
Algorithm Hash digest
SHA256 bb5573fea581e177da31c606c1018e0d5faac324d3c14044b27ed7eec9896c11
MD5 f1aedc57dc63b005710b28cc79b43687
BLAKE2b-256 540cd36950ecf9352a781f2e67a3079c5a3b686e7b0fa61b90072da42489bfd2

See more details on using hashes here.

File details

Details for the file static_frame-0.8.15-py3-none-any.whl.

File metadata

  • Download URL: static_frame-0.8.15-py3-none-any.whl
  • Upload date:
  • Size: 518.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.45.0 CPython/3.7.4

File hashes

Hashes for static_frame-0.8.15-py3-none-any.whl
Algorithm Hash digest
SHA256 8f65c06ade1beb3f07727a96d4ce900918a33ff25e3de13fcd13c87cac835e45
MD5 ff0b374042cfc52342fd0b05287c6c8c
BLAKE2b-256 48b28a49e9d56a21c805ea33bbd0a8d9778f08554641d8d946e3e43f000e03de

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