【问题标题】:How to calculate average within column in csv file?如何计算csv文件中列内的平均值?
【发布时间】:2021-06-04 15:37:10
【问题描述】:

我正在尝试查找 csv 文件中某一列中数字的平均值。我不知道如何找到列的长度。它一直给我错误提示

line 20, in average_magnitude
    size = len(row[2])
TypeError: 'int' object is not subscriptable

我试图让行变成浮点数

但这对我也不起作用。

def average_magnitude(file_name):

    magnitude = 0
    row = 0

    size = len(row[2])
    for each_line in file:
        each_line = each_line.strip()
        row = each_line.split(",")
        for each_num in file:
            s += each_num
        
        magnitude = s/size

【问题讨论】:

  • 有一个处理CSV文件的模块;想猜猜它的名字吗?
  • 如果您使用 numpypandas 在 csv 中读取,这应该是微不足道的,因为这两个模块都有内置方法来计算给定列的平均值
  • row 为 0 表示它是整数。 size = int(row[2]) 将按预期生成错误。你在期待什么?

标签: python-3.x csv average


【解决方案1】:

一列是垂直的(从上到下);获得此平均值的一种方法是遍历所有行,获取该行中的特定值并添加到总和,然后除以数组的长度。数组的长度等于任何单个列的长度。

下面是一些计算列平均值的伪代码:

sum = 0
for line in csv_file:
  sum+=line[1]
return sum/len(csv_file)
  

如果你想获取某一行(从左到右),那么你可以对任何类似数组的对象使用 numpy 的内置 mean() 函数

这里是一些计算一行平均值的伪代码:

import numpy as np

for line in csv_file:
  mean = np.mean(line) 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-26
    • 2014-05-30
    • 1970-01-01
    • 2015-01-08
    • 1970-01-01
    • 2017-06-11
    相关资源
    最近更新 更多