【问题标题】:how to extract the maximum and minimum values of a csv file using python如何使用python提取csv文件的最大值和最小值
【发布时间】:2018-08-01 00:44:33
【问题描述】:

我有一个从包含 3 列的 csv 文件读取的 python 脚本

  • 日期
  • 分钟温度
  • 最高温度

我需要提取

  1. minTemprature 列中存在最小值
  2. maxTemperature 列中存在最大值

我的脚本中的错误在哪里?

代码:

import csv
mydelimeter = csv.excel()
mydelimeter.delimiter=";"
myfile = open("C:/Users/test/Documents/R_projects/homework/rdu-weather-history.csv")
myfile.readline()
myreader=csv.reader(myfile,mydelimeter)
mywind,mydate=[],[]
minTemp, maxTemp = [],[]
for row in myreader:
    print(row[1],row[2])
    minTemp.append(row[1])
    maxTemp.append(row[2])

theindex=minTemp.index(min(minTemp))
print("the min value is : ", minTemp[theindex])    

【问题讨论】:

  • 你能发布旅游 csv 数据吗?
  • 错误信息是什么?
  • "我的脚本中的错误在哪里?" => 我们怎么知道?你没有说任何“错误”。

标签: python list csv readline


【解决方案1】:

如果你只需要最小值和最大值,你可以这样做:

EDIT:根据cmets修改了代码

import csv

with open("C:/Users/test/Documents/R_projects/homework/rdu-weather-history.csv") as myfile:
    myreader=csv.reader(myfile,delimiter=';')
    content = list(myreader)
    minTemp = min([int(elem[1]) for elem in content])
    maxTemp = max([int(elem[2]) for elem in content])

print("the min value is : ", minTemp)
print("the max value is : ", maxTemp) 

【讨论】:

  • 这不起作用 - 第一个列表表达式(实际上应该是生成器表达式 - 无需在此处构建列表)将消耗所有文件,因此第二个将始终产生一个空列表.您必须在两个语句之间重置文件指针,但是无论如何解析整个文件两次都是非常低效的。此外,向minmax 提供字符串可能不会产生预期的结果(尝试min(str(x) for x in range(5, 15)) 找出原因)。
  • myreader = ...; content = list(myreader); minTemp = min(elem[0] for elem in content); maxTemp = max(elem[2] for elem in content)
【解决方案2】:

为此使用 Numpy

import numpy as np
data = np.loadtxt("C:/Users/test/Documents/R_projects/homework/rdu-weather-history.csv", delimiter=',', usecols=(1,2)

min_min_T = np.min(data[:, 0])
max_max_T = np.max(data[:, 1])

【讨论】:

    猜你喜欢
    • 2018-08-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-23
    • 1970-01-01
    • 2018-08-12
    • 1970-01-01
    相关资源
    最近更新 更多