本次的內容為python的應用,關於文件、字典、統計應用,均多應用列表、字典。
習題一
讀入文件pmi_days.csv,完成以下操作:
1.統計質量等級對應的天數,例如:
優:5天
良:3天
中度污染:2天
2.找出PMI2.5的最大值和最小值,分別指出是哪一天。
以下是代碼內容:
import csv
z1 = 0
z2 = 0
z3 = 0
z4 = 0
listp = []
listd = []
d1 = 0
with open("pmi_days .csv", 'r') as f:
reader = csv.reader(f)
fieldnames = next(reader) # 獲取數據的第一列,作為后續要轉為字典的鍵名 生成器,next方法獲取
# print(fieldnames)
csv_reader = csv.DictReader(f,fieldnames=fieldnames) # self._fieldnames = fieldnames # list of keys for the dict 以list的形式存放鍵名
for row in csv_reader:
dict = {}
for key, value in row.items():
dict[key] = value
if value == '優':
z1 = z1 + 1
if value == '良':
z2 = z2 + 1
if value == '輕度污染':
z3 = z3 + 1
if value == '中度污染':
z4 = z4 + 1
if key == 'PM2.5':
listp.append(int(dict.get("PM2.5")))
listd.append(dict.get("日期"))
for j in range(0, len(listp)):
if listp[j] == max(listp):
d1 = listd[j]
if listp[j] == min(listp):
x1 = listd[j]
print("優:{}天".format(z1))
print("良:{}天".format(z2))
print("輕度污染:{}天".format(z3))
print("中度污染:{}天".format(z4))
print("PM2.5最高:{} PM2.5的值:{}".format(d1,max(listp)))
print("PM2.5最低:{} PM2.5的值:{}".format(x1,min(listp)))
以下是運行結果:
本題更多的是格式上的規划,通過循環,判斷控制輸入與格式達到,篩選出想要的內容、輸出結果,並呈現出想要的格式。
題目不難,更多的是邏輯上要清晰,考慮好條件篩選的內容。
習題二
讀入文件1980-2018GDP.csv,完成以下操作:
1.按行輸出每年GDP數據,表頭列名如文件第1行所示。
2.將各年GDP數據轉換成字典格式,以年份為keys,其它值為values(數據類型為列表方式),例如:
{
2017:[827121.7,6.8%,60989]
........
}
3.遍歷字典數據,求出GDP的最小值與最大值,並輸出數據與對應的年份。
以下是代碼內容:
1
import csv
list=[]
comp_g=[]
comp_y=[]
dict_1={}
with open("1980-2018GDP.csv", 'r') as f:
reader = csv.reader(f)
fieldnames = next(reader)
print("第一題:\n")
print(fieldnames)
for row in reader:
list.append(row)
for i in range(0,len(list)):
print("%6s"%list[i][0],"\t\t%-10s"%list[i][1],"\t%-12s"%list[i][2],"\t%-13s"%list[i][3],list[i][4])
with open("1980-2018GDP.csv", 'r') as f:
reader = csv.reader(f)
fieldnames = next(reader)
csv_reader = csv.DictReader(f, fieldnames=fieldnames)
for row in csv_reader:
dict = {}
for key, value in row.items():
dict[key] = value
if key == 'GDP(億元)':
comp_g.append(float(dict.get('GDP(億元)')))
comp_y.append(int(dict.get('年份')))
#如果屬性名為'GDP(億元)'則把對應年份、GDP值放入列表
#供應給最大最小比較之用。
for i in range(0, len(list)):
dict_1[comp_y[i]] = list[i][1:]
#第二題
#將年份作為字典dict_1的鍵
#將年份對應內容組成的列表設置成值
#即可做到規范輸出格式
for j in range(0, len(comp_g)):
if comp_g[j] == max(comp_g):
ma = comp_y[j]
if comp_g[j] == min(comp_g):
mi = comp_y[j]
print("第二題:\n")
print("各年GDP數據字典格式:")
print(dict_1)#輸出題目要求的格式
print("第三題:\n")
print("GDP(億元)最大年份:{}\t最大值:{}".format(ma,max(comp_g)))# 求出GDP的最小值與最大值
print("GDP(億元)最小年份:{}\t最小值:{}".format(mi,min(comp_g)))# 並輸出數據與對應的年份。
以下是運行結果:
本題更多的是在對代碼原理的理解后對,數據統計整理的使用。
根據源代碼,進行修改,通過增加限制條件,
通過if等判斷條件統計中的詞匯,來搜索出你想要的對應信息的數據。
第一小題
通過循環,以及形成列表
最終控制輸出
第二小題
將年份作為字典dict_1的鍵
將年份對應內容組成的列表設置成值
即可做到規范輸出格式
第三小題
通過與上一題一樣的,增加if條件
做到讓值的大小比較做索引
來輸出年份
本次習題結束。
所以說很多時候不是你不會,只是缺少更多的思考,更多的細心罷了..