A high-performance DataFrame implementation built on top of NumPy
Project description
FastDF: High-Performance DataFrame for Python
FastDF is a lightning-fast, memory-efficient DataFrame implementation built on top of NumPy, designed to overcome the performance limitations of pandas for basic data operations.
🚀 Key Features
- Blazing Fast: Up to 126x faster data access compared to pandas
- Memory Efficient: Optimized memory usage with NumPy 2D arrays
- Pandas-Compatible: Seamless integration with existing pandas-based projects
- Minimalist: Focuses on core functionality for maximum performance
🎯 Motivation
FastDF was born out of frustration with the sluggish performance of pandas, especially when dealing with large datasets. After exploring various alternatives that either didn't work as expected or introduced complex syntax changes, we realized that for many data analysis tasks, we only need a handful of core features:
- Named columns
- Efficient slicing
- Basic operations like
shift
andany
By leveraging the power of NumPy's 2D arrays and implementing only the essential features, FastDF achieves remarkable performance improvements without sacrificing ease of use.
⚡ Performance
In our benchmarks, FastDF has shown:
- 126x faster data access compared to pandas
- Significantly faster slicing operations
- Reduced memory footprint
🛠 Installation
You can install FastDF using pip:
pip install fastdf
For the latest development version, you can install directly from GitHub:
pip install git+https://github.com/stwrn/fastdf.git
🚦 Quick Start
from fastdf import fdf
import pandas as pd
import numpy as np
# Create a pandas DataFrame
pdf = pd.DataFrame({'A': np.random.rand(1000000), 'B': np.random.rand(1000000)})
# Convert to FastDF
fast_df = fdf.from_pandas(pdf)
# Use FastDF with familiar pandas-like syntax
print(fast_df.loc[0:5, 'A'])
print(fast_df['B'].shift(1))
print(fast_df.any())
🔄 Compatibility
FastDF is designed to be a drop-in replacement for basic pandas operations. You can easily convert your pandas DataFrame to FastDF and continue using the familiar syntax:
# Your existing pandas code
result = pandas_df.loc[1000:2000][ 'B']
print(f"Pandas result {result}")
# With FastDF
fast_df = FastDataFrame.from_pandas(pandas_df)
result_fdf = fast_df.loc[1000:2000][ 'B']
print(f"FastDF result {result_fdf}")
🤝 Contributing
We welcome contributions to FastDF! Whether it's bug reports, feature requests, or code contributions, please feel free to make a pull request or open an issue.
📜 License
FastDF is released under the MIT License. See the LICENSE file for more details.
🙏 Acknowledgements
Special thanks to the NumPy and pandas teams for their incredible work, which laid the foundation for this project.
FastDF is still in active development. We're excited to see how it can help accelerate your data analysis workflows!
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
Built Distribution
File details
Details for the file fastdf-0.1.2.tar.gz
.
File metadata
- Download URL: fastdf-0.1.2.tar.gz
- Upload date:
- Size: 27.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.11.3
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | c5d22843725a5b958ce5943e2caf07262cae5b82e4b2971afa412f68069b21c9 |
|
MD5 | ad7c7210957384b3356a05f4fcdfa025 |
|
BLAKE2b-256 | 3f4603304c2f1aabb167f994842b3aa64933565a2fc2389f1907c2d31cd56634 |
File details
Details for the file fastdf-0.1.2-py3-none-any.whl
.
File metadata
- Download URL: fastdf-0.1.2-py3-none-any.whl
- Upload date:
- Size: 4.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.11.3
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6426def008e714095b481f8e080a10f9a6250fda4e5a41a699b4abacdd325489 |
|
MD5 | 9c733ddf2faa477b62d72a0ccf9502bf |
|
BLAKE2b-256 | c27d63bfdf7f0f724b11031b338b0eb57e0691e34182f0c3540335c0632476c9 |