-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathrandom walk.py
65 lines (49 loc) · 1.8 KB
/
random walk.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import random
DATE_START = '2015-01-01'
DATE_END = '2020-01-01'
dates = pd.date_range(DATE_START, DATE_END)
df = pd.DataFrame({
'date': dates,
'value': np.random.normal(0,1,dates.size)
})
df.set_index('date', inplace=True)
# plt.plot(df['value'])
# plt.ylabel('Value')
# plt.xlabel('Date')
# plt.title('Random Values')
# plt.show()
def random_walk(df, start_value=0, threshold=0.5,step_size=0.1, min_value=0, max_value=2):
previous_value = start_value
for index, row in df.iterrows():
step_size_noise = np.random.normal(0,0.02)
print(step_size_noise)
if previous_value < min_value:
previous_value = min_value
if previous_value > max_value:
previous_value = max_value
probability = random.random()
if probability >= threshold:
df.loc[index, 'value'] = previous_value + step_size + step_size_noise
else:
df.loc[index, 'value'] = previous_value - step_size + step_size_noise
previous_value = df.loc[index, 'value']
return df
random_walk(df)
plt.plot(df['value'])
plt.ylabel('Value')
plt.xlabel('Date')
plt.title('Random Values')
plt.show()
#plt.hist(df['value'],bins=np.arange(-2,2,0.1))
# import pandas as pd
# import numpy as np
# import matplotlib.pyplot as plt
# #energy_df = pd.read_csv('C:\\Users\\NIU004\\OneDrive - CSIRO\\Desktop\\energydata_complete.csv')
# df = pd.read_csv(r'C:\Users\NIU004\OneDrive - CSIRO\Desktop\Mineral sorting\Kansanshi\Trial Data - Copy\all_grade_over_2000tonnage.csv')
# df = df.groupby(np.arange(len(df))//1).mean()
# # # # plt.plot(df['all grade over 2000tonnage'])
# df = df[0:1000]
# plt.hist(df,bins=np.arange(0,3,0.1))