python - Python中列表列表中的列表中的值的平均值

标签 python list csv

我正在研究一种方法来平均多个文件中的数据并将结果放入单个文件中。文件的每一行如下所示:

文件#1

Test1,5,2,1,8
Test2,10,4,3,2
...

文件#2

Test1,2,4,5,1
Test2,4,6,10,3
...

这是我用来存储数据的代码:

totalData = []
for i in range(0, len(files)):
    data = []
    if ".csv" in files[i]:
        infile = open(files[i],"r")
        temp = infile.readline()

        while temp != "":               
            data.append([c.strip() for c in temp.split(",")])
            temp = infile.readline()            

        totalData.append(data)

所以我剩下的是看起来像下面这样的totalData:

totalData = [[
             [Test1,5,2,1,8],
             [Test2,10,4,3,2]],
             [[Test1,2,4,5,1],
             [Test2,4,6,10,3]]]

我想要平均的是对所有 Test1、Test2 等,平均所有第一个值,然后是第二个值,依此类推。所以 testAverage 看起来像:

testAverage = [[Test1,3.5,3,3,4.5],
               [Test2,7,5,6.5,2.5]]

我正在努力想出一种简洁/有效的方法来做到这一点。任何帮助是极大的赞赏!另外,如果有更好的方法来管理此类数据,请告诉我。

最佳答案

只需要两个循环

totalData = [ [['Test1',5,2,1,8],['Test2',10,4,3,2]],
                  [['Test1',2,4,5,1],['Test2',4,6,10,3]] ]
for t in range(len(totalData[0])): #tests
    result = [totalData[0][t][0],]
    for i in range(1,len(totalData[0][0])): #numbers
        sum = 0.0
        for j in range(len(totalData)):
            sum += totalData[j][t][i]
        sum /= len(totalData)
        result.append(sum)
    print result

关于python - Python中列表列表中的列表中的值的平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33905875/

相关文章:

java - 无法使用 Apache Commons CSV 读取 CSV 文件 - IllegalArgumentException

python - 如何将数据框导出到现有的格式化 csv 文件?

azure - ADF 复制数据事件在 CSV 中创建多行

list - 将列表转换为数据框的最有效方法是什么?

python - 为什么 except object 不能捕获 Python 中的所有内容?

python - 正则表达式: How to make my code match the '+' character OR digits

python - Matplotlib 中的单个点大小?

python - 在pyspark中连接单个RDD中的两个字符串以形成新的RDD

html - 有两个相邻的导航子菜单 block

linq - “等于”和“顺序等于”之间的区别?