You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Pandas DataFrame中计算标准差?分析挪威新车销量车型波动

解决方法:找出挪威新车销量中波动最大的车型

我来帮你一步步实现这个需求,同时详细说明Pandas里计算标准差的具体方法,让整个流程更清晰准确。

步骤1:数据读取与预处理

你的初始数据读取逻辑是对的,但需要补充数值类型转换(否则销量字段会是字符串格式,无法进行统计计算),具体代码如下:

import pandas as pd
import numpy as np

# 读取数据集:原始文件第一行是表头,所以用header=None读取后需要手动丢弃
data = pd.read_csv("norway_new_car_sales_by_model.csv", header=None, encoding="latin-1")
# 为数据设置清晰的列名
data.columns = ['Year','Month','Make','Model','Quantity','Pct']
# 移除原始的表头行(也就是当前数据的第一行)
data.drop(data.head(1).index, inplace=True)

# 关键操作:将销量字段转换为数值类型,确保后续计算有效
data['Quantity'] = pd.to_numeric(data['Quantity'])

步骤2:计算各车型的年度总销量

我们需要按「品牌+车型+年份」分组,统计每个车型每年的总销量:

# 分组计算单车型年度总销量,并重置索引为常规格式
annual_sales = data.groupby(['Make', 'Model', 'Year'])['Quantity'].sum().reset_index()

步骤3:计算每个车型年度销量的标准差

在Pandas中,std()方法可以直接对分组后的数值序列计算标准差。这里我们按「品牌+车型」分组,计算每组年度销量的波动程度:

# 按车型分组,计算年度销量的标准差
model_std = annual_sales.groupby(['Make', 'Model'])['Quantity'].std().reset_index()
# 重命名列名,让结果更易读
model_std.rename(columns={'Quantity': 'Annual_Sales_Std'}, inplace=True)

小提示:std()默认计算的是样本标准差(除以n-1),如果需要计算总体标准差,可以添加参数ddof=0,即std(ddof=0)。

步骤4:找出波动最大的车型

最后对标准差列降序排序,取第一行就是我们要找的销量波动最大的车型:

# 按标准差从大到小排序,提取波动最大的车型
most_volatile_model = model_std.sort_values(by='Annual_Sales_Std', ascending=False).head(1)

print("历年销量波动最大的车型:")
print(most_volatile_model)

补充:Pandas计算标准差的常用场景

  • 对单个列/整个DataFrame计算标准差:df['column_name'].std() 或 df.std()
  • 分组后计算每组标准差:如上述案例的groupby().std(),可以灵活组合多个分组键
  • 切换标准差类型:通过ddof参数控制,ddof=1为样本标准差(默认),ddof=0为总体标准差

内容的提问来源于stack exchange,提问作者yssefunc

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 10:22:55