U
    >vf                     @   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# d9d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d	d
dg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ddd%d&d'd(ge	j*+dd	d
gd)d* Z0e	j*+d+d,d-d.d/d0d(dd%d&dd1d2d3d'd4d5d6gd7d8 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	              	      sH  t || }	|rtdtdddi}
td t |
|  }W 5 Q R X t|tsRttt	|
|
d< td t |
|  }W 5 Q R X t|tstt	|st|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krj|j|dd}tj||d
||d |r|jj}||jkst||jksttjtdd |	dd W 5 Q R X |rD|tj }t || d	d}t || dd}| dkrD| dkrdnd	}t||j|jd}t|| t||j|jd}t|| 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                    s
    | j S Nvaluesxalternative F/tmp/pip-unpacked-wheel-vdrwu74i/pandas/tests/frame/test_reductions.pywrapperW   s    z$assert_stat_op_calc.<locals>.wrapperr   Faxisskipna   )check_dtypertolatolr&   )r*   r+   )sumprodNo axis named 2matchr.   indexdtype)getattrr	   r   tmassert_produces_warning
isinstancer   AssertionErrorrangelenZ_make_skipna_wrapperassert_series_equalapplyr   r4   pytestraises
ValueErrornpNaNr3   )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"   s    %
    


    

rS   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ddddddd
dgejded d!d"gddd#gd$d%d&gd'd(d)d*gd+d,eejd-gejd.gejd/gd0ed1gd2d3 Zejd4ddddddgd5d6 Zd7d8 Zd9d: Zejd;d<d=gd>d? Zejd;d<d=gd@dA ZdBdC ZdDdE ZejdFdddgdGdH ZdIdJ ZejdKdLdMgdNgdOgdPgedPgdPgdQedRgedSgdTfdUdMgdNgejgejejged1eejgdPgdQe j!gee j!gdTfdLdVdWejejgdVdWejejgdejejejgedPejejejgdPgdQedRdXdXdXgedSdYdYdYgddd-d.gdZfdUdVdWejejgdVdWejejgdejejejgeejdPejejgdPgdQedXdRdXdXgedYdSdYdYgddd-d.gdZfgd[d\ Z"d]d^ Z#d_d` Z$dadb Z%dcdd Z&ejdedfdge j!dhgd/e j!g gdidj Z'dkdl Z(ejdme)*de)+de)j,de-d1e)j,de.d1e)j+ddndoe)/dgdpdq Z0ejdrdsdtgejdud<dLdUgdvdw Z1dxdy Z2dzd{ Z3ejd|d}d~dgejddd-dddej4gfdd.dej4ej4ej4gfddUdddej4gfgdd Z5ejd|d}d~dgejddd-dddej4gfdd.dej4ej4ej4gfddUdddej4gfgdd Z6dd Z7dd Z8dd Z9dd Z:dd Z;dd Z<dd Z=dd Z>dd Z?ejddLdUgejdddgdd Z@ejdudLdUgdd ZAdd ZBejddLdUgejdddgdd ZCejdudLdUg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ddUdLg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ddLdUgdd ZMejNd¡ddĄ ZOddƄ ZPejdejQi dUfejRi dLfejQdg idUfejRdg idLfejQddUdUgidUfejRddUdUgidUfejQddLdUgidLfejRddLdUgidUfejQddLdLgidLfejRddLdLgidLfejQdUgdUgdɜdUfejRdUgdUgdɜdUfejQdUdUgdUdLgdɜdLfejRdUdUgdUdLgdɜdUfejRdeSd#dOgdd1idUfejQdeSd#dOgdd1idLfejRdeSddge-d1idUfejQdeSddge-d1idLfeejRdeSddgdd1idUeejRdeSddgdd1idUeejQdeSddgdd1idLeejQdeSddgdd1idLeejRdeSdd-gdd1idLeejRdeSdd-gdd1idLeejQdeSdd-gdd1idLeejQdeSdd-gdd1idLeejRdeSddgdd1idUeejQdeSddgdd1idLeejRdeSdd-gdd1idLeejQdeSdd-gdd1idLejRdeSddgdd1idLfejQdeSddgdd1idUfejRdeSdd-gdd1idLfejQdeSdd-gdd1idUfeejReSddgdd1eSddgdd1dɜdLg#dd҄ ZTddԄ ZUddք ZVdd؄ ZWd<S )TestDataFrameAnalyticsr&   r   r(   rC   countr-   meanproductmedianminmaxnuniquevarstdsemskew)Zmarkskurtc              	   C   s   |dkr|dks|dkr*t |||d n>ddddd	d
g}tjt|d t |||d W 5 Q R X |dkrt |||dd d S )N)r-   rY   rZ   r   )rU   r[   r,   |Could not convertcould not convert"can't multiply sequence by non-intunsupported operand type"not supported between instances ofr0   r[   Tr&   numeric_only)r5   joinr>   r?   	TypeError)selffloat_string_framer&   rC   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 )NFrg   r5   )rk   float_framer&   rC   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#   rU      s    z7TestDataFrameAnalytics.test_stat_op_calc.<locals>.countc                 S   s   t t|  S r   )r;   r   Zunique1ddropnarr   r"   r"   r#   r[      s    z9TestDataFrameAnalytics.test_stat_op_calc.<locals>.nuniquec                 S   s   t j| ddS Nr(   Zddof)rA   r\   r   r"   r"   r#   r\      s    z5TestDataFrameAnalytics.test_stat_op_calc.<locals>.varc                 S   s   t j| ddS ru   )rA   r]   r   r"   r"   r#   r]      s    z5TestDataFrameAnalytics.test_stat_op_calc.<locals>.stdc                 S   s   t j| ddt t|  S ru   )rA   r]   sqrtr;   r   r"   r"   r#   r^      s    z5TestDataFrameAnalytics.test_stat_op_calc.<locals>.semr[   FT)rE   r)   rF   r-   float32gMbP?)r)   r*   )rG   rV   rF   rW   r\   r]   r^   rU   )rS   rA   r-   astypeZnansumrV   r.   Znanprod)rk   float_frame_with_naZmixed_float_framerU   r[   r\   r]   r^   r"   r"   r#   test_stat_op_calc   sX          z(TestDataFrameAnalytics.test_stat_op_calcc                 C   s,   dd }dd }t d|| t d|| d S )Nc                 S   s*   ddl m} t| dk rtjS || ddS )Nr   )r_      Fbias)scipy.statsr_   r;   rA   nan)r   r_   r"   r"   r#   skewness
  s    zHTestDataFrameAnalytics.test_stat_op_calc_skew_kurtosis.<locals>.skewnessc                 S   s*   ddl m} t| dk rtjS || ddS )Nr   )kurtosis   Fr~   )r   r   r;   rA   r   )r   r   r"   r"   r#   r`     s    zDTestDataFrameAnalytics.test_stat_op_calc_skew_kurtosis.<locals>.kurtr_   r`   rS   )rk   r{   r   r`   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   anyrA   r   rX   r   r"   r"   r#   r$     s    z3TestDataFrameAnalytics.test_median.<locals>.wrapperrX   Try   F)r)   rF   r   )rk   r{   	int_framer$   r"   r"   r#   test_median  s        z"TestDataFrameAnalytics.test_medianmethodr.   rI   gȃw@Ba@gCVZg
