如何在没有 numpy 或 pandas 的情况下从文本文件计算平均值

Posted

技术标签:

【中文标题】如何在没有 numpy 或 pandas 的情况下从文本文件计算平均值【英文标题】:How to calculate average from text file without numpy or pandas 【发布时间】:2021-03-16 11:16:42 【问题描述】:

这是我用 numpy 和 pandas 计算平均值的代码

def calc_average_books_stock():
    
  text_file = open('book_data_file.txt')
    
  values = []
    
  for index,data in df.iterrows():
        
    if int(data['STOCK']) > 0:
            
      values.append(data['COST?'])
    
      avg = np.mean(values)
    
      print(f"Average Book in Stock: round(avg, 2)")

我想知道是否有办法在没有 numpy 和 pandas 的情况下做到这一点,并且能够使用 python 的标准库来做到这一点

【问题讨论】:

docs.python.org/3/library/statistics.html 试试统计数据? 【参考方案1】:

用 python 的标准库来做 您可以使用来自statistics 内置模块的.mean 来计算平均值,例如:

import statistics
values = [10, 30, 20]
avg = statistics.mean(values)
print(avg)

输出:

20

【讨论】:

【参考方案2】:

我不确定 df 的来源,但如果您的文件是某种 CSV 格式,您可以将 pandas 替换为 csv。

不需要任何 numpy 或统计库 - 平均值只是 sum() 除以计数。

而且我认为当你计算平均值时你的缩进是关闭的。

import csv

def calc_average_books_stock():
    
  text_file = open('book_data_file.txt', 'r')

  reader = csv.DictReader(text_file)
    
  values = []
    
  for data in reader:
        
    if int(data['STOCK']) > 0:
            
      values.append(data['COST?'])
    
  avg = sum(values) / len(values)
    
  print(f"Average Book in Stock: round(avg, 2)")

【讨论】:

以上是关于如何在没有 numpy 或 pandas 的情况下从文本文件计算平均值的主要内容,如果未能解决你的问题,请参考以下文章

如何在不使用 Pandas 的情况下创建等效于 numpy.nan 的日期时间对象?

如何在没有操作的情况下对 Pandas 数据框进行分组或聚合

如何在没有 Pandas STD 或 Mean 函数的情况下计算滚动 STD?

如何在没有任何统计数据(如 Pandas 中的平均值或计数)的情况下进行简单分组?

如何在不使用 numpy 或 zip 的情况下找到两个列表之间的欧几里得距离?

如何确定 Pandas/NumPy 中的列/变量是不是为数字?