{"id":49663413,"url":"https://github.com/superpandas-ai/superpandas","last_synced_at":"2026-05-06T14:30:59.382Z","repository":{"id":350115474,"uuid":"994141835","full_name":"superpandas-ai/superpandas","owner":"superpandas-ai","description":"Adding LLM integration to Pandas library","archived":false,"fork":false,"pushed_at":"2026-02-09T12:49:42.000Z","size":1244,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2026-04-09T01:14:48.237Z","etag":null,"topics":["ai","data-analysis","llm","pandas"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/superpandas-ai.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-06-01T09:56:07.000Z","updated_at":"2026-02-09T12:49:46.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/superpandas-ai/superpandas","commit_stats":null,"previous_names":["superpandas-ai/superpandas"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/superpandas-ai/superpandas","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/superpandas-ai%2Fsuperpandas","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/superpandas-ai%2Fsuperpandas/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/superpandas-ai%2Fsuperpandas/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/superpandas-ai%2Fsuperpandas/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/superpandas-ai","download_url":"https://codeload.github.com/superpandas-ai/superpandas/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/superpandas-ai%2Fsuperpandas/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32698070,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-06T08:33:17.875Z","status":"ssl_error","status_checked_at":"2026-05-06T08:33:17.221Z","response_time":117,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai","data-analysis","llm","pandas"],"created_at":"2026-05-06T14:30:57.145Z","updated_at":"2026-05-06T14:30:59.355Z","avatar_url":"https://github.com/superpandas-ai.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# SuperPandas\n\n\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"https://avatars.githubusercontent.com/u/192782649\" alt=\"SuperPandas Logo\" width=\"200\"/\u003e\n\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\n  \u003cstrong\u003e⚠️ Beta Version - Breaking Changes Expected\u003c/strong\u003e\u003cbr\u003e\n  This package is currently in beta. Please expect errors and breaking changes in future releases.\n\u003c/div\u003e\n\n\n### Introduction\n\nSuperPandas is a lightweight Python package that extends the well known Pandas library with functionality for AI-powered data analytics and SQL querying. It is a barebones wrapper using Pandas Dataframe [accessors](https://pandas.pydata.org/docs/development/extending.html) feature to add namespaces 'super' and 'sql' which add metadata, LLM integration, and SQL query capabilities to dataframes. \n\n## Key Features\n\n### Enhanced DataFrame with Metadata\n- **Rich Metadata Support**: Add names, descriptions, and detailed column information to Pandas DataFrames, which allows for better representation of Pandas DataFrames in LLM applications.\n- **Automatically generate metadata**: Automatically generate metadata for DataFrames using LLMs.\n- **Support for multiple LLM providers** Support for multiple LLM providers using `smolagents` library\n- **Intelligent Type Inference**: Automatically extracts detailed column types, especially for object columns. (e.g use str instead of object)\n- **Schema Generation**: Generate clear schema representations for using as context in LLM applications.\n- **Serialization**: Save and load DataFrames with all metadata intact.\n- **Drop-in replacement for Pandas DataFrames**: SuperPandas is a lightweight wrapper around pandas DataFrames, so you can use it as a drop-in replacement for your existing code.\n- **Templated Prompt Generation** Easily store and use templates for system and user prompts.\n\n### SQL Query Accessor\n- **In-memory SQLite Database**: Execute SQL queries on pandas DataFrames using SQLite as the backend engine\n- **Multiple Table Support**: Join and query multiple DataFrames using the `env` parameter\n- **Full SQL Support**: Complete SQL functionality including SELECT, WHERE, JOIN, GROUP BY, HAVING, ORDER BY, and more\n- **Type Safety**: Comprehensive error handling and validation for robust query execution\n- **Custom Database URIs**: Option to use persistent databases instead of in-memory storage\n- **Seamless Integration**: Works with both regular pandas DataFrames and SuperDataFrames\n\n### LangGraph Agent for Code Execution\n- **Intelligent Code Generation**: Automatically generates Python code based on natural language queries\n- **Safe Code Execution**: Executes generated code in a controlled environment\n- **Error Reflection**: Analyzes errors and provides suggestions for fixes\n- **Iterative Improvement**: Retries failed code with improved suggestions\n- **Response Formatting**: Formats results into user-friendly responses\n\n## Installation\n\nYou can install SuperPandas using pip:\n\n```bash\npip install superpandas\n```\n\nOr install the latest development version from GitHub:\n\n```bash\npip install git+https://github.com/superpandas-ai/superpandas.git\n```\n\n## Quick Start\n\n### SQL Querying (New!)\n```python\nimport pandas as pd\nimport superpandas  # Registers SQL accessor\n\n# Create DataFrames\ndf1 = pd.DataFrame({\"id\": [1, 2, 3], \"name\": [\"Alice\", \"Bob\", \"Charlie\"]})\ndf2 = pd.DataFrame({\"id\": [1, 2], \"dept\": [\"Engineering\", \"Sales\"]})\n\n# Basic SQL query\nresult = df1.sql.query(\"SELECT * FROM df WHERE id \u003e 1\")\n\n# Join multiple DataFrames\nenv = {\"employees\": df1, \"departments\": df2}\nresult = df1.sql.query(\"\"\"\n    SELECT e.name, d.dept \n    FROM df e \n    JOIN departments d ON e.id = d.id\n\"\"\", env=env)\n```\n\n## Usage\n\n### Creating SuperDataFrame\n\n```python\nimport pandas as pd\nimport numpy as np\n\n# Create a sample DataFrame\ndf = pd.DataFrame({\n    'date': pd.date_range(start='2023-01-01', periods=6, freq='ME'),\n    'region': ['North', 'South', 'East', 'West', 'North', 'South'],\n    'revenue': np.random.randint(10000, 100000, 6),\n    'units_sold': np.random.randint(100, 1000, 6)\n})\n\n# Method 1: Create a SuperDataFrame explicitly with metadata\nimport superpandas as spd\n\nsdf = spd.create_super_dataframe(\n    df=df,\n    name=\"sales_data\",\n    description=\"Monthly sales data by region\",\n    column_descriptions={\n        \"revenue\": \"Monthly revenue in USD\",\n        \"region\": \"Sales region code\"\n    }\n)\n\n# Access metadata\nprint(sdf.super.name)  # \"sales_data\"\nprint(sdf.super.description) # 'Monthly sales data by region'\nprint(sdf.super.get_column_descriptions())\nprint(sdf.super.column_types)  # Shows refined type information\n```\n\n```python\n# Method 2: Explicitly add metadata\nimport superpandas # adds 'super' namespace to pandas without changing existing code\n\n# Using df from above\nprint(df.super.name) # yields empty string\ndf.super.name = \"sales data\"\ndf.super.description = \"Monthly sales data by region\"\ndf.super.set_column_descriptions({\n    \"revenue\": \"Monthly revenue in USD\",\n    \"region\": \"Sales region code\"\n})\nprint(df.super.name) # prints 'sales data'\nprint(df.super.description) # 'Monthly sales data by region'\nprint(df.super.column_descriptions)\nprint(df.super.column_types) # produces a dict of column names and data types ('object' data type is converted to more finegraned datatype)\n```\n\n### SQL Querying with DataFrames\n\nSuperPandas provides a powerful SQL accessor that allows you to query pandas DataFrames using familiar SQL syntax:\n\n```python\nimport pandas as pd\nimport superpandas  # This registers the SQL accessor\n\n# Basic SQL operations\ndf = pd.DataFrame({\n    \"name\": [\"Alice\", \"Bob\", \"Charlie\"],\n    \"age\": [25, 30, 35],\n    \"salary\": [50000, 60000, 70000]\n})\n\n# Simple filtering\nresult = df.sql.query(\"SELECT * FROM df WHERE age \u003e 28\")\n\n# Aggregations\nresult = df.sql.query(\"SELECT AVG(salary) as avg_salary, COUNT(*) as count FROM df\")\n\n# String operations\nresult = df.sql.query(\"SELECT UPPER(name) as upper_name, LENGTH(name) as name_length FROM df\")\n\n# Working with multiple DataFrames\ndf2 = pd.DataFrame({\n    \"name\": [\"Alice\", \"Bob\"],\n    \"department\": [\"Engineering\", \"Sales\"]\n})\n\nenv = {\"employees\": df, \"departments\": df2}\nresult = df.sql.query(\"\"\"\n    SELECT e.name, e.salary, d.department\n    FROM df e\n    JOIN departments d ON e.name = d.name\n    ORDER BY e.salary DESC\n\"\"\", env=env)\n```\n\n### Core Methods\n\n#### SQL Query Accessor\nSuperPandas includes a powerful SQL accessor that allows you to execute SQL queries on pandas DataFrames using SQLite as the backend engine. This feature brings the power of SQL to pandas DataFrames, enabling complex data operations with familiar SQL syntax.\n\n**Basic Usage:**\n```python\nimport pandas as pd\nimport superpandas  # This registers the SQL accessor\n\n# Create sample DataFrames\ndf1 = pd.DataFrame({\n    \"id\": [1, 2, 3],\n    \"name\": [\"Alice\", \"Bob\", \"Charlie\"],\n    \"age\": [25, 30, 35]\n})\n\ndf2 = pd.DataFrame({\n    \"id\": [1, 2, 4],\n    \"department\": [\"Engineering\", \"Sales\", \"Marketing\"],\n    \"salary\": [80000, 70000, 75000]\n})\n\n# Basic SQL query\nresult = df1.sql.query(\"SELECT * FROM df WHERE age \u003e 28\")\n\n# Query with additional tables\nenv = {\"employees\": df1, \"departments\": df2}\nresult = df1.sql.query(\"\"\"\n    SELECT e.name, e.age, d.department, d.salary\n    FROM df e\n    JOIN departments d ON e.id = d.id\n    WHERE e.age \u003e 25\n\"\"\", env=env)\n\n# Aggregation queries\nresult = df1.sql.query(\"SELECT AVG(age) as avg_age, COUNT(*) as count FROM df\")\n\n# Complex queries with multiple tables\nresult = df1.sql.query(\"\"\"\n    SELECT \n        d.department,\n        AVG(e.age) as avg_age,\n        SUM(d.salary) as total_salary\n    FROM df e\n    JOIN departments d ON e.id = d.id\n    GROUP BY d.department\n    HAVING AVG(e.age) \u003e 25\n\"\"\", env=env)\n```\n\n**Advanced SQL Features:**\n```python\n# String functions and pattern matching\nresult = df.sql.query(\"\"\"\n    SELECT \n        name,\n        UPPER(name) as upper_name,\n        LENGTH(name) as name_length\n    FROM df \n    WHERE name LIKE '%a%'\n\"\"\")\n\n# Date functions\nresult = df.sql.query(\"\"\"\n    SELECT \n        name,\n        created_date,\n        STRFTIME('%Y-%m', created_date) as year_month\n    FROM df \n    ORDER BY created_date\n\"\"\")\n\n# Conditional logic with CASE statements\nresult = df.sql.query(\"\"\"\n    SELECT \n        name,\n        score,\n        CASE \n            WHEN score \u003e= 90 THEN 'Excellent'\n            WHEN score \u003e= 80 THEN 'Good'\n            WHEN score \u003e= 70 THEN 'Average'\n            ELSE 'Needs Improvement'\n        END as grade\n    FROM df \n    ORDER BY score DESC\n\"\"\")\n\n# Custom database URI for persistent storage\nresult = df.sql.query(\n    \"SELECT * FROM df WHERE x \u003e 1\",\n    db_uri=\"sqlite:///my_database.db\"\n)\n```\n\n**Key Features:**\n- **In-memory SQLite**: Uses SQLite in-memory database for fast queries\n- **Multiple Tables**: Support for joining multiple DataFrames via the `env` parameter\n- **Full SQL Support**: Supports all standard SQL operations (SELECT, WHERE, JOIN, GROUP BY, HAVING, ORDER BY, etc.)\n- **Type Safety**: Comprehensive error handling and validation\n- **Custom Database**: Option to use custom database URIs for persistent storage\n- **String \u0026 Date Functions**: Full support for SQLite string and date manipulation functions\n- **Conditional Logic**: CASE statements and complex WHERE clauses\n- **Aggregations**: GROUP BY, HAVING, and all standard aggregation functions\n\n#### Metadata Management\n```python\n# Get/Set DataFrame name and description\ndf.super.name = \"my_dataframe\"\ndf.super.description = \"Description of my dataframe\"\n\n# Get/Set column descriptions\ndf.super.set_column_description(\"column_name\", \"Description of column\")\ndf.super.set_column_descriptions({\n    \"col1\": \"Description 1\",\n    \"col2\": \"Description 2\"\n}, errors='raise')  # errors can be 'raise', 'ignore', or 'warn'\n\n# Get column information\ndescription = df.super.get_column_description(\"column_name\")\nall_descriptions = df.super.column_descriptions\ncolumn_types = df.super.column_types\n\n# Refresh column type inference\ndf.super.refresh_column_types()\n```\n\n#### Schema Generation\n```python\n# Generate schema in different formats\nschema = df.super.get_schema(\n    format_type='text',  # Options: 'json', 'markdown', 'text', 'yaml'\n    max_rows=5  # Number of sample rows to include\n)\n\n# Custom schema template\ntemplate = \"\"\"\nDataFrame Name: {name}\nDataFrame Description: {description}\n\nShape: {shape}\n\nColumns:\n{column_info}\n\"\"\"\nschema = df.super.get_schema(template=template)\n```\n\n**Required template elements:**\n- `{name}`: DataFrame name\n- `{description}`: DataFrame description  \n- `{shape}`: DataFrame shape as string\n- `{column_info}`: Formatted column information\n\n**Optional template elements:**\n- `{columns}`: Raw column list (alternative to `{column_info}`)\n\n### LLM Integration and Usage\n\nSuperPandas supports multiple LLM providers through the `smolagents` package:\n\n```python\nfrom superpandas import available_providers\n\n# List available providers\nproviders = available_providers\nprint(providers.keys())\n```\n\nAvailable providers:\n- `lite`: LiteLLM (`LiteLLMModel`)\n- `openai`: OpenAI API (`OpenAIServerModel`)\n- `hf`: Hugging Face API (`HfApiModel`)\n- `tf`: Local Transformers (`TransformersModel`)\n- `vllm`: VLLM (`VLLMModel`)\n- `mlx`: MLX (`MLXModel`)\n- `openai_az`: Azure OpenAI (`AzureOpenAIServerModel`)\n- `bedrock`: Amazon Bedrock (`AmazonBedrockServerModel`)\n\n```python\nfrom superpandas import SuperPandasConfig\n\n# Initialize config\nconfig = SuperPandasConfig()\nconfig.provider = 'hf'  # Available providers: 'lite', 'openai', 'hf', 'tf', 'vllm', 'mlx', 'openai_az', 'bedrock'\nconfig.model = \"meta-llama/Llama-3.2-3B-Instruct\"\n\n# Configure at the DataFrame level\ndf.super.config = config\n\n# Auto-describe your DataFrame\ndf.super.auto_describe(\n    generate_name=True,\n    generate_description=True,\n    generate_column_descriptions=True,\n    existing_values='warn'  # Options: 'warn', 'skip', 'overwrite'\n)\n\n# Query the DataFrame\nresponse = df.super.query(\"What are the key trends in this data?\")\n```\n\n#### LangGraph Agent for Code Execution\n\nThe LangGraph agent provides intelligent code execution for data analysis:\n\n```python\n# Basic usage with the agent\nresult = df.super.analyze_with_agent(\n    query=\"Calculate the average salary by department\",\n    max_iterations=5\n)\n\nprint(result['formatted_response'])\nprint(result['result'])\n\n# Direct agent usage\nfrom superpandas.langgraph_agent import run_agent\n\nresult = run_agent(\n    query=\"Find employees with salary above the median\",\n    dataframe=df,\n    max_iterations=3\n)\n```\n\nThe agent workflow:\n1. **Code Generation**: Generates Python code based on your query\n2. **Code Execution**: Safely executes the code\n3. **Error Handling**: If errors occur, reflects and tries again\n4. **Response Formatting**: Provides clear explanations of results\n\n\n### Serialization\n\n#### CSV with Metadata\n```python\n# Save with metadata\ndf.super.to_csv(\"data.csv\", include_metadata=True, index=False)\n# This will save all the metadata into a file data_metadata.json alongwith the actual data in data.csv.\n\n# Load with metadata (it overloads pandas read_csv)\ndf = spd.read_csv(\"data.csv\", include_metadata=True)  # Raises FileNotFoundError if metadata not found\ndf = spd.read_csv(\"data.csv\", include_metadata=False)  # Initializes empty metadata if not found\n\n# Read metadata separately\ndf.super.read_metadata(\"data.csv\")\n```\n#### Pickle\n```python\n# Save to pickle with metadata\ndf.super.to_pickle(\"data.pkl\")\n\n# Read from pickle (it overloads pandas read_pickle)\ndf = spd.read_pickle(\"data.pkl\")\n```\n\n### Configuration\n\nThe `SuperPandasConfig` class manages global configuration settings. The configuration is automatically saved to `~/.cache/superpandas/config.json` and persists across sessions, allowing you to set global defaults like `provider` and `model` once for your entire installation.\n\n```python\nfrom superpandas import SuperPandasConfig\n\n# Create a new configuration\nconfig = SuperPandasConfig()\n\n# Available settings\nconfig.provider = 'hf'  # LLM provider ('lite', 'openai', 'hf', 'tf', 'vllm', 'mlx', 'openai_az', 'bedrock')\nconfig.model = \"meta-llama/Llama-3.2-3B-Instruct\"  # Model name\nconfig.llm_kwargs = {'existing_values': 'warn'}  # Additional LLM arguments\nconfig.system_template = \"...\"  # System prompt template\nconfig.user_template = \"...\"  # User prompt template\n\n# Set as default configuration for the library\nimport superpandas as spd\nspd.set_default_config(config)\n\n# Save/load configuration\nconfig.save()  # Saves to ~/.cache/superpandas/config.json\nconfig.load()  # Loads from default path\n```\n\n#### Configuration Hierarchy and Override Options\n\nThe configuration system supports multiple levels of customization:\n\n1. **Global Default Configuration** (persists across sessions):\n   ```python\n   # Set global defaults that apply to all DataFrames\n   config = SuperPandasConfig()\n   config.provider = 'openai'\n   config.model = 'gpt-4'\n   spd.set_default_config(config)  # Saves to ~/.cache/superpandas/config.json\n   ```\n\n2. **Per-DataFrame Configuration** (overrides global for specific DataFrame):\n   ```python\n   # Override config for a specific DataFrame\n   df.super.config = SuperPandasConfig()\n   df.super.config.provider = 'hf'\n   df.super.config.model = 'meta-llama/Llama-3.2-3B-Instruct'\n   ```\n\n3. **Configuration at Creation Time**:\n   ```python\n   # Set config when creating a SuperDataFrame\n   custom_config = SuperPandasConfig()\n   custom_config.provider = 'vllm'\n   custom_config.model = 'llama-3.2-3b'\n   \n   sdf = spd.create_super_dataframe(\n       df=df,\n       name=\"my_data\",\n       config=custom_config\n   )\n   ```\n\n4. **Temporary Configuration Override**:\n   ```python\n   # Temporarily change config for specific operations\n   original_config = df.super.config\n   df.super.config.provider = 'openai'\n   df.super.config.model = 'gpt-3.5-turbo'\n   \n   # Perform operations with temporary config\n   df.super.auto_describe()\n   \n   # Restore original config\n   df.super.config = original_config\n   ```\n\nThe default configuration is automatically loaded when the library is imported. You can:\n1. Create a new configuration and set it as default using `spd.set_default_config()`\n2. Modify the existing default configuration directly\n3. Save and load configurations to/from disk\n4. Set the config when creating a superdataframe using `create_super_dataframe()`\n\nThe default/loaded configuration persists across module reloads and is shared across all DataFrames unless explicitly overridden.\n\n### Error Handling\n\n- Column description methods (`set_column_description`, `set_column_descriptions`) support error handling options:\n  - `'raise'`: Raise ValueError for non-existent columns (default)\n  - `'ignore'`: Silently skip non-existent columns\n  - `'warn'`: Warn and skip non-existent columns\n\n- CSV reading with metadata:\n  - `include_metadata=True`: Raises FileNotFoundError if metadata file not found\n  - `include_metadata=False`: Initializes empty metadata if metadata file not found\n\n## Future Features / Roadmap\n\n*   **Core DataFrame Enhancements:**\n    *   Advanced data validation and schema enforcement.\n    *   Support for more complex data types (e.g., nested structures, geospatial data).\n    *   Enhanced time-series data handling.\n    *   Extending metadata merging to DataFrame methods like `concat`, `merge`, `join`, etc.\n    *   Extending metadata to methods like checking equality, copy, etc.\n*   **LLM Integration Improvements:**\n    *   More sophisticated automated analysis and insight generation using agents.\n    *   Add Code Execution.\n    *   Integration with a wider range of LLM providers and models.\n    *   Adding support for chat history in LLM interactions.\n*   **SQL Accessor Enhancements:**\n    *   Support for additional SQL dialects (PostgreSQL, MySQL, etc.).\n    *   Advanced query optimization and performance improvements.\n    *   Integration with external databases and data warehouses.\n    *   Query result caching and optimization.\n    *   Support for stored procedures and complex SQL functions.\n*   **Multi-DataFrame and Database Support:**\n    *   Extending SuperDataFrame to have multiple DataFrames with foreign key support.\n    *   Providing AI interface to RDBMS systems.\n    *   Support for complex relational data operations with metadata preservation.\n*   **Expanded Serialization Options:**\n    *   Support for additional storage formats (e.g., Parquet, Avro) with metadata.\n    *   Integration with data versioning systems (e.g., DVC).\n*   **Visualization and Reporting:**\n    *   Automatic generation of charts and reports based on LLM analysis.\n    *   Integration with popular visualization libraries.\n*   **Community and Ecosystem:**\n    *   Development of a plugin system for extending functionality.\n    *   Improved documentation and tutorials.\n    *   Building a strong community around the project.\n\n## Contributing\n\nContributions are welcome! Please feel free to submit a Pull Request.\n\n## License\n\nThis project is licensed under the MIT License - see the LICENSE file for details.\n\n### Third-Party Licenses\n\nThe SQL accessor functionality in SuperPandas is inspired by and builds upon concepts from the [pandasql](https://github.com/yhat/pandasql) project, which is also licensed under the MIT License. We acknowledge and thank the pandasql contributors for their work.\n\n## Documentation\n\nFor more detailed information on SuperPandas, please refer to the [API documentation (Work in Progress)](https://superpandas.readthedocs.io/en/latest/).\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsuperpandas-ai%2Fsuperpandas","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsuperpandas-ai%2Fsuperpandas","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsuperpandas-ai%2Fsuperpandas/lists"}