?Z.F?g        g94c4?g@}jX?gNr   r   cfoobarbazOr2   r   r}   r   r   r(   r   r4   c                 C   sN   |j jtjkstt|||d}t|d||dt}t	|| d S )Nr,   Zf8)
r   r4   rA   Zobject_r9   r5   rz   objectr6   r<   )rk   r   rI   r&   rJ   rN   r"   r"   r#   %test_stat_operators_attempt_obj_array&  s    z<TestDataFrameAnalytics.test_stat_operators_attempt_obj_arrayopc              
   C   s   t ddddgddddgd	d
ddgd}ddddg}tjt|d t||  W 5 Q R X tdd< ddddg}tjt|d t||  W 5 Q R X W 5 Q R X d S )Nr(   r   r}   r         ?       @g      @      @r   r   r   d)intfloatstrra   rb   rc   rd   r0   use_bottleneckF)r	   ri   r>   r?   rj   r5   pdoption_context)rk   r   rI   rm   r"   r"   r#   test_mixed_opsG  s.    


z%TestDataFrameAnalytics.test_mixed_opsc                 C   s   t dddddgdddddgdd	d
ddgd}|jdddgd |jdd}t|jtjdddgtd |j	jdd}t
|| d S )NTF
         (   2   r   r   r   r   e)	bool_dataint_datastring_datar   r   r   columnsr   r,   r      Zabcder   r(   )r	   reindexr-   r6   Zassert_numpy_array_equalr   rA   arrayr   Tr<   )rk   rI   testZaltr"   r"   r#   test_reduce_mixed_framef  s     z.TestDataFrameAnalytics.test_reduce_mixed_framec                 C   s   t dddgdddg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 )
