Используя python выведите max и min значения и дату, связанную с max и min значениями - PullRequest
0 голосов
/ 20 февраля 2019

Я новичок в программировании и пытаюсь написать программу, которая оценивает и печатает максимальное значение AVE.SPEED и дату, связанную с этим значением, из файла CSV.Это будет пример набора данных файла:

   STATION  DATE        AVE_SPEED
0    US68   2018-03-22  0.00
1    US68   2018-03-23  0.00
2    US68   2018-03-24  0.00
3    US68   2018-03-26  0.24
4    US68   2018-03-27  2.28
5    US68   2018-03-28  0.21
6    US10   2018-03-29  0.04
7    US10   2018-03-30  0.00
8    US10   2018-03-31  0.00
9    US10   2018-04-01  0.00
10   US10   2018-04-02  0.02

Это то, что я придумал до сих пор, но он просто печатает весь набор в конце.

import pandas as pd
df = pd.read_csv (r'data_01.csv')
max1 = df['AVE_SPEED'].max()
print ('Max Speed in MPH: ' + str(max1))
groupby_max1 = df.groupby(['DATE']).max()
print ('Maximum Average Speed Value and Date of Occurance: ' + str(groupby_max1))

Ответы [ 2 ]

0 голосов
/ 20 февраля 2019

Я хотел бы предложить подход, не относящийся к пандам, так как многие новые программисты сосредотачиваются на изучении панд, а не на изучении python - особенно здесь, возможно, будет проще понять, что делает обычный python вместо использования фрейма данных:

with open('data_01.csv') as f:
    data = f.readlines()[1:]  # ditch the header
    data = [x.split() for x in data]  # turn each line in to a list of its values
    data.sort(key=lambda x: -float(x[-1]))  # sort by the last item in each list (the speed) ascending
    print(data[0][2])  # print the date (index 2) from the first item in your sorted data
0 голосов
/ 20 февраля 2019

Ваша начальная средняя максимальная скорость в пандах верна.

Чтобы найти соответствующую дату, я бы сделал следующее:

mport pandas as pd
df = pd.read_csv (r'data_01.csv')
max1 = df['AVE_SPEED'].max()
print ('Max Speed in MPH: ' + str(max1))
date_of_max = df[df['AVE_SPEED'] == max1]['date'].values[0]

По сути, вы создаете другой фрейм данных, где любой«AVE_SPEED» должен равняться максимальной скорости (это должна быть одна строка, если нет нескольких экземпляров одной и той же максимальной скорости).Оттуда вы возвращаете значение 'date' этого кадра данных / строки.

Затем вы можете распечатать / вернуть максимальную скорость и соответствующую дату по мере необходимости.

...