我有一个文本文件,其中包含以下365个条目的缩写列表,每个条目都在一行上。第一个条目代表日期,第二个条目代表道琼斯指数
8/28/2018|26064.01953
8/29/2018|26124.57031
8/30/2018|25986.91992
我正在使用以下代码:
import os
import math
import statistics
def main ():
infile = open('DJI.txt', 'r')
values = infile.read()
infile.close()
values=values.split("\n")
values=[value.split("|")for value in values]
avg = sum([float(l[1]) for l in values])/len(values)
highest = max([float(l[1]) for l in values])
lowest = min([float(l[1]) for l in values])
values.sort(key = lambda x:x[1])
print(avg)
print(highest)
print(lowest)
print(values)
main()
我在此代码上还要再执行2个任务,首先是找到每月的平均收盘价,而不是全年的平均值。
第二个是对于最高和最低功能,该值的出现日期也应与该值一起显示。
非常感谢您的帮助。
使用pandas,可以很容易地实现此功能:
我的输入文件:(请注意额外的月份数据以检查每月平均值)
8/28/2018|26064.01953
8/29/2018|26124.57031
8/30/2018|25986.91992
9/28/2018|26064.01953
9/29/2018|25124.57031
9/30/2018|25986.91992
读取输入文件:
>>> import pandas as pd
>>> df = pd.read_csv("input.txt", '|', header=None, names=["Date", "Dow-Jones Value"], parse_dates=["Date"])
>>> df
Date Dow-Jones Value
0 2018-08-28 26064.01953
1 2018-08-29 26124.57031
2 2018-08-30 25986.91992
3 2018-09-28 26064.01953
4 2018-09-29 25124.57031
5 2018-09-30 25986.91992
检索统计信息:
>>> df['Dow-Jones Value'].mean() # average
25891.836586666668
>>> df.iloc[df['Dow-Jones Value'].idxmax()] # highest
Date 2018-08-29 00:00:00
Dow-Jones Value 26124.6
Name: 1, dtype: object
>>> df.iloc[df['Dow-Jones Value'].idxmin()] # lowest
Date 2018-09-29 00:00:00
Dow-Jones Value 25124.6
Name: 4, dtype: object
>>> df.sort_values('Dow-Jones Value') # sorted by Dow-Jones Value
Date Dow-Jones Value
4 2018-09-29 25124.57031
2 2018-08-30 25986.91992
5 2018-09-30 25986.91992
0 2018-08-28 26064.01953
3 2018-09-28 26064.01953
1 2018-08-29 26124.57031
>>> df.groupby(pd.Grouper(key='Date', freq='M')).mean() # Monthly Averages
Dow-Jones Value
Date
2018-08-31 26058.503253
2018-09-30 25725.169920
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句