Nr(   r   r}   ABCFrt   r,   r   )r&   rt   )r	   rA   r   r6   r<   r[   r   rk   rI   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   r3   r	   r   rV   r   r6   r<   rk   r   rI   rJ   rN   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 5 Q R X |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.00ZTESTz241.00z572.00z609.00z820.00   z1223.00re   r0   r   r   g@gL@r2   )
r   r	   r>   r?   rj   rV   r   r   r6   r<   )rk   r   rI   rJ   rN   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 
 rttd
d$ tj	|dd	}|dk 
 rtW 5 Q R X d S )Nr   rv   c                 S   s   | j ddS Nr   rv   )r]   r   r"   r"   r#   <lambda>      z5TestDataFrameAnalytics.test_var_std.<locals>.<lambda>c                 S   s   | j ddS r   )r\   r   r"   r"   r#   r     r   r(     r   r   r,   r   F)r]   r=   r6   assert_almost_equalr\   rA   repeatrandomr   Znanvarr   r9   r   r   rk   Zdatetime_framerJ   rN   arrr"   r"   r#   test_var_std  s    z#TestDataFrameAnalytics.test_var_stdmethc              	   C   s8  t tjdddddgd}|dti}d|jd< t tjdddddg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 5 Q R X d}t
jt|d t||d
dd W 5 Q R X d S )Nr   r}   r   r   r   r   Z100)r   r   r   r(   Trg   r,   z6unsupported operand type\(s\) for -: 'float' and 'str'r0   Fz&could not convert string to float: 'a')r	   rA   r   randnrz   r   locr5   r6   r<   r>   r?   rj   )rk   r   Zdf1df2rJ   rN   rm   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 	 rZt
td	d
$ tj|dd}|dk 	 rt
W 5 Q R X d S )Nr   rv   c                 S   s   | j ddtt|  S r   )r]   rA   rw   r;   r   r"   r"   r#   r     r   z1TestDataFrameAnalytics.test_sem.<locals>.<lambda>r   r   r   r,   r   F)r^   r=   r6   r   rA   r   r   r   Znansemr   r9   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   	   NaTr   )HIJKLMNc                 C   s   t ddddg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dd	ddgtd
dddgddddgddddgddtjtjgtdtjdtjgtd	d	ddgtd
dd
dgtjdddd}|t|  j	|d}t |}t
|| d S )Nr         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	   rA   r   r   r   r   arangesortedkeysmoder6   assert_frame_equal)rk   rt   rN   rI   rJ   r"   r"   r#   test_mode_dropna  s(    6


z'TestDataFrameAnalytics.test_mode_dropnac              	   C   sp   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 5 Q R X t	|| d S )Nr   r   Fr   )ZbyT)Zdrop)
r	   rA   r   r6   r7   UserWarningr   Zsort_valuesZreset_indexr   )rk   rI   rN   rJ   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   r3   )r	   r   r
   rA   r   r6   r   rk   rI   rJ   rN   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sxt|d |jd kst|jdd}||jd k st| }|d |jd kst|d |jd kst|jdd}||d
 k st|	 }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dddgddd!g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st|d' |d&  |d*< |  |d( jd)kst|d* jd)kst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   Trg   r   Z20130102r   Z20130105)timetime2r   r   Zoff1timedelta64[ns]Zoff2)r	   r   r   r   rY   r   r9   allrZ   absr6   r   copyr   r   	Timedeltar   r<   r4   _consolidate_inplace)rk   rI   ZdiffsrJ   Zresult2rN   mixedr"   r"   r#   test_operators_timedelta64K  s|    && 

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   r2   r(   r%   r   r   )
r   timedelta_ranger	   r   ilocr]   r   r6   r<   r  )rk   ZtdirI   rJ   rN   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   |r4|rt dd |D r4tjjdd}|j| tdt|i}|j|d}|rft dd |D rzt	dt
jidd	}nt	dd
idd	}t|| d S )Nc                 s   s   | ]}|t jkV  qd S r   r   r   .0valuer"   r"   r#   	<genexpr>  s     zFTestDataFrameAnalytics.test_std_datetime64_with_nat.<locals>.<genexpr>z=GH#51446: Incorrect type inference on NaT in reduction resultreasonr   r	  c                 s   s   | ]}|t jkV  qd S r   r  r  r"   r"   r#   r    s     r   r   l     "R: )r   r>   markxfailnode
add_markerr	   r   r]   r   r   r   r6   r<   )	rk   r   r'   using_array_managerrequestr  rI   rJ   rN   r"   r"   r#   test_std_datetime64_with_nat  s    z3TestDataFrameAnalytics.test_std_datetime64_with_natc                 C   sZ   t  }|d}|d}t|ts(tt|ts6tt|dksFtt|dksVtd S )Nr   r(   )r	   r-   r8   r   r9   r;   )rk   Zempty_frameZaxis0Zaxis1r"   r"   r#   test_sum_corner  s    

