【问题标题】:Getting averages into a list from a csv file从 csv 文件中获取平均值到列表中
【发布时间】:2017-11-29 17:50:52
【问题描述】:
import matplotlib
import csv

下面的 csv 文件有很多年和大量的 DBH

f = open("Species.csv")

reader = csv.reader(f)

------初始化-----

y1974 = []

y1983 = []

y1987 = []

y1989 = []

y1994 = []

y1999 = []

y2004 = []

y2009 = []

y2014 = []


dbhByYear = [y1974, y1983, y1987, y1989, y1994, y1999, y2004, y2009, y2014]



def average(alist):
    sum = 0
    for item in alist:
        sum += float(item)
    avg = sum / len(alist)
    return avg

这允许用户输入特定种类的树来查看

species = input("Enter abbreviation for species you would like to analyze: ")

这会删除文件中的“999”

for row in reader:
    if row[4] == species:
        if row[6]!='999':
            y1974.append(row[6])
        if row[7] != '999':
            y1983.append(row[7])
        if row[9] != '999':
            y1987.append(row[9])
        if row[11] != '999':
           y1989.append(row[11])
        if row[13] != '999':
           y1994.append(row[13])
        if row[15] != '999':
           y1999.append(row[15])
        if row[18]!= '999':
           y2004.append(row[18])
        if row[20] != '999':
           y2009.append(row[20])
        if row[23] != '999':
           y2014.append(row[23])

这些打印每年的平均 DBH

 print(average(y1989))
 print(average(y1994))

这是我用来获取字典的函数

 averages = {}
 averages["y1989"]=average

我的问题是如何创建以年份为键、平均 DBH 为值的字典。

如果有人感到困惑(我敢打赌人们会对我们正在尝试做的事情感到困惑),请告诉我,我会尝试解决您可能遇到的问题。

【问题讨论】:

  • species = input("输入您想分析的物种的缩写:") 这允许用户选择他们想看的树种的种类
  • 您可能想在Minimal, Complete, Verifiable Examples查看我们的页面
  • 物种来自我们转换为 csv 文件的 excel 文件 (.xlsx)
  • 并不是我想要问的。您需要提供与问题相关的所有信息,仅此而已。确保您确切地知道您的要求并具体说明。就目前而言,这个问题可能会因为过于宽泛/不清楚你在问什么而被删除。
  • 在下面查看我的答案。将来请确保您的问题遵循社区准则,否则它们可能会被关闭(实际上我很惊讶这个没有)。我愿意走这么远的唯一原因是因为这是你的第一个问题,你还不太明白如何写一个好问题。下一次没有人会如此宽容。在问另一个问题之前,请通读我们的help center

标签: python list csv dictionary


【解决方案1】:

好的!您的最后一次编辑向我展示了您出错的确切位置! average 是一个函数,因此将其分配给字典键不会将该函数应用于该字典键,但本质上是“重命名”该函数(这有点掩盖,但与您的问题无关)。

因此,要使其按您期望的方式工作,您需要将最后一行更改为:

averages["y1989"]=average(y1989)

就像你在上面的打印语句中所做的那样。

【讨论】:

  • 也感谢打印出我们迄今为止必须按年份单独输入打印报表的年份。无论如何要简化该过程,因为我也会假设字典的工作(有点),比如将输入物种的所有年份和平均值放入 1 个字典中。所以不是 1989 年而是全部?
  • for year, average in averages: / print(str(year) + ": " + str(average))
  • 谢谢,这绝对是一个很好的起点,只是要弄清楚我得到的错误。再次感谢宽大处理
猜你喜欢
  • 2014-11-13
  • 1970-01-01
  • 1970-01-01
  • 2021-12-13
  • 1970-01-01
  • 1970-01-01
  • 2020-08-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多