1. 导入数据
import numpy as npimport matplotlib.pyplot as pltimport pandas as pddata = pd.read_csv("Seattle2014.csv")print(data.head()) STATION STATION_NAME DATE \0 GHCND:USW00024233 SEATTLE TACOMA INTERNATIONAL AIRPORT WA US 20140101 1 GHCND:USW00024233 SEATTLE TACOMA INTERNATIONAL AIRPORT WA US 20140102 2 GHCND:USW00024233 SEATTLE TACOMA INTERNATIONAL AIRPORT WA US 20140103 3 GHCND:USW00024233 SEATTLE TACOMA INTERNATIONAL AIRPORT WA US 20140104 4 GHCND:USW00024233 SEATTLE TACOMA INTERNATIONAL AIRPORT WA US 20140105 PRCP SNWD SNOW TMAX TMIN AWND WDF2 WDF5 WSF2 WSF5 WT01 WT05 \0 0 0 0 72 33 12 340 310 36 40 -9999 -9999 1 41 0 0 106 61 32 190 200 94 116 -9999 -9999 2 15 0 0 89 28 26 30 50 63 72 1 -9999 3 0 0 0 78 6 27 40 40 45 58 1 -9999 4 0 0 0 83 -5 37 10 10 67 76 -9999 -9999 WT02 WT03 0 -9999 -9999 1 -9999 -9999 2 -9999 -9999 3 -9999 -9999 4 -9999 -9999
2. 画出降雨量直方图
# 1、画出降雨量直方图rainfall = data['PRCP'].valuesinches = rainfall/254 # 因为要转换成英寸,1in=25.4mmprint(inches.shape)plt.figure()plt.hist(inches, bins=40) # 分成bins等分,计算每一份里面数据的数量plt.rcParams['font.sans-serif'] = ['SimHei'] # 显示中文标签plt.rcParams['axes.unicode_minus'] = False # 这两行需要手动设置plt.title("降雨量直方图")plt.xlabel("降雨量(单位:英寸)")plt.ylabel("天数")plt.show()(365,)
3. 统计无雨天数
not_rain_day = 0rain_day = 0over_5 = 0lower_1 = 0for elem in inches: if elem == 0: not_rain_day += 1 elif elem > 0: rain_day +=1 if elem > 0.5: over_5 += 1 elif elem < 0.1 and elem > 0: lower_1 += 1# 2、统计无雨天数print("无雨天数为:", not_rain_day)print("无雨天数为:", np.sum(inches == 0))无雨天数为: 215无雨天数为: 215
4. 统计下雨天数
print("下雨天数为:", rain_day)print("下雨天数为:", np.sum(inches != 0))下雨天数为: 150下雨天数为: 150
5. 统计下雨量超过0.5英寸的天数
print("下雨量超过0.5英寸的天数:", over_5)print("下雨量超过0.5英寸的天数:", np.sum(inches > 0.5))下雨量超过0.5英寸的天数: 37下雨量超过0.5英寸的天数: 37
6. 统计下雨量小于0.1英寸的下雨天数
print("下雨量小于0.1英寸的下雨天数:", lower_1)print("下雨量小于0.1英寸的下雨天数:", np.sum((inches < 0.1) & (inches > 0)))下雨量小于0.1英寸的下雨天数: 46下雨量小于0.1英寸的下雨天数: 46
7. 统计下雨天雨量的中位数
rainy = (inches > 0)print("下雨天雨量的中位数:", np.median(inches[rainy]))下雨天雨量的中位数: 0.19488188976377951
8. 第二季度雨量中位数
quarter2 = (np.arange(365)-181 < 0) & (np.arange(365)-89 > 0)print("第二季度雨量的中位数:", np.median(inches[quarter2]))第二季度雨量的中位数: 0.0
9. 夏季最大下雨量
print("夏季最大下雨量:", np.max(inches[quarter2]))夏季最大下雨量: 1.311023622047244
10. 非夏季的下雨天雨量中位数
print("非夏季的下雨天雨量中位数:", np.mean(inches[~quarter2 & rainy]))非夏季的下雨天雨量中位数: 0.33723753280839897