airow


Nameairow JSON
Version 0.1.0a2 PyPI version JSON
download
home_pageNone
SummaryAI-powered DataFrame processing made simple
upload_time2025-09-06 23:22:19
maintainerNone
docs_urlNone
authorNone
requires_python>=3.10
licenseMIT
keywords ai ai-agent dataframe pandas pydantic-ai async data-processing
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # Airow

**AI-powered DataFrame processing made simple**

Airow is a Python library that combines the power of pandas DataFrames with AI models to process structured data at scale. Built on top of `pydantic-ai`, it provides type-safe, async processing of DataFrames using any AI model.

## Features

- 🚀 **Async processing** with batch support for high performance
- 🔒 **Type-safe outputs** using Pydantic models
- 📊 **Progress tracking** with built-in progress bars
- 🔄 **Automatic retries** with configurable retry logic
- 🤖 **Flexible AI models** - works with OpenAI, Ollama, Anthropic, and more
- ⚡ **Parallel processing** within batches for maximum throughput
- 📝 **Structured outputs** with defined schemas and validation

## Installation

```bash
# Using pip
pip install airow

# Using uv (recommended)
uv add airow

# Using conda
conda install -c conda-forge airow
```

## Quick Start

```python
import pandas as pd
from pydantic_ai.models.openai import OpenAIChatModel
from pydantic_ai.providers.ollama import OllamaProvider
from airow import Airow, OutputColumn
import asyncio

async def main():
    # Setup your AI model
    model = OpenAIChatModel(
        model_name="llama3.2:latest",
        provider=OllamaProvider(base_url="http://localhost:11434/v1"),
    )
    
    # Create Airow instance
    airow = Airow(
        model=model,
        system_prompt="You are an expert in wine tasting and selection.",
    )
    
    # Load your data
    df = pd.read_csv("wine_data.csv")

    output_columns = [
        OutputColumn(name="sentiment", type=str, description="Positive, negative, or neutral sentiment"),
        OutputColumn(name="confidence", type=float, description="Confidence score between 0 and 1"),
        OutputColumn(name="keywords", type=list, description="List of key terms extracted"),
    ]
    
    # Process with AI
    result_df = await airow.run(
        df,
        prompt="Analyze the wine description and provide sentiment analysis, confidence score, and extract key terms.",
        input_columns=["description"],
        output_columns=output_columns,
        show_progress=True,
    )
    
    print(result_df.head())

if __name__ == "__main__":
    asyncio.run(main())
```

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "airow",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.10",
    "maintainer_email": "Dmitrii K <dmitriik@protonmail.com>",
    "keywords": "ai, ai-agent, dataframe, pandas, pydantic-ai, async, data-processing",
    "author": null,
    "author_email": "Dmitrii K <dmitriik@protonmail.com>",
    "download_url": "https://files.pythonhosted.org/packages/52/bc/39832cf6b735013a8d8cc2e73ece98699e9d7280f55a16ee152747e67b13/airow-0.1.0a2.tar.gz",
    "platform": null,
    "description": "# Airow\n\n**AI-powered DataFrame processing made simple**\n\nAirow is a Python library that combines the power of pandas DataFrames with AI models to process structured data at scale. Built on top of `pydantic-ai`, it provides type-safe, async processing of DataFrames using any AI model.\n\n## Features\n\n- \ud83d\ude80 **Async processing** with batch support for high performance\n- \ud83d\udd12 **Type-safe outputs** using Pydantic models\n- \ud83d\udcca **Progress tracking** with built-in progress bars\n- \ud83d\udd04 **Automatic retries** with configurable retry logic\n- \ud83e\udd16 **Flexible AI models** - works with OpenAI, Ollama, Anthropic, and more\n- \u26a1 **Parallel processing** within batches for maximum throughput\n- \ud83d\udcdd **Structured outputs** with defined schemas and validation\n\n## Installation\n\n```bash\n# Using pip\npip install airow\n\n# Using uv (recommended)\nuv add airow\n\n# Using conda\nconda install -c conda-forge airow\n```\n\n## Quick Start\n\n```python\nimport pandas as pd\nfrom pydantic_ai.models.openai import OpenAIChatModel\nfrom pydantic_ai.providers.ollama import OllamaProvider\nfrom airow import Airow, OutputColumn\nimport asyncio\n\nasync def main():\n    # Setup your AI model\n    model = OpenAIChatModel(\n        model_name=\"llama3.2:latest\",\n        provider=OllamaProvider(base_url=\"http://localhost:11434/v1\"),\n    )\n    \n    # Create Airow instance\n    airow = Airow(\n        model=model,\n        system_prompt=\"You are an expert in wine tasting and selection.\",\n    )\n    \n    # Load your data\n    df = pd.read_csv(\"wine_data.csv\")\n\n    output_columns = [\n        OutputColumn(name=\"sentiment\", type=str, description=\"Positive, negative, or neutral sentiment\"),\n        OutputColumn(name=\"confidence\", type=float, description=\"Confidence score between 0 and 1\"),\n        OutputColumn(name=\"keywords\", type=list, description=\"List of key terms extracted\"),\n    ]\n    \n    # Process with AI\n    result_df = await airow.run(\n        df,\n        prompt=\"Analyze the wine description and provide sentiment analysis, confidence score, and extract key terms.\",\n        input_columns=[\"description\"],\n        output_columns=output_columns,\n        show_progress=True,\n    )\n    \n    print(result_df.head())\n\nif __name__ == \"__main__\":\n    asyncio.run(main())\n```\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "AI-powered DataFrame processing made simple",
    "version": "0.1.0a2",
    "project_urls": {
        "Bug Tracker": "https://github.com/dmitriiweb/airow/issues",
        "Documentation": "https://github.com/dmitriiweb/airow",
        "Homepage": "https://github.com/dmitriiweb/airow",
        "Repository": "https://github.com/dmitriiweb/airow"
    },
    "split_keywords": [
        "ai",
        " ai-agent",
        " dataframe",
        " pandas",
        " pydantic-ai",
        " async",
        " data-processing"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "39e17c43e1b5fb13e66eacb19f66fb4fd6716b33d50181b38a4dc006a65fa0c2",
                "md5": "2962acab9e018bacadf400bb0b15dbec",
                "sha256": "6713b18bfdb28887abe4b8de21c684986703e67e87b7119f21e97fdfa753c397"
            },
            "downloads": -1,
            "filename": "airow-0.1.0a2-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "2962acab9e018bacadf400bb0b15dbec",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.10",
            "size": 6558,
            "upload_time": "2025-09-06T23:22:17",
            "upload_time_iso_8601": "2025-09-06T23:22:17.753346Z",
            "url": "https://files.pythonhosted.org/packages/39/e1/7c43e1b5fb13e66eacb19f66fb4fd6716b33d50181b38a4dc006a65fa0c2/airow-0.1.0a2-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "52bc39832cf6b735013a8d8cc2e73ece98699e9d7280f55a16ee152747e67b13",
                "md5": "742c775f7422b9fdc3678ee74ba7ae84",
                "sha256": "b20bfaa5c7b9e5148fb694ac0688f877fd7907f8a704888791f45013eeabf206"
            },
            "downloads": -1,
            "filename": "airow-0.1.0a2.tar.gz",
            "has_sig": false,
            "md5_digest": "742c775f7422b9fdc3678ee74ba7ae84",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.10",
            "size": 7173,
            "upload_time": "2025-09-06T23:22:19",
            "upload_time_iso_8601": "2025-09-06T23:22:19.086322Z",
            "url": "https://files.pythonhosted.org/packages/52/bc/39832cf6b735013a8d8cc2e73ece98699e9d7280f55a16ee152747e67b13/airow-0.1.0a2.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-09-06 23:22:19",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "dmitriiweb",
    "github_project": "airow",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": false,
    "lcname": "airow"
}
        
Elapsed time: 0.78920s