我是编程的新手,我正在尝试编写一个程序来评估和打印最大的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))
您的初始平均速度最大值在熊猫中是正确的。
要查找相应的日期,我会执行以下操作:
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”必须等于最大速度(除非存在相同最大速度的多个实例,否则它应该是单行)。从那里,您返回该数据框/行的“日期”值。
然后,您可以根据需要打印/返回最大速度和相应的日期。
我想建议一个非熊猫方法,因为许多新程序员专注于学习pandas而不是学习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