z&TestDataFrameAnalytics.test_sum_cornerr3   r   )r   c                 C   s\   t dg|d}t||dd}|dkr,d}n|dkr:d}nd	}tg ||d
}t|| d S )Nr   r   r(   r,   )r   r   boolrU   r   r   r2   )r	   r5   r   r6   r<   )rk   all_reductionsr3   r  rI   rJ   Zexpected_dtyperN   r"   r"   r#   test_axis_1_empty  s    z(TestDataFrameAnalytics.test_axis_1_emptyzmethod, unit)r-   r   )r.   r(   rh   c                 C   s  dddg}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   r   r   r   rh   float64r2   r(   )rh   	min_countr   r   r   r   r   r   r      )r	   rA   r   r5   r   r6   r<   r  )rk   r   rR   rh   idxrI   rJ   rN   r"   r"   r#   test_sum_prod_nanops  s*    
"&z+TestDataFrameAnalytics.test_sum_prod_nanopsc                 C   s   dddg}t ddgdtjgtjtjgd}|t}| }tdddg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]r4   r3   r!  r(   )	r	   rA   r   r=   r   r-   r   r6   r<   )rk   r#  rI   r   rJ   rN   r"   r"   r#   test_sum_nanops_timedelta  s    
"
z0TestDataFrameAnalytics.test_sum_nanops_timedeltac                 C   sN   t dddgdddgd}|jdd	}ttjtjgd
dgd}t|| d S )Nr(   r   r}   r   r   r"  )r   yr   r'  r   r)  r   )r	   r-   r   rA   r   r6   r<   r   r"   r"   r#   test_sum_nanops_min_count!  s    z0TestDataFrameAnalytics.test_sum_nanops_min_count
float_typeZfloat16rx   r   zkwargs, expected_result)r&   r!  g	@g333333@r%   c                 C   sJ   t dddgddtjgd|d}|jf |}t||}t|| d S )Nr   gffffff@皙@g@r}   r   r   r   )r	   rA   r   r-   r   rz   r6   r<   rk   r+  kwargsZexpected_resultrI   rJ   rN   r"   r"   r#   test_sum_nanops_dtype_min_count(  s     z6TestDataFrameAnalytics.test_sum_nanops_dtype_min_countr   r   c                 C   sJ   t dddgddtjgd|d}|jf |}t||}t|| d S )Nr   r   r,  r-  r   )r	   rA   r   r.   r   rz   r6   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r3   r   r(   )r   rz   r   r	   r3   r   r   r-   )rk   rp   r   rD   Zdeltasr"   r"   r#   test_sum_objectJ  s    z&TestDataFrameAnalytics.test_sum_objectc                 C   s"   t |}|d |d d S )Nr(   r   )rA   isnanr-   )rk   rp   boolsr"   r"   r#   test_sum_boolP  s    

