【问题标题】:how to extract the min value and max value from csv file using python如何使用python从csv文件中提取最小值和最大值
【发布时间】:2018-08-01 20:47:59
【问题描述】:

我有一个 python 脚本,它从 csv 文件中读取并将请求的列附加到 2 个空列表中。之后我需要提取所提取列的最小值和最大值。

我写了这段代码,但它似乎不起作用,因为结果是空的。

代码:

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])
print ("min value element : ", min(minTemp))
print ("max value element : ", min(maxTemp))

【问题讨论】:

标签: python list csv max min


【解决方案1】:

这可能会有所帮助

import csv

with open('C:/Users/test/Documents/R_projects/homework/rdu-weather-history.csv', "r") as csvfile:
    data = csv.reader(csvfile, delimiter=';')
    minVal, maxVal = [], []
    for i in data:
        minVal.append(i[1])
        maxVal.append(i[2])

print min(minVal)
print max(maxVal)

【讨论】:

  • 我尝试了您的答案,但它显示此错误文件“C:\Users\test\Documents\Python_Projects\readCSV.py”,第 14 行,在 minTemp.append(float(row[ 1])) builtins.ValueError:无法将字符串转换为浮点数:
  • 你可以把他们去掉float方法。
【解决方案2】:

我找到了我的问题的解决方案。 似乎 csv 文件包含一个空行 我所做的是在我的代码中处理异常,因此代码变为:

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])
    try:
        minTemp.append(float(row[1]))
        maxTemp.append(float(row[2]))
    except ValueError:
        print ("error","on line",row)   

print ("min value element : ", min(minTemp))
print ("max value element : ", max(maxTemp)) 

【讨论】:

    【解决方案3】:

    您还可以使用 numpy 库来查找最小值和最大值。

    import numpy as np
    
    my_data = np.genfromtxt("C:/Users/test/Documents/R_projects/homework/rdu-weather-history.csv", delimiter=",", skip_header=True)
    print ("min value element : ", my_data.min(axis=0)[1])
    print ("max value element : ", my_data.max(axis=0)[2])
    

    【讨论】:

      【解决方案4】:

      您可以使用 Pandas 将数据加载到 DataFrame 中,它们具有 Sum、Max、Min、AVG 等内置函数。

      import pandas as pd
      
      df=pd.read_csv('Name.csv')
      
      
      #FINDING MAX AND MIN
      p=df['ColumnName'].max()
      q=df['ColumnName'].min()
      
      
      print(q)
      

      就是这样,您将在指定列中找到最小值。

      【讨论】:

      • 您也可以通过q = df["ColumnName"].describe() 获得更多信息。
      猜你喜欢
      • 2018-08-01
      • 1970-01-01
      • 2018-04-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多