如何 select 循环中的所有键 x
How to select all keys in loop for x
部分Gasprices.txt喜欢
04-05-1993:1.068
04-12-1993:1.079
04-19-1993:1.079
05-09-1994:1.045
05-16-1994:1.046
05-23-1994:1.05
import matplotlib.pyplot as plt
import numpy as np
with open('c:/Gasprices.txt', 'r') as file:
td = dict()
for line in file:
year = line[6:10]
price = float(line[11:])
td.setdefault(year, []).append(price)
for k, v in td.items():
Year =f'{k}'
avg_price = f'{sum(v)/ len(v)}'
print(Year, avg_price)
上面代码的结果是
1993 1.0711538461538466
1994 年 1.0778653846153845
1995 1.1577115384615386
1996 年 1.2445283018867925
1997 年 1.2442499999999999
1998 1.071711538461538
1999 年 1.1760576923076924
2000 年 1.522730769230769
2001 年 1.4603018867924529
2002 年 1.385961538461538
2003 1.603019230769231
2004 年 1.8946923076923083
2005 年 2.314461538461538
2006 年 2.6182692307692315
2007 年 2.8434716981132078
2008 年 3.2989038461538462
2009 年 2.4058269230769236
2010 年 2.835057692307693
2011 3.576423076923077
2012 3.6796415094339627
2013 3.651441176470588
我想使用这个结果来使用 matplotlib 绘制图形。但是由于循环,如果我使用这样的代码
import matplotlib.pyplot as plt
import numpy as np
with open('c:/Gasprices.txt', 'r') as file:
td = dict()
for line in file:
year = line[6:10]
price = float(line[11:])
td.setdefault(year, []).append(price)
for k, v in td.items():
Year =f'{k}'
avg_price = f'{sum(v)/ len(v)}'
print(Year, avg_price)
x=Year
y=avg_price
plt.plot(x,y, 'o--')
plt.title('Average gas price per year in US')
plt.xlabel('year')
plt.ylabel('Avg.gas price per gallon[$]')
plt.grid()
plt.xticks(np.arange(1993, 2014, 1))
plt.xticks(rotation=45)
plt.yticks(np.arange(1.0, 4.0, 0.5))
plt.tight_layout()
plt.show()
图中只画了最后一条信息2013 3.651441176470588
如何将所有年份信息和 avg_price 信息分别放入 x 和 y 中?
您需要将这些信息添加到列表中(此处 x
和 y
):
x = []
y = []
with open('c:/Gasprices.txt', 'r') as file:
td = dict()
for line in file:
year = line[6:10]
price = float(line[11:])
td.setdefault(year, []).append(price)
for k, v in td.items():
Year = f'{k}'
avg_price = f'{sum(v)/ len(v)}'
print(Year, avg_price)
x.append(Year)
y.append(avg_price)
由于您的数据是字符串,因此您需要转换它们:
x = [int(i) for i in x] # Years are int
y = [float(i) for i in y] # Prices are float
然后你可以用同样的方式调用你的情节:
plt.plot(x,y, 'o--')
plt.title('Average gas price per year in US')
plt.xlabel('year')
plt.ylabel('Avg.gas price per gallon[$]')
plt.grid()
plt.xticks(np.arange(1993, 2014, 1))
plt.xticks(rotation=45)
plt.yticks(np.arange(1.0, 4.0, 0.5))
plt.tight_layout()
plt.show()
部分Gasprices.txt喜欢
04-05-1993:1.068
04-12-1993:1.079
04-19-1993:1.079
05-09-1994:1.045
05-16-1994:1.046
05-23-1994:1.05
import matplotlib.pyplot as plt
import numpy as np
with open('c:/Gasprices.txt', 'r') as file:
td = dict()
for line in file:
year = line[6:10]
price = float(line[11:])
td.setdefault(year, []).append(price)
for k, v in td.items():
Year =f'{k}'
avg_price = f'{sum(v)/ len(v)}'
print(Year, avg_price)
上面代码的结果是
1993 1.0711538461538466
1994 年 1.0778653846153845
1995 1.1577115384615386
1996 年 1.2445283018867925
1997 年 1.2442499999999999
1998 1.071711538461538
1999 年 1.1760576923076924
2000 年 1.522730769230769
2001 年 1.4603018867924529
2002 年 1.385961538461538
2003 1.603019230769231
2004 年 1.8946923076923083
2005 年 2.314461538461538
2006 年 2.6182692307692315
2007 年 2.8434716981132078
2008 年 3.2989038461538462
2009 年 2.4058269230769236
2010 年 2.835057692307693
2011 3.576423076923077
2012 3.6796415094339627
2013 3.651441176470588
我想使用这个结果来使用 matplotlib 绘制图形。但是由于循环,如果我使用这样的代码
import matplotlib.pyplot as plt
import numpy as np
with open('c:/Gasprices.txt', 'r') as file:
td = dict()
for line in file:
year = line[6:10]
price = float(line[11:])
td.setdefault(year, []).append(price)
for k, v in td.items():
Year =f'{k}'
avg_price = f'{sum(v)/ len(v)}'
print(Year, avg_price)
x=Year
y=avg_price
plt.plot(x,y, 'o--')
plt.title('Average gas price per year in US')
plt.xlabel('year')
plt.ylabel('Avg.gas price per gallon[$]')
plt.grid()
plt.xticks(np.arange(1993, 2014, 1))
plt.xticks(rotation=45)
plt.yticks(np.arange(1.0, 4.0, 0.5))
plt.tight_layout()
plt.show()
图中只画了最后一条信息2013 3.651441176470588
如何将所有年份信息和 avg_price 信息分别放入 x 和 y 中?
您需要将这些信息添加到列表中(此处 x
和 y
):
x = []
y = []
with open('c:/Gasprices.txt', 'r') as file:
td = dict()
for line in file:
year = line[6:10]
price = float(line[11:])
td.setdefault(year, []).append(price)
for k, v in td.items():
Year = f'{k}'
avg_price = f'{sum(v)/ len(v)}'
print(Year, avg_price)
x.append(Year)
y.append(avg_price)
由于您的数据是字符串,因此您需要转换它们:
x = [int(i) for i in x] # Years are int
y = [float(i) for i in y] # Prices are float
然后你可以用同样的方式调用你的情节:
plt.plot(x,y, 'o--')
plt.title('Average gas price per year in US')
plt.xlabel('year')
plt.ylabel('Avg.gas price per gallon[$]')
plt.grid()
plt.xticks(np.arange(1993, 2014, 1))
plt.xticks(rotation=45)
plt.yticks(np.arange(1.0, 4.0, 0.5))
plt.tight_layout()
plt.show()