def monthlytable(nav):
"""
Get a table of monthly returns
:param nav:
:return:
"""
r = nav.pct_change().dropna()
# Works better in the first month
# Compute all the intramonth-returns, instead of reapplying some monthly resampling of the NAV
return_monthly = r.groupby([lambda x: x.year, lambda x: x.month]).apply(lambda x: (1 + x).prod() - 1.0)
frame = return_monthly.unstack(level=1).rename(columns=lambda x: calendar.month_abbr[x])
a = (frame + 1.0).prod(axis=1) - 1.0
frame["STDev"] = np.sqrt(12) * frame.std(axis=1)
# make sure that you don't include the column for the STDev in your computation
frame["YTD"] = a
frame.index.name = "year"
# most recent years on top
return frame.iloc[::-1]
python类month_abbr()的实例源码
def get_months(start_date, months, include_year=False):
"""
Returns a list of months abbreviations starting from start_date
:param include_year:
:param start_date:
:param months: number of previous months to return
:return: list of months abbr if not include_year, else list of list [year, month]
"""
result = []
for i in range(months):
start_date -= datetime.timedelta(days=calendar.monthrange(start_date.year,
start_date.month)[1])
if include_year:
result.append([start_date.year, calendar.month_abbr[start_date.month]])
else:
result.append(calendar.month_abbr[start_date.month])
return result
def get_months_with_last_same_as_first(start_date, months, include_year=False):
"""
Returns a list of months abbreviations starting from start_date, and last month
is the same is first month (i.e. extra month)
:param include_year:
:param start_date:
:param months: number of previous months to return
:return: list of months abbr if not include_year, else list of tuple [year, month]
"""
if include_year:
months = get_months(datetime.date.today(), 12, include_year=True)
# update last month to have current year
months = [[start_date.year, calendar.month_abbr[start_date.month]]] + months
else:
months = get_months(datetime.date.today(), 12)
# append current month to front of list
months = [months[-1]] + months
return months
def __calc_month(self):
# Set self.f_month and self.a_month using the calendar module.
a_month = [calendar.month_abbr[i].lower() for i in range(13)]
f_month = [calendar.month_name[i].lower() for i in range(13)]
self.a_month = a_month
self.f_month = f_month
def get_date():
import time
import calendar
local = time.localtime(time.time())
nth = ["st", "nd", "rd", None][min(3, local.tm_mday % 10 - 1)] or 'th'
return "%s %d%s %d @ %02d:%02d" % (
calendar.month_abbr[local.tm_mon], local.tm_mday,
nth, local.tm_year, local.tm_hour, local.tm_min)
def get_month_number(self, month):
names = dict((v, k) for k, v in enumerate(calendar.month_name))
abbrs = dict((v, k) for k, v in enumerate(calendar.month_abbr))
month_str = month.title()
try:
return names[month_str]
except KeyError:
try:
return abbrs[month_str]
except KeyError:
return 0
def __calc_month(self):
# Set self.f_month and self.a_month using the calendar module.
a_month = [calendar.month_abbr[i].lower() for i in range(13)]
f_month = [calendar.month_name[i].lower() for i in range(13)]
self.a_month = a_month
self.f_month = f_month
def __calc_month(self):
# Set self.f_month and self.a_month using the calendar module.
a_month = [calendar.month_abbr[i].lower() for i in range(13)]
f_month = [calendar.month_name[i].lower() for i in range(13)]
self.a_month = a_month
self.f_month = f_month
def __calc_month(self):
# Set self.f_month and self.a_month using the calendar module.
a_month = [calendar.month_abbr[i].lower() for i in range(13)]
f_month = [calendar.month_name[i].lower() for i in range(13)]
self.a_month = a_month
self.f_month = f_month
def test_name(self):
# abbreviations
for i, name in enumerate(calendar.month_abbr[1:]):
self.assertEquals(MonthSetBuilder().build(name), {i + 1})
self.assertEquals(MonthSetBuilder().build(name.lower()), {i + 1})
self.assertEquals(MonthSetBuilder().build(name.upper()), {i + 1})
# full names
for i, name in enumerate(calendar.month_name[1:]):
self.assertEquals(MonthSetBuilder().build(name), {i + 1})
self.assertEquals(MonthSetBuilder().build(name.lower()), {i + 1})
self.assertEquals(MonthSetBuilder().build(name.upper()), {i + 1})
def __init__(self, wrap=True, ignorecase=True):
"""
Initializes set builder for month sets
:param wrap: Set to True to allow wrapping at last month of the year
:param ignorecase: Set to True to ignore case when mapping month names
"""
SetBuilder.__init__(self,
names=calendar.month_abbr[1:],
significant_name_characters=3,
offset=1,
ignorecase=ignorecase,
wrap=wrap)
def change_date(m):
mon_name = month_abbr[int(m.group(1))]
return '{} {} {}'.format(m.group(2), mon_name, m.group(3))
def __calc_month(self):
# Set self.f_month and self.a_month using the calendar module.
a_month = [calendar.month_abbr[i].lower() for i in range(13)]
f_month = [calendar.month_name[i].lower() for i in range(13)]
self.a_month = a_month
self.f_month = f_month
def __calc_month(self):
# Set self.f_month and self.a_month using the calendar module.
a_month = [calendar.month_abbr[i].lower() for i in range(13)]
f_month = [calendar.month_name[i].lower() for i in range(13)]
self.a_month = a_month
self.f_month = f_month
def __calc_month(self):
# Set self.f_month and self.a_month using the calendar module.
a_month = [calendar.month_abbr[i].lower() for i in range(13)]
f_month = [calendar.month_name[i].lower() for i in range(13)]
self.a_month = a_month
self.f_month = f_month
def get_date():
import time
import calendar
local = time.localtime(time.time())
nth = ["st", "nd", "rd", None][min(3, local.tm_mday % 10 - 1)] or 'th'
return "%s %d%s %d @ %02d:%02d" % (
calendar.month_abbr[local.tm_mon], local.tm_mday,
nth, local.tm_year, local.tm_hour, local.tm_min)
def __calc_month(self):
# Set self.f_month and self.a_month using the calendar module.
a_month = [calendar.month_abbr[i].lower() for i in range(13)]
f_month = [calendar.month_name[i].lower() for i in range(13)]
self.a_month = a_month
self.f_month = f_month
def __calc_month(self):
# Set self.f_month and self.a_month using the calendar module.
a_month = [calendar.month_abbr[i].lower() for i in range(13)]
f_month = [calendar.month_name[i].lower() for i in range(13)]
self.a_month = a_month
self.f_month = f_month
def index_file(self, filename):
"""Reads a datafile and returns a dict index
of the starting lines for each year and lists of starting lines for each
month over each year.
"""
import calendar
_reads = 0
_return_dict = {}
with open(filename, 'r') as _data_file:
_last_year = ''
_last_month = ''
for _data_line in _data_file:
_reads += 1
try:
_year = str(_data_line[13:17])
_month = calendar.month_abbr[int(_data_line[17:19])]
if _year != _last_year:
_return_dict[_year] = _reads - 1
_last_year = _year
if _month != _last_month:
try:
_return_dict[_month].append(_reads - 1)
except KeyError:
_return_dict[_month] = [_reads - 1]
_last_month = _month
except ValueError:
continue
return _return_dict
def index_file(filename):
"""Reads a datafile and returns a dict index
of the starting lines for each year and lists of starting lines for each
month over each year.
"""
import calendar
_reads = 0
_return_dict = {}
with open(filename, 'r') as _data_file:
_last_year = ''
_last_month = ''
for _data_line in _data_file:
_reads += 1
try:
_year = str(_data_line[13:17])
_month = calendar.month_abbr[int(_data_line[17:19])]
if _year != _last_year:
_return_dict[_year] = _reads - 1
_last_year = _year
if _month != _last_month:
try:
_return_dict[_month].append(_reads - 1)
except KeyError:
_return_dict[_month] = [_reads - 1]
_last_month = _month
except ValueError:
continue
return _return_dict
def __calc_month(self):
# Set self.f_month and self.a_month using the calendar module.
a_month = [calendar.month_abbr[i].lower() for i in range(13)]
f_month = [calendar.month_name[i].lower() for i in range(13)]
self.a_month = a_month
self.f_month = f_month
def __calc_month(self):
# Set self.f_month and self.a_month using the calendar module.
a_month = [calendar.month_abbr[i].lower() for i in range(13)]
f_month = [calendar.month_name[i].lower() for i in range(13)]
self.a_month = a_month
self.f_month = f_month
def __calc_month(self):
# Set self.f_month and self.a_month using the calendar module.
a_month = [calendar.month_abbr[i].lower() for i in range(13)]
f_month = [calendar.month_name[i].lower() for i in range(13)]
self.a_month = a_month
self.f_month = f_month
def __calc_month(self):
# Set self.f_month and self.a_month using the calendar module.
a_month = [calendar.month_abbr[i].lower() for i in range(13)]
f_month = [calendar.month_name[i].lower() for i in range(13)]
self.a_month = a_month
self.f_month = f_month
def __calc_month(self):
# Set self.f_month and self.a_month using the calendar module.
a_month = [calendar.month_abbr[i].lower() for i in range(13)]
f_month = [calendar.month_name[i].lower() for i in range(13)]
self.a_month = a_month
self.f_month = f_month
def __calc_month(self):
# Set self.f_month and self.a_month using the calendar module.
a_month = [calendar.month_abbr[i].lower() for i in range(13)]
f_month = [calendar.month_name[i].lower() for i in range(13)]
self.a_month = a_month
self.f_month = f_month
def __calc_month(self):
# Set self.f_month and self.a_month using the calendar module.
a_month = [calendar.month_abbr[i].lower() for i in range(13)]
f_month = [calendar.month_name[i].lower() for i in range(13)]
self.a_month = a_month
self.f_month = f_month
def __calc_month(self):
# Set self.f_month and self.a_month using the calendar module.
a_month = [calendar.month_abbr[i].lower() for i in range(13)]
f_month = [calendar.month_name[i].lower() for i in range(13)]
self.a_month = a_month
self.f_month = f_month
def change_data(m):
from calendar import month_abbr
mon_name = month_abbr[int(m.group(1))]
return '{} {} {}'.format(m.group(2), mon_name, m.group(3))
def strftest1(self, now):
if support.verbose:
print("strftime test for", time.ctime(now))
now = self.now
# Make sure any characters that could be taken as regex syntax is
# escaped in escapestr()
expectations = (
('%a', calendar.day_abbr[now[6]], 'abbreviated weekday name'),
('%A', calendar.day_name[now[6]], 'full weekday name'),
('%b', calendar.month_abbr[now[1]], 'abbreviated month name'),
('%B', calendar.month_name[now[1]], 'full month name'),
# %c see below
('%d', '%02d' % now[2], 'day of month as number (00-31)'),
('%H', '%02d' % now[3], 'hour (00-23)'),
('%I', '%02d' % self.clock12, 'hour (01-12)'),
('%j', '%03d' % now[7], 'julian day (001-366)'),
('%m', '%02d' % now[1], 'month as number (01-12)'),
('%M', '%02d' % now[4], 'minute, (00-59)'),
('%p', self.ampm, 'AM or PM as appropriate'),
('%S', '%02d' % now[5], 'seconds of current time (00-60)'),
('%U', '%02d' % ((now[7] + self.jan1[6])//7),
'week number of the year (Sun 1st)'),
('%w', '0?%d' % ((1+now[6]) % 7), 'weekday as a number (Sun 1st)'),
('%W', '%02d' % ((now[7] + (self.jan1[6] - 1)%7)//7),
'week number of the year (Mon 1st)'),
# %x see below
('%X', '%02d:%02d:%02d' % (now[3], now[4], now[5]), '%H:%M:%S'),
('%y', '%02d' % (now[0]%100), 'year without century'),
('%Y', '%d' % now[0], 'year with century'),
# %Z see below
('%%', '%', 'single percent sign'),
)
for e in expectations:
# musn't raise a value error
try:
result = time.strftime(e[0], now)
except ValueError as error:
self.fail("strftime '%s' format gave error: %s" % (e[0], error))
if re.match(escapestr(e[1], self.ampm), result):
continue
if not result or result[0] == '%':
self.fail("strftime does not support standard '%s' format (%s)"
% (e[0], e[2]))
else:
self.fail("Conflict for %s (%s): expected %s, but got %s"
% (e[0], e[2], e[1], result))