习题1:
读入文件pmi_days.csv,完成以下操作:
1.统计质量等级对应的天数,例如:
优:5天
良:3天
中度污染:2天
2.找出PMI2.5的最大值和最小值,分别指出是哪一天。
1 import pandas as pd 2 import numpy as np 3 4 days_path = open(r " C:\Users\Shinelon\Desktop\pmi_days.csv " ) 5 days_df = pd.read_csv(days_path) 6 7 # 统计质量等级对应的天数 8 data = days_df.groupby( ' 质量等级 ' ) 9 10 11 day_you = dict([x for x in data])[ ' 优 ' ] 12 day_liang = dict([x for x in data])[ ' 良 ' ] 13 day_qing = dict([x for x in data])[ ' 轻度污染 ' ] 14 day_zhong = dict([x for x in data])[ ' 中度污染 ' ] 15 print ( " 优:%d天 " % len(day_you.index), " \n良:%d天 " % len(day_liang.index), 16 " \n轻度污染:%d天 " % len(day_qing.index), " \n中度污染:%d天 " % len(day_zhong.index)) 17 18 19 # 找出PM2.5的最大值和最小值,分别指出是哪一天 20 sort_pm25 = days_df.sort_values(by= ' PM2.5 ' ) 21 sort_pm25_2 = sort_pm25.reset_index(drop= True) 22 print ( " PM2.5最大的一天是:%s。数值:%d " % (sort_pm25_2[ ' 日期 ' ][29], sort_pm25_2[ ' PM2.5 ' ][29 ]), 23 " \nPM2.5最小的一天是:%s。数值:%d " % (sort_pm25_2[ ' 日期 ' ][0], sort_pm25_2[ ' PM2.5 ' ][0]))
码云地址:https://gitee.com/BURY--18/Ch_18forever.git
习题2:
读入文件1980-2018GDP.csv,完成以下操作:
1.按行输出每年GDP数据,表头列名如文件第1行所示。
2.将各年GDP数据转换成字典格式,以年份为keys,其它值为values(数据类型为列表方式),例如:
{
2017:[827121.7,6.8%,60989]
........
}
3.遍历字典数据,求出GDP的最小值与最大值,并输出数据与对应的年份。
1 import pandas as pd 2 3 days_path = open(r " C:\Users\Shinelon\Desktop\1980-2018GDP.csv " ) 4 days_list = pd.read_csv(days_path) 5 6 # 1.按行输出每年GDP数据 7 print (days_list, " \t\t\n " ) 8 9 10 # 2.将各年GDP数据转换成字典格式,以年份为keys,其它值为values(数据类型为列表方式) 11 dict_GDP = days_list.set_index( ' 年份 ' ).T.to_dict( ' list ' ) 12 print ( " 字典: " , dict_GDP, " \n " ) 13 14 15 # 3.遍历字典数据,求出GDP的最小值与最大值,并输出数据与对应的年份。 16 data_max = max(dict_GDP, key= dict_GDP.get) 17 data_min = min(dict_GDP, key= dict_GDP.get) 18 print ( " GDP最大值: " , data_max, dict_GDP[data_max], " \n " ) 19 print ( " GDP最小值: " , data_min, dict_GDP[data_min])
*由于字典太长,所以只截取了其中两个键值对。
码云地址:https://gitee.com/BURY--18/Ch_18forever.git
习题3:
扩展(选作,二选一)
1.绘制每年的GDP数据的直方图,横坐标为年份,纵坐标为GDP值。
2.绘制每年的GDP数据的折线图,横坐标为年份,纵坐标为GDP值。
1 import pandas as pd 2 import numpy as np 3 import matplotlib.pyplot as plt 4 5 days_path = open(r " C:\Users\Shinelon\Desktop\1980-2018GDP.csv " ) 6 days_list = pd.read_csv(days_path) 7 8 # print(days_list) 9 plt.rcParams[ ' font.sans-serif ' ] = [ ' SimHei ' ] # 默认字体 10 plt.rcParams[ ' axes.unicode_minus ' ] = False # ”-“负号为方块问题 11 12 plt.figure(figsize=(30, 8 )) 13 plt.xlim(1978, 2019 ) 14 plt.ylim(0, 1000000 ) 15 x_num = np.arange(1978, 2019, 1 ) 16 y_num = np.arange(0, 1000000, 50000 ) 17 plt.xticks(x_num) 18 plt.yticks(y_num) 19 20 # 1.绘制每年的GDP数据的直方图 21 plt.bar(days_list[ ' 年份 ' ], days_list[ ' GDP(亿元) ' ], label= " GDP值 " , color= ' c ' ) 22 # 2.绘制每年的GDP数据的折线图 23 plt.plot(days_list[ ' 年份 ' ], days_list[ ' GDP(亿元) ' ], label= " GDP值 " , color= ' r ' ) 24 25 plt.title( ' 1980-2018年GDP数据统计图 ' ) 26 plt.xlabel( ' 年份(年) ' ) 27 plt.ylabel( ' GDP值(亿元) ' ) 28 plt.legend(loc= ' upper right ' ) 29 # plt.grid(True, alpha=0.5) 30 plt.show()
码云地址:https://gitee.com/BURY--18/Ch_18forever.git