Pandas: pandas.infer_freq рдФрд░ pandas.to_timedelta . рдХреЗ рдмреАрдЪ рдЕрд╕рдВрдЧрддрд┐

рдХреЛ рдирд┐рд░реНрдорд┐рдд 11 рдЕрдХреНрддреВре░ 2016  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: pandas-dev/pandas

рдореБрджреНрджреЗ рдХрд╛ рдПрдХ рдЫреЛрдЯрд╛, рдкреВрд░рд╛ рдЙрджрд╛рд╣рд░рдг

pd.infer_freq рдХрд╛ рдЖрдЙрдЯрдкреБрдЯ "D" рд╣реИ рдЬрдмрдХрд┐ pd.to_timedelta "1D" рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рдХрд░рддрд╛ рд╣реИред

import pandas as pd
dates = pd.date_range(start='2016-10-01', end='2016-10-10', freq='1D')
freq = pd.infer_freq(dates)
delta = pd.to_timedelta(freq)

рдЕрдкреЗрдХреНрд╖рд┐рдд рдЙрддреНрдкрд╛рджрди

рдбреЗрд▓реНрдЯрд╛ = рдЯрд╛рдЗрдордбреЗрд▓реНрдЯрд╛ ('1 рджрд┐рди 00:00:00')

>>> import pandas as pd
>>> dates = pd.date_range(start='2016-10-01', end='2016-10-10', freq='1D')
>>> dates
DatetimeIndex(['2016-10-01', '2016-10-02', '2016-10-03', '2016-10-04',
               '2016-10-05', '2016-10-06', '2016-10-07', '2016-10-08',
               '2016-10-09', '2016-10-10'],
              dtype='datetime64[ns]', freq='D')
>>> freq = pd.infer_freq(dates)
>>> freq
'D'
>>> delta = pd.to_timedelta(freq)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/iivanov/anaconda2/lib/python2.7/site-packages/pandas/util/decorators.py", line 91, in wrapper
    return func(*args, **kwargs)
  File "/home/iivanov/anaconda2/lib/python2.7/site-packages/pandas/tseries/timedeltas.py", line 102, in to_timedelta
    box=box, errors=errors)
  File "/home/iivanov/anaconda2/lib/python2.7/site-packages/pandas/tseries/timedeltas.py", line 148, in _coerce_scalar_to_timedelta_type
    result = tslib.convert_to_timedelta(r, unit, errors)
  File "pandas/tslib.pyx", line 2941, in pandas.tslib.convert_to_timedelta (pandas/tslib.c:52631)
  File "pandas/tslib.pyx", line 3256, in pandas.tslib.convert_to_timedelta64 (pandas/tslib.c:56028)
  File "pandas/tslib.pyx", line 3188, in pandas.tslib.parse_timedelta_string (pandas/tslib.c:54877)
ValueError: unit abbreviation w/o a number

pd.show_versions() рдХрд╛ рдЖрдЙрдЯрдкреБрдЯ

рд╕реНрдерд╛рдкрд┐рдд рд╕рдВрд╕реНрдХрд░рдг

рдкреНрд░рддрд┐рдмрджреНрдз: рдХреЛрдИ рдирд╣реАрдВ
рдЕрдЬрдЧрд░: 2.7.12.рдЕрдВрддрд┐рдо.0
рдкрд╛рдпрдерди-рдмрд┐рдЯреНрд╕: 64
рдУрдПрд╕: рд▓рд┐рдирдХреНрд╕
рдУрдПрд╕-рд░рд┐рд▓реАрдЬрд╝: 4.4.0-42-рдЬреЗрдиреЗрд░рд┐рдХ
рдорд╢реАрди: x86_64
рдкреНрд░реЛрд╕реЗрд╕рд░: x86_64
рдмрд╛рдЗрдЯрдСрд░реНрдбрд░: рдереЛрдбрд╝рд╛
LC_ALL: рдХреЛрдИ рдирд╣реАрдВ
рднрд╛рд╖рд╛: hi_US.UTF-8

рдкрд╛рдВрдбрд╛: 0.18.1
рдирд╛рдХ: 1.3.7
рдкрд┐рдк: 8.1.2
рд╕реЗрдЯрдЕрдкрдЯреВрд▓: 26.1.1
рд╕рд╛рдЗрдерди: 0.24.1
рд╕реБрдиреНрди: 1.11.1
scipy: 0.18.0
statsmodels: реж.рем.рез
xarray: рдХреЛрдИ рдирд╣реАрдВ
рдЖрдИрдкреАрдерди: 5.1.0
рд╕реНрдлрд┐рдВрдХреНрд╕: 1.4.1
рдкрд╛рддреНрд╕реА: 0.4.1
рдбреЗрдЯреБрдЯрд┐рд▓: 2.5.3
рдкрд╛рдЗрдЯреНрдЬрд╝: реирежрезрем.рем.рез
рдмреНрд▓реЙрд╕реНрдХ: рдХреЛрдИ рдирд╣реАрдВ
рдЕрдбрд╝рдЪрди: 1.1.0
рдЯреЗрдмрд▓: 3.2.3.1
рд╕рдВрдЦреНрдпрд╛: 2.6.1
рдореИрдЯрдкреНрд▓реЛрдЯрд▓рд┐рдм: 1.5.1
рдУрдкрдирдкреАрдПрдХреНрд╕рдПрд▓: 2.3.2
xlrd: 1.0.0
xlwt: 1.1.2
xlsxwriter: 0.9.2
рдПрд▓рдПрдХреНрд╕рдПрдордПрд▓: 3.6.4
рдмреАрдПрд╕4: 4.4.1
html5lib: рдХреЛрдИ рдирд╣реАрдВ
httplib2: рдХреЛрдИ рдирд╣реАрдВ
рдЖрд╡реЗрджрдХ: рдХреЛрдИ рдирд╣реАрдВ
sqlalchemy: 1.0.13
pymysql: рдХреЛрдИ рдирд╣реАрдВ
psycopg2: рдХреЛрдИ рдирд╣реАрдВ
рдЬрд┐рдиреНрдЬрд╛ реи: реи.рео
рдмреЛрдЯреЛ: 2.40.0
pandas_datareader: рдХреЛрдИ рдирд╣реАрдВ

