with one click
python
当需要用 Python/pandas 分析数据文件、做统计聚合或绘制图表时使用,提供标准代码模式与 run_python 使用规范。
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Menu
当需要用 Python/pandas 分析数据文件、做统计聚合或绘制图表时使用,提供标准代码模式与 run_python 使用规范。
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Based on SOC occupation classification
在 Forsion 的 Coding Space 里构建网页/前端应用时**必须先读**。讲清本环境的即时预览规则——importmap + esm.sh 拉任意 npm 包、可直接写 JSX/TSX(预览端自动转译)、无构建步骤、无 npm install、多文件结构、index.html 入口。写任何 web 代码前遵循本约定。
当在 Forsion Coding Space 里编写 React/前端组件、hooks、状态管理,或排查重渲染、数据获取、内存泄漏、陈旧闭包类 bug 时使用。提供 hooks 依赖数组、useEffect 竞态与清理、组件组合、状态选型(useState/Context/zustand)、数据获取三态(loading/error/取消)、列表 key、受控/非受控、memo/useMemo/useCallback 的可复制正反例(均适配 importmap+esm.sh 无构建环境)。
当需要提交代码、创建分支、rebase/merge、处理冲突或回滚改动时使用,提供规范的 Git 操作流程与安全红线。
当用户想新建 / 配置 / 修改 / 删除 Tangu 本地 Agent(Normal Agent),或想把一种好用的角色 / 工作方式沉淀成可复用的 agent 时使用。讲解 manage_agent 工具与 agent 的文件夹结构(config.toml / SOUL.md / MEMORY.md / LOG / Library)。
| name | Python 数据分析 |
| description | 当需要用 Python/pandas 分析数据文件、做统计聚合或绘制图表时使用,提供标准代码模式与 run_python 使用规范。 |
| version | 1.0.0 |
| category | 数据分析 |
print 出来,图表保存为文件并打印保存路径,不要依赖交互式显示。import pandas as pd
df = pd.read_csv(path) # 编码报错时依次试 encoding='utf-8-sig' / 'gbk'
print(df.shape)
print(df.dtypes)
print(df.head(10))
print(df.isna().sum())
print(df.describe(include='all').T)
确认列名、类型、缺失情况后,再写正式分析。
# 列名规整
df.columns = df.columns.str.strip()
# 类型转换:失败置 NaN 而不是抛错,便于统计坏行
df['amount'] = pd.to_numeric(df['amount'], errors='coerce')
df['date'] = pd.to_datetime(df['date'], errors='coerce')
bad = df['amount'].isna().sum()
print(f'无法解析的 amount 行数: {bad}') # 坏数据要报告,不能静默丢弃
# 去重与缺失处理(策略要在结论里说明)
df = df.drop_duplicates()
df = df.dropna(subset=['date']) # 关键列缺失才删行
原则:每一步清洗丢弃了多少数据必须 print 报告;不擅自用均值填充等改变分布的操作,除非用户同意。
# 分组聚合
g = (df.groupby('category')
.agg(总额=('amount','sum'), 单数=('amount','count'), 均值=('amount','mean'))
.sort_values('总额', ascending=False))
print(g.round(2))
# 时间序列:按月汇总
m = df.set_index('date').resample('MS')['amount'].sum()
print(m)
# 同比/环比
print(m.pct_change().round(4))
# 透视表
p = pd.pivot_table(df, index='region', columns='category',
values='amount', aggfunc='sum', fill_value=0)
中文标签直接绘图会变方框,先探测可用字体:
import matplotlib
import matplotlib.pyplot as plt
from matplotlib import font_manager
# 按优先级找系统里存在的中文字体
for f in ['Noto Sans CJK SC','WenQuanYi Micro Hei','SimHei','PingFang SC','Microsoft YaHei']:
if any(f in x.name for x in font_manager.fontManager.ttflist):
matplotlib.rcParams['font.sans-serif'] = [f]
break
matplotlib.rcParams['axes.unicode_minus'] = False # 负号正常显示
若全都不存在,回退方案:图表用英文标签,结论文字里用中文解释。
绘图输出规范:
fig, ax = plt.subplots(figsize=(10, 6), dpi=120)
g['总额'].plot(kind='bar', ax=ax)
ax.set_title('各品类销售总额')
ax.set_xlabel('品类'); ax.set_ylabel('金额(元)')
plt.tight_layout()
out = '/tmp/category_sales.png'
plt.savefig(out); plt.close()
print(f'图表已保存: {out}')
每张图必有:标题、轴标签(含单位)、tight_layout、保存后 close 防内存累积。
文件超过几百 MB 或读入即内存报错时:
agg = {}
for chunk in pd.read_csv(path, chunksize=200_000, usecols=['category','amount']):
s = chunk.groupby('category')['amount'].sum()
for k, v in s.items():
agg[k] = agg.get(k, 0) + v
result = pd.Series(agg).sort_values(ascending=False)
配套手段:usecols 只读需要的列、dtype 显式指定省内存、先用 run_bash 跑 wc -l file.csv && head -3 file.csv 了解规模和表头再决定策略。