ade*_*e1e 3 python numpy pandas
如何使用 Numpy/Pandas 创建 OHLC 数据框
.0075或.02范围可以指定为变量。希望看到随机价格大致在这些边界内波动。Close第一行的值位于(1.1904参见下面的示例)。np.random.seed),因此数据帧是可重现的。我正在尝试生成模拟外汇数据,以使用 Numpy/Pandas 为 pandas 问题创建可重现的示例。该问题涵盖了类似的数据要求,但使用开盘价、最高价、最低价、收盘价数据的外汇数据示例可能很有用,有助于避免将大量数据粘贴到问题中。
作为数据框外观的示例,我看到周五的欧元/美元汇率如下:
eur = {"open" : 1.19160,
"high" : 1.19371,
"low" : 1.18739,
"close" : 1.1904}
pd.DataFrame(eur,index=['19/3/2021'])
Run Code Online (Sandbox Code Playgroud)
这是一个基于前面提到的问题的假/模拟数据示例,它给出了我在如何使用np.random. 我添加了重新采样并转换为 OHLC,但不确定如何使用 Numpy 生成/控制数据。
periods = 250
eurusd = pd.DataFrame({
'ticker':np.repeat( ['eurusd'], periods ),
'date':np.tile( pd.date_range('1/1/2011', periods=periods, freq='H'), 1 ),
'price':(np.random.randn(periods).cumsum() + 10) })
eurusd.index = pd.to_datetime(eurusd.date)
eurusd.price.resample('D').ohlc()
Run Code Online (Sandbox Code Playgroud)
我已经更新了生成此数据的尝试(请参阅下面的“到目前为止我尝试过什么”),方法是从每小时数据重新采样为“每日”后生成 OHLC 列。我仍在研究 Numpy 数据生成元素,以生成.0075每天某个地方的一系列数据。
这是我的答案,但我很高兴看到代码被细化/最小化的其他答案。
def genMockDataFrame(days,startPrice,colName,startDate,seed=None):
periods = days*24
np.random.seed(seed)
steps = np.random.normal(loc=0, scale=0.0018, size=periods)
steps[0]=0
P = start_price+np.cumsum(steps)
P = [round(i,4) for i in P]
fxDF = pd.DataFrame({
'ticker':np.repeat( [colName], periods ),
'date':np.tile( pd.date_range(startDate, periods=periods, freq='H'), 1 ),
'price':(P)})
fxDF.index = pd.to_datetime(fxDF.date)
fxDF = fxDF.price.resample('D').ohlc()
return fxDF
Run Code Online (Sandbox Code Playgroud)
生成带有种子的数据帧以允许其他人重现数据
df = genMockDataFrame(100,1.1904,'eurusd','19/3/2020',seed=1)
Run Code Online (Sandbox Code Playgroud)
如果需要,绘制数据:
import plotly.graph_objects as go
fig = go.Figure(data=go.Ohlc(x=df.index,
open=df['open'],
high=df['high'],
low=df['low'],
close=df['close']))
fig.show()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1382 次 |
| 最近记录: |