在免费 AI DevSpace 中复现 Pandas 数值统计:16 组操作与结果核验
这次实践的目标很具体:在不新购云服务器的条件下,运行华为云 KooLabs“Python 数据分析—pandas 数值统计”手册中的统计操作,并用断言核对关键结果。最后采用 AI 开发者空间的免费体验容器运行代码,而不是另外创建 ECS。
这里需要先区分两个结果:统计代码已经实际运行通过;原手册中的 ECS 创建与登录环节并未执行,也没有把这次代码运行当作官方云实验成绩或证书。
先核对体验环境
从 AI Agent 开发实践中心进入 AI DevSpace 后,版本选择页有“体验版 免费试用”和“持久化版 核时计费”。本次选择体验版,页面明确写着“不消耗任何额度”,同时提示容器在三小时后释放,数据不保留。
环境最初停留在“准备中”,倒计时已经出现。这时不能仅凭倒计时就断言工作台可用。等到首页、资源管理器和 AI Shell 都实际出现后,才进入 AI Shell 的“命令行”页进行验证。
本次在免费容器真实观察到的版本为:
Python 3.11.16
pandas 3.1.0
numpy 2.4.6
第一次运行 import pandas 时出现了 ModuleNotFoundError。随后在这个临时容器中执行:
python3 -m pip install --user pandas
终端返回依赖安装成功。没有修改本机的 Python 环境,也没有创建额外收费实例。复现时不应把这里记录的版本理解成唯一可用版本,应记录自己环境的实际版本。
把“打印结果”改成“结果可核对”
只把示例复制进终端,很容易出现“命令执行了,结果却没有检查”的情况。因此我将数值统计部分整理成一个脚本,覆盖描述性统计、单列统计、分组、相关性、唯一值、自定义聚合、滚动窗口、扩展窗口、指数加权、分位数、众数、累计统计、按行统计、缺失值、条件筛选及交叉表与透视表,共十六组操作。
例如,对一组完全合成的教学薪资数据先检查均值和求和:
import pandas as pd
salary = pd.Series(range(50000, 100000, 5000))
print(salary.agg(["mean", "median", "min", "max", "sum"]))
assert salary.mean() == 72500
assert salary.sum() == 725000
这些数字可以直接手工核算:十个数从五万到九万五,等差数列的均值为七万二千五百。断言能及时发现输入范围、端点或列名抄错等问题。
三个容易忽略的细节
1. 混有文本列时,明确选择统计列
分组示例同时包含部门名称、薪资和奖金。统计均值时明确选择两列数值,避免依赖不同版本对非数值列的默认处理:
pay.groupby("Department")[["Salary", "Bonus"]].mean()
pay.corr(numeric_only=True)
pay.cov(numeric_only=True)
这不是把所有数据强行转为数字,而是清楚表达哪些列应该参加计算。
2. 窗口起点的缺失值有意义
对序列 [3, 5, 2, 6, 9, 8, 5, 7, 4, 6] 计算三项滚动统计,前两项尚不满足窗口长度,因此默认结果为空。第三项滚动和应该是十:
ts = pd.Series([3, 5, 2, 6, 9, 8, 5, 7, 4, 6])
assert ts.rolling(3).sum().isna().sum() == 2
assert ts.rolling(3).sum().iloc[2] == 10
如果业务确实希望从第一项就返回结果,应主动说明并设置 min_periods,而不是把起点空值一律当成计算错误。
3. 众数可能不止一个,计数也要区分空值
颜色示例中 Red 与 Blue 各出现三次,所以众数是一组结果:
colors = pd.Series(["Red", "Blue", "Green", "Blue", "Red", "Red", "Green", "Blue"])
assert set(colors.mode()) == {"Blue", "Red"}
缺失值示例中,三列的非空个数分别为四、四、三。count() 是非空值计数,不应直接拿来代表数据总行数。填零后的求和与“原数据没有缺失”也不是同一种含义,应把处理方式一起保存。
实际运行与保存证据
完整脚本在免费容器中的 /root/workspace/pandas_practice.py 执行。终端最后显示:
PRACTICE_OK: all 16 numerical-statistics sections executed; assertions passed
实际输出还核对了条件统计:薪资大于七万的记录为五条,大于八万部分的均值为八万九千,IT 部门最大值为八万二千。交叉表的计数合计为八条,和输入记录数一致。
运行中也遇到了一次终端兼容问题:AI Shell 的命令行没有接受直接粘贴的多语句 heredoc。第一次没有成功运行;改为单条 Python 命令传入同一个脚本后才得到通过结果。这说明“粘贴进输入框”“命令已提交”“脚本执行通过”仍需要分别核对。
由于体验容器会自动释放,脚本已同步保存在本机,终端结果另外保存截图。实际项目中还应将输出文件、环境版本与脚本一起留存,避免只留下一个没有上下文的“通过”字样。
本次实践的边界
- 所用数据均为合成教学数据,不包含真实员工或个人信息。
- 运行环境是免费 AI DevSpace 体验容器,没有新购 ECS、数据库或公网资源。
- 完成的是手册中十六组数值统计操作与关键结果验证,不包含原实验的 ECS 创建、登录或配置步骤。
- 代码运行结果不替代平台的实验检测、课程成绩、认证考试或成长积分确认。
- 点赞
- 收藏
- 关注作者
评论(0)