gpt4 book ai didi

python - 获取多个 Pandas DataFrame 的平均值

转载 作者:IT老高 更新时间:2023-10-28 22:14:05 27 4
gpt4 key购买 nike

我正在生成许多具有相同形状的数据框,我想将它们相互比较。我希望能够获得跨数据帧的平均值和中位数。

         Source.0  Source.1  Source.2  Source.3
cluster
0 0.001182 0.184535 0.814230 0.000054
1 0.000001 0.160490 0.839508 0.000001
2 0.000001 0.173829 0.826114 0.000055
3 0.000432 0.180065 0.819502 0.000001
4 0.000152 0.157041 0.842694 0.000113
5 0.000183 0.174142 0.825674 0.000001
6 0.000001 0.151556 0.848405 0.000038
7 0.000771 0.177583 0.821645 0.000001
8 0.000001 0.202059 0.797939 0.000001
9 0.000025 0.189537 0.810410 0.000028
10 0.006142 0.003041 0.493912 0.496905
11 0.003739 0.002367 0.514216 0.479678
12 0.002334 0.001517 0.529041 0.467108
13 0.003458 0.000001 0.532265 0.464276
14 0.000405 0.005655 0.527576 0.466364
15 0.002557 0.003233 0.507954 0.486256
16 0.004161 0.000001 0.491271 0.504568
17 0.001364 0.001330 0.528311 0.468996
18 0.002886 0.000001 0.506392 0.490721
19 0.001823 0.002498 0.509620 0.486059

Source.0 Source.1 Source.2 Source.3
cluster
0 0.000001 0.197108 0.802495 0.000396
1 0.000001 0.157860 0.842076 0.000063
2 0.094956 0.203057 0.701662 0.000325
3 0.000001 0.181948 0.817841 0.000210
4 0.000003 0.169680 0.830316 0.000001
5 0.000362 0.177194 0.822443 0.000001
6 0.000001 0.146807 0.852924 0.000268
7 0.001087 0.178994 0.819564 0.000354
8 0.000001 0.202182 0.797333 0.000485
9 0.000348 0.181399 0.818252 0.000001
10 0.003050 0.000247 0.506777 0.489926
11 0.004420 0.000001 0.513927 0.481652
12 0.006488 0.001396 0.527197 0.464919
13 0.001510 0.000001 0.525987 0.472502
14 0.000001 0.000001 0.520737 0.479261
15 0.000001 0.001765 0.515658 0.482575
16 0.000001 0.000001 0.492550 0.507448
17 0.002855 0.000199 0.526535 0.470411
18 0.000001 0.001952 0.498303 0.499744
19 0.001232 0.000001 0.506612 0.492155

然后我想得到这两个数据帧的平均值。

最简单的方法是什么?

只是为了澄清我想在所有数据帧的索引和列完全相同时获得每个特定单元格的平均值。

所以在我给出的示例中,[0,Source.0] 的平均值为 (0.001182 + 0.000001)/2 = 0.0005915。

最佳答案

假设两个数据帧具有相同的列,您可以将它们连接起来并计算连接帧上的摘要统计信息:

import numpy as np
import pandas as pd

# some random data frames
df1 = pd.DataFrame(dict(x=np.random.randn(100), y=np.random.randint(0, 5, 100)))
df2 = pd.DataFrame(dict(x=np.random.randn(100), y=np.random.randint(0, 5, 100)))

# concatenate them
df_concat = pd.concat((df1, df2))

print df_concat.mean()
# x -0.163044
# y 2.120000
# dtype: float64

print df_concat.median()
# x -0.192037
# y 2.000000
# dtype: float64

更新

如果要计算两个数据集中具有相同索引的每组行的统计信息,可以使用 .groupby() 按行索引对数据进行分组,然后应用平均值,中位数等:

by_row_index = df_concat.groupby(df_concat.index)
df_means = by_row_index.mean()

print df_means.head()
# x y
# 0 -0.850794 1.5
# 1 0.159038 1.5
# 2 0.083278 1.0
# 3 -0.540336 0.5
# 4 0.390954 3.5

即使您的数据帧的行数不相等,此方法也可以工作 - 如果两个数据帧之一中缺少特定的行索引,则将在单个现有行上计算平均值/中位数。

关于python - 获取多个 Pandas DataFrame 的平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25057835/

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