{
  "schemaVersion": "1.0",
  "item": {
    "slug": "pandas",
    "name": "Pandas",
    "source": "tencent",
    "type": "skill",
    "category": "数据分析",
    "sourceUrl": "https://clawhub.ai/ivangdavila/pandas",
    "canonicalUrl": "https://clawhub.ai/ivangdavila/pandas",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/pandas",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=pandas",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.md",
      "memory-template.md",
      "setup.md"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-23T16:43:11.935Z",
      "expiresAt": "2026-04-30T16:43:11.935Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=4claw-imageboard",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=4claw-imageboard",
        "contentDisposition": "attachment; filename=\"4claw-imageboard-1.0.1.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/pandas"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/pandas",
    "agentPageUrl": "https://openagent3.xyz/skills/pandas/agent",
    "manifestUrl": "https://openagent3.xyz/skills/pandas/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/pandas/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "Setup",
        "body": "On first use, create ~/pandas/ and read setup.md for initialization. User preferences are stored in ~/pandas/memory.md — users can view or edit this file anytime."
      },
      {
        "title": "When to Use",
        "body": "User needs to work with tabular data in Python. Agent handles DataFrame operations, data cleaning, aggregations, merges, pivots, and exports."
      },
      {
        "title": "Architecture",
        "body": "Memory lives in ~/pandas/. See memory-template.md for structure.\n\n~/pandas/\n├── memory.md     # User preferences and common patterns\n└── snippets/     # Saved code patterns (optional)"
      },
      {
        "title": "Quick Reference",
        "body": "TopicFileSetup processsetup.mdMemory templatememory-template.md"
      },
      {
        "title": "1. Use Vectorized Operations",
        "body": "NEVER iterate with for loops over DataFrame rows\nUse .apply() only when vectorized alternatives don't exist\nPrefer df['col'].str.method() over apply(lambda x: x.method())"
      },
      {
        "title": "2. Chain Methods for Readability",
        "body": "# Good: method chaining\nresult = (df\n    .query('age > 30')\n    .groupby('city')\n    .agg({'salary': 'mean'})\n    .reset_index())\n\n# Bad: intermediate variables everywhere\nfiltered = df[df['age'] > 30]\ngrouped = filtered.groupby('city')\nresult = grouped.agg({'salary': 'mean'}).reset_index()"
      },
      {
        "title": "3. Handle Missing Data Explicitly",
        "body": "Always check df.isna().sum() before analysis\nChoose strategy: dropna(), fillna(), or interpolation\nDocument WHY missing values exist before removing them"
      },
      {
        "title": "4. Use Categorical for Repeated Strings",
        "body": "# Memory savings for columns with few unique values\ndf['status'] = df['status'].astype('category')\ndf['country'] = df['country'].astype('category')"
      },
      {
        "title": "5. Merge with Validation",
        "body": "# Always specify how and validate\nresult = pd.merge(\n    df1, df2,\n    on='id',\n    how='left',\n    validate='m:1'  # Many-to-one: catch unexpected duplicates\n)"
      },
      {
        "title": "6. Prefer query() for Complex Filters",
        "body": "# Readable\ndf.query('age > 30 and city == \"NYC\" and salary < 100000')\n\n# Hard to read\ndf[(df['age'] > 30) & (df['city'] == 'NYC') & (df['salary'] < 100000)]"
      },
      {
        "title": "7. Set Index When Appropriate",
        "body": "# Faster lookups, cleaner merges\ndf = df.set_index('user_id')\nuser_data = df.loc[12345]  # O(1) lookup"
      },
      {
        "title": "Common Traps",
        "body": "SettingWithCopyWarning → Use .loc[] for assignment: df.loc[mask, 'col'] = value\nSlow loops → Replace iterrows() with vectorized ops or apply()\nMemory explosion → Use dtype in read_csv(): pd.read_csv(f, dtype={'id': 'int32'})\nSilent data loss → Check shape before/after merge: print(f\"Before: {len(df1)}, After: {len(result)}\")\nIndex confusion → Use reset_index() after groupby() to get clean DataFrame\nChained indexing → df['a']['b'] fails silently; use df.loc[:, ['a', 'b']]"
      },
      {
        "title": "Security & Privacy",
        "body": "Data storage:\n\nUser preferences stored in ~/pandas/memory.md\nAll DataFrame operations run locally\nNo data is sent externally\n\nThis skill does NOT:\n\nUpload data to any service\nAccess files outside ~/pandas/ and the working directory\nModify source data files without explicit instruction\n\nUser control:\n\nView stored preferences: cat ~/pandas/memory.md\nClear all data: rm -rf ~/pandas/"
      },
      {
        "title": "Related Skills",
        "body": "Install with clawhub install <slug> if user confirms:\n\ndata-analysis — general data analysis patterns\ncsv — CSV file handling\nsql — database queries\nexcel-xlsx — Excel file operations"
      },
      {
        "title": "Feedback",
        "body": "If useful: clawhub star pandas\nStay updated: clawhub sync"
      }
    ],
    "body": "Setup\n\nOn first use, create ~/pandas/ and read setup.md for initialization. User preferences are stored in ~/pandas/memory.md — users can view or edit this file anytime.\n\nWhen to Use\n\nUser needs to work with tabular data in Python. Agent handles DataFrame operations, data cleaning, aggregations, merges, pivots, and exports.\n\nArchitecture\n\nMemory lives in ~/pandas/. See memory-template.md for structure.\n\n~/pandas/\n├── memory.md     # User preferences and common patterns\n└── snippets/     # Saved code patterns (optional)\n\nQuick Reference\nTopic\tFile\nSetup process\tsetup.md\nMemory template\tmemory-template.md\nCore Rules\n1. Use Vectorized Operations\nNEVER iterate with for loops over DataFrame rows\nUse .apply() only when vectorized alternatives don't exist\nPrefer df['col'].str.method() over apply(lambda x: x.method())\n2. Chain Methods for Readability\n# Good: method chaining\nresult = (df\n    .query('age > 30')\n    .groupby('city')\n    .agg({'salary': 'mean'})\n    .reset_index())\n\n# Bad: intermediate variables everywhere\nfiltered = df[df['age'] > 30]\ngrouped = filtered.groupby('city')\nresult = grouped.agg({'salary': 'mean'}).reset_index()\n\n3. Handle Missing Data Explicitly\nAlways check df.isna().sum() before analysis\nChoose strategy: dropna(), fillna(), or interpolation\nDocument WHY missing values exist before removing them\n4. Use Categorical for Repeated Strings\n# Memory savings for columns with few unique values\ndf['status'] = df['status'].astype('category')\ndf['country'] = df['country'].astype('category')\n\n5. Merge with Validation\n# Always specify how and validate\nresult = pd.merge(\n    df1, df2,\n    on='id',\n    how='left',\n    validate='m:1'  # Many-to-one: catch unexpected duplicates\n)\n\n6. Prefer query() for Complex Filters\n# Readable\ndf.query('age > 30 and city == \"NYC\" and salary < 100000')\n\n# Hard to read\ndf[(df['age'] > 30) & (df['city'] == 'NYC') & (df['salary'] < 100000)]\n\n7. Set Index When Appropriate\n# Faster lookups, cleaner merges\ndf = df.set_index('user_id')\nuser_data = df.loc[12345]  # O(1) lookup\n\nCommon Traps\nSettingWithCopyWarning → Use .loc[] for assignment: df.loc[mask, 'col'] = value\nSlow loops → Replace iterrows() with vectorized ops or apply()\nMemory explosion → Use dtype in read_csv(): pd.read_csv(f, dtype={'id': 'int32'})\nSilent data loss → Check shape before/after merge: print(f\"Before: {len(df1)}, After: {len(result)}\")\nIndex confusion → Use reset_index() after groupby() to get clean DataFrame\nChained indexing → df['a']['b'] fails silently; use df.loc[:, ['a', 'b']]\nSecurity & Privacy\n\nData storage:\n\nUser preferences stored in ~/pandas/memory.md\nAll DataFrame operations run locally\nNo data is sent externally\n\nThis skill does NOT:\n\nUpload data to any service\nAccess files outside ~/pandas/ and the working directory\nModify source data files without explicit instruction\n\nUser control:\n\nView stored preferences: cat ~/pandas/memory.md\nClear all data: rm -rf ~/pandas/\nRelated Skills\n\nInstall with clawhub install <slug> if user confirms:\n\ndata-analysis — general data analysis patterns\ncsv — CSV file handling\nsql — database queries\nexcel-xlsx — Excel file operations\nFeedback\nIf useful: clawhub star pandas\nStay updated: clawhub sync"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/ivangdavila/pandas",
    "publisherUrl": "https://clawhub.ai/ivangdavila/pandas",
    "owner": "ivangdavila",
    "version": "1.0.1",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/pandas",
    "downloadUrl": "https://openagent3.xyz/downloads/pandas",
    "agentUrl": "https://openagent3.xyz/skills/pandas/agent",
    "manifestUrl": "https://openagent3.xyz/skills/pandas/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/pandas/agent.md"
  }
}