/ lib / pandas / tseries / frequencies.pyc
frequencies.pyc
  1  o

  2  e��cL�@s�ddlmZddlZddlZddlmZddlmZm	Z	m
  3  Z
  4  mZddlm
Z
mZmZmZmZddlmZmZddlmZmZmZmZmZddlmZdd	lmZdd
  5  lm Z ddl!m"Z"ddl#m$Z$m%Z%m&Z&dd
l'm(Z(m)Z)ddl*m+Z+idd�dd�dd�dd�dd�dd�dd�dd�dd�dd�dd�dd�dd�dd�d d �d!d!�d"d"�d#d$ddd%dddddd&�
  6  �Z,gd'�Z-e-D]Z.eD]Z/e.�d(e/��Z0e,e.e,e0<q�q�d)D]Z.eD]
Z/e.�d(e/��Z1e1e,e1<q�q�e
D]Z2d*e2��e,d*e2��<q�d[d/d0�Z3d\d3d4�Z4d]d^d8d9�Z5Gd:d;�d;�Z6Gd<d=�d=e6�Z7d_d@dA�Z8d`dEdF�Z9dadGdH�Z:dadIdJ�Z;dbdKdL�Z<dcdOdP�Z=dddRdS�Z>dddTdU�Z?dddVdW�Z@dddXdY�ZAgdZ�ZBdS)e�)�annotationsN)�
unique_deltas)�	Timestamp�get_unit_from_dtype�periods_per_day�tz_convert_from_utc)�DAYS�
MONTH_ALIASES�
MONTH_NUMBERS�MONTHS�int_to_weekday)�build_field_sarray�month_position_check)�
  7  BaseOffset�
  8  DateOffset�Day�_get_offset�	to_offset)�get_rule_month)�npt)�cache_readonly)�find_stack_level)�is_datetime64_dtype�is_period_dtype�is_timedelta64_dtype)�ABCIndex�	ABCSeries)�unique�WEEKDAY�DZEOM�M�BM�BQS�Q�QS�BQ�BA�A�AS�BAS�MS�C�B�T�S�L�U�N�H�W)
  9  r1r2r#r'r3r �Y�BY�YS�BYS)	r$r%r"r6r(r5r&r7r)�-)r'r#�W-�
 10  offset_str�str�return�
 11  str | NonecCst�|d�S)z4
 12      Alias to closest period strings BQ->Q etc.
 13      N)�_offset_to_period_map�get)r:�r@��C:\Users\Jacks.GUTTSPC\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\pandas\tseries\frequencies.py�get_period_aliasb�rB�namercCstjdtt�d�t|�S)z�
 14      Return DateOffset object associated with rule name.
 15  
 16      .. deprecated:: 1.0.0
 17  
 18      Examples
 19      --------
 20      get_offset('EOM') --> BMonthEnd(1)
 21      zXget_offset is deprecated and will be removed in a future version, use to_offset instead.��
 22  stacklevel)�warnings�warn�
FutureWarningrr)rDr@r@rA�
 23  get_offsetis
 24  �rJTrH�boolcCs�ddlm}m}m}m}t|t�r+|j}t|�s)t	|�s)|j
 25  tks)td|j
 26  ����|}t
|d�s1nt|j
 27  �r:td��t	|j
 28  �rIt||d�}|��St||�rft||�sft|||f�rctdt|�����|j}t||�so||�}t||d�}|��S)a}
 29      Infer the most likely frequency given the input index.
 30  
 31      Parameters
 32      ----------
 33      index : DatetimeIndex or TimedeltaIndex
 34        If passed a Series will use the values of the series (NOT THE INDEX).
 35      warn : bool, default True
 36        .. deprecated:: 1.5.0
 37  
 38      Returns
 39      -------
 40      str or None
 41          None if no discernible frequency.
 42  
 43      Raises
 44      ------
 45      TypeError
 46          If the index is not datetime-like.
 47      ValueError
 48          If there are fewer than three values.
 49  
 50      Examples
 51      --------
 52      >>> idx = pd.date_range(start='2020/12/01', end='2020/12/30', periods=30)
 53      >>> pd.infer_freq(idx)
 54      'D'
 55      r)�
DatetimeIndex�Float64Index�Index�
 56  Int64Indexz>cannot infer freq from a non-convertible dtype on a Series of �dtypezJPeriodIndex given. Check the `freq` attribute instead of using infer_freq.)rHz4cannot infer freq from a non-convertible index type )�pandas.core.apirLrMrNrO�
 57  isinstancer�_valuesrrrP�object�	TypeError�hasattrr�_TimedeltaFrequencyInferer�get_freq�type�_FrequencyInferer)�indexrHrLrMrNrO�valuesZinfererr@r@rA�
 58  infer_freq�sB
 59  ��
 60  ��
 61  
 62  �
 63  �
 64  r]c@seZdZdZd5d6dd�Zed7d
 65  d��Zed7dd
��Zed8dd��Zed8dd��Z	d9dd�Z
 66  ed:dd��Zed:dd��Zed;dd��Z
ed<dd��Zd9d d!�Zed7d"d#��Zed7d$d%��Zd9d&d'�Zd9d(d)�Zd9d*d+�Zd9d,d-�Zd9d.d/�Zd8d0d1�Zd9d2d3�Zd4S)=rZz8
 67      Not sure if I can avoid the state machine here
 68      TrHrKr<�NonecCs�||_|j|_t|t�rt|jjj�|_	nt|jj�|_	t
 69  |d�r.|jdur.t|j|j�|_|dur;t
jdtt�d�||_t|�dkrHtd��|jjpO|jj|_dS)N�tzTzSwarn is deprecated (and never implemented) and will be removed in a future version.rE�z(Need at least 3 dates to infer frequency)r[�asi8�i8valuesrRrr�_data�_ndarrayrP�_resorVr_rrGrHrIr�len�
 70  ValueError�_is_monotonic_increasing�_is_monotonic_decreasing�is_monotonic)�selfr[rHr@r@rA�__init__�s*
 71  �
 72  
 73  ��z_FrequencyInferer.__init__�npt.NDArray[np.int64]cCs
 74  t|j�S�N)rrb�rkr@r@rA�deltas�s
 75  z_FrequencyInferer.deltascCst|jj�Srn)rr[raror@r@rA�deltas_asi8�rCz_FrequencyInferer.deltas_asi8cC�t|j�dkS�N�)rfrpror@r@rA�	is_unique�z_FrequencyInferer.is_uniquecCrrrs)rfrqror@r@rA�is_unique_asi8rvz _FrequencyInferer.is_unique_asi8r=cCs|jr|jjs	dS|jd}t|j�}|rt||�r|��S|jddgddggd�fvr.dS|j	s3dS|j
 76  d}|d}|d	}|d	}t||�rPtd
 77  ||�St||�r\td||�St||�rhtd||�St||d
�rxtd||d
�St||d�r�td||d�Std|�S)z�
 78          Find the appropriate frequency string to describe the inferred
 79          frequency of self.i8values
 80  
 81          Returns
 82          -------
 83          str or None
 84          Nrrt��A)rtrxryZBH��<r2r-r.i�r/i@Br0r1)rjr[�
 85  _is_uniquerprre�_is_multiple�_infer_daily_rule�hour_deltasrwrq�_maybe_add_count)rk�delta�ppd�pph�ppm�ppsr@r@rArX
 86  s2	
 87  
 88  
 89  
 90  
 91  
 92  
 93  z_FrequencyInferer.get_freq�	list[int]cst|j���fdd�|jD�S)Nc�g|]}|��qSr@r@��.0�x�r�r@rA�
 94  <listcomp>?�z0_FrequencyInferer.day_deltas.<locals>.<listcomp>�rrerpror@r�rA�
 95  day_deltas<s
 96  z_FrequencyInferer.day_deltascs"t|j�d��fdd�|jD�S)Nrzcr�r@r@r��r�r@rAr�Dr�z1_FrequencyInferer.hour_deltas.<locals>.<listcomp>r�ror@r�rArAsz_FrequencyInferer.hour_deltas�
 97  np.ndarraycCst|j|jd�S)N)�reso)r
rbreror@r@rA�fieldsFsz_FrequencyInferer.fieldsrcCst|jd�S�Nr)rrbror@r@rA�	rep_stampJrvz_FrequencyInferer.rep_stampcCst|j|jj�Srn)rr�r[�	dayofweekror@r@rArNsz&_FrequencyInferer.month_position_checkcCs&|jdd|jd}t|�d��S)Nr4�r �i8)r�r�astype)rkZnmonthsr@r@rA�mdiffsQsz_FrequencyInferer.mdiffscCst|jd�d��S)Nr4r�)rr�r�ror@r@rA�ydiffsVsz_FrequencyInferer.ydiffsc
 98  Cs�|��}|r|jd}t|jj}|�d|��}t||�S|��}|rF|jdd}dddd�}t||jjd}|�d|��}t||�S|��}|rTt||jd�S|j	r[|�
 99  �S|��radS|��}	|	ri|	SdS)	Nrr8r`r���
100  )r�rtr,)
�_get_annual_ruler�r	r��monthr��_get_quarterly_ruler��_get_monthly_ruleru�_get_daily_rule�_is_business_daily�
_get_wom_rule)
101  rkZannual_rule�nyearsr��aliasZquarterly_ruleZ	nquarters�mod_dictZmonthly_ruleZwom_ruler@r@rAr~Zs0
102  
103  
104  z#_FrequencyInferer._infer_daily_rulecCsTt|j�}|jd|}|ddkr%t|j��}d|��}t||d�Std|�S)Nr�r9r)rrerprr��weekdayr�)rkr��days�wdr�r@r@rAr�zs
105  
106  
107  z!_FrequencyInferer._get_daily_rulecCsTt|j�dkr	dStt|jd��dkrdS|��}|dur dSddddd��|�S)Nrtr r(r)r'r&��cs�bs�ce�be)rfr�rr�rr?�rkZ	pos_checkr@r@rAr��sz"_FrequencyInferer._get_annual_rulecCsPt|j�dkr	dS|jdddksdS|��}|durdSddddd��|�S)	Nrtrr`r$r"r#r%r��rfr�rr?r�r@r@rAr��sz%_FrequencyInferer._get_quarterly_rulecCs:t|j�dkr	dS|��}|durdSddddd��|�S)Nrtr*ZBMSr r!r�r�r�r@r@rAr��sz#_FrequencyInferer._get_monthly_rulecCs�|jddgkr	dS|jd��}t�|jj�}t|j�}t�||�}t�	|t�
108  |�d�}tt�|dk|dk@|dk|dk@|dk@B��S)Nrtr`Frr��)
r�r[r��np�diffrarre�floor_divide�mod�cumsumrK�all)rk�
first_weekday�shiftsr��weekdaysr@r@rAr��s
109  ���z$_FrequencyInferer._is_business_dailycCs~t|jj�}t|�dkrdSt|jjdd�}||dk}t|�dks*t|�dkr,dS|dd}t|d}d|�|��S)Nrtr�r�rzWOM-)rr[r�rf�dayr)rkr�Zweek_of_months�weekr�r@r@rAr��sz_FrequencyInferer._get_wom_ruleN�T)rHrKr<r^)r<rm�r<rK)r<r=)r<r�)r<r�)r<r)�__name__�
110  __module__�__qualname__�__doc__rlrrprqrurwrXr�rr�r�rr�r�r~r�r�r�r�r�r�r@r@r@rArZ�s@&
111  2
112  
113  
114   
115  
116  
117  
118  
119  rZc@seZdZdd�ZdS)rWcCs|jr|��SdSrn)rur�ror@r@rAr~�s�z,_TimedeltaFrequencyInferer._infer_daily_ruleN)r�r�r�r~r@r@r@rArW�srW�mult�intcCs||dkSr�r@)�usr�r@r@rAr}�sr}�base�count�floatcCs0|dkr|t|�ksJ�t|�}|�|��S|Srs)r�)r�r�r@r@rAr��s
120  r�cCs&|dus|dur
121  dSt|�}t|�}t|�r't|�r#tt|�t|��S|dvSt|�r/|dvSt|�r7|dvSt|�rI||ddddd	d
122  ddd
h
123  vS|dkrQ|dvS|dkrY|dvS|dkra|dvS|dkri|dvS|d	krq|dvS|d
124  kry|dvS|dkr�|dvS|dkr�|dvS|d
kr�|dvSdS)a
125      Returns True if downsampling is possible between source and target
126      frequencies
127  
128      Parameters
129      ----------
130      source : str or DateOffset
131          Frequency converting from
132      target : str or DateOffset
133          Frequency converting to
134  
135      Returns
136      -------
137      bool
138      NF�
139  r1r2rr r0r/r-r,r+r.�	r1r2rr0r/r-r,r+r.rr+r,r2r-r.r/r0r1>r1r2r0r/r-r,r.>r1r2r0r/r-r+r.>r1r2rr0r/r-r.�r1r2r0r/r-r.�r1r0r/r-r.�r1r.r0r/�r1r0r/�r1r0�r1)�_maybe_coerce_freq�
140  _is_annual�
_is_quarterly�_quarter_months_conformr�_is_monthly�
141  _is_weekly)�source�targetr@r@rA�is_subperiod�sF�r�cCsF|dus|dur
142  dSt|�}t|�}t|�r7t|�r"t|�t|�kSt|�r3t|�}t|�}t||�S|dvSt|�r?|dvSt|�rG|dvSt|�rY||ddddd	d
143  ddd
h
144  vS|dkra|dvS|dkri|dvS|dkrq|dvS|dkry|dvS|d	kr�|dvS|d
145  kr�|dvS|dkr�|dvS|dkr�|dvS|d
kr�|dvSdS)a
146      Returns True if upsampling is possible between source and target
147      frequencies
148  
149      Parameters
150      ----------
151      source : str or DateOffset
152          Frequency converting from
153      target : str or DateOffset
154          Frequency converting to
155  
156      Returns
157      -------
158      bool
159      NFr�r�rr+r,r2r-r.r/r0r1r�r�r�r�r�r�)r�r�rr�r�r�r�)r�r�ZsmonthZtmonthr@r@rA�is_superperiod%sJ
160  r�cCs$|dusJ�t|t�r|j}|��S)z�we might need to coerce a code to a rule_code
161      and uppercase it
162  
163      Parameters
164      ----------
165      source : str or DateOffset
166          Frequency converting from
167  
168      Returns
169      -------
170      str
171      N)rRr�	rule_code�upper)�coder@r@rAr�_s
172  r�r�r�cCs t|}t|}|d|dkS)Nr`)r
173  )r�r�Zsnum�tnumr@r@rAr�rsr��rulecC�|��}|dkp|�d�S)Nr'zA-�r��
174  startswith�r�r@r@rAr�x�r�cCs$|��}|dkp|�d�p|�d�S)Nr#zQ-r%r�r�r@r@rAr�}sr�cCs|��}|dkp|dkS)Nr r!)r�r�r@r@rAr��sr�cCr�)Nr3r9r�r�r@r@rAr��r�r�)rrJrBr]r�r�r)r:r;r<r=)rDr;r<rr�)rHrKr<r=)r�r�r<rK)r�r;r�r�r<r;r�)r<r;)r�r;r�r;r<rK)r�r;r<rK)C�
175  __future__rrG�numpyr��pandas._libs.algosr�pandas._libs.tslibsrrrrZpandas._libs.tslibs.ccalendarrr	r
176  rr�pandas._libs.tslibs.fieldsr
r�pandas._libs.tslibs.offsetsrrrrr�pandas._libs.tslibs.parsingr�pandas._typingr�pandas.util._decoratorsr�pandas.util._exceptionsr�pandas.core.dtypes.commonrrr�pandas.core.dtypes.genericrr�pandas.core.algorithmsrr>�_need_suffix�_prefix�_m�key�_alias�_drBrJr]rZrWr}r�r�r�r�r�r�r�r�r��__all__r@r@r@rA�<module>s���������	�
177  ���
�������
178  �
179  
180  M
181  
182  
183  
184  8
185  :
186  
187  
188  
189  
190