1. 导入数据
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
data = 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'].values
inches = rainfall/254 # 因为要转换成英寸,1in=25.4mm
print(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 = 0
rain_day = 0
over_5 = 0
lower_1 = 0
for 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