标签:time 表达式 夏天 技术 操作 使用 panda 如何 dex
1.6 比较、掩码和布尔逻辑
rainfall_t = pd.read_csv('rain_tw_2018.csv')
print(rainfall_t.columns)
rainfall = rainfall_t.loc[:,['Time','Rainfall']]
print("获取time和rainfall列:\n",rainfall.head())
rainfall['Time'] = rainfall['Time'].str.split(' ').str.get(0)
print("time列切割后:\n",rainfall.head())
rainfall = rainfall.groupby('Time').sum()['Rainfall'] # 得到每天的降水量
print(rainfall.shape) # 2018-5 到 2019-1月
%matplotlib inline
import matplotlib.pyplot as plt
import seaborn; seaborn.set()
plt.hist(rainfall,40)
Index(['Latitude', 'Longitude', 'Column3', 'StationID', 'Time', 'Height',
'WindDirection', 'WindSpeed', 'Temperature', 'Humidity', 'Pressure',
'Rainfall', 'MaxWindSpeed', 'MaxWindDirection', 'MaxWindTime',
'AvMaxWindSpeed', 'AvMaxWindDirection', 'TimeAxMaxWindDirection',
'NoIdea', 'City', 'CityID', 'District', 'DistrictID'],
dtype='object')
获取time和rainfall列:
Time Rainfall
0 2018/5/1 0:00 0
1 2018/5/1 0:10 0
2 2018/5/1 0:20 0
3 2018/5/1 0:30 0
4 2018/5/1 0:40 0
time列切割后:
Time Rainfall
0 2018/5/1 0
1 2018/5/1 0
2 2018/5/1 0
3 2018/5/1 0
4 2018/5/1 0
(257,)
通用函数章节介绍了+、-、*、/和其他运算符驶向了数组的逐个元素操作。NumPy还实现了如<和>的逐个元素比较哦的通用函数。
这些比较运算符的结果是一个布尔数据类型的数组。一共有6种标准的比较操作:
import numpy as np
import pandas as pd
x = np.array([1,2,3,4,5])
print("x < 3 :\n",x < 3) # 等价于 np.less
print("x > 3 :\n",x > 3) # 等价于 np.greater
print("x <= 3 :\n",x <= 3) # 等价于 np.less_equal
print("x >= 3 :\n",x >= 3) # 等价于 np.greater_equal
print("x == 3 :\n",x == 3) # 等价于 np.equal
print("x != 3 :\n",x != 3) # 等价于 np.not_equal
# 复合表达式比较:
print("(2 * x) == (x ** 2) :\n",(2 * x) == (x ** 2))
# 和算数运算符一样,比较运算操作在NumPy中也是借助通用函数来实现的。
# 例如当你写x < 3时,NumPy内部会使用np.less(x,3)。
x < 3 :
[ True True False False False]
x > 3 :
[False False False True True]
x <= 3 :
[ True True True False False]
x >= 3 :
[False False True True True]
x == 3 :
[False False True False False]
x != 3 :
[ True True False True True]
(2 * x) == (x ** 2) :
[False True False False False]
rng = np.random.RandomState(0)
x_2D = rng.randint(10,size=(3,4))
print("x_2D:\n",x_2D)
print("x_2D < 6:\n",x_2D < 6)
x_2D:
[[5 0 3 3]
[7 9 3 5]
[2 4 7 6]]
x_2D < 6:
[[ True True True True]
[False False True True]
[ True True False False]]
print("原数组x_2D:\n",x_2D)
print("统计所有:",np.sum(x_2D < 6))
print("沿着行统计:",np.sum(x_2D < 6,axis=1))
print("是否有值满足条件:",np.any(x_2D < 6))
print("是否有值满足条件:",np.any(x_2D == 6))
print("是否所有值满足条件:",np.all(x_2D < 10))
print("是否所有值满足条件:",np.all(x_2D == 6))
print("是否每行所有值满足条件:",np.all(x_2D < 6,axis=1))
原数组x_2D:
[[5 0 3 3]
[7 9 3 5]
[2 4 7 6]]
统计所有: 8
沿着行统计: [4 2 2]
是否有值满足条件: True
是否有值满足条件: True
是否所有值满足条件: True
是否所有值满足条件: False
是否每行所有值满足条件: [ True False False]
# 逐位逻辑运算符&、|、~
print("降水量在1000到3000毫升的天数为:",np.sum((rainfall > 1000) & (rainfall < 3000)),"天")
print("没有下雨的天数:",np.sum(rainfall == 0))
print("下雨的天数:",np.sum(rainfall != 0))
print("降雨量大于2000毫升的天数:",np.sum(rainfall > 2000))
print("降雨量在0到3000毫升的天数:",np.sum((rainfall > 0) & (rainfall < 3000)))
# 通用函数对应的运算符:
# & np.bitwise_and
# | np.bitwise_or
# ^ np.bitwise_xor
# ~ np.bitwise_not
降水量在1000到3000毫升的天数为: 14 天
没有下雨的天数: 99
下雨的天数: 158
降雨量大于2000毫升的天数: 86
降雨量在0到3000毫升的天数: 65
# 前面简绍了如何直接对布尔数组进行聚合计算。一种更强大的模式是使用布尔数组作为掩码,
# 通过该掩码选择数据的子数据集。
x = np.array([[5,0,3,3],[7,9,3,5],[2,4,7,6]])
print("x:\n",x)
# 取出数组中小于5的元素:
print("x < 5:\n",x < 5)
# 为了将这些值从数组中取出,可以进行简单的索引,即掩码操作:
print("x[x < 5]:\n",x[x < 5])
# 为所有下雨天创建一个掩码
rainy = (rainfall > 0)
# 构建一个包含整个夏季日期的掩码(6月21日是第172天)
summer = (np.arange(257) - 172 + 365 - 257 < 90) & (np.arange(257) - 172 + 365 - 257 > 0)
print("下雨天的雨量中位数:",np.median(rainfall[rainy]))
print("夏天的雨量中位数:",np.median(rainfall[summer]))
print("夏天的雨量最大值:",np.max(rainfall[summer]))
print("非夏日的下雨天雨量中位数:",np.median(rainfall[rainy & ~summer]))
x:
[[5 0 3 3]
[7 9 3 5]
[2 4 7 6]]
x < 5:
[[False True True True]
[False False True False]
[ True True False False]]
x[x < 5]:
[0 3 3 3 2 4]
下雨天的雨量中位数: 4692.0
夏天的雨量中位数: 0.0
夏天的雨量最大值: 280225
非夏日的下雨天雨量中位数: 6486.5
标签:time 表达式 夏天 技术 操作 使用 panda 如何 dex
原文地址:https://www.cnblogs.com/-xiaoyu-/p/12318391.html