习题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