بنقرة واحدة
python
当需要用 Python/pandas 分析数据文件、做统计聚合或绘制图表时使用,提供标准代码模式与 run_python 使用规范。
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
当需要用 Python/pandas 分析数据文件、做统计聚合或绘制图表时使用,提供标准代码模式与 run_python 使用规范。
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
在 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)。
استنادا إلى تصنيف SOC المهني
| 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 了解规模和表头再决定策略。