我对Python和Matplotlib比较陌生。有没有一种方法可以使用熊猫序列(即时间序列)生成“类似正方形” 的波形?
例如,以下值是系列中的值:
12、34、97,-4,-100,-9、31、87,-5,-2、33、13、1
很显然,如果我绘制此系列,它将不会显示为方波。
是否可以告诉Python如果值大于零,则在零以上绘制一致的水平线(例如,将线绘制在1处),并且如果值小于零,则绘制一条水平线。低于零(例如-1)?
由于这是一个时间序列,所以我不希望它是一个完美的正方形。
答案 0 :(得分:2)
将np.clip
用作:
x=[12, 34, 97, -4, -100, -9, 31, 87, -5, -2, 33, 13, 1]
np.clip(x, a_min=-1, a_max=1)
array([ 1, 1, 1, -1, -1, -1, 1, 1, -1, -1, 1, 1, 1])
s = pd.Series(x)
s = s.clip(lower=-1, upper=1)
如果其值在> =-1到<= 1之间,请使用np.where
:
x = np.where(np.array(x)>0, 1, -1) # for series s = np.where(s>0, 1, -1)
print(s)
0 1
1 1
2 1
3 -1
4 -1
5 -1
6 1
7 1
8 -1
9 -1
10 1
11 1
12 1
dtype: int64