-
-
Notifications
You must be signed in to change notification settings - Fork 18.5k
/
Copy pathstrftime.py
146 lines (107 loc) · 5.17 KB
/
strftime.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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
import numpy as np
import pandas as pd
from pandas import offsets
class DatetimeStrftime:
timeout = 1500
params = ([1000, 10000], [False, True])
param_names = ["nobs", "tz_aware"]
def setup(self, nobs, tz_aware):
d = "2018-11-29"
dt = "2018-11-26 11:18:27.0"
self.data = pd.DataFrame(
{
"dt": [np.datetime64(dt)] * nobs,
"d": [np.datetime64(d)] * nobs,
"r": [np.random.uniform()] * nobs,
}
)
if tz_aware:
self.data["dt"] = self.data["dt"].dt.tz_localize("UTC")
self.data["d"] = self.data["d"].dt.tz_localize("UTC")
self.data["i"] = self.data["dt"]
self.data.set_index("i", inplace=True)
def time_frame_date_to_str(self, nobs, tz_aware):
self.data["d"].astype(str)
def time_frame_date_formatting_default(self, nobs, tz_aware):
self.data["d"].dt.strftime(date_format=None)
def time_frame_date_formatting_index_to_str(self, nobs, tz_aware):
self.data.index.astype(str)
def time_frame_date_formatting_index_default(self, nobs, tz_aware):
self.data.index.strftime(date_format=None)
def time_frame_date_formatting_custom(self, nobs, tz_aware):
self.data["d"].dt.strftime(date_format="%Y---%m---%d")
def time_frame_date_formatting_index_custom(self, nobs, tz_aware):
self.data.index.strftime(date_format="%Y---%m---%d")
def time_frame_datetime_to_str(self, nobs, tz_aware):
self.data["dt"].astype(str)
def time_frame_datetime_formatting_default(self, nobs, tz_aware):
self.data["dt"].dt.strftime(date_format=None)
def time_frame_datetime_formatting_default_explicit_date_only(self, nobs, tz_aware):
self.data["dt"].dt.strftime(date_format="%Y-%m-%d")
def time_frame_datetime_formatting_default_explicit(self, nobs, tz_aware):
self.data["dt"].dt.strftime(date_format="%Y-%m-%d %H:%M:%S")
def time_frame_datetime_formatting_default_with_float(self, nobs, tz_aware):
self.data["dt"].dt.strftime(date_format="%Y-%m-%d %H:%M:%S.%f")
def time_frame_datetime_formatting_index_to_str(self, nobs, tz_aware):
self.data.set_index("dt").index.astype(str)
def time_frame_datetime_formatting_index_default(self, nobs, tz_aware):
self.data.set_index("dt").index.strftime(date_format=None)
def time_frame_datetime_formatting_custom(self, nobs, tz_aware):
self.data["dt"].dt.strftime(date_format="%Y-%m-%d --- %H:%M:%S")
def time_frame_datetime_formatting_index_custom(self, nobs, tz_aware):
self.data.set_index("dt").index.strftime(date_format="%Y-%m-%d --- %H:%M:%S")
def time_frame_datetime_formatting_iso8601_map(self, nobs, tz_aware):
self.data["dt"].map(lambda timestamp: timestamp.isoformat())
def time_frame_datetime_formatting_iso8601_strftime_Z(self, nobs, tz_aware):
self.data["dt"].dt.strftime(date_format="%Y-%m-%dT%H:%M:%SZ")
def time_frame_datetime_formatting_iso8601_strftime_offset(self, nobs, tz_aware):
"""Not optimized yet as %z is not supported by `convert_strftime_format`"""
self.data["dt"].dt.strftime(date_format="%Y-%m-%dT%H:%M:%S%z")
class PeriodStrftime:
timeout = 1500
params = ([1000, 10000], ["D", "h"])
param_names = ["nobs", "freq"]
def setup(self, nobs, freq):
self.data = pd.DataFrame(
{
"p": pd.period_range(start="2000-01-01", periods=nobs, freq=freq),
"r": [np.random.uniform()] * nobs,
}
)
self.data["i"] = self.data["p"]
self.data.set_index("i", inplace=True)
if freq == "D":
self.default_fmt = "%Y-%m-%d"
elif freq == "h":
self.default_fmt = "%Y-%m-%d %H:00"
def time_frame_period_to_str(self, nobs, freq):
self.data["p"].astype(str)
def time_frame_period_str(self, nobs, freq):
self.data["p"].apply(str)
def time_frame_period_repr(self, nobs, freq):
self.data["p"].apply(repr)
def time_frame_period_formatting_default(self, nobs, freq):
self.data["p"].dt.strftime(date_format=None)
def time_frame_period_formatting_default_explicit(self, nobs, freq):
self.data["p"].dt.strftime(date_format=self.default_fmt)
def time_frame_period_formatting_custom(self, nobs, freq):
self.data["p"].dt.strftime(date_format="%Y-%m-%d --- %H:%M:%S")
def time_frame_period_formatting_iso8601_strftime_Z(self, nobs, freq):
self.data["p"].dt.strftime(date_format="%Y-%m-%dT%H:%M:%SZ")
def time_frame_period_formatting_iso8601_strftime_offset(self, nobs, freq):
"""Not optimized yet as %z is not supported by `convert_strftime_format`"""
self.data["p"].dt.strftime(date_format="%Y-%m-%dT%H:%M:%S%z")
class BusinessHourStrftime:
timeout = 1500
params = [1000, 10000]
param_names = ["nobs"]
def setup(self, nobs):
self.data = pd.DataFrame(
{
"off": [offsets.BusinessHour()] * nobs,
}
)
def time_frame_offset_str(self, nobs):
self.data["off"].apply(str)
def time_frame_offset_repr(self, nobs):
self.data["off"].apply(repr)