o
    d                     @   s  d dl mZ d dlmZ d dlZd dlmZ d dlZd dl	Z	d dl
mZ d dlm  mZ d dlmZ d dlZd dlmZmZmZmZmZmZmZmZmZmZ d dlmZ  d dl!m"Z"m#Z# 					
			d-ddZ$G dd dZ%G dd dZ&G dd dZ'dd Z(dd Z)e	j*+dg de	j*+dddgdd Z,e	j*+d ed!ej-gd"d# Z.d$d% Z/e	j*+dg d&e	j*+dd	d
gd'd( Z0e	j*+d)g d*d+d, Z1dS ).    )	timedelta)DecimalN)tzlocal)is_platform_windowsis_categorical_dtype)
Categorical	DataFrameIndexSeries	Timestamp
date_rangeisnanotnato_datetimeto_timedelta)
algorithmsnanopsTFh㈵>:0yE>c	                    s  t || }	|rctdtdddi}
td t |
|  }W d   n1 s'w   Y  t|ts3J tt|
|
d< td t |
|  }W d   n1 sQw   Y  t|ts]J t|scJ |r fdd}t	 |}|	d	d
d}|	dd
d}tj
||||||d tj
||j|dd||d n }|	d	d}|	dd}tj
||||||d | dv r|j|dd}tj
||d
||d |r|jj}||jksJ ||jksJ tjtdd |	dd W d   n1 sw   Y  |r=|tj }t || d	d}t || dd}| dv r?| dkrdnd	}t||j|jd}t
|| t||j|jd}t
|| dS dS dS )a  
    Check that operator opname works as advertised on frame

    Parameters
    ----------
    opname : str
        Name of the operator to test on frame
    alternative : function
        Function that opname is tested against; i.e. "frame.opname()" should
        equal "alternative(frame)".
    frame : DataFrame
        The object that the tests are executed on
    has_skipna : bool, default True
        Whether the method "opname" has the kwarg "skip_na"
    check_dtype : bool, default True
        Whether the dtypes of the result of "frame.opname()" and
        "alternative(frame)" should be checked.
    check_dates : bool, default false
        Whether opname should be tested on a Datetime Series
    rtol : float, default 1e-5
        Relative tolerance.
    atol : float, default 1e-8
        Absolute tolerance.
    skipna_alternative : function, default None
        NaN-safe version of alternative
    bz1/1/2001   periodsNac                    
    | j S Nvaluesxalternative V/app/.heroku/python/lib/python3.10/site-packages/pandas/tests/frame/test_reductions.pywrapperW      
z$assert_stat_op_calc.<locals>.wrapperr   Faxisskipna   )check_dtypertolatolr(   )r,   r-   )sumprodNo axis named 2matchr0   indexdtype)getattrr	   r   tmassert_produces_warning
isinstancer   rangelenZ_make_skipna_wrapperassert_series_equalapplyr   r6   pytestraises
ValueErrornpNaNr5   )opnamer"   frame
has_skipnar+   check_datesr,   r-   skipna_alternativefdfresultr%   skipna_wrapperresult0result1expectedZ	lcd_dtypeall_nar0r1unitr#   r!   r$   assert_stat_op_calc"   sz   
%




rT   c                   @   s
  e Zd Zejdddgejdddddd	d
dddddejdejdejdejdgdd Z	ejdddgejdddddd	d
ddddejdejdejdejdgdd Z
dd Zejdd Zdd Zejdg dejdeg d g d!g d"d#g d$d%d&eejd'gejd(gejd)gd*ed+gd,d- Zejd.g d/d0d1 Zd2d3 Zd4d5 Zejd6d7d8gd9d: Zejd6d7d8gd;d< Zd=d> Zd?d@ ZejdAg dBdCdD ZdEdF ZejdGdHdIgdJgdKgdLgedLgdLgdMedNgedOgdPfdQdIgdJgejgejejged+eejgdLgdMe j!gee j!gdPfdHdRdSejejgdRdSejejgdejejejgedLejejejgdLgdMeg dTeg dUg dVdWfdQdRdSejejgdRdSejejgdejejejgeejdLejejgdLgdMeg dXeg dYg dVdWfgdZd[ Z"d\d] Z#d^d_ Z$d`da Z%dbdc Z&ejdddedfe j!dggd)e j!g gdhdi Z'djdk Z(ejdle)*de)+de)j,de-d+e)j,de.d+e)j+ddmdne)/dgdodp Z0ejdqdrdsgejdtg dudvdw Z1dxdy Z2dzd{ Z3ejd|g d}ejd~dd'dddej4gfdd(dej4ej4ej4gfddQdddej4gfgdd Z5ejd|g d}ejd~dd'dddej4gfdd(dej4ej4ej4gfddQdddej4gfgdd Z6dd Z7dd Z8dd Z9dd Z:dd Z;dd Z<dd Z=dd Z>dd Z?ejddHdQgejdddgdd Z@ejdtdHdQgdd ZAdd ZBejddHdQgejdddgdd ZCejdtdHdQgdd ZDdd ZEdd ZFejdddd)gfdddgfgdd ZGdd ZHejdddgejdddgejddQdHgdd ZIejdddgejdddgdd ZJejdddgdd ZKdd ZLejdddgejdddgejddHdQgdd ZMejNddd ZOddĄ ZPejdg ejQi dQfejRi dHfejQdg idQfejRdg idHfejQddQdQgidQfejRddQdQgidQfejQddHdQgidHfejRddHdQgidQfejQddHdHgidHfejRddHdHgidHfejQdQgdQgdǜdQfejRdQgdQgdǜdQfejQdQdQgdQdHgdǜdHfejRdQdQgdQdHgdǜdQfejRdeSddKgdd+idQfejQdeSddKgdd+idHfejRdeSddge-d+idQfejQdeSddge-d+idHfeejRdeSddgdd+idQeejRdeSddgdd+idQeejQdeSddgdd+idHeejQdeSddgdd+idHeejRdeSdd'gdd+idHeejRdeSdd'gdd+idHeejQdeSdd'gdd+idHeejQdeSdd'gdd+idHeejRdeSddgdd+idQeejQdeSddgdd+idHeejRdeSdd'gdd+idHeejQdeSdd'gdd+idHejRdeSddgdd+idHfejQdeSddgdd+idQfejRdeSdd'gdd+idHfejQdeSdd'gdd+idQfeejReSddgdd+eSddgdd+dǜdHddф ZTddӄ ZUddՄ ZVddׄ ZWd7S )TestDataFrameAnalyticsr(   r   r*   rD   countr/   meanproductmedianminmaxnuniquevarstdsemskew)Zmarkskurtc                 C   s   |dv r|dks|dv rt |||d n&dg d}tjt|d t |||d W d    n1 s6w   Y  |dkrJt |||d	d
 d S d S )N)r/   rZ   r[   r   )rV   r\   r.   |)Could not convertcould not convert"can't multiply sequence by non-intunsupported operand type"not supported between instances ofr2   r\   Tr(   numeric_only)r7   joinr?   r@   	TypeError)selffloat_string_framer(   rD   msgr#   r#   r$   #test_stat_op_api_float_string_frame   s   	z:TestDataFrameAnalytics.test_stat_op_api_float_string_framec                 C   s   t |||dd d S )NFrh   r7   )rl   float_framer(   rD   r#   r#   r$   test_stat_op_api_float_frame   s   z3TestDataFrameAnalytics.test_stat_op_api_float_framec                 C   s   dd }dd }dd }dd }d	d
 }t d||dddd t dtj|dddd t dtj|tjd t dtj|dd t dtj|tjd t d|| t d|| t d|| t d||dddd d S )Nc                 S   s   t |  S r   )r   r/   sr#   r#   r$   rV      s   z7TestDataFrameAnalytics.test_stat_op_calc.<locals>.countc                 S   s   t t|  S r   )r<   r   Zunique1ddropnars   r#   r#   r$   r\      s   z9TestDataFrameAnalytics.test_stat_op_calc.<locals>.nuniquec                 S      t j| ddS Nr*   Zddof)rB   r]   r   r#   r#   r$   r]         z5TestDataFrameAnalytics.test_stat_op_calc.<locals>.varc                 S   rv   rw   )rB   r^   r   r#   r#   r$   r^      ry   z5TestDataFrameAnalytics.test_stat_op_calc.<locals>.stdc                 S   s   t j| ddt t|  S rw   )rB   r^   sqrtr<   r   r#   r#   r$   r_      s   z5TestDataFrameAnalytics.test_stat_op_calc.<locals>.semr\   FT)rF   r+   rG   r/   float32gMbP?)r+   r,   )rH   rW   rG   rX   r]   r^   r_   rV   )rT   rB   r/   astypeZnansumrW   r0   Znanprod)rl   float_frame_with_naZmixed_float_framerV   r\   r]   r^   r_   r#   r#   r$   test_stat_op_calc   sL   