z$TestDataFrameAnalytics.test_sum_boolc              	   C   sP   t tdddddddgddddg}tjtdd	 |  W 5 Q R X d S )
Nr   r   r   r(   r   r}   r   z does not support reduction 'sum'r0   )r	   r   r   r>   r?   rj   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 5 Q R X t jtdd |jdd W 5 Q R X |d dk|d< |d}|d |d j kstd S )	Nrb   r0   r   r,   re   r(   r   r  )r>   r?   rj   rV   r   r9   )rk   rp   rl   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 5 Q R X d S )Nr}   
2016-01-01r   1D2016r   r   )r   r   r   r   Tr  r   z'mean is not implemented for PeriodArrayr0   )r	   rA   r   r   r   r
  period_rangerV   r   r6   r<   r>   r?   rj   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 5 Q R X d S )Nr}   r9  r   r:  r   Fr  r(   )r(   r   )r(   r   r;  r   r   r   z"mean is not implemented for Periodr0   )r	   rA   r   r   r   r
  rV   r   r   r6   r<   r<  r>   r?   rj   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  )rA   r   randintr	   rV   r6   r<   )rk   r   rI   rJ   rN   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 5 Q R X t jtdd |d W 5 Q R X t jtdd |d W 5 Q R X t jtdd |d W 5 Q R X d S )Nrc   r0   r(   re   )r>   r?   rj   r]   r\   rV   r_   )rk   rl   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s4td S )Nr(   r   r2  r,   r   )r	   r:   r   r-   r9   )rk   rI   r5  r"   r"   r#   test_sum_bools  s    z%TestDataFrameAnalytics.test_sum_boolsr'   c           	      C   sj   |}t j|jdd< t j|jdddd f< ||fD ]0}|j||d}|jtj||d}t|| q4d S Nr   r      r   r  r%   )rA   r   r  idxminr=   r   r6   r<   	rk   rp   r   r'   r&   rD   rI   rJ   rN   r"   r"   r#   test_idxmin  s    z"TestDataFrameAnalytics.test_idxminc              	   C   s|   t dddgdddgtdd}|rR|j|d}tddgddgd	}t|| n&tjtd
d |j|d W 5 Q R X d S )Nr   r}   r(   xyxr   r  r   r   r   not allowed for this dtyper0   )	r	   listrG  r   r6   r<   r>   r?   rj   rk   rh   rI   rJ   rN   r"   r"   r#   test_idxmin_numeric_only  s     z/TestDataFrameAnalytics.test_idxmin_numeric_onlyc              	   C   s2   |}d}t jt|d |jdd W 5 Q R X d S Nz)No axis named 2 for object type DataFramer0   r   r,   )r>   r?   r@   rG  rk   rp   rD   rm   r"   r"   r#   test_idxmin_axis_2  s    z)TestDataFrameAnalytics.test_idxmin_axis_2c           	      C   sj   |}t j|jdd< t j|jdddd f< ||fD ]0}|j||d}|jtj||d}t|| q4d S rE  )rA   r   r  idxmaxr=   r   r6   r<   rH  r"   r"   r#   test_idxmax  s    z"TestDataFrameAnalytics.test_idxmaxc              	   C   s|   t dddgdddgtdd}|rR|j|d}tddgdd	gd
}t|| n&tjtdd |j	|d W 5 Q R X d S )Nr   r}   r(   rJ  r   r  r   r   r   r   rK  r0   )
r	   rL  rR  r   r6   r<   r>   r?   rj   rG  rM  r"   r"   r#   test_idxmax_numeric_only  s     z/TestDataFrameAnalytics.test_idxmax_numeric_onlyc              	   C   s2   |}d}t jt|d |jdd W 5 Q R X d S rO  )r>   r?   r@   rR  rP  r"   r"   r#   test_idxmax_axis_2  s    z)TestDataFrameAnalytics.test_idxmax_axis_2c                 C   sr  t ddd}tdddgtdd d d |jdd	d
}| }tdddgdddgd}t|| | }tdddgdddgd}t|| t	j
|jd< | }tdddgdddgd}t|| | }tdddgdddgd}t|| |d d d |d< |  | }tddddgddddgd}t|| | }tddddgddddgd}t|| d S )Nr9  r}   r   r   r   r(   r   T)deep)r(   r   r}   r   )r   r}   r   )r   r	   r:   r  rR  r   r6   r<   rG  r   r   r   r  rk   ZdtirI   rJ   rN   r"   r"   r#   test_idxmax_mixed_dtype  s.    ,z.TestDataFrameAnalytics.test_idxmax_mixed_dtypezop, expected_valuerR  rG  r   c                 C   sn   t ddddddgddddddgddd}|d	}t|| }t d
|itddgd	ddd}t|| d S )Nd      r   r(   r   )IDr  r@  r   r[  r  )namer4   r   )r	   groupbyr5   r
   r6   r   )rk   r   Zexpected_valuerI   rJ   rN   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dddg}t	|| |j
