gpt4 book ai didi

python - 计算 pandas 数据框中选定列的选定行的平均值,但最终得到一些奇怪的数字

转载 作者:行者123 更新时间:2023-12-02 16:23:54 26 4
gpt4 key购买 nike

我试图在 python 中找到数据框特定列的平均值,但最后我得到了一些非常奇怪的数字。谁可以给我解释一下这个?我想要 a、b、c 列的平均值

k = pd.DataFrame(np.array([[1, 0, 3,'kk'], [4, 5, 6,'kk'], [7, 20, 9,'k'],[3, 2, 9,'k']]),
columns=['a', 'b', 'c','type'])
k

返回

    a   b   c   type
0 1 0 3 kk
1 4 5 6 kk
2 7 20 9 k
3 3 2 9 k

我想要除“类型”列之外的每一列的平均值

 k[['a','b','c']].mean()

这给了我

a     368.25
b 1300.50
c 924.75
dtype: float64

我很困惑!谁能给我解释一下?

最佳答案

这是创建具有混合数据类型的 numpy 数组的问题。每个子列表现在都有 Object 的数据类型,并且正在将其转换为数据框。

因此,现在 DataFrame 也将保存与数组中相同的数据类型。

请看下面的片段:

k = pd.DataFrame(np.array([[1, 0, 3,'kk'], [4, 5, 6,'kk'], [7, 20, 9,'k'],[3, 2, 9,'k']]),
columns=['a', 'b', 'c','type'])

print(k.dtypes)

a object
b object
c object
type object
dtype: object

但是您可以想一想,如何计算字符串对象的平均值。这又是 numpy 的力量。

例如,取a列:

当你应用 mean 时,它正在尝试下面的操作,

np.sum(数组)/len(数组)

print(np.sum(k["a"]))

'1473'

print(np.len(k["a"]))

4

print(np.mean(k["a"]))

368.25

现在,368.25 只不过是 1473/4

对于 b 列,它将是 05202/4 = 1300.5。

因此,当您创建 Dataframe 时,使用列表列表或字典形式创建,这将根据元素分配数据类型。

k = pd.DataFrame(([[1, 0, 3,'kk'], [4, 5, 6,'kk'], [7, 20, 9,'k'],[3, 2, 9,'k']]),
columns=['a', 'b', 'c','type'])

print(k.dtypes)

a int64
b int64
c int64
type object
dtype: object


print(k.mean())

a 3.75
b 6.75
c 6.75
dtype: float64

关于python - 计算 pandas 数据框中选定列的选定行的平均值,但最终得到一些奇怪的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64940903/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com