计算每个文本文件第二列值的平均值

时间:2019-01-15 14:34:49

标签: python statistics

我有10个文本文件,每个文件都有多行和3列,以逗号(<!d::Send , % "^#{" . (( flag := !flag ) ? "right" : "left" ) . "}" )分隔。我的目标是通过仅使用第二列值来计算每行10个文本文件之间的平均值。

例如:

  • ','1.txt
  • [1,2,3; 4,5,6; 7,8,9; ...]2.txt
  • [10,11,12; 13,14,15; 16,17,18; ...]3.txt

我想要第二列值的平均值,这就是说: A =(2 + 11 + 20)/ 3 ...然后B =(5 + 14 + 23)/ 3 ...然后C =(8 + 17 + 26)/ 3

因此,我将得到[19,20,21; 22,23,24; 25,26,27; ...] => 3x1矩阵

目前,我只能读取所有文件,但无法在所需的数组中正确设置它们。

[A;B;C]

1 个答案:

答案 0 :(得分:0)

由于您尚未明确描述输入数据的格式(我认为),因此假设每个文件的格式如下:

例如2.txt

10,11,12
13,14,15
16,17,18

代码,用于计算每个输入文件中每一行第二列的均值。样本文件只有三个,所以这就是计算的平均值。

from ast import literal_eval
import glob
import os

COL = 1  # Column (second) with value to be averaged.
means = []  # One for column specified above in each file.

file_list = glob.iglob(os.path.join(os.getcwd(), "Chl_96", "*.txt"))

for file_path in file_list:
    with open(file_path) as f_input:
        col_total = 0
        for i, line in enumerate(f_input):
            row = [col for col in line.rstrip().split(',')]
            col_total += int(row[COL])
        means.append(col_total / (i+1))

# Print calculated mean of second column of rows in each file.
print(means)  # -> [5.0, 14.0, 23.0]