def date_week(match, other=None): data = {k: int(v or 1) for k, v in match.groupdict().items()} year = data['year'] week = data['week'] day = data['day'] ordinal = week * 7 + day - ((date_(year, 1, 4).weekday() + 1) + 3) if ordinal < 1: ordinal += days_in_year(year - 1) year -= 1 elif ordinal > days_in_year(year): ordinal -= days_in_year(year) year += 1 return date_(year, 1, 1) + timedelta(days=(ordinal - 1))
def get_row_col(data,state,date): col=data.index(state.lower()) date1=[] date1=date.split("/") d1=date_(int(str(date1[2])),int(str(date1[1])),int(str(date1[0]))) row=(d1-d0).days row+=1 return row,col
def create_all_past_days(): today = date.today() from datetime import date as date_ first_day = date_(2017, 9, 7) day = first_day while day < today: store_day(day.strftime('%Y-%m-%d')) day += timedelta(days=1)
def date(match, other=None): data = {k: int(v) for k, v in match.groupdict().items() if v} if other: if isinstance(other, datetime): return other.date().replace(**data) elif isinstance(other, date_): return other.replace(**data) else: raise ValueError('other must be datetime or date object.') else: return date_(data.get('year', 1), data.get('month', 1), data.get('day', 1))
def load_forces(src): """ Load data into fox_forces """ session = model.Session() for rowid, row in enumerate(csv2.DictReader(src, delimiter='\t')): del row['cwsac'] for x in ['killed', 'wounded', 'missing', 'casualties']: if row[x]: row[x] = parse_human_integer(row[x]) for x in ['start', 'end']: dateparts = [x + i for i in ('y', 'm', 'd')] row['%s_date' % x] = date_(*[int(row[y]) for y in dateparts]) for y in dateparts: del row[y] row['aggrow'] = (row['aggrow'] == '1') milforce = model.FoxForce(battle = rowid, **row) session.add(milforce) session.commit()
async def zipCode(self, zipCode: str, *, date: Optional[Union[date_, datetime, str]] = None, distance: Optional[int] = None) -> list: '''Request current observation for zip code''' params: dict = dict(zipCode=zipCode) if date and isinstance(date, str): y, m, d = date.split('-') params['date'] = date_(int(y), int(m), int(d)).isoformat() elif date and isinstance(date, datetime): params['date'] = date.date().isoformat() elif date and isinstance(date, date_): params['date'] = date.isoformat() if distance: params['distance'] = distance return await self._request('aq/forecast/zipCode', params=params)
async def latLong( self, latitude: Optional[Union[float, str]] = None, longitude: Optional[Union[float, str]] = None, *, date: Optional[Union[date_, datetime, str]] = None, distance: Optional[int] = None, ) -> None: '''Request current observation for latitude/longitude''' params: dict = dict( latitude=str(latitude), longitude=str(longitude), ) if date and isinstance(date, str): y, m, d = date.split('-') params['date'] = date_(int(y), int(m), int(d)).isoformat() elif date and isinstance(date, datetime): params['date'] = date.date().isoformat() elif date and isinstance(date, date_): params['date'] = date.isoformat() if distance: params['distance'] = distance return await self._request('aq/forecast/latLong', params=params)
def get_territory_currencies(territory, start_date=None, end_date=None, tender=True, non_tender=False, include_details=False): """Returns the list of currencies for the given territory that are valid for the given date range. In addition to that the currency database distinguishes between tender and non-tender currencies. By default only tender currencies are returned. The return value is a list of all currencies roughly ordered by the time of when the currency became active. The longer the currency is being in use the more to the left of the list it will be. The start date defaults to today. If no end date is given it will be the same as the start date. Otherwise a range can be defined. For instance this can be used to find the currencies in use in Austria between 1995 and 2011: >>> from datetime import date >>> get_territory_currencies('AT', date(1995, 1, 1), date(2011, 1, 1)) ['ATS', 'EUR'] Likewise it's also possible to find all the currencies in use on a single date: >>> get_territory_currencies('AT', date(1995, 1, 1)) ['ATS'] >>> get_territory_currencies('AT', date(2011, 1, 1)) ['EUR'] By default the return value only includes tender currencies. This however can be changed: >>> get_territory_currencies('US') ['USD'] >>> get_territory_currencies('US', tender=False, non_tender=True, ... start_date=date(2014, 1, 1)) ['USN', 'USS'] .. versionadded:: 2.0 :param territory: the name of the territory to find the currency fo :param start_date: the start date. If not given today is assumed. :param end_date: the end date. If not given the start date is assumed. :param tender: controls whether tender currencies should be included. :param non_tender: controls whether non-tender currencies should be included. :param include_details: if set to `True`, instead of returning currency codes the return value will be dictionaries with detail information. In that case each dictionary will have the keys ``'currency'``, ``'from'``, ``'to'``, and ``'tender'``. """ currencies = get_global('territory_currencies') if start_date is None: start_date = date_.today() elif isinstance(start_date, datetime_): start_date = start_date.date() if end_date is None: end_date = start_date elif isinstance(end_date, datetime_): end_date = end_date.date() curs = currencies.get(territory.upper(), ()) # TODO: validate that the territory exists def _is_active(start, end): return (start is None or start <= end_date) and \ (end is None or end >= start_date) result = [] for currency_code, start, end, is_tender in curs: if start: start = date_(*start) if end: end = date_(*end) if ((is_tender and tender) or (not is_tender and non_tender)) and _is_active(start, end): if include_details: result.append({ 'currency': currency_code, 'from': start, 'to': end, 'tender': is_tender, }) else: result.append(currency_code) return result
def get_territory_currencies(territory, start_date=None, end_date=None, tender=True, non_tender=False, include_details=False): """Returns the list of currencies for the given territory that are valid for the given date range. In addition to that the currency database distinguishes between tender and non-tender currencies. By default only tender currencies are returned. The return value is a list of all currencies roughly ordered by the time of when the currency became active. The longer the currency is being in use the more to the left of the list it will be. The start date defaults to today. If no end date is given it will be the same as the start date. Otherwise a range can be defined. For instance this can be used to find the currencies in use in Austria between 1995 and 2011: >>> from datetime import date >>> get_territory_currencies('AT', date(1995, 1, 1), date(2011, 1, 1)) ['ATS', 'EUR'] Likewise it's also possible to find all the currencies in use on a single date: >>> get_territory_currencies('AT', date(1995, 1, 1)) ['ATS'] >>> get_territory_currencies('AT', date(2011, 1, 1)) ['EUR'] By default the return value only includes tender currencies. This however can be changed: >>> get_territory_currencies('US') ['USD'] >>> get_territory_currencies('US', tender=False, non_tender=True, ... start_date=date(2014, 1, 1)) ['USN', 'USS'] .. versionadded:: 2.0 :param territory: the name of the territory to find the currency for. :param start_date: the start date. If not given today is assumed. :param end_date: the end date. If not given the start date is assumed. :param tender: controls whether tender currencies should be included. :param non_tender: controls whether non-tender currencies should be included. :param include_details: if set to `True`, instead of returning currency codes the return value will be dictionaries with detail information. In that case each dictionary will have the keys ``'currency'``, ``'from'``, ``'to'``, and ``'tender'``. """ currencies = get_global('territory_currencies') if start_date is None: start_date = date_.today() elif isinstance(start_date, datetime_): start_date = start_date.date() if end_date is None: end_date = start_date elif isinstance(end_date, datetime_): end_date = end_date.date() curs = currencies.get(territory.upper(), ()) # TODO: validate that the territory exists def _is_active(start, end): return (start is None or start <= end_date) and \ (end is None or end >= start_date) result = [] for currency_code, start, end, is_tender in curs: if start: start = date_(*start) if end: end = date_(*end) if ((is_tender and tender) or (not is_tender and non_tender)) and _is_active(start, end): if include_details: result.append({ 'currency': currency_code, 'from': start, 'to': end, 'tender': is_tender, }) else: result.append(currency_code) return result
import GetOldTweets3 as got import pandas as pd import tweepy from datetime import date as date_ import requests import csv d0 = date_(2020, 3, 14) # date representing initial date from which data is there for corona cases region=["KL","MH","RJ","KA","GA","MP","UP","GJ","TN","TS","BH","JK","PY","HR","AP","WB","CT","OR","JH","AS","HP","NL","SK","MN","AR","TR","ME","MI","UT"] #statecode corresponding to particular coordinates and radius coordinates=["10.8505,76.2711","19.7515,75.7319","27.0238,74.2179","15.3173,75.7139","15.2993,74.1240","22.9734,78.6569","28.8467,80.9462","22.2587,71.1924","11.1271,78.6569","18.1124,79.0193","25.0961,85.3131","33.7782,76.5762","31.1471,75.3412","29.0588,76.0856","15.9129,79.7400","22.9868,87.8550","21.2787,81.8661","20.9517,85.0985","23.6102,85.2799","26.2006,92.9376","31.1048,77.1734","26.1584,94.5624","27.5330,88.5122","24.6637,93.9063","28.2180,94.7278","23.9408,91.9882","25.4670,91.3662","23.1645,92.9376","30.0668,79.0193"] radius=["111.22","312.97","330.05","247.08","34.33","313.29","278.28","249.79","203.47","188.88","173.12","115.95","126.61","118.63","227.76","168.07","207.44","222.62","159.29","158.01","133.12","72.64","47.52","84.30","163.26","57.77","84.49","81.92","130.47"] consumer_key="HBphkAktZUCXnzsETAL2DZDZ5" consumer_secret="RVI25oLDDIHnwdlDTetMKkreG40tM0JLESP2rtMvjMr3SvbeQS" access_token="1249603598545113089-JBOA1Bg2drujYFJbXL2ODAeL8lWX9v" access_token_secret="TBZ2t8xOoHvdL2tuFArMsQrcjIFBOn33IO1v7Bs1FGP5r" auth = tweepy.OAuthHandler(consumer_key, consumer_secret) auth.set_access_token(access_token, access_token_secret) api = tweepy.API(auth) f=open("dataset_actual.csv","w", encoding='utf-8') w = csv.writer(f,lineterminator='\n') data = pd.read_csv('data.csv', sep=',', header=None) #daily increase in corona cases dataset def get_row_col(data,state,date): col=data.index(state.lower()) date1=[] date1=date.split("/") d1=date_(int(str(date1[2])),int(str(date1[1])),int(str(date1[0])))
def load_from_xml(source): session = model.Session() context = iterparse(source, events=("start", "end", "start-ns")) root = None state = None nevent = 1 for event, elem in context: if event == "start": if elem.tag == "div1" and elem.get('type') == "state": state = elem.get("n") elif elem.tag == "div2" and elem.get('type') == "year": year = elem.get("n") elif event == "end": ## Process a div3 if elem.tag == "div3" and elem.get('ana') == "interp-event": head = elem.find("head") ## Parse Date startDate = None endDate = None date = head.find("date") if date is not None: date_value = date.get("value") if re.match("186[1-5]-00", date_value) is not None: yyyy = int(date_value[:4]) if date.text == "Jan. to April": startDate = date_(yyyy, 1, 1) endDate = date_(yyyy, 4, 30) else: for k, v in _months.iteritems(): if date.text.startswith(k): startDate = date_(yyyy, v, 1) if v is not 12: endDate = date_(yyyy, v + 1, 1) - timedelta(1) else: endDate = date_(yyyy, 12, 31) break else: startDate = datetime_.strptime(date_value, "%Y-%m-%d").date() endDate = startDate elif head.find("dateRange") is not None: date_range = head.find("dateRange") if date_range.text == "Feb. 14-29": startDate = date_(1863, 2, 14) endDate = date_(1863, 2, 28) elif date_range.text == "Feb 6-8": startDate = date_(1864, 2, 6) endDate = date_(1864, 2, 8) else: startDate = datetime_.strptime(date_range.get("from"), "%Y-%m-%d").date() endDate = datetime_.strptime(date_range.get("to"), "%Y-%m-%d").date() # Event type event_type = head.findtext("rs") ## head_text event = tostring(head, encoding="utf8", method="text") # Text text = elem.findtext("p") ## Casualties losses = parse_losses(text) #print nevent, state, year, startDate, endDate, event_type session.add(model.DyerBattle(battle = nevent, event_type = unicode(event_type), state = unicode(STATES[state]), year = year, battle_name = unicode(event, 'utf-8'), start_date = startDate, end_date = endDate, text = unicode(text), killed = losses['killed'], wounded = losses['wounded'], cap_missing = losses['capmiss'], missing = losses['missing'], casualties = losses['total'] )) nevent += 1 elem.clear() session.commit()
def test_date(): assert parsers.date('2005-01-01') == parsers.date('2004-W53-6') assert parsers.date('2005-01-02') == parsers.date('2004-W53-7') assert parsers.date('2005-12-31') == parsers.date('2005-W52-6') assert parsers.date('2007-01-01') == parsers.date('2007-W01-1') assert parsers.date('2007-12-30') == parsers.date('2007-W52-7') assert parsers.date('2007-12-31') == parsers.date('2008-W01-1') assert parsers.date('2008-01-01') == parsers.date('2008-W01-2') assert parsers.date('2008-12-28') == parsers.date('2008-W52-7') assert parsers.date('2008-12-29') == parsers.date('2009-W01-1') assert parsers.date('2008-12-30') == parsers.date('2009-W01-2') assert parsers.date('2008-12-31') == parsers.date('2009-W01-3') assert parsers.date('2009-01-01') == parsers.date('2009-W01-4') assert parsers.date('2009-12-31') == parsers.date('2009-W53-4') assert parsers.date('2010-01-01') == parsers.date('2009-W53-5') assert parsers.date('2010-01-02') == parsers.date('2009-W53-6') assert parsers.date('2010-01-03') == parsers.date('2009-W53-7') assert parsers.date('2008-W39-6') == date_(2008, 9, 27) assert parsers.date('2008W396') == date_(2008, 9, 27) assert parsers.date('2016W431') == date_(2016, 10, 24) assert parsers.date('2016-W43-1') == date_(2016, 10, 24) assert parsers.date('2015-W30-4') == date_(2015, 7, 23) assert parsers.date('1981-095') == date_(1981, 4, 5) assert parsers.date('1981095') == date_(1981, 4, 5) assert parsers.date('1981-04-05') == date_(1981, 4, 5) assert parsers.date('19810405') == date_(1981, 4, 5) assert parsers.date('--04-03') == date_(1, 4, 3) assert parsers.date('--1001') == date_(1, 10, 1) with pytest.raises(ValueError): parsers.date('2008-W396') with pytest.raises(ValueError): parsers.date('2008W39-6') with pytest.raises(ValueError): parsers.date('198195') with pytest.raises(ValueError): parsers.date('1981-0405') with pytest.raises(ValueError): parsers.date('198104-05')
def xml_to_csv(source, writer, engagement_types): context = iterparse(source, events=("start", "end", "start-ns")) state = None nevent = 1 for event, elem in context: if event == "start": if elem.tag == "div1" and elem.get('type') == "state": state = elem.get("n") elif elem.tag == "div2" and elem.get('type') == "year": year = elem.get("n") elif event == "end": ## Process a div3 if elem.tag == "div3" and elem.get('ana') == "interp-event": head = elem.find("head") ## Parse Date if nevent in MISSING_DATES: date = MISSING_DATES[nevent] startDate = date['start_date'] try: endDate = date['end_date'] except KeyError: endDate = startDate else: startDate = None endDate = None date = head.find("date") if date is not None: date_value = date.get("value") if re.match("186[1-5]-00", date_value) is not None: yyyy = int(date_value[:4]) if date.text == "Jan. to April": startDate = date_(yyyy, 1, 1) endDate = date_(yyyy, 4, 30) else: for k, v in _months.items(): if date.text.startswith(k): startDate = date_(yyyy, v, 1) if v is not 12: endDate = date_(yyyy, v + 1, 1) - timedelta(1) else: endDate = date_(yyyy, 12, 31) break else: startDate = datetime_.strptime(date_value, "%Y-%m-%d").date() endDate = startDate elif head.find("dateRange") is not None: date_range = head.find("dateRange") startDate = datetime_.strptime(date_range.get("from"), "%Y-%m-%d").date() endDate = datetime_.strptime(date_range.get("to"), "%Y-%m-%d").date() # Event type if nevent in MISSING_EVENTS: event_type = MISSING_EVENTS[nevent] else: event_type = engagement_types[head.findtext("rs")] ## head_text event = tostring(head, method = "text", encoding = 'utf-8').\ decode('utf-8') # Text text = elem.findtext("p").strip() ## Casualties losses = parse_losses(text) #print nevent, state, year, startDate, endDate, event_type data = {'battle_id' : nevent, 'event_type' : event_type, 'state' :STATES[state], 'year' : year, 'battle_name' : event, 'start_date' : startDate, 'end_date' : endDate, 'text' : text.strip(), 'casualties' : losses['kwm'], 'killed' : losses['k'], 'wounded' : losses['w'], 'killed_wounded' : losses['kw'], 'missing_captured' : losses['m'] } writer.writerow(data) nevent += 1
def date_ordinal(match, other=None): data = {k: int(v) for k, v in match.groupdict().items() if v} days = (date_(data.get('year', 1), 1, 1) - date_(1, 1, 1)).days return date_.fromordinal(days + data.get('day', 0))
def xml_to_csv(source, writer): context = iterparse(source, events=("start", "end", "start-ns")) state = None nevent = 1 for event, elem in context: if event == "start": if elem.tag == "div1" and elem.get('type') == "state": state = elem.get("n") elif elem.tag == "div2" and elem.get('type') == "year": year = elem.get("n") elif event == "end": ## Process a div3 if elem.tag == "div3" and elem.get('ana') == "interp-event": head = elem.find("head") ## Parse Date startDate = None endDate = None date = head.find("date") if date is not None: date_value = date.get("value") if re.match("186[1-5]-00", date_value) is not None: yyyy = int(date_value[:4]) if date.text == "Jan. to April": startDate = date_(yyyy, 1, 1) endDate = date_(yyyy, 4, 30) else: for k, v in _months.items(): if date.text.startswith(k): startDate = date_(yyyy, v, 1) if v is not 12: endDate = date_(yyyy, v + 1, 1) - timedelta(1) else: endDate = date_(yyyy, 12, 31) break else: startDate = datetime_.strptime(date_value, "%Y-%m-%d").date() endDate = startDate elif head.find("dateRange") is not None: date_range = head.find("dateRange") if date_range.text == "Feb. 14-29": startDate = date_(1863, 2, 14) endDate = date_(1863, 2, 28) elif date_range.text == "Feb 6-8": startDate = date_(1864, 2, 6) endDate = date_(1864, 2, 8) else: startDate = datetime_.strptime(date_range.get("from"), "%Y-%m-%d").date() endDate = datetime_.strptime(date_range.get("to"), "%Y-%m-%d").date() # Event type event_type_tmp = head.findtext("rs") if event_type_tmp in ENGAGEMENT_TYPES: event_type = ENGAGEMENT_TYPES[event_type_tmp] else: if nevent == 4319: event_type = "Reoccupation" # Re-occupation of New Madrid elif nevent == 6348: event_type = "Reopening" # Oct. 26-29: Re-opening, Tennessee River else: event_type = "" ## head_text event = tostring(head, method = "text", encoding = 'utf-8').decode('utf-8') # Text text = elem.findtext("p").strip() ## Casualties losses = parse_losses(text) #print nevent, state, year, startDate, endDate, event_type data = {'battle' : nevent, 'event_type' : event_type, 'state' :STATES[state], 'year' : year, 'battle_name' : event, 'start_date' : startDate, 'end_date' : endDate, 'text' : text.strip(), 'killed' : losses['killed'], 'wounded' : losses['wounded'], 'cap_missing' : losses['capmiss'], 'missing' : losses['missing'], 'casualties' : losses['total'] } writer.writerow(data) nevent += 1