d	d
}tdddg}t	|| d S )Nr9  r}   r   r   )r}   r   Tr  )r   r   r(   r,   r   )r   r	   r   r   r  r  rR  r   r6   r<   rG  rW  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&   r`  )rA   r   r   r;   r5   )rk   rC   r&   r`  rl   r  r"   r"   r#   test_any_all_mixed_float4  s    z/TestDataFrameAnalytics.test_any_all_mixed_floatc                 C   s   t |||dd d S )NFra  ro   )rk   rC   r&   bool_frame_with_nar"   r"   r#   test_any_all_bool_with_na>  s    z0TestDataFrameAnalytics.test_any_all_bool_with_nac              	      sL  | 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 5 Q R X |tj	 }	t|	|dd
}
t|	|d	d
}|dkr,|

 rt|
 rHtn|
 s:t| sHtd S )NTc                    s   |   j} |S r   )rt   r   )r   Znonar    r"   r#   rK   K  s    
zFTestDataFrameAnalytics.test_any_all_bool_frame.<locals>.skipna_wrapperc                    s
    | j S r   r   r   r    r"   r#   r$   O  s    z?TestDataFrameAnalytics.test_any_all_bool_frame.<locals>.wrapperr   Fr%   r(   r,   )r)   r/   r0   r   r   )Zfillnar5   rA   r6   r<   r=   r>   r?   r@   rB   r   r9   r   )rk   rC   rc  rD   rH   rK   r$   rL   rM   rO   rP   rQ   r"   r    r#   test_any_all_bool_frameC  s6    




  

z.TestDataFrameAnalytics.test_any_all_bool_framec                 C   s0  t dddgdddgdddgddddgd}|dd	g jd
d}tdddgdddgd}t|| |dd	g jd
dd}t|| |d
}tdddgdddgd}t|| |jd
dd}t|| |jd d }|dkst|jd d }|dkst|dg jd d }|dks,td S )NTFr   r   r   r   r   r   r   r(   r,   ra  r`  r   )r	   r   r   r6   r<   r   itemr9   r   r"   r"   r#   test_any_all_extrao  s.    
z)TestDataFrameAnalytics.test_any_all_extrabool_agg_funcc                 C   sx   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ddddg}t|| d S )Nr(   Tr   5datar%   )r	   rA   r   r5   r   r6   r<   )rk   r&   ri  r'   rI   rJ   rN   r"   r"   r#   test_any_all_object_dtype  s    z0TestDataFrameAnalytics.test_any_all_object_dtypezAignore:'any' with datetime64 dtypes is deprecated.*:FutureWarningc                 C   sb   dt jdt jg}tdtdtjtjg}t||d}|jdd}tddddg}t	|| d S )	Nr(   r}   z
1960-02-15z
1960-02-16r   r,   TF)
rA   r   r   r   r   r	   r   r   r6   r<   )rk   Z
float_dataZdatetime_datarI   rJ   rN   r"   r"   r#   test_any_datetime  s    z(TestDataFrameAnalytics.test_any_datetimec                 C   s   t dddgdddgd d d gd}|jdd	}ttjg d
}t|| t dddgdddgd d d gdddgd}|jdd	}tddi}t|| d S )Nr(   r   r}   r   r   r"  )col1col2col3Trf  r&  F)ro  rp  rq  col4rr  )r	   r   r   rA   bool_r6   r<   r   r"   r"   r#   test_any_all_bool_only  s     	z-TestDataFrameAnalytics.test_any_all_bool_onlyzfunc, data, expectedr   r   r   zM8[ns]zM8[ns, UTC]r%  categoryr   r   c              	   C   s.  t |}tdd |jD rptjtdd || W 5 Q R X tjtdd tt ||jd d W 5 Q R X nd}|jdd  rt	}nd }t
j||d	d
 ||}W 5 Q R X t|tjst| |kstt
j||d tt ||jd d}W 5 Q R X t|tjst| |ks*t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 reductionr0   r,   z0'(any|all)' with datetime64 dtypes is deprecatedc                 S   s
   | j dkS )Nr   )kindr   r"   r"   r#   r     r   z=TestDataFrameAnalytics.test_any_all_np_func.<locals>.<lambda>F)r1   Zcheck_stacklevel)r	   r   dtypesr>   r?   rj   r5   __name__r=   FutureWarningr6   r7   r8   rA   rs  r9   rg  )rk   funcrl  rN   rm   warnrJ   r"   r"   r#   test_any_all_np_func  s0    5  " z+TestDataFrameAnalytics.test_any_all_np_funcc                 C   sL   t tddgd }|dks$tt tddgd }|dksHtd S )Nr   r   r   TF)rA   r   r	   rg  r9   r   )rk   rJ   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
st
|jdd	d
}tdgdgd}t	|| |dg jdd	d
}t	|| |jdd d
s t
d S )Nr   r   TFr   r   ru  r   r   )r`  r&   r   r   )r	   rz   r   r  r   Z_get_bool_datar6   r   r   r<   r9   r   )rk   rI   resrN   r"   r"   r#   test_any_all_object_bool_only*  s&    
z4TestDataFrameAnalytics.test_any_all_object_bool_onlyc              	   C   s   t dddg}t dtjdtjgi}tdddg}ttjtjdg}td 0 |j|dd dD ]}t|||dd qbW 5 Q R X d S )	Nr   r   r   r(   r   )lowerr&   )ltlegtgeeqner,   )r	   rA   r   r   r6   r7   Zclipr5   )rk   rI   Zdf_nanrs   Zs_nanr   r"   r"   r#   test_series_broadcastingO  s    z/TestDataFrameAnalytics.test_series_broadcasting)Xrx  
__module____qualname__r>   r  parametrizeparamtdZskip_if_no_scipyrn   rq   r|   r   r   r	   rA   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  r6   ZmakeRangeIndexZmakeDateIndexZmakeNumericIndexr   r   ZmakePeriodIndexr  r$  r(  r*  rB   r0  r1  r3  r6  r7  r8  r=  r>  rB  rC  rD  rI  rN  rQ  rS  rT  rU  rX  r^  r_  rb  rd  re  rh  rm  filterwarningsrn  rt  r   r   r   r|  r}  r  r  r"   r"   r"   r#   rT      s  8
 $







