Pandas: pandas.infer_freq와 pandas.to_timedelta κ°„μ˜ λΉ„ ν˜Έν™˜μ„±

에 λ§Œλ“  2016λ…„ 10μ›” 11일  Β·  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)

μ˜ˆμƒ 좜λ ₯

delta = Timedelta ( '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.final.0
파이썬 λΉ„νŠΈ : 64
운영체제 : Linux
OS 릴리슀 : 4.4.0-42- 일반
컴퓨터 : x86_64
ν”„λ‘œμ„Έμ„œ : x86_64
byteorder : 쑰금
LC_ALL : μ—†μŒ
LANG : en_US.UTF-8

νŒλ‹€ : 0.18.1
μ½” : 1.3.7
핍 : 8.1.2
setuptools : 26.1.1
사이 톀 : 0.24.1
numpy : 1.11.1
scipy : 0.18.0
톡계 λͺ¨λΈ : 0.6.1
xarray : μ—†μŒ
IPython : 5.1.0
μŠ€ν•‘ν¬μŠ€ : 1.4.1
νŒ¨μ‹œ : 0.4.1
dateutil : 2.5.3
pytz : 2016.6.1
blosc : μ—†μŒ
병λͺ© ν˜„μƒ : 1.1.0
ν‘œ : 3.2.3.1
numexpr : 2.6.1
matplotlib : 1.5.1
openpyxl : 2.3.2
xlrd : 1.0.0
xlwt : 1.1.2
xlsxwriter : 0.9.2
lxml : 3.6.4
bs4 : 4.4.1
html5lib : μ—†μŒ
httplib2 : μ—†μŒ
apiclient : μ—†μŒ
sqlalchemy : 1.0.13
pymysql : μ—†μŒ
psycopg2 : μ—†μŒ
jinja2 : 2.8
boto : 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 )
μœ„μ—μ„œ μ–ΈκΈ‰ν–ˆλ“―μ΄ @ chris-b1은 μƒλŒ€ μ˜€ν”„μ…‹μ„ νƒ€μž„ λΈνƒ€λ‘œ λ³€ν™˜ ν•  수 μ—†μœΌλ―€λ‘œ 였λ₯˜λ„ λ°œμƒν•©λ‹ˆλ‹€.

의견 μ£Όμ…”μ„œ κ°μ‚¬ν•©λ‹ˆλ‹€! 이제 λ§μ΄λ©λ‹ˆλ‹€.

이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