def _infer_freq(dates): try: from pandas.tseries.api import infer_freq freq = infer_freq(dates) return freq except ImportError: pass timedelta = datetime.timedelta nobs = min(len(dates), 6) if nobs == 1: raise ValueError("Cannot infer frequency from one date") if hasattr(dates, 'values'): dates = dates.values # can't do a diff on a DateIndex diff = np.diff(dates[:nobs]) delta = _add_datetimes(diff) nobs -= 1 # after diff if delta == timedelta(nobs): #greedily assume 'D' return 'D' elif delta == timedelta(nobs + 2): return 'B' elif delta == timedelta(7*nobs): return 'W' elif delta >= timedelta(28*nobs) and delta <= timedelta(31*nobs): return 'M' elif delta >= timedelta(90*nobs) and delta <= timedelta(92*nobs): return 'Q' elif delta >= timedelta(365 * nobs) and delta <= timedelta(366 * nobs): return 'A' else: return
def _infer_freq(dates): try: from pandas.tseries.api import infer_freq freq = infer_freq(dates) return _pandas_mapping.get(freq, freq) except ImportError: pass timedelta = datetime.timedelta nobs = min(len(dates), 6) if nobs == 1: raise ValueError("Cannot infer frequency from one date") diff = np.diff(dates[:nobs]) delta = _add_datetimes(diff) nobs -= 1 # after diff if delta == timedelta(nobs): #greedily assume 'D' return 'D' elif delta == timedelta(nobs + 2): return 'B' elif delta == timedelta(7*nobs): return 'W' elif delta >= timedelta(28*nobs) and delta <= timedelta(31*nobs): return 'M' elif delta >= timedelta(90*nobs) and delta <= timedelta(92*nobs): return 'Q' elif delta >= timedelta(365 * nobs) and delta <= timedelta(366 * nobs): return 'A' else: return
def _infer_freq(dates): maybe_freqstr = getattr(dates, 'freqstr', None) if maybe_freqstr is not None: return maybe_freqstr # might be a DatetimeIndex elif hasattr(dates, "inferred_freq"): # see pandas/6637 and others return dates.inferred_freq # try to infer from a regular index or something from pandas.tseries.api import infer_freq freq = infer_freq(dates) return freq
def pandas_to_series_spec(x): # from statsmodels.tools.data import _check_period_index # check_period_index(x) if hasattr(x, 'columns'): # convert to series if len(x.columns) > 1: raise ValueError("Does not handle DataFrame with more than one " "column") x = x[x.columns[0]] data = "({0})".format("\n".join(map(str, x.values.tolist()))) # get periodicity # get start / first data # give it a title try: period = _freq_to_period[x.index.freqstr] except (AttributeError, ValueError): from pandas.tseries.api import infer_freq period = _freq_to_period[infer_freq(x.index)] start_date = x.index[0] if period == 12: year, stperiod = start_date.year, start_date.month elif period == 4: year, stperiod = start_date.year, start_date.quarter else: # pragma: no cover raise ValueError("Only monthly and quarterly periods are supported." " Please report or send a pull request if you want " "this extended.") if hasattr(x, 'name'): name = x.name or "Unnamed Series" else: name = 'Unnamed Series' series_spec = SeriesSpec(data=data, name=name, period=period, title=name, start="{0}.{1}".format(year, stperiod)) return series_spec