1. 导入数据

  1. import numpy as np
  2. import matplotlib.pyplot as plt
  3. import pandas as pd
  4. data = pd.read_csv("Seattle2014.csv")
  5. print(data.head())
  6. STATION STATION_NAME DATE \
  7. 0 GHCND:USW00024233 SEATTLE TACOMA INTERNATIONAL AIRPORT WA US 20140101
  8. 1 GHCND:USW00024233 SEATTLE TACOMA INTERNATIONAL AIRPORT WA US 20140102
  9. 2 GHCND:USW00024233 SEATTLE TACOMA INTERNATIONAL AIRPORT WA US 20140103
  10. 3 GHCND:USW00024233 SEATTLE TACOMA INTERNATIONAL AIRPORT WA US 20140104
  11. 4 GHCND:USW00024233 SEATTLE TACOMA INTERNATIONAL AIRPORT WA US 20140105
  12. PRCP SNWD SNOW TMAX TMIN AWND WDF2 WDF5 WSF2 WSF5 WT01 WT05 \
  13. 0 0 0 0 72 33 12 340 310 36 40 -9999 -9999
  14. 1 41 0 0 106 61 32 190 200 94 116 -9999 -9999
  15. 2 15 0 0 89 28 26 30 50 63 72 1 -9999
  16. 3 0 0 0 78 6 27 40 40 45 58 1 -9999
  17. 4 0 0 0 83 -5 37 10 10 67 76 -9999 -9999
  18. WT02 WT03
  19. 0 -9999 -9999
  20. 1 -9999 -9999
  21. 2 -9999 -9999
  22. 3 -9999 -9999
  23. 4 -9999 -9999

2. 画出降雨量直方图

  1. # 1、画出降雨量直方图
  2. rainfall = data['PRCP'].values
  3. inches = rainfall/254 # 因为要转换成英寸,1in=25.4mm
  4. print(inches.shape)
  5. plt.figure()
  6. plt.hist(inches, bins=40) # 分成bins等分,计算每一份里面数据的数量
  7. plt.rcParams['font.sans-serif'] = ['SimHei'] # 显示中文标签
  8. plt.rcParams['axes.unicode_minus'] = False # 这两行需要手动设置
  9. plt.title("降雨量直方图")
  10. plt.xlabel("降雨量(单位:英寸)")
  11. plt.ylabel("天数")
  12. plt.show()
  13. (365,)

image.png

3. 统计无雨天数

  1. not_rain_day = 0
  2. rain_day = 0
  3. over_5 = 0
  4. lower_1 = 0
  5. for elem in inches:
  6. if elem == 0:
  7. not_rain_day += 1
  8. elif elem > 0:
  9. rain_day +=1
  10. if elem > 0.5:
  11. over_5 += 1
  12. elif elem < 0.1 and elem > 0:
  13. lower_1 += 1
  14. # 2、统计无雨天数
  15. print("无雨天数为:", not_rain_day)
  16. print("无雨天数为:", np.sum(inches == 0))
  17. 无雨天数为: 215
  18. 无雨天数为: 215

4. 统计下雨天数

  1. print("下雨天数为:", rain_day)
  2. print("下雨天数为:", np.sum(inches != 0))
  3. 下雨天数为: 150
  4. 下雨天数为: 150

5. 统计下雨量超过0.5英寸的天数

  1. print("下雨量超过0.5英寸的天数:", over_5)
  2. print("下雨量超过0.5英寸的天数:", np.sum(inches > 0.5))
  3. 下雨量超过0.5英寸的天数: 37
  4. 下雨量超过0.5英寸的天数: 37

6. 统计下雨量小于0.1英寸的下雨天数

  1. print("下雨量小于0.1英寸的下雨天数:", lower_1)
  2. print("下雨量小于0.1英寸的下雨天数:", np.sum((inches < 0.1) & (inches > 0)))
  3. 下雨量小于0.1英寸的下雨天数: 46
  4. 下雨量小于0.1英寸的下雨天数: 46

7. 统计下雨天雨量的中位数

  1. rainy = (inches > 0)
  2. print("下雨天雨量的中位数:", np.median(inches[rainy]))
  3. 下雨天雨量的中位数: 0.19488188976377951

8. 第二季度雨量中位数

  1. quarter2 = (np.arange(365)-181 < 0) & (np.arange(365)-89 > 0)
  2. print("第二季度雨量的中位数:", np.median(inches[quarter2]))
  3. 第二季度雨量的中位数: 0.0

9. 夏季最大下雨量

  1. print("夏季最大下雨量:", np.max(inches[quarter2]))
  2. 夏季最大下雨量: 1.311023622047244

10. 非夏季的下雨天雨量中位数

  1. print("非夏季的下雨天雨量中位数:", np.mean(inches[~quarter2 & rainy]))
  2. 非夏季的下雨天雨量中位数: 0.33723753280839897