Frequency Usage Question

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

pd.to_timedelta рдХреЗрд╡рд▓ рдирд┐рд╢реНрдЪрд┐рдд рдбреЗрд▓реНрдЯрд╛ (рдореВрд▓ рд░реВрдк рд╕реЗ рджрд┐рди рдФрд░ рдмреЗрд╣рддрд░) рдХреЛ рд╕рдВрднрд╛рд▓ рд╕рдХрддрд╛ рд╣реИ - рдпрд╣ рдПрдХ рдПрдкреАрдЖрдИ рдЧрд╛рд░рдВрдЯреА рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЖрд╡реГрддреНрддрд┐ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рдбреЗрд▓реНрдЯрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд░реНрд╕ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреБрдЫ рдЖрд╡реГрддреНрддрд┐рдпреЛрдВ рдХреЛ рдЯрд╛рдЗрдордбреЗрд▓реНрдЯрд╛ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

In [254]: dates = pd.bdate_range(start='2014-01-01', periods=10)

In [255]: pd.infer_freq(dates)
Out[255]: 'B'

рдпрджрд┐ рдЖрдкрдХреЛ рдЖрд╡реГрддреНрддрд┐ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ DateOffset рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬреЛ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдпрд╛ рд╕рд╛рдкреЗрдХреНрд╖ рдбреЗрд▓реНрдЯрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рддреЛ to_offset рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред

In [253]: from pandas.tseries.frequencies import to_offset

In [256]: to_offset('D')
Out[256]: <Day>

In [257]: to_offset('2D')
Out[257]: <2 * Days>

In [258]: to_offset('B')
Out[258]: <BusinessDay>

рд╕рднреА 3 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

pd.to_timedelta рдХреЗрд╡рд▓ рдирд┐рд╢реНрдЪрд┐рдд рдбреЗрд▓реНрдЯрд╛ (рдореВрд▓ рд░реВрдк рд╕реЗ рджрд┐рди рдФрд░ рдмреЗрд╣рддрд░) рдХреЛ рд╕рдВрднрд╛рд▓ рд╕рдХрддрд╛ рд╣реИ - рдпрд╣ рдПрдХ рдПрдкреАрдЖрдИ рдЧрд╛рд░рдВрдЯреА рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЖрд╡реГрддреНрддрд┐ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рдбреЗрд▓реНрдЯрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд░реНрд╕ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреБрдЫ рдЖрд╡реГрддреНрддрд┐рдпреЛрдВ рдХреЛ рдЯрд╛рдЗрдордбреЗрд▓реНрдЯрд╛ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

In [254]: dates = pd.bdate_range(start='2014-01-01', periods=10)

In [255]: pd.infer_freq(dates)
Out[255]: 'B'

рдпрджрд┐ рдЖрдкрдХреЛ рдЖрд╡реГрддреНрддрд┐ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ DateOffset рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬреЛ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдпрд╛ рд╕рд╛рдкреЗрдХреНрд╖ рдбреЗрд▓реНрдЯрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рддреЛ to_offset рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред

In [253]: from pandas.tseries.frequencies import to_offset

In [256]: to_offset('D')
Out[256]: <Day>

In [257]: to_offset('2D')
Out[257]: <2 * Days>

In [258]: to_offset('B')
Out[258]: <BusinessDay>

BTW, рдЖрдк рдЗрд╕ рддрд░рд╣ рдХреЗ рдСрдлрд╕реЗрдЯ рдХреЛ рдХреБрдЫ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдЯрд╛рдЗрдордбреЗрд▓реНрдЯрд╛ рдореЗрдВ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ:

In [19]: pd.to_timedelta(to_offset('D'))
Out[19]: Timedelta('1 days 00:00:00')

In [20]: pd.to_timedelta(to_offset('B'))
...
ValueError: Invalid type for timedelta scalar: <class 'pandas.tseries.offsets.BusinessDay'>

(рдпрд╛ рд╡реИрдХрд▓реНрдкрд┐рдХ to_offset('D').delta )
рдЬреИрд╕рд╛ рдХрд┐ рдКрдкрд░ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ @ рдХреНрд░рд┐рд╕-рдмреА 1, рд╕рд╛рдкреЗрдХреНрд╖ рдСрдлрд╕реЗрдЯ рдХреЛ рдЯрд╛рдЗрдордбреЗрд▓реНрдЯрд╛ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рднреА рддреНрд░реБрдЯрд┐рдпрд╛рдВ рд╣реИрдВред

рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж! рдпрд╣ рдЕрдм рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

mfmain picture mfmain  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

matthiasroder picture matthiasroder  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

nathanielatom picture nathanielatom  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

ericdf picture ericdf  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

venuktan picture venuktan  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