云上 pandas 入门:用可核对的小数据验证统计结果
这次云上 Python 练习用了几组小数据,分别检查 pandas 的描述统计、缺失值处理和窗口计算。数据量不大,结果可以手算,便于发现输入或计算上的问题。
一、安装后先跑一个小例子
安装日志返回成功,只能说明依赖已装好。还需要导入 pandas、检查版本并运行最小样例。本次练习使用 pandas 2.3.3:
import pandas as pd
s = pd.Series([1, 2, 3, 4, 5])
print(s.mean(), s.sum(), s.std())
print(s.describe())
实际输出分别为 3.0、15、1.5811388300841898。这里 std() 默认计算样本标准差,分母是 N-1,别把它和总体标准差混为一谈。describe() 可以把计数、均值、标准差、最小值、四分位数及最大值放在一起,适合做第一轮数据检查。
二、补零不等于原来的值就是零
先用 count() 看非空样本量,再决定怎样处理缺失值。下面三列数据的非空计数为 4、4、3:
import numpy as np
d = pd.DataFrame({
'A': [1, 2, np.nan, 4, 5],
'B': [np.nan, 2, 3, 4, 5],
'C': [1, 2, 3, np.nan, np.nan]
})
print(d.count())
print(d.fillna(0).sum())
补零后求和得到 A=12、B=14、C=6。这个结果在练习中已核对。但把缺失值补成零,不等于证明原始值就是零。求均值、比较部门或做时间序列时,应先决定缺失值的业务含义,再选择删除、补值或保留。否则程序运行正常,也可能回答了错误的问题。
三、窗口统计别忽略前几行
对同一份序列,滚动窗口和扩展窗口回答的问题不同:
x = pd.Series([3, 5, 2, 6, 9, 8, 5, 7, 4, 6])
print(x.rolling(3).mean())
print(x.expanding().mean())
print(x.cumsum())
print(x.cummax())
三项滚动均值在默认设置下,前两行因窗口未满而是 NaN;第三行为 (3+5+2)/3,约 3.333333。expanding().mean() 则使用截至当前的全部数据。累计求和的最后一项为 55,累计最大值的最后一项为 9。这些能手算的检查点,可以帮助发现输入漏项、粘贴错误或统计对象选错。
四、网络问题与计算问题分开排查
如果华为云 ECS 无法访问外部 PyPI,先查官方内网镜像源说明,而不是反复等待同一个超时。本次在华北-北京四实验环境使用官方内网源完成依赖安装。命令形式如下:
python3 -m pip install pandas \
-i http://mirrors.myhuaweicloud.com/pypi/web/simple \
--trusted-host mirrors.myhuaweicloud.com
这个地址是华为云内网源,不是任意电脑都能访问的通用替代源。官方文档列出适用地域,并要求配置华为云内网 DNS。遇到安装失败时,应先确认地域、DNS 与网络条件,再排查包本身;不要把网络超时误判为 pandas 代码错误。
总结
这几组数据适合拿来做基础检查:先确认依赖和输入,再看缺失值与统计口径,最后用手算结果核对输出。安装时的网络问题和计算问题要分开处理。
本文基于实际练习结果整理,使用 AI 辅助编辑。
参考文档
pandas Series.std 文档:https://pandas.pydata.org/docs/reference/api/pandas.Series.std.html
pandas rolling 文档:https://pandas.pydata.org/docs/reference/api/pandas.Series.rolling.html
- 点赞
- 收藏
- 关注作者
评论(0)