z(TestDataFrameAnalytics.test_stat_op_calcc                 C   s,   dd }dd }t d|| t d|| d S )Nc                 S   *   ddl m} t| dk rtjS || ddS )Nr   )r`      Fbias)scipy.statsr`   r<   rB   nan)r    r`   r#   r#   r$   skewness
     zHTestDataFrameAnalytics.test_stat_op_calc_skew_kurtosis.<locals>.skewnessc                 S   r   )Nr   )kurtosis   Fr   )r   r   r<   rB   r   )r    r   r#   r#   r$   ra     r   zDTestDataFrameAnalytics.test_stat_op_calc_skew_kurtosis.<locals>.kurtr`   ra   rT   )rl   r~   r   ra   r#   r#   r$   test_stat_op_calc_skew_kurtosis  s   z6TestDataFrameAnalytics.test_stat_op_calc_skew_kurtosisc                 C   s.   dd }t d||dd t d||ddd d S )Nc                 S   s   t |  r	tjS t| S r   )r   anyrB   r   rY   r   r#   r#   r$   r%     s   
z3TestDataFrameAnalytics.test_median.<locals>.wrapperrY   Tr|   F)r+   rG   r   )rl   r~   	int_framer%   r#   r#   r$   test_median  s
   

z"TestDataFrameAnalytics.test_medianmethod)r/   rW   r0   r]   r^   r`   rZ   r[   rJ   )gȃw@Ba@gCVZg
?Z.F?)r   r           )g94c4?g@}jX?gNr   r   cfoobarbazOr4   r   r   r   r   r*   r   r6   c                 C   sN   |j jtjks	J t|||d}t|d||dt}t|| d S )Nr.   Zf8)	r   r6   rB   Zobject_r7   r}   objectr8   r=   )rl   r   rJ   r(   rK   rO   r#   r#   r$   %test_stat_operators_attempt_obj_array&  s   z<TestDataFrameAnalytics.test_stat_operators_attempt_obj_arrayop)rW   r^   r]   r`   ra   r_   c              	   C   s   t g dg dg dd}dg d}tjt|d t||  W d    n1 s-w   Y  tdd	5 dg d}tjt|d t||  W d    n1 sXw   Y  W d    d S W d    d S 1 spw   Y  d S )
Nr*   r   r   r   )      ?       @g      @      @r   r   r   d)intfloatstrrb   )rc   rd   re   r2   use_bottleneckF)r	   rj   r?   r@   rk   r7   pdoption_context)rl   r   rJ   rn   r#   r#   r$   test_mixed_opsG  s,   "z%TestDataFrameAnalytics.test_mixed_opsc                 C   sr   t g dg dg dd}|jg dd |jdd}t|jtjg dtd	 |j	jd
d}t
|| d S )N)TTFFF)
         (   2   )r   r   r   r   e)Z	bool_dataZint_dataZstring_datacolumnsr   r.   )r      Zabcder   r*   )r	   reindexr/   r8   Zassert_numpy_array_equalr   rB   arrayr   Tr=   )rl   rJ   testZaltr#   r#   r$   test_reduce_mixed_framef  s   z.TestDataFrameAnalytics.test_reduce_mixed_framec                 C   s   t g dg ddtjdgd}t| tdddd t|jddtdddd t|jdd	tdddd
 t|jdddtdddd
 d S )Nr*   r*   r*   r*   r   r   r*   r   ABCr   Fru   r.   r   )r(   ru   )r	   rB   r   r8   r=   r\   r   rl   rJ   r#   r#   r$   test_nuniquew  s     z#TestDataFrameAnalytics.test_nuniquetzNUTCc                 C   sT   t ddgtd|dgd d}| }tdtd|dgddgd	}t|| d S )
Nr*   2000r   r   r   r   r   r   r   r5   r	   r   rW   r   r8   r=   rl   r   rJ   rK   rO   r#   r#   r$    test_mean_mixed_datetime_numeric  s    z7TestDataFrameAnalytics.test_mean_mixed_datetime_numericc                 C   sJ   t dtd|dgd i}| }ttd|dgdgd}t|| d S )Nr   r   r   r   r   r   r   r#   r#   r$   test_mean_includes_datetimes  s   z3TestDataFrameAnalytics.test_mean_includes_datetimesc                 C   s  dd t dddd t dddd t dddd t ddd	d t d
dddt dddd t ddd	d t dddd t dddd t ddg
}t|}tjtdd |  W d    n1 sbw   Y  |ddg  }tddgddgtd}t	|| d S )Nr   z628.00r   r*   z383.00r   z651.00z575.00r   z1114.00TESTz241.00z572.00z609.00z820.00   z1223.00rf   r2   r   r   g@gL@r4   )
r   r	   r?   r@   rk   rW   r   r   r8   r=   )rl   r   rJ   rK   rO   r#   r#   r$   test_mean_mixed_string_decimal  s$   
z5TestDataFrameAnalytics.test_mean_mixed_string_decimalc                 C   s   |j dd}|dd }t|| |jdd}|dd }t|| ttjddd}tj	|dd	}|dk 
 r@J td
d tj	|dd	}|dk 
 rVJ W d    d S 1 saw   Y  d S )Nr   rx   c                 S      | j ddS Nr   rx   )r^   r   r#   r#   r$   <lambda>      z5TestDataFrameAnalytics.test_var_std.<locals>.<lambda>c                 S   r   r   )r]   r   r#   r#   r$   r     r   r*     r   r   r.   r   F)r^   r>   r8   assert_almost_equalr]   rB   repeatrandomr   Znanvarr   r   r   rl   Zdatetime_framerK   rO   arrr#   r#   r$   test_var_std  s   "z#TestDataFrameAnalytics.test_var_stdmeth)r_   r]   r^   c                 C   s^  t tjddg dd}|dti}d|jd< t tjddg dd}|dti}d|jd< t||d	d
d}t|ddg |d	d}t	|| t||d	d
d}t|ddg |d	d}t	|| d}t
jt|d t||d	dd W d    n1 sw   Y  d}t
jt|d t||d	dd W d    d S 1 sw   Y  d S )Nr   r   r   r   r   100)r   r   r   r*   Trh   r   r   r.   z6unsupported operand type\(s\) for -: 'float' and 'str'r2   Fz&could not convert string to float: 'a')r	   rB   r   randnr}   r   locr7   r8   r=   r?   r@   rk   )rl   r   Zdf1df2rK   rO   rn   r#   r#   r$   test_numeric_only_flag  s(   

"z-TestDataFrameAnalytics.test_numeric_only_flagc                 C   s   |j dd}|dd }t|| ttjddd}tj|dd}|dk 	 r-J t
d	d
 tj|dd}|dk 	 rCJ W d    d S 1 sNw   Y  d S )Nr   rx   c                 S   s   | j ddtt|  S r   )r^   rB   rz   r<   r   r#   r#   r$   r     s    z1TestDataFrameAnalytics.test_sem.<locals>.<lambda>r   r   r   r.   r   F)r_   r>   r8   r   rB   r   r   r   Znansemr   r   r   r   r#   r#   r$   test_sem  s   "zTestDataFrameAnalytics.test_semzdropna, expectedT   g      $@r   r   )
categories2000-1-21 days)r   r   r   DEFGF   	   )r   NaTr   r   r   r   r   r   )r   r*   r   r   )HIJKLMNr   r   r   r   )r   r   r   r   c                 C   s   t g dddtjdgdtjtjtjgtjtjdtjgttjtjdtjgtg dtg dg dg d	ddtjtjgtdtjdtjgtg d
tg dtjdddd}|t|  j	|d}t |}t
|| d S )N)r   r         r   r   r*   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   r   int64r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r	   rB   r   r   r   r   arangesortedkeysmoder8   assert_frame_equal)rl   ru   rO   rJ   rK   r#   r#   r$   test_mode_dropna  s(   6



z'TestDataFrameAnalytics.test_mode_dropnac                 C   s   t dtjtjddgi}t ddtjgi}tt |jdd}|jddjdd}W d    n1 s5w   Y  t	|| d S )Nr   r   Fr   )ZbyT)Zdrop)
r	   rB   r   r8   r9   UserWarningr   Zsort_valuesZreset_indexr   )rl   rJ   rO   rK   r#   r#   r$   test_mode_sortwarning8  s   z,TestDataFrameAnalytics.test_mode_sortwarningc                 C   sD   t g ddgd}| }t g ddgtg tjdd}t|| d S )Nr   r   r   r   r   r5   )r	   r   r
   rB   r   r8   r   rl   rJ   rK   rO   r#   r#   r$   test_mode_empty_dfE  s   z)TestDataFrameAnalytics.test_mode_empty_dfc                 C   s  t tddddtddddtdtddd d	}t |d
 |d  |d
 |d  d}| }|d |jd ks<J |d |jd ksGJ |jdd}||jd k sXJ | }|d |jd ksgJ |d |jd ksrJ |jdd}||d
 k sJ | }t|}t |d
 |d  |d |d
  d}t	
|| t	
|| | }d|d< d|d< d|d< td|d< | }tttddttdddddtdg|jd}t	|| |jddd }tg d!g d"d}t	|| |d
dg d}ttddgd }t	|| |d
dg  }ttddtddgd
dgd}t	|| t td#dd$td%dd$d&}|d' |d(  |d)< |d) jd*ksUJ |d( |d'  |d+< |  |d) jd*ksmJ |d+ jd*kswJ d S ),Nz2012-1-1r   r   r   freqz2012-1-2Z20120101r   )minutessecondsr   r   r   r   r   r   )r   r   r*   )r   r   r.   )r   r   )r   r   r   r   r   Z20130101r   i1  r  )daysr   Trh   )r*   r*   r   r   Z20130102r   Z20130105)timetime2r  r
  Zoff1timedelta64[ns]Zoff2)r	   r   r   r   rZ   r   allr[   absr8   r   copyr   r   	Timedeltar   r=   r6   _consolidate_inplace)rl   rJ   ZdiffsrK   Zresult2rO   mixedr#   r#   r$   test_operators_timedelta64K  sz   &&

z1TestDataFrameAnalytics.test_operators_timedelta64c                 C   s   t jddd}t||ddd}t j|jd< |jdd	}t|d
  t jgd
dgdd}t|| |jddd}tt 	dgd t jt 	dg }t|| d S )Nz1 Dayr   r   r   Tr  )r  Fr)   r   r   r  r4   r*   r'   r   r   )
r   timedelta_ranger	   r   ilocr^   r   r8   r=   r  )rl   ZtdirJ   rK   rO   r#   r#   r$   !test_std_timedelta64_skipna_false  s   $z8TestDataFrameAnalytics.test_std_timedelta64_skipna_falser   z
2022-01-01z
2022-01-02z
2022-01-03c           	      C   s   |r|rt dd |D rtjjdd}|j| tdt|i}|j|d}|r3t dd |D r=t	dt
jidd	}nt	dd
idd	}t|| d S )Nc                 s       | ]}|t ju V  qd S r   r   r   .0valuer#   r#   r$   	<genexpr>      zFTestDataFrameAnalytics.test_std_datetime64_with_nat.<locals>.<genexpr>z=GH#51446: Incorrect type inference on NaT in reduction resultreasonr   r  c                 s   r  r   r  r  r#   r#   r$   r    r   r  r   l     "R: )r  r?   markxfailnode
add_markerr	   r   r^   r   r   r   r8   r=   )	rl   r   r)   using_array_managerrequestr#  rJ   rK   rO   r#   r#   r$   test_std_datetime64_with_nat  s   z3TestDataFrameAnalytics.test_std_datetime64_with_natc                 C   sZ   t  }|d}|d}t|tsJ t|tsJ t|dks#J t|dks+J d S )Nr   r*   )r	   r/   r:   r   r<   )rl   Zempty_frameZaxis0Zaxis1r#   r#   r$   test_sum_corner  s   

z&TestDataFrameAnalytics.test_sum_cornerr5   r   )r  c                 C   s\   t dg|d}t||dd}|dv rd}n	|dkrd}nd	}tg ||d
}t|| d S )Nr   r   r*   r.   )r   r  boolrV   r   r   r4   )r	   r7   r   r8   r=   )rl   all_reductionsr5   r'  rJ   rK   Zexpected_dtyperO   r#   r#   r$   test_axis_1_empty  s   z(TestDataFrameAnalytics.test_axis_1_emptyzmethod, unit)r/   r   )r0   r*   ri   )NTFc                 C   s  g d}t ||g|tjgtjtjgd}t|||d}t|||g|dd}t|| t|||dd}t||tjg|d}t|| t|||dd}t|||g|dd}t|| t|jdd  ||dd}t|tjtjg|d}t|| t |gd	 |gd
 tjgd
  d}t|||d
d}t|ddgd}t|| t|||dd}t|ddgd}t|| d S )Nr   ri   float64r4   r*   )ri   	min_countr   r   r   r   r   r   r      )r	   rB   r   r7   r   r8   r=   r  )rl   r   rS   ri   idxrJ   rK   rO   r#   r#   r$   test_sum_prod_nanops  s*   "&z+TestDataFrameAnalytics.test_sum_prod_nanopsc                 C   s   g d}t ddgdtjgtjtjgd}|t}| }tg dd|d}t|| |jdd}t|| |jdd}tddtjgd|d}t|| d S )Nr   r   )r   r   r   m8[ns]r6   r5   r0  r*   )	r	   rB   r   r>   r   r/   r   r8   r=   )rl   r2  rJ   r   rK   rO   r#   r#   r$   test_sum_nanops_timedelta  s   "
z0TestDataFrameAnalytics.test_sum_nanops_timedeltac                 C   sJ   t g dg dd}|jdd}ttjtjgddgd}t|| d S )	Nr   r   r   r1  )r    yr   r6  r    r9  r   )r	   r/   r   rB   r   r8   r=   r  r#   r#   r$   test_sum_nanops_min_count!  s   z0TestDataFrameAnalytics.test_sum_nanops_min_count
float_type)Zfloat16r{   r/  zkwargs, expected_result)r(   r0  g	@g333333@r'   c                 C   sL   t g dddtjgd|d}|jdi |}t||}t|| d S )N)r   gffffff@皙@g@r   r   r   r   r#   )r	   rB   r   r/   r   r}   r8   r=   rl   r;  kwargsZexpected_resultrJ   rK   rO   r#   r#   r$   test_sum_nanops_dtype_min_count(  s   z6TestDataFrameAnalytics.test_sum_nanops_dtype_min_countr   r   c                 C   sL   t g dddtjgd|d}|jdi |}t||}t|| d S )N)r   r   r<  r   r=  r   r#   )r	   rB   r   r0   r   r}   r8   r=   r>  r#   r#   r$    test_prod_nanops_dtype_min_count8  s   z7TestDataFrameAnalytics.test_prod_nanops_dtype_min_countc                 C   s6   |j t}t||j|jd}|td }|  d S )Nr5   r   r*   )r   r}   r   r	   r5   r   r   r/   )rl   rq   r   rE   Zdeltasr#   r#   r$   test_sum_objectJ  s   z&TestDataFrameAnalytics.test_sum_objectc                 C   s"   t |}|d |d d S )Nr*   r   )rB   isnanr/   )rl   rq   boolsr#   r#   r$   test_sum_boolP  s   

z$TestDataFrameAnalytics.test_sum_boolc                 C   s`   t tdddg ddg d}tjtdd |  W d    d S 1 s)w   Y  d S )	Nr   r   r   r   r   )r   r   r   z does not support reduction 'sum'r2   )r	   r   r   r?   r@   rk   r/   r   r#   r#   r$   test_sum_mixed_datetimeV  s   
"z.TestDataFrameAnalytics.test_sum_mixed_datetimec                 C   s   t jtdd |jdd W d    n1 sw   Y  t jtdd |jdd W d    n1 s5w   Y  |d dk|d< |d}|d |d j ksTJ d S )	Nrc   r2   r   r.   rf   r*   r   r+  )r?   r@   rk   rW   r   )rl   rq   rm   Zmeansr#   r#   r$   test_mean_corner^  s   
z'TestDataFrameAnalytics.test_mean_cornerc              	   C   s   t tdtdddtjdddtjddddd}|jd	d
}tddi}t	
|| tjtdd |  W d    d S 1 sDw   Y  d S )Nr   
2016-01-01r   1D2016r   r  )r   r   r   r   Tr.  r   z'mean is not implemented for PeriodArrayr2   )r	   rB   r   r   r   r  period_rangerW   r   r8   r=   r?   r@   rk   r  r#   r#   r$   test_mean_datetimelikel  s   

"z-TestDataFrameAnalytics.test_mean_datetimelikec                 C   s   t tdtdddtjdddd}|jdd}td|jd	 |jd
 d}t	
|| tjdddd|d< tjtdd |jdd W d    d S 1 sQw   Y  d S )Nr   rI  r   rJ  r   Fr.  r*   )r*   r   )r*   r   rK  r   r  r   z"mean is not implemented for Periodr2   )r	   rB   r   r   r   r  rW   r   r   r8   r=   rL  r?   r@   rk   r  r#   r#   r$   )test_mean_datetimelike_numeric_only_false  s   
	"z@TestDataFrameAnalytics.test_mean_datetimelike_numeric_only_falsec                 C   sD   t jjddd}t|dd}|jdd}t| }t|| d S )Nr   )r   r   )sizeInt64r   Tr.  )rB   r   randintr	   rW   r8   r=   )rl   r   rJ   rK   rO   r#   r#   r$   *test_mean_extensionarray_numeric_only_true  s
   zATestDataFrameAnalytics.test_mean_extensionarray_numeric_only_truec                 C   s   t jtdd |d W d    n1 sw   Y  t jtdd |d W d    n1 s3w   Y  t jtdd |d W d    n1 sOw   Y  t jtdd |d W d    d S 1 slw   Y  d S )Nrd   r2   r*   rf   )r?   r@   rk   r^   r]   rW   r`   )rl   rm   r#   r#   r$   test_stats_mixed_type  s   "z,TestDataFrameAnalytics.test_stats_mixed_typec                 C   s8   t tdtdd}t|}|jddd dksJ d S )Nr*   r   rB  r.   r   )r	   r;   r   r/   )rl   rJ   rE  r#   r#   r$   test_sum_bools  s   z%TestDataFrameAnalytics.test_sum_boolsr)   c           	      C   j   |}t j|jdd< t j|jdddd f< ||fD ]}|j||d}|jtj||d}t|| qd S Nr   r      r   r  r'   )rB   r   r  idxminr>   r   r8   r=   	rl   rq   r   r)   r(   rE   rJ   rK   rO   r#   r#   r$   test_idxmin     z"TestDataFrameAnalytics.test_idxminc                 C   s   t g dg dtdd}|r(|j|d}tddgdd	gd
}t|| d S tjtdd |j|d W d    d S 1 sAw   Y  d S )Nr   r   r*   r   r*   r*   xyxr   r.  r   r*   r   r   r   not allowed for this dtyper2   )	r	   listrX  r   r8   r=   r?   r@   rk   rl   ri   rJ   rK   rO   r#   r#   r$   test_idxmin_numeric_only     "z/TestDataFrameAnalytics.test_idxmin_numeric_onlyc                 C   H   |}d}t jt|d |jdd W d    d S 1 sw   Y  d S Nz)No axis named 2 for object type DataFramer2   r   r.   )r?   r@   rA   rX  rl   rq   rE   rn   r#   r#   r$   test_idxmin_axis_2  
   "z)TestDataFrameAnalytics.test_idxmin_axis_2c           	      C   rU  rV  )rB   r   r  idxmaxr>   r   r8   r=   rY  r#   r#   r$   test_idxmax  r[  z"TestDataFrameAnalytics.test_idxmaxc                 C   s   t g dg dtdd}|r(|j|d}tddgdd	gd
}t|| d S tjtdd |j	|d W d    d S 1 sAw   Y  d S )Nr\  r]  r^  r   r.  r*   r   r   r   r   r_  r2   )
r	   r`  ri  r   r8   r=   r?   r@   rk   rX  ra  r#   r#   r$   test_idxmax_numeric_only  rc  z/TestDataFrameAnalytics.test_idxmax_numeric_onlyc                 C   rd  re  )r?   r@   rA   ri  rf  r#   r#   r$   test_idxmax_axis_2  rh  z)TestDataFrameAnalytics.test_idxmax_axis_2c                 C   sP  t ddd}tg dtdd d d |jddd}| }tg d	g dd
}t|| | }tg dg dd
}t|| t	j
|jd< | }tg d	g dd
}t|| | }tg dg dd
}t|| |d d d |d< |  | }tg dg dd
}t|| | }tg dg dd
}t|| d S )NrI  r   r   )r   r   r*   r  T)deepr   )r*   r   r   r   )r   r   r   )r   r   r   )r*   r   r   r   r   )r   r   r*   r   )r   r	   r;   r  ri  r   r8   r=   rX  r   r   r   r  rl   ZdtirJ   rK   rO   r#   r#   r$   test_idxmax_mixed_dtype  s.   *z.TestDataFrameAnalytics.test_idxmax_mixed_dtypezop, expected_valueri  rX  r   c                 C   s^   t g dg dddd}|d}t|| }t d|itdd	gddd
d}t|| d S )N)d   rp  rp     rq  rq  )r   r   r   r*   r   r   )IDr  rP  r   rr  r  rp  rq  )namer6   r   )r	   groupbyr7   r
   r8   r   )rl   r   Zexpected_valuerJ   rK   rO   r#   r#   r$   !test_idxmax_idxmin_convert_dtypes  s   
z8TestDataFrameAnalytics.test_idxmax_idxmin_convert_dtypesc                 C   s   t ddd}t||d d d ddd}tj|jd< |  |jd	d
}tg d}t	|| |j
d	d
}tg d}t	|| d S )NrI  r   r   r  )r   r   Tr  )r   r   r*   r.   )r   r   r   )r   r   r   )r   r	   r   r   r  r  ri  r   r8   r=   rX  rn  r#   r#   r$   "test_idxmax_dt64_multicolumn_axis1"  s   z9TestDataFrameAnalytics.test_idxmax_dt64_multicolumn_axis1r   r  	bool_onlyc                 C   s2   |}t jt|dk|d< t||||d d S )Ng      ?Z_bool_r(   rw  )rB   r   r   r<   r7   )rl   rD   r(   rw  rm   r  r#   r#   r$   test_any_all_mixed_float4  s   z/TestDataFrameAnalytics.test_any_all_mixed_floatc                 C   s   t |||dd d S )NFrx  rp   )rl   rD   r(   bool_frame_with_nar#   r#   r$   test_any_all_bool_with_na>  s   z0TestDataFrameAnalytics.test_any_all_bool_with_nac                    sX  | d}tt| t||} fdd} fdd}|ddd}|d	dd}t||| t||j|d	d
 |dd
}|d	d
}t||| tj||j|d	d
dd tjtdd |dd
 W d    n1 srw   Y  |tj	 }	t|	|dd
}
t|	|d	d
}|dkr|

 rJ |
 rJ d S |
 sJ | sJ d S )NTc                    s   |   j} |S r   )ru   r   )r    Znonar!   r#   r$   rL   K  s   
zFTestDataFrameAnalytics.test_any_all_bool_frame.<locals>.skipna_wrapperc                    r   r   r   r   r!   r#   r$   r%   O  r&   z?TestDataFrameAnalytics.test_any_all_bool_frame.<locals>.wrapperr   Fr'   r*   r.   )r+   r1   r2   r   r   )Zfillnar7   rB   r8   r=   r>   r?   r@   rA   rC   r   r  )rl   rD   rz  rE   rI   rL   r%   rM   rN   rP   rQ   rR   r#   r!   r$   test_any_all_bool_frameC  s4   





z.TestDataFrameAnalytics.test_any_all_bool_framec                 C   s  t g dg dg ddg dd}|ddg jd	d
}tg dg dd}t|| |ddg jd	dd}t|| |d	}tg dg dd}t|| |jd	dd}t|| |jd d
 }|du smJ |jd d
 }|du s{J |dg jd d
 }|du sJ d S )N)TFF)TTF)TTTr   r   r   r   r   r*   r.   Trx  rw  Fr   )r	   r   r   r8   r=   r  itemr  r#   r#   r$   test_any_all_extrao  s.   
z)TestDataFrameAnalytics.test_any_all_extrabool_agg_funcc                 C   st   t dtjtjdgtjdtjdgtjtjtjdgtjtjdtjggd}t||||d}tg d}t|| d S )Nr*   Tr   5datar'   )TTTT)r	   rB   r   r7   r   r8   r=   )rl   r(   r  r)   rJ   rK   rO   r#   r#   r$   test_any_all_object_dtype  s   z0TestDataFrameAnalytics.test_any_all_object_dtypezAignore:'any' with datetime64 dtypes is deprecated.*:FutureWarningc                 C   s^   dt jdt jg}tdtdtjtjg}t||d}|jdd}tg d}t	|| d S )Nr*   r   z
1960-02-15z
1960-02-16r   r.   )TTTF)
rB   r   r   r   r   r	   r   r   r8   r=   )rl   Z
float_dataZdatetime_datarJ   rK   rO   r#   r#   r$   test_any_datetime  s   z(TestDataFrameAnalytics.test_any_datetimec                 C   s   t g dg dg dd}|jdd}ttjg d}t|| t g dg dg dg dd	}|jdd}td
di}t|| d S )Nr   r8  )NNN)col1col2col3Tr}  r5  )FFT)r  r  r  col4r  F)r	   r  r   rB   bool_r8   r=   r  r#   r#   r$   test_any_all_bool_only  s    	z-TestDataFrameAnalytics.test_any_all_bool_onlyzfunc, data, expectedr   r   r   r   zM8[ns]zM8[ns, UTC]r4  categoryr   r   c                 C   s~  t |}tdd |jD rNtjtdd || W d    n1 s$w   Y  tjtdd tt ||jd d W d    d S 1 sGw   Y  d S d}|jdd  r]t	}nd }t
j||d	d
 ||}W d    n1 svw   Y  t|tjsJ | |u sJ t
j||d tt ||jd d}W d    n1 sw   Y  t|tjsJ | |u sJ d S )Nc                 s   s    | ]}t |V  qd S r   r   )r  r    r#   r#   r$   r    s    z>TestDataFrameAnalytics.test_any_all_np_func.<locals>.<genexpr>z)dtype category does not support reductionr2   r.   z0'(any|all)' with datetime64 dtypes is deprecatedc                 S   s
   | j dkS )Nr   )kindr   r#   r#   r$   r     s   
 z=TestDataFrameAnalytics.test_any_all_np_func.<locals>.<lambda>F)r3   Zcheck_stacklevel)r	   r   dtypesr?   r@   rk   r7   __name__r>   FutureWarningr8   r9   r:   rB   r  r~  )rl   funcr  rO   rn   warnrK   r#   r#   r$   test_any_all_np_func  s4   5
"
z+TestDataFrameAnalytics.test_any_all_np_funcc                 C   sL   t tddgd }|du sJ t tddgd }|du s$J d S )Nr   r   r   TF)rB   r  r	   r~  r   )rl   rK   r#   r#   r$   test_any_all_object"  s   z*TestDataFrameAnalytics.test_any_all_objectc                 C   s"  t ddgddgdt}|  tddg|d< |d d|d< | }|dg }t|| |jdd	d
}tdgdgd}t	|| |ddg jdd	d
}t	|| |jdd d
saJ |j
dd	d
}tdgdgd}t	|| |dg j
dd	d
}t	|| |j
dd d
sJ d S )Nr   r   TFr   r   r  r   r   )rw  r(   r   r   )r	   r}   r   r  r   Z_get_bool_datar8   r   r  r=   r   )rl   rJ   resrO   r#   r#   r$   test_any_all_object_bool_only*  s&   
z4TestDataFrameAnalytics.test_any_all_object_bool_onlyc                 C   s   t g d}t dtjdtjgi}tg d}ttjtjdg}td  |j|dd dD ]}t|||dd	 q/W d    d S 1 sFw   Y  d S )
N)r   r   r   r   r   r   r*   r   )lowerr(   )ltlegtgeeqner.   )r	   rB   r   r   r8   r9   Zclipr7   )rl   rJ   Zdf_nanrt   Zs_nanr   r#   r#   r$   test_series_broadcastingO  s   "z/TestDataFrameAnalytics.test_series_broadcasting)Xr  
__module____qualname__r?   r#  parametrizeparamtdZskip_if_no_scipyro   rr   r   r   r   r	   rB   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r)  r*  r8   ZmakeRangeIndexZmakeDateIndexZmakeNumericIndexr   r   ZmakePeriodIndexr-  r3  r7  r:  rC   r@  rA  rC  rF  rG  rH  rM  rN  rR  rS  rT  rZ  rb  rg  rj  rk  rl  ro  ru  rv  ry  r{  r|  r  r  filterwarningsr  r  r   r  r   r  r  r  r  r#   r#   r#   r$   rU      sF   8
$










5W


 	
	

	

&

+!


	
"#$%'
3#%rU   c                   @   s   e Zd Zdd Zdd Zdd Zdd Zej	d	d
dgej	dddgd	e
fddZej	dddgdd Zdd Zdd Zejdd Zejdd ZdS )TestDataFrameReductionsc                 C   s   t dtjtjtdgi}| }ttdgdgd}t|| | }ttdgdgd}t|| t dtjtjgi}| }ttjgdgd}t|| | }ttjgdgd}t|| d S )Nr   z
2012-05-01r   )	r	   r   r   r   rZ   r   r8   r=   r[   )rl   rJ   r  expr#   r#   r$   test_min_max_dt64_with_NaT^  s   z2TestDataFrameReductions.test_min_max_dt64_with_NaTc                 C   s   |}t |trt rtd ttd|dtd|dgtd|dtjgd}|j	ddd	}t
|jd
 tjg}|j|d jksBJ t|| |jddd	}t
|jd tjg}|j|d jkscJ t|| d S )NzSGH#37659 OSError raised within tzlocal bc Windows chokes in times before 1970-01-01z2020-01-01 08:00:00r   z1920-02-01 09:00:00z2020-02-01 08:00:00r=  r*   Fr'   )r   r   r   )r   r   )r:   r   r   r?   skipr	   r   r   r   rZ   r   r   r6   r8   r=   r[   )rl   r(  Ztz_naive_fixturer   rJ   r  rO   r#   r#   r$   'test_min_max_dt64_with_NaT_skipna_falseu  s(   

	z?TestDataFrameReductions.test_min_max_dt64_with_NaT_skipna_falsec                 C   s   t dtg i}ttg }|jddjtju | tju ks!J |jddjtju | tju ks4J t	|jdd| t	|jdd| d S )Nr    r   r.   r*   )
r	   r   r   rZ   r    r   r   r[   r8   r=   )rl   rJ   Zexpected_dt_seriesr#   r#   r$   *test_min_max_dt64_api_consistency_with_NaT  s   &&zBTestDataFrameReductions.test_min_max_dt64_api_consistency_with_NaTc                 C   s   t dg i}tg td}t|jddjt| ksJ t|jddjt| ks2J t	|jdd| t	|jdd| d S )Nr    r   r   r.   r*   )
r	   r   r   rB   rD  rZ   r    r[   r8   r=   )rl   rJ   Zexpected_float_seriesr#   r#   r$   *test_min_max_dt64_api_consistency_empty_df  s   &&zBTestDataFrameReductions.test_min_max_dt64_api_consistency_empty_dfinitialz2018-10-08 13:36:45+00:00z2018-10-08 13:36:45+03:00r   rZ   r[   c                 C   s<   t |}t|g}t|g}t||dd}t|| d S )Nr*   r.   )r   r   r	   r7   r8   r=   )rl   r  r   Z
initial_dtrO   rJ   rK   r#   r#   r$   test_preserve_timezone  s
   

z.TestDataFrameReductions.test_preserve_timezonec                 C   s   t ddd}tttjtj|gttj||gd}t||}|d|d}|r0ttj||g}n	ttjtj|g}t|| d S )Nz
1900-01-01T)utcr=  r*   r'   )r   r	   r   r   r   r7   r8   r=   )rl   r   r)   valrJ   r   rK   rO   r#   r#   r$   !test_minmax_tzaware_skipna_axis_1  s   "
z9TestDataFrameReductions.test_minmax_tzaware_skipna_axis_1c                 C   s   t tddgttddtddgd}|jdd}tddgd	d
gd}t|| |jdd}tddgd}t|| d S )Nr   rt   r*   ms)r   tr.   FTr   r  )r  r5   r  )r	   r   r   r   r8   r=   r  r#   r#   r$   test_frame_any_with_timedelta  s   
z5TestDataFrameReductions.test_frame_any_with_timedeltac                 C   sr   |dkr|j tjjdd |g d}d}tjt|d t||d d W d    d S 1 s2w   Y  d S )NrV   zCount does not accept skipnar!  r   zAFor argument "skipna" expected type bool, received type NoneType.r2   r  )r%  r&  r?   r#  r$  r@   rA   r7   )rl   r(  Zframe_or_seriesr,  objrn   r#   r#   r$   "test_reductions_skipna_none_raises  s   "z:TestDataFrameReductions.test_reductions_skipna_none_raisesc                 C   s`   t ttdgddttdgddd}| }ttdtdgdddgd	}t|| d S )
Nz
2019-12-31zdatetime64[s]r   z2019-12-31 00:00:00.123zdatetime64[ms]r=  r   r   r5  )r	   r   r   r[   r8   r=   r  r#   r#   r$   &test_reduction_timestamp_smallest_unit  s   
z>TestDataFrameReductions.test_reduction_timestamp_smallest_unitc                 C   sh   t ttdgddttdgddd}| }ttdtdgdddgd}t|| d S )	Nr   ztimedelta64[s]r   ztimedelta64[ms]r=  r   r   r5  )r	   r   r   r  r[   r8   r=   r  r#   r#   r$   &test_reduction_timedelta_smallest_unit  s   z>TestDataFrameReductions.test_reduction_timedelta_smallest_unitN)r  r  r  r  r  r  r  r?   r#  r  r   r  r  r  r  r  Zskip_array_manager_invalid_testr  Z&skip_array_manager_not_yet_implementedr  r#   r#   r#   r$   r  ]  s&    

r  c                   @   sH   e Zd Zejdddgdd Zdd Zejddd	gd
d ZdS )TestNuisanceColumnsr   r   r  c                 C   sR  t ddgddd}| }tjtdd t||  W d    n1 s%w   Y  tjtdd tt|| W d    n1 sCw   Y  tjtdd t||dd	 W d    n1 sbw   Y  tjtdd t||d d	 W d    n1 sw   Y  tjtdd tt||dd
 W d    d S 1 sw   Y  d S )Nr   r*   r  r   )r6   rs  does not support reductionr2   Fr}  r.   )r   to_framer?   r@   rk   r7   rB   )rl   r   serrJ   r#   r#   r$   .test_any_all_categorical_dtype_nuisance_column  s"   "zBTestNuisanceColumns.test_any_all_categorical_dtype_nuisance_columnc                 C   sJ  t dtg di}|d }tjtdd |  W d    n1 s$w   Y  tjtdd |jdd W d    n1 sAw   Y  tjtdd |  W d    n1 s\w   Y  |d t|d< tjtdd |jdd W d    n1 sw   Y  tjtdd |  W d    d S 1 sw   Y  d S )Nr   )r*   r   r   r   r   r  r2   Fr.  r   )r	   r   r?   r@   rk   rY   r}   r   )rl   rJ   r  r#   r#   r$   -test_median_categorical_dtype_nuisance_column#  s$   


"zATestNuisanceColumns.test_median_categorical_dtype_nuisance_columnrZ   r[   c                 C   s  t g ddd}t|}|d}tjtdd t||  W d    n1 s)w   Y  tjtdd tt|| W d    n1 sGw   Y  tjtdd t||dd W d    n1 sfw   Y  tjtdd t||  W d    n1 sw   Y  tjtdd tt||dd	 W d    n1 sw   Y  |d t	|d
< tjtdd t||  W d    n1 sw   Y  tjtdd tt||dd	 W d    d S 1 sw   Y  d S )N)r   r   r   r   F)Zorderedr   zis not ordered for operationr2   r.  r   r.   r   )
r   r   r  r?   r@   rk   r7   rB   r}   r   )rl   r   catr  rJ   r#   r#   r$   :test_min_max_categorical_dtype_non_ordered_nuisance_column>  s2   
"zNTestNuisanceColumns.test_min_max_categorical_dtype_non_ordered_nuisance_columnN)	r  r  r  r?   r#  r  r  r  r  r#   r#   r#   r$   r    s    
r  c                 C   s   | rt jjdd}|j| tdtj	d
dd}d|d< t|}|j|jk s1J |jd	d
}ttjddtjgdd}t|| |jdd	d}t|| |jdd	d}ttjddtjddtjddtjgdd}t|| d S )Nz3Incorrect type inference on NaT in reduction resultr!  r   zm8[s]r   r   ZNat)r  r  Fr  r   r  r   r   r'   r*   r   r   )r?   r#  r$  r%  r&  rB   r   r}   r   viewZreshaper	   r  r6   r  r/   r   r   r  r   r8   r=   )r'  r(  r#  r   rJ   rK   rO   r#   r#   r$   !test_sum_timedelta64_skipna_false^  s0    


	r  c                  C   sP   t ddggtdd} | ddi} |  }tddgddgd}t|| d S )Nr   r*   abr   r   rP  r   )r	   r`  r}   r/   r   r8   r=   )rJ   rK   rO   r#   r#   r$   !test_mixed_frame_with_integer_sum  s
   r  ri   )TFNr   rZ   r[   c                 C   sn   t d}t|jd |jgt d}td|i}t|| |d}tt|| gt	dgddd}t
|| d S )Nr   r   rP  r.  r   r   )rB   Ziinfor   r[   rZ   r   Z
Int64Dtyper	   r7   r
   r8   r=   )r   ri   Z
int64_infor  rJ   rK   rO   r#   r#   r$   test_minmax_extensionarray  s   
r  ts_valuez
2000-01-01c                 C   sV   t dgdgdg| gd}tjtdd |  W d    d S 1 s$w   Y  d S )Nr*   g?r   r   r  r2   )r	   r?   r@   rk   r/   )r  rJ   r#   r#   r$   .test_frame_mixed_numeric_object_with_timestamp  s   
"r  c                  C   s   t g d} | jdddd}tdg}t|| td}tjt	|d | j
dddd W d    d S 1 s9w   Y  d S )	N)r*   r   Tr   r*   F)r(   r0  ri   r   z2unsupported operand type(s) for +: 'int' and 'str'r2   )r	   r0   r   r8   r=   reescaper?   r@   rk   r/   )rJ   rK   rO   rn   r#   r#   r$   $test_prod_sum_min_count_mixed_object  s   

"r  )rZ   r[   rW   rY   r`   ra   c                 C   s   t tjdd}t|| d |d}| }| dv r7td}| dkr%d} t|| |dd d}t	|| d S tt| |d d	}||ksFJ d S )
Nr   rh   >   ra   r`   zscipy.statsra   r   F)r   r(   r.   )
r	   rB   r   r   r7   Zto_numpyr?   Zimportorskipr8   r   )r   ri   rJ   rK   Znp_arrZcomp_modrO   r#   r#   r$   'test_reduction_axis_none_returns_scalar  s   
r  kernel)ZcorrcorrwithZcovri  rX  ra   r[   rW   rY   rZ   r0   Zquantiler_   r`   r^   r/   r]   c                 C   st   t g dtd}| dkr|fnd}dg d}tjt|d t|| |  W d    d S 1 s3w   Y  d S )Nr   r=  r  r#   rb   )r_  z%argument must be a string or a numberrg   rf   z*argument must be a string or a real numberr2   )r	   r   rj   r?   r@   rk   r7   )r  rJ   argsrn   r#   r#   r$   test_fails_on_non_numeric  s   	"r  )TTFr   r   N)2datetimer   decimalr   r  Zdateutil.tzr   numpyrB   r?   Zpandas.compatr   Zpandas.util._test_decoratorsutilZ_test_decoratorsr  Zpandas.core.dtypes.commonr   Zpandasr   r   r	   r
   r   r   r   r   r   r   r   Zpandas._testingZ_testingr8   Zpandas.corer   r   rT   rU   r  r  r  r  r#  r  r  r   r  r  r  r  r#   r#   r#   r$   <module>   sb    0

n         V 0R"	