5
W 


 	
	

	

&

+!


3
#%rT   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e
d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   rY   r   r6   r<   rZ   )rk   rI   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stt|| |jddd	}t
|jd tjg}|j|d jkst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   )r8   r   r   r>   skipr	   r   r   r   rY   r   r   r4   r9   r6   r<   rZ   )rk   r  Ztz_naive_fixturer   rI   r~  rN   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k| tjkksBt|jddjtjk| tjkkshtt	
|jdd| t	
|jdd| d S )Nr   r   r,   r(   )r	   r   r   rY   r   r   r   r9   rZ   r6   r<   )rk   rI   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>tt|jddjt| ksdtt	
|jdd| t	
|jdd| d S )Nr   r   r   r,   r(   )r	   r   r   rA   r4  rY   r   r9   rZ   r6   r<   )rk   rI   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   rY   rZ   )r  c                 C   s<   t |}t|g}t|g}t||dd}t|| d S )Nr(   r,   )r   r   r	   r5   r6   r<   )rk   r  r   Z
initial_dtrN   rI   rJ   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}|r`t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   r5   r6   r<   )rk   r   r'   valrI   r   rJ   rN   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   rs   r(   ms)r   tr,   FTr   r  )rl  r3   rk  )r	   r   r   r   r6   r<   r   r"   r"   r#   test_frame_any_with_timedelta  s    
z5TestDataFrameReductions.test_frame_any_with_timedeltac              	   C   s^   |dkr|j tjjdd |dddg}d}tjt|d t||d d	 W 5 Q R X d S )
NrU   zCount does not accept skipnar  r(   r   r}   zAFor argument "skipna" expected type bool, received type NoneType.r0   r	  )r  r  r>   r  r  r?   r@   r5   )rk   r  Zframe_or_seriesr  objrm   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   r&  )r	   r   r   rZ   r6   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   r&  )r	   r   r   r  rZ   r6   r<   r   r"   r"   r#   &test_reduction_timedelta_smallest_unit  s    z>TestDataFrameReductions.test_reduction_timedelta_smallest_unitN)rx  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   s   t ddgddd}| }tjtdd t||  W 5 Q R X tjtdd tt|| W 5 Q R X tjtdd t||dd	 W 5 Q R X tjtdd t||d d	 W 5 Q R X tjtdd tt||dd
 W 5 Q R X d S )Nr   r(   ru  r   )r4   r\  does not support reductionr0   Frf  r,   )r   to_framer>   r?   rj   r5   rA   )rk   r   serrI   r"   r"   r#   .test_any_all_categorical_dtype_nuisance_column  s    zBTestNuisanceColumns.test_any_all_categorical_dtype_nuisance_columnc              	   C   s   t dtdddddgi}|d }tjtdd |  W 5 Q R X tjtdd |jdd W 5 Q R X tjtdd |  W 5 Q R X |d t|d	< tjtdd |jdd W 5 Q R X tjtdd |  W 5 Q R X d S )
Nr   r(   r   r}   r  r0   Fr  r   )r	   r   r>   r?   rj   rX   rz   r   )rk   rI   r  r"   r"   r#   -test_median_categorical_dtype_nuisance_column#  s    zATestNuisanceColumns.test_median_categorical_dtype_nuisance_columnrY   rZ   c              	   C   sX  t ddddgdd}t|}|d}tjtdd t||  W 5 Q R X tjtdd tt|| W 5 Q R X tjtdd t||dd	 W 5 Q R X tjtdd t||  W 5 Q R X tjtdd tt||d
d W 5 Q R X |d t	|d< tjtdd t||  W 5 Q R X tjtdd tt||d
d W 5 Q R X d S )Nr   r   r   F)Zorderedr   zis not ordered for operationr0   r  r   r,   r   )
r   r   r  r>   r?   rj   r5   rA   rz   r   )rk   r   catr  rI   r"   r"   r#   :test_min_max_categorical_dtype_non_ordered_nuisance_column>  s$    
zNTestNuisanceColumns.test_min_max_categorical_dtype_non_ordered_nuisance_columnN)	rx  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 sbt|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  rA   r   rz   r   viewZreshaper	   rw  r4   r   r9   r-   r   r   r  r   r6   r<   )r  r  r  r   rI   rJ   rN   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   r@  r   )r	   rL  rz   r-   r   r6   r<   )rI   rJ   rN   r"   r"   r#   !test_mixed_frame_with_integer_sum  s
    r  rh   r   rY   rZ   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   r@  r  r   r   )rA   Ziinfor   rZ   rY   r   Z
Int64Dtyper	   r5   r
   r6   r<   )r   rh   Z
int64_infor  rI   rJ   rN   r"   r"   r#   test_minmax_extensionarray  s    

 r  ts_valuez
2000-01-01c              	   C   s@   t dgdgdg| gd}tjtdd |  W 5 Q R X d S )Nr(   g?r   )r   r   r   r   r  r0   )r	   r>   r?   rj   r-   )r  rI   r"   r"   r#   .test_frame_mixed_numeric_object_with_timestamp  s    r  c               	   C   sl   t dddg} | jdddd}tdg}t|| td}tjt	|d | j
dddd W 5 Q R X d S )	Nr(   r   Tr   F)r&   r!  rh   z2unsupported operand type(s) for +: 'int' and 'str'r0   )r	   r.   r   r6   r<   reescaper>   r?   rj   r-   )rI   rJ   rN   rm   r"   r"   r#   $test_prod_sum_min_count_mixed_object  s    

r  rV   rX   r_   r`   c                 C   s   t tjdd}t|| d |d}| }| dkrltd}| dkrJd} t|| |dd d}t	|| ntt| |d d	}||kst
d S )
Nr   rg   >   r`   r_   zscipy.statsr`   r   F)r   r&   r,   )r	   rA   r   r   r5   Zto_numpyr>   Zimportorskipr6   r   r9   )r   rh   rI   rJ   Znp_arrZcomp_modrN   r"   r"   r#   'test_reduction_axis_none_returns_scalar  s    
r  kernelZcorrcorrwithZcovrR  rG  r.   Zquantiler^   r]   r-   r\   c              	   C   sf   t dddgtd}| dkr"|fnd}ddd	d
ddg}tjt|d t|| |  W 5 Q R X d S )Nr(   r   r}   r-  r  r"   ra   rK  z%argument must be a string or a numberrf   re   z*argument must be a string or a real numberr0   )r	   r   ri   r>   r?   rj   r5   )r  rI   argsrm   r"   r"   r#   test_fails_on_non_numeric  s    	r  )TTFr   r   N)2datetimer   decimalr   r  Zdateutil.tzr   ZnumpyrA   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_testingr6   Zpandas.corer   r   rS   rT   r  r  r  r  r  r  r  r   r  r  r  r  r"   r"   r"   r#   <module>   s   0
      
n         V 0R"	
