Finding Maximum Value in CSV File

五迷三道 提交于 2019-12-31 07:38:10

问题


Have an assignment of finding average and maximum rainfall in file "BoulderWeatherData.csv". Have found the average using this code:

    rain = open("BoulderWeatherData.csv", "r")
    data = rain.readline()
    print(rain)
    data = rain.readlines()
    total = 0
    linecounter = 0
    for rain in data:
        linecounter = linecounter + 1
        print("The number of lines is", linecounter)

    for line in data:
        r = line.split(",")
        total = total + float(r[4])
    print(total)


    average = float(total / linecounter)
    print("The average rainfall is ", "%.2f" % average)

However, can't seem to find maximum using this same process. Attempted using max, function but the answer that must be obtained is float number, which can not be iterated through max.

Any help would be appreciated.


回答1:


This is my prefered way of handling this.

#!/usr/bin/env python3

rain = open("BoulderWeatherData.csv","r")

average = 0.0
total = 0
maxt = 0.0

for line in rain:
    try:
        p = float(line.split(",")[4])
        average += p
        total += 1
        maxt = max(maxt,p)
    except:
        pass

average = average / float(total)

print("Average:",average)
print("Maximum:",maxt)

This will output:

Average: 0.05465272591486193
Maximum: 1.98



回答2:


import csv

INPUT  = "BoulderWeatherData.csv"
PRECIP = 4   # 5th column

with open(INPUT, "rU") as inf:
    incsv  = csv.reader(inf)
    header = next(incsv, None)    # skip header row
    precip = [float(row[PRECIP]) for row in incsv]

avg_precip = sum(precip, 0.) / (1 and len(precip))  # prevent div-by-0
max_precip = max(precip)

print(
    "Avg precip: {:0.3f} in/day, max precip: {:0.3f} in/day"
    .format(avg_precip, max_precip)
)

returns

Avg precip: 0.055 in/day, max precip: 1.980 in/day



回答3:


max=0 
for line in data:
      r = line.split(",")
      if float(r[4]) > max:
           max=float(r[4])
print(max)

something like that




回答4:


You're already accumulating total across loop iterations.

To keep track of a maxvalue, it's basically the same thing, except instead of adding you're maxing:

total = 0
maxvalue = 0

for line in data:
    r = line.split(",")
    value = float(r[4])
    total = total + value
    maxvalue = max(maxvalue, value)

print(total)
print(maxvalue)

Or, if you don't want to use the max function:

for line in data:
    r = line.split(",")
    value = float(r[4])
    total = total + value
    if value > maxvalue:
        maxvalue = value



回答5:


This code will attempt to find the maximum value, and the average value, of floats stored in the 5th position in a .csv.

rainval = []

Initializes the empty array where we will store values.

with open ("BoulderWeatherData.csv", "r") as rain:

Opens the .csv file and names it "rain".

    for lines in rain:

This reads every line in rain until the end of the file.

        rainval += [float(lines.strip().split(",")[4])]

We append the float value found in the fifth position (fourth index) of the line.

We repeat the above for every line located in the .csv file.

print (sorted(rainval)[len(rainval)])

This sorts the values in the rainval array and then takes the last (greatest) value, and prints it. This is the maximum value and is better than max because it can handle floats and not just ints.

print (sum(rainval)/len(rainval))

This prints the average rainfall.


Alternatively, if we don't want to use arrays:

maxrain = -float("inf")
total, count = 0, 0
with open ("test.txt", "r") as rain:
    for lines in rain:
        temp = float(lines.strip().split(",")[4])
        if maxrain < temp:
            maxrain = temp
        total += temp
        count += 1

print (maxrain)
print (total/count)


来源:https://stackoverflow.com/questions/21767529/finding-maximum-value-in-csv-file

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!