a
    PfP-                    @   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ZmZ d dlmZ d dlm  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 m!Z!m"Z"m#Z#m$Z$ d dl%m&Z' d d	l(m)Z)m*Z* e re pe Z+e pe Z,d@d
dZ-dAddZ.e	j/dd Z0e	j/dd Z1G dd dZ2G dd dZ3G dd dZ4G dd dZ5dd Z6e	j7j8e d d!d"d# Z9e	j7:d$g d%e	j7:d&d'd(gd)d* Z;e	j7:d+ed,ej<gd-d. Z=d/d0 Z>e	j7:d&g d1e	j7:d$ddge	j7:d2d3d4gd5d6 Z?e	j7:d7g d8d9d: Z@e	j7:d&g d;e	j7:d<d d=gd>d? ZAdS )B    )	timedelta)DecimalN)tzlocal)using_pyarrow_string_dtype)IS64is_platform_windows)np_version_gt2)CategoricalCategoricalDtype	DataFrameDatetimeIndexIndexPeriodIndex
RangeIndexSeries	Timestamp
date_rangeisnanotnato_datetimeto_timedelta)
algorithmsnanopsc                    s"   rfdd}n fdd}|S )a`  
    Create a function for calling on an array.

    Parameters
    ----------
    alternative : function
        The function to be called on the array with no NaNs.
        Only used when 'skipna_alternative' is None.
    skipna_alternative : function
        The function to be called on the original array

    Returns
    -------
    function
    c                    s
    | j S Nvaluesxskipna_alternative [/var/www/ai-form-bot/venv/lib/python3.9/site-packages/pandas/tests/frame/test_reductions.pyskipna_wrapper?   s    z+make_skipna_wrapper.<locals>.skipna_wrapperc                    s"   |   }t|dkrtjS  |S )Nr   )dropnalennpnanr   Znonaalternativer    r!   r"   D   s    r    )r)   r   r"   r    )r)   r   r!   make_skipna_wrapper-   s    r*   TFh㈵>:0yE>c	                    s  t || }	|rtdtdddi}
td t |
|  }W d   n1 sN0    Y  t|tsfJ tt|
|
d< td t |
|  }W d   n1 s0    Y  t|tsJ t|sJ |r2 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 s0    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 )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 r   r   r   r(   r    r!   wrapper   s    z$assert_stat_op_calc.<locals>.wrapperr   Faxisskipna   )check_dtypertolatolr4   )r8   r9   )sumprodNo axis named 2matchr<   indexdtype)getattrr   r   tmassert_produces_warning
isinstancer   ranger$   r*   assert_series_equalapplyr   rB   pytestraises
ValueErrorr%   r&   rA   )opnamer)   frame
has_skipnar7   check_datesr8   r9   r   fdfresultr2   r"   result0result1expectedZ	lcd_dtypeall_nar0r1unitr    r(   r!   assert_stat_op_calcM   sp    %
**




*

r[   c                  C   s   t tjtjdtdtjdtdgddtdd tdD tdtt	dtdtd	} tj
| jd
d< tj
| jddddf< | S )z
    Fixture for DataFrame of booleans with index of unique strings

    Columns are ['A', 'B', 'C', 'D']; some entries are missing
    )      rB   r   r:   c                 S   s   g | ]}d | qS Zfoo_r    .0ir    r    r!   
<listcomp>       z&bool_frame_with_na.<locals>.<listcomp>   ABCD)rA   columnsrB      
   r\      N)r   r%   ZconcatenateZonesboolZzerosr   rG   objectlistr&   ilocrR   r    r    r!   bool_frame_with_na   s    	rq   c                  C   sj   t tjddtdd tdD tdttdtdd} tj	| j
d	d
< tj	| j
ddddf< | S )z
    Fixture for DataFrame of floats with index of unique strings

    Columns are ['A', 'B', 'C', 'D']; some entries are missing
    r.   )re   r]   c                 S   s   g | ]}d | qS r_   r    r`   r    r    r!   rc      rd   z'float_frame_with_na.<locals>.<listcomp>re   r^   rf   rA   rg   rh   ri   r\   rj   rk   N)r   r%   randomdefault_rngstandard_normalr   rG   rm   rn   r&   ro   rp   r    r    r!   float_frame_with_na   s    rv   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ddejded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ddejdeddgdd Z
dd Z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ejd-d.d/ Zejd0g d1d2d3 Zejje d4d5d6d7 Zd8d9 Zejd:d;d<gd=d> Zejd:d;d<gd?d@ ZdAdB ZdCdD ZejdEg dFdGdH ZdIdJ ZejdKdLdMgdNgdOgdPgedPgdPgdQe dRgdSd,e!dTgdUfdVdMgdNgejgej"ejged,eejgdPgdQe e#j$gdSd,e!e#j$gdUfdLdWdXejejgdWdXejejgdejejejgedPejejejgdPgdQe g dYdSd,e!g dZg d[d\fdVdWdXejejgdWdXejejgdejejejgeejdPejejgdPgdQe g d]dSd,e!g d^g d[d\fgd_d` Z%dadb Z&dcdd Z'dedf Z(dgdh Z)ejdidjdke#j$dlgd*e#j$g gdmdn Z*dodp Z+ejdqe,de g e-g ej.d,e-g ej/d,e g drdse0g dtdsgdudv Z1ejdwdxdygejdzg d{d|d} Z2d~d Z3dd Z4ejdg dejddd(dddejgfdd)dejejejgfddVdddejgfgdd Z5ejdg dejddd(dddejgfdd)dejejejgfddVdddejgfgdd Z6dd Z7dd Z8dd Z9dd Z:dd Z;dd Z<dd Z=dd Z>dd Z?ejddLdVgejdddgdd Z@ejdddgejddd ZAejdzdLdVgdd ZBdd ZCejddLdVgejdddgdd ZDejdddgejddd ZEejdzdLdVgdd ZFdd ZGdd ZHdd ZIejdddd*gfdddgfgdd ZJdd ZKejdddgejdddgejddVdLgddÄ ZLejdddgejdddgddń ZMejdơejdddgddȄ ZNddʄ ZOejdddgejdddgejddLdVgdd̈́ ZPejdΡddЄ ZQdd҄ ZRejdejSi dVfejTi dLfejSdg idVfejTdg idLfejSddVdVgidVfejTddVdVgidVfejSddLdVgidLfejTddLdVgidVfejSddLdLgidLfejTddLdLgidLfejSdVgdVgd՜dVfejTdVgdVgd՜dVfejSdVdVgdVdLgd՜dLfejTdVdVgdVdLgd՜dVfejTdeUddOgdd,idVfejSdeUddOgdd,idLfejTdeUddgeVd,idVfejSdeUddgeVd,idLfeejTdeUddgdSd,idVeejTdeUddgdd,idVeejSdeUddgdSd,idLeejSdeUddgdd,idLeejTdeUdd(gdSd,idLeejTdeUdd(gdd,idLeejSdeUdd(gdSd,idLeejSdeUdd(gdd,idLeejTdeUddgdd,idVeejSdeUddgdd,idLeejTdeUdd(gdd,idLeejSdeUdd(gdd,idLejTdeUddgdd,idLfejSdeUddgdd,idVfejTdeUdd(gdd,idLfejSdeUdd(gdd,idVfeejTeUddgdSd,eUddgdd,d՜dLg#ddބ ZWdd ZXdd ZYdd ZZd;S )TestDataFrameAnalyticsr4   r   r6   rM   countr;   meanproductmedianminmaxnuniquevarstdsemskewZscipy)Zmarkskurtc                 C   s.  |dv r|dks|dv r6|r$|dks6t |||d n|dv rDd}nv|dkr`|d	krZd
}qd}nZ|dkrnd}nL|dkr|dkrdddg}qd}n&|dv rd}n|dkrtjdtjd}t|tjs|d }tjt	|d  t |||d W d    n1 s0    Y  |dkr*t |||dd d S )N)r;   r|   r}   r   rx   r~   r;   r:   )r   r   r   r   r   z(could not convert string to float: 'bar'rz   r6   z2can't multiply sequence by non-int of type 'float'z0can't multiply sequence by non-int of type 'str'z7unsupported operand type\(s\) for \+: 'float' and 'str'ry   |z%Could not convert \['.*'\] to numericz/Could not convert string '(bar){30}' to numericr|   r}   z<'[><]=' not supported between instances of 'float' and 'str'r{   z1Cannot convert \[.*\] to numeric|does not support)flagsz|does not supportr>   r~   Tr4   numeric_only)
rC   joinrecompileSrF   PatternrJ   rK   	TypeError)selffloat_string_framer4   rM   using_infer_stringmsgr    r    r!   #test_stat_op_api_float_string_frame   sR    0
z:TestDataFrameAnalytics.test_stat_op_api_float_string_framec                 C   s   t |||dd d S )NFr   rC   )r   float_framer4   rM   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!   rx   <  s    z7TestDataFrameAnalytics.test_stat_op_calc.<locals>.countc                 S   s   t t|  S r   )r$   r   Zunique1dr#   r   r    r    r!   r~   ?  s    z9TestDataFrameAnalytics.test_stat_op_calc.<locals>.nuniquec                 S   s   t j| ddS Nr6   Zddof)r%   r   r   r    r    r!   r   B  s    z5TestDataFrameAnalytics.test_stat_op_calc.<locals>.varc                 S   s   t j| ddS r   )r%   r   r   r    r    r!   r   E  s    z5TestDataFrameAnalytics.test_stat_op_calc.<locals>.stdc                 S   s   t j| ddt t|  S r   )r%   r   sqrtr$   r   r    r    r!   r   H  s    z5TestDataFrameAnalytics.test_stat_op_calc.<locals>.semr~   FT)rO   r7   rP   r;   float32gMbP?)r7   r8   r   ry   rP   rz   r   r   r   rx   )r[   r%   r;   astypeZnansumry   r<   Znanprod)r   rv   Zmixed_float_framerx   r~   r   r   r   r    r    r!   test_stat_op_calc;  sL    z(TestDataFrameAnalytics.test_stat_op_calcc                    s>   t d  fdd} fdd}td|| td|| d S )Nscipy.statsc                    s    t | dk rtjS  j| ddS )N   Fbias)r$   r%   r&   r   r   Zsp_statsr    r!   skewnessv  s    zHTestDataFrameAnalytics.test_stat_op_calc_skew_kurtosis.<locals>.skewnessc                    s    t | dk rtjS  j| ddS )Nr]   Fr   )r$   r%   r&   kurtosisr   r   r    r!   r   {  s    zDTestDataFrameAnalytics.test_stat_op_calc_skew_kurtosis.<locals>.kurtr   r   )rJ   importorskipr[   )r   rv   r   r   r    r   r!   test_stat_op_calc_skew_kurtosiss  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   anyr%   r&   r{   r   r    r    r!   r2     s    z3TestDataFrameAnalytics.test_median.<locals>.wrapperr{   Tr   F)r7   rP   )r[   )r   rv   	int_framer2   r    r    r!   test_median  s
    
z"TestDataFrameAnalytics.test_medianmethod)r;   ry   r<   r   r   r   r|   r}   rR   )gȃw@Ba@gCVZg
?Z.F?)r   r           )g94c4?g@}jX?gNr1   r-   cfoobarbazOr@   r.   r   r]   r   r6   r.   r^   z0ignore:Mismatched null-like values:FutureWarningc                 C   sj   |j jtjksJ t|||d}t|d||dt}|dv rZ|dv rZd || < t	|| d S )Nr:   Zf8)r6   rg   r   )
r   rB   r%   Zobject_rC   r   rm   r   rD   rH   )r   r   rR   r4   rS   rV   r    r    r!   %test_stat_operators_attempt_obj_array  s    z<TestDataFrameAnalytics.test_stat_operators_attempt_obj_arrayop)ry   r   r   r   r   r   c              	   C   s   t g dg dg dd}dg d}tjt|d t||  W d    n1 sZ0    Y  tdd	X dg d}tjt|d t||  W d    n1 s0    Y  W d    n1 s0    Y  d S )
Nr6   r.   r   r]   )      ?       @      @      @r1   r-   r   d)intfloatstrr   )zCould not convertcould not convertz"can't multiply sequence by non-intzdoes not supportr>   use_bottleneckF)r   r   rJ   rK   r   rC   pdoption_context)r   r   rR   r   r    r    r!   test_mixed_ops  s"    *z%TestDataFrameAnalytics.test_mixed_opsz"sum doesn't work for arrow stringsreasonc                 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)ri   rj   re   (   2   )r1   r-   r   r   e)Z	bool_dataZint_dataZstring_datarg   r   r:   )r.      Zabcder^   r6   )r   reindexr;   rD   Zassert_numpy_array_equalr   r%   arrayrm   TrH   )r   rR   testZaltr    r    r!   test_reduce_mixed_frame  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r6   r6   r6   r6   r.   r   r6   r   ABCr.   Fr#   r:   r   )r4   r#   )r   r%   r&   rD   rH   r~   r   r   rR   r    r    r!   test_nunique  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 )
Nr6   2000r   r.   r   r   r   r   r   rA   r   r   ry   r   rD   rH   r   r   rR   rS   rV   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 s0    Y  |ddg  }tddgddgtd}t	|| d S )Nr.   z628.00r   r6   z383.00r   z651.00z575.00r]   z1114.00TESTz241.00z572.00z609.00z820.00rh   z1223.00z)unsupported operand type|does not supportr>   r   r   g@gL@r@   )
r   r   rJ   rK   r   ry   r   rm   rD   rH   )r   r   rR   rS   rV   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d	}t	j
|d	d
}|d	k  rJ tdd. t	j
|d	d
}|d	k  rJ W d    n1 s0    Y  d S )Nr]   r   c                 S   s   | j ddS Nr]   r   )r   r   r    r    r!   <lambda>"  rd   z5TestDataFrameAnalytics.test_var_std.<locals>.<lambda>c                 S   s   | j ddS r   )r   r   r    r    r!   r   &  rd   r.   r6     r   r   r:   r   F)r   rI   rD   assert_almost_equalr   r%   repeatrs   rt   r   Znanvarr   r   r   r   Zdatetime_framerS   rV   arrr    r    r!   test_var_std   s    z#TestDataFrameAnalytics.test_var_stdmeth)r   r   r   c                 C   sh  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 s0    Y  d}tjt|d" t||d	dd W d    n1 sZ0    Y  d S )Nr.   )rh   r   r   r   r   100)r   r   r1   r6   Tr   r   r   r:   z6unsupported operand type\(s\) for -: 'float' and 'str'r>   Fz&could not convert string to float: 'a')r   r%   rs   rt   ru   r   rm   locrC   rD   rH   rJ   rK   r   )r   r   Zdf1df2rS   rV   r   r    r    r!   test_numeric_only_flag1  s0    

2z-TestDataFrameAnalytics.test_numeric_only_flagc                 C   s   |j dd}|dd }t|| ttjdddd}tj	|dd	}|dk 
 r`J td
d. tj	|dd	}|dk 
 rJ W d    n1 s0    Y  d S )Nr]   r   c                 S   s   | j ddtt|  S r   )r   r%   r   r$   r   r    r    r!   r   X  rd   z1TestDataFrameAnalytics.test_sem.<locals>.<lambda>r.   r   r   r   r:   r   F)r   rI   rD   r   r%   r   rs   rt   r   Znansemr   r   r   r   r    r    r!   test_semV  s    zTestDataFrameAnalytics.test_semzdropna, expectedT   g      $@r   r1   )
categories
2000-01-02M8[ns]1 days)r   r   r   DEFGF   	   )r   NaTr  r  r   r&   r&   r&   r   r6   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tjtjdtjgtdttjtjdtjgtg dd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ddtg dtjdddd}|t	|
  j|d}t |}t|| d S )N)r   r         ri   r   r6   r1   r^   r  r   r  )r  r  r  r  )r  r  r  r  )r   r   r  r  )r   r&   r   r&   r]   int64)r   r   r   r   r   r   r   r  r  r  r	  r
  r  r  r   )r   r%   r&   r   rm   r	   r   r   arangesortedkeysmoderD   assert_frame_equal)r   r#   rV   rR   rS   r    r    r!   test_mode_dropnac  s,    :

z'TestDataFrameAnalytics.test_mode_dropnac                 C   s   t dtjtjddgi}t ddtjgi}|r2d nt}t|0 |jdd}|jddjdd}W d    n1 sv0    Y  t	|| d S )Nr   r1   Fr   )ZbyT)Zdrop)
r   r%   r&   UserWarningrD   rE   r  Zsort_valuesZreset_indexr  )r   r   rR   rV   warningrS   r    r    r!   test_mode_sortwarning  s    2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 )Nr1   r-   r   r^   rg   rA   )r   r  r   r%   r  rD   r  r   rR   rS   rV   r    r    r!   test_mode_empty_df  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}| }|jd |jd kszJ |jd |jd ksJ |jdd}||jd k sJ | }|jd |jd ksJ |jd |jd ksJ |jdd}||d
 k sJ |	 }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sJ |d( |d'  |d+< |  |d) jd*ksJ |d+ jd*ksJ d S ),Nz2012-1-1r   r   r0   freqz2012-1-2Z20120101rh   )minutessecondsr   r   r   r   r   r   )r   r   r6   )r   r   r:   )r.   r   )r.   r   r   r   r   Z20130101r   i1  r   )daysr   Tr   )r6   r6   r   r   Z20130102r/   Z20130105)timetime2r%  r$  Zoff1timedelta64[ns]Zoff2)r   r   r   r   r|   ro   r   allr}   absrD   r  copyr   r   	Timedeltarg   rH   rB   _consolidate_inplace)r   rR   ZdiffsrS   Zresult2rV   mixedr    r    r!   test_operators_timedelta64  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 Dayri   r/   r   Tr)  )rk   r"  Fr5   r   r   r&  r@   r6   r3   r   r  )
r   timedelta_ranger   r  ro   r   r   rD   rH   r*  )r   ZtdirR   rS   rV   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   |r2|rt dd |D r2tjjdd}|| t||}td|i}|j|d}	|rnt dd |D rt	dt
jid| d	d
}
nt	ddid| d	d
}
t|	|
 d S )Nc                 s   s   | ]}|t ju V  qd S r   r   r  ra   valuer    r    r!   	<genexpr>9  rd   zFTestDataFrameAnalytics.test_std_datetime64_with_nat.<locals>.<genexpr>z=GH#51446: Incorrect type inference on NaT in reduction resultr   r1   r/  c                 s   s   | ]}|t ju V  qd S r   r2  r3  r    r    r!   r5  B  rd   ztimedelta64[]r^   l     "R: )r'  rJ   markxfailapplymarkerr   Zas_unitr   r   r   r   r  rD   rH   )r   r   r5   using_array_managerrequestrZ   r7  dtirR   rS   rV   r    r    r!   test_std_datetime64_with_nat1  s     
z3TestDataFrameAnalytics.test_std_datetime64_with_natc                 C   sZ   t  }|d}|d}t|ts(J t|ts6J t|dksFJ t|dksVJ d S )Nr   r6   )r   r;   rF   r   r$   )r   Zempty_frameZaxis0Zaxis1r    r    r!   test_sum_cornerI  s    

z&TestDataFrameAnalytics.test_sum_cornerrA   ZME)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 )Nr1   r  r6   r:   )r   r'  rl   rx   r  rm   r@   r   rC   r   rD   rH   )r   all_reductionsrA   rR   rS   expected_dtyperV   r    r    r!   test_axis_1_emptyS  s    z(TestDataFrameAnalytics.test_axis_1_emptyzmethod, unit)r;   r   )r<   r6   r   )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   r   float64r@   r6   )r   	min_countr   r   ri   rh   r   r   r      )r   r%   r&   rC   r   rD   rH   ro   )r   r   rZ   r   idxrR   rS   rV   r    r    r!   test_sum_prod_nanopsj  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]rB   rA   rE  r6   )	r   r%   r&   rI   r   r;   r   rD   rH   )r   rG  rR   r   rS   rV   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]   rh   rF  )r   yri   rK  r   rN  r   )r   r;   r   r%   r&   rD   rH   r  r    r    r!   test_sum_nanops_min_count  s    z0TestDataFrameAnalytics.test_sum_nanops_min_count
float_type)Zfloat16r   rD  zkwargs, expected_result)r4   rE  g	@g333333@r3   c                 C   sL   t g dddtjgd|d}|jf i |}t||}t|| d S )N)r   gffffff@皙@g@r   r1   r-   r^   )r   r%   r&   r;   r   r   rD   rH   r   rP  kwargsZexpected_resultrR   rS   rV   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f i |}t||}t|| d S )N)r   r   rQ  r   rR  r^   )r   r%   r&   r<   r   r   rD   rH   rS  r    r    r!    test_prod_nanops_dtype_min_count  s    z7TestDataFrameAnalytics.test_prod_nanops_dtype_min_countc                 C   s6   |j t}t||j|jd}|td }|  d S )Nrr   r6   )r   r   r   r   rA   rg   r   r;   )r   r   r   rN   Zdeltasr    r    r!   test_sum_object  s    z&TestDataFrameAnalytics.test_sum_objectc                 C   s"   t |}|d |d d S )Nr6   r   )r%   isnanr;   )r   r   boolsr    r    r!   test_sum_bool  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    n1 sP0    Y  d S )	Nr   r]   r/   r   r   )r.   r   r]   z does not support reduction 'sum'r>   )r   r   r   rJ   rK   r   r;   r   r    r    r!   test_sum_mixed_datetime  s
    z.TestDataFrameAnalytics.test_sum_mixed_datetimec                 C   s   d}t jt|d |jdd W d    n1 s40    Y  t jtdd |jdd W d    n1 sn0    Y  |d dk|d< |d}|d |d j ksJ d S )	Nz"Could not convert|does not supportr>   r   r:   unsupported operand typer6   r   rl   )rJ   rK   r   ry   r   )r   r   r   r   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    n1 s0    Y  d S )Nr   
2016-01-01r/   1D2016Yr  )r   r   r   r   TrC  r   r   z'mean is not implemented for PeriodArrayr>   )r   r%   r  r   r   r0  period_rangery   r   rD   rH   rJ   rK   r   r  r    r    r!   test_mean_datetimelike  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    n1 s0    Y  d S )Nr   r^  r/   r_  r   FrC  r6   )r6   r   )r6   r   r`  ra  r  r   z"mean is not implemented for Periodr>   )r   r%   r  r   r   r0  ry   r   r   rD   rH   rb  rJ   rK   r   r  r    r    r!   )test_mean_datetimelike_numeric_only_false  s    
	z@TestDataFrameAnalytics.test_mean_datetimelike_numeric_only_falsec                 C   sP   t jdjddd}t|dd}|jdd}t| d	}t|| d S )
Nr.   r   )ri   rh   )sizeInt64r^   TrC  Float64)	r%   rs   rt   Zintegersr   ry   r   rD   rH   )r   r   rR   rS   rV   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.0    Y  t jtdd |d W d    n1 sf0    Y  t jtdd |d W d    n1 s0    Y  t jtdd |d W d    n1 s0    Y  d S )Nr   r>   r6   r\  )rJ   rK   r   r   r   ry   r   )r   r   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s4J d S )Nr6   ri   rr   r:   r   )r   rG   r   r;   )r   rR   rY  r    r    r!   test_sum_bools'  s    z%TestDataFrameAnalytics.test_sum_boolsr5   c              	   C   s   |}t j|jdd< t j|jdddd f< ||fD ]}d }|du sL|dkr\||u rXd nt}d}tj||d	 |j||d
}	W d    n1 s0    Y  d}
tj||
d	" |jtj||d
}W d    n1 s0    Y  |	|j
j}t|	| q4d S )Nrh   ri   r\   rj   rk   Fr6   z3The behavior of DataFrame.idxmin with all-NA valuesr>   r3   zThe behavior of Series.idxmin)r%   r&   ro   FutureWarningrD   rE   idxminrI   r   r   rA   rB   rH   r   r   r   r5   r4   rN   rR   warnr   rS   msg2rV   r    r    r!   test_idxmin/  s    ,0z"TestDataFrameAnalytics.test_idxminz3ignore:PeriodDtype\[B\] is deprecated:FutureWarningc                 C   sH   |dkrt |d}n
t |d}|j||d}t|jd}t|| d S Nr   r   r   r3   r^   )r   rl  r   rB   rD   rH   r   rA   r5   r4   rN   rS   rV   r    r    r!   test_idxmin_emptyC  s    
z(TestDataFrameAnalytics.test_idxmin_emptyc                 C   sf   t g dg dtdd}|j|d}|rBtddgdd	gd
}ntg dg dd
}t|| d S )Nr.   r   r6   r.   r6   r6   xyxr   rC  r.   r6   r1   r-   r   )r.   r6   r   )r   rn   rl  r   rD   rH   r   r   rR   rS   rV   r    r    r!   test_idxmin_numeric_onlyP  s    z/TestDataFrameAnalytics.test_idxmin_numeric_onlyc                 C   sF   |}d}t jt|d |jdd W d    n1 s80    Y  d S Nz)No axis named 2 for object type DataFramer>   r.   r:   )rJ   rK   rL   rl  r   r   rN   r   r    r    r!   test_idxmin_axis_2Z  s    z)TestDataFrameAnalytics.test_idxmin_axis_2c              	   C   s   |}t j|jdd< t j|jdddd f< ||fD ]}d }|du sL|dkr\||u rXd nt}d}tj||d	 |j||d
}	W d    n1 s0    Y  d}
tj||
d	" |jtj||d
}W d    n1 s0    Y  |	|j
j}t|	| q4d S )Nrh   ri   r\   rj   rk   Fr6   z3The behavior of DataFrame.idxmax with all-NA valuesr>   r3   zThe behavior of Series.idxmax)r%   r&   ro   rk  rD   rE   idxmaxrI   r   r   rA   rB   rH   rm  r    r    r!   test_idxmax`  s    ,0z"TestDataFrameAnalytics.test_idxmaxc                 C   sH   |dkrt |d}n
t |d}|j||d}t|jd}t|| d S rq  )r   r|  r   rB   rD   rH   rr  r    r    r!   test_idxmax_emptyt  s    
z(TestDataFrameAnalytics.test_idxmax_emptyc                 C   sf   t g dg dtdd}|j|d}|rBtddgdd	gd
}ntg dg dd
}t|| d S )Nrt  ru  rv  r   rC  r6   r   r1   r-   r   )r6   r   r6   )r   rn   r|  r   rD   rH   rw  r    r    r!   test_idxmax_numeric_only  s    z/TestDataFrameAnalytics.test_idxmax_numeric_onlyc                 C   s   t d tg dg dddd}| }tddgd	d
gd}t|| | }tddgd	d
gd}t|| td	g didd}|jdd}tdgd	gd}t|| |jdd}tdgd	gd}t|| d S )NZpyarrowrt  ru  rR  zint64[pyarrow]r^   r6   r   r1   r-   r   r.   )r-   r   r1   zstring[pyarrow]FrC  )rJ   r   r   r|  r   rD   rH   rl  r  r    r    r!   test_idxmax_arrow_types  s    
z.TestDataFrameAnalytics.test_idxmax_arrow_typesc                 C   sF   |}d}t jt|d |jdd W d    n1 s80    Y  d S ry  )rJ   rK   rL   r|  rz  r    r    r!   test_idxmax_axis_2  s    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 )Nr^  r   r/   )r   r.   r6   r"  T)deepr   )r6   r   r.   r   )r   r.   r   )r   r   r]   )r6   r   r.   r   r   )r   r.   r6   r.   )r   r   rG   r)  r|  r   rD   rH   rl  r   r  r   r+  r   r<  rR   rS   rV   r    r    r!   test_idxmax_mixed_dtype  s.    *z.TestDataFrameAnalytics.test_idxmax_mixed_dtypezop, expected_valuer|  rl  rh   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   r  r     r  r  )r   r   r   r6   r.   r   )IDr4  rf  r^   r  r4  r  r  )namerB   r   )r   groupbyrC   r   rD   r  )r   r   Zexpected_valuerR   rS   rV   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 )Nr^  r   r/   r"  )r   r]   Tr.  )r   r   r6   r:   )r]   r   r   )r]   r   r]   )r   r   r   r  ro   r+  r|  r   rD   rH   rl  r  r    r    r!   "test_idxmax_dt64_multicolumn_axis1  s    z9TestDataFrameAnalytics.test_idxmax_dt64_multicolumn_axis1r   r'  	bool_onlyc                 C   s8   |}t jdt|dk|d< t||||d d S )Nr.   g      ?Z_bool_r4   r  )r%   rs   rt   ru   r$   rC   )r   rM   r4   r  r   r,  r    r    r!   test_any_all_mixed_float  s    z/TestDataFrameAnalytics.test_any_all_mixed_floatc                 C   s   t |||dd d S )NFr  r   )r   rM   r4   rq   r    r    r!   test_any_all_bool_with_na  s    z0TestDataFrameAnalytics.test_any_all_bool_with_naz4ignore:Downcasting object dtype arrays:FutureWarningc                    s`  | 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 s0    Y  |tj	 }	t|	|dd
}
t|	|d	d
}|dkr@|

 r0J |
 r\J n|
 sNJ | s\J d S )NTc                    s   |   j} |S r   )r#   r   r'   r(   r    r!   r"     s    
zFTestDataFrameAnalytics.test_any_all_bool_frame.<locals>.skipna_wrapperc                    s
    | j S r   r   r   r(   r    r!   r2     s    z?TestDataFrameAnalytics.test_any_all_bool_frame.<locals>.wrapperr   Fr3   r6   r:   )r7   r=   r>   r.   r   )ZfillnarC   r%   rD   rH   rI   rJ   rK   rL   r&   r   r'  )r   rM   rq   rN   rQ   r"   r2   rT   rU   rW   rX   rY   r    r(   r!   test_any_all_bool_frame  s2    




(

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 sJ |jd d
 }|du sJ |dg jd d
 }|du sJ d S )N)TFF)TTF)TTTr   r   r   r   r   r6   r:   Tr  r  Fr   )r   r   r   rD   rH   r'  itemr  r    r    r!   test_any_all_extra1  s.    
z)TestDataFrameAnalytics.test_any_all_extrabool_agg_funcc           	      C   s   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}|rd|dk o`| o`|dk}nd}t||||d}tdd|dg}t|| d S )	Nr6   Tr.   5datar   r'  r3   )r   r%   r&   rC   r   rD   rH   )	r   r4   r  r5   r   rR   valrS   rV   r    r    r!   test_any_all_object_dtypeR  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 )Nr6   r   z
1960-02-15z
1960-02-16r   r:   )TTTF)
r%   r&   r   r   r  r   r   r   rD   rH   )r   Z
float_dataZdatetime_datarR   rS   rV   r    r    r!   test_any_datetimek  s    z(TestDataFrameAnalytics.test_any_datetimec                 C   s   t g dg dg ddtg dt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   rM  )NNN)col1col2col3r^   r   Tr  rJ  )FFT)r  r  r  col4r  F)	r   r   rm   r'  r   r%   bool_rD   rH   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, UTC]rI  categoryri   rj   c                 C   s  t |}tdd |jD rtjtdd || W d    n1 sH0    Y  tjtdd& tt ||jd d W d    n1 s0    Y  nd}|jdd  rt	}nd }t
j||d	d
 ||}W d    n1 s0    Y  t|tjsJ | |u sJ t
j||d& tt ||jd d}W d    n1 sR0    Y  t|tjsnJ | |u sJ d S )Nc                 s   s   | ]}t |tV  qd S r   )rF   r
   )ra   r   r    r    r!   r5    rd   z>TestDataFrameAnalytics.test_any_all_np_func.<locals>.<genexpr>z)dtype category does not support reductionr>   r:   z0'(any|all)' with datetime64 dtypes is deprecatedc                 S   s
   | j dkS )Nr  )kindr   r    r    r!   r     rd   z=TestDataFrameAnalytics.test_any_all_np_func.<locals>.<lambda>F)r?   Zcheck_stacklevel)r   r   dtypesrJ   rK   r   rC   __name__rI   rk  rD   rE   rF   r%   r  r  )r   funcr  rV   r   rn  rS   r    r    r!   test_any_all_np_func  s,    5&6&6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 sHJ d S )Nr1   r-   r   TF)r%   r'  r   r  r   )r   rS   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
sJ |j
dd	d
}tdgdgd}t	|| |dg j
dd	d
}t	|| |j
dd d
s J d S )Nr   r.   TFr   r   r  r   r   )r  r4   r   r   )r   r   rm   r+  r   Z_get_bool_datarD   r  r'  rH   r   )r   rR   resrV   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    n1 s0    Y  d S )
N)r   r   r   r   r   r   r6   r   )lowerr4   )ltlegtgeeqner:   )r   r%   r&   r   rD   rE   ZcliprC   )r   rR   Zdf_nanr   Zs_nanr   r    r    r!   test_series_broadcasting  s    z/TestDataFrameAnalytics.test_series_broadcasting)[r  
__module____qualname__rJ   r7  parametrizeparamtdZ
skip_if_nor   r   r   r   r   r   r%   r&   rm   filterwarningsr   r   r8  r   r   r   r   r   r   r   r   r   r	   r   r   r   r   r  r  r  r  r-  r1  r=  r>  r   r   r  rD  r   rB  rH  rL  rO  rU  rV  rW  rZ  r[  r]  rc  rd  rh  ri  rj  rp  rs  rx  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    r    r    r!   rw      s  .8$
	
 




$


9
W




 	


	

	&

+!


3
#%rw   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   r|   r   rD   rH   r}   )r   rR   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sJ t|| |jddd	}t
|jd tjg}|j|d jksJ 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:00rR  r6   Fr3   )r   r1   r1   )r   r-   )rF   r   r   rJ   skipr   r   r   r  r|   r   r   rB   rD   rH   r}   )r   r;  Ztz_naive_fixturer   rR   r  rV   r    r    r!   'test_min_max_dt64_with_NaT_skipna_false?  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sBJ |jddjtju | tju kshJ t	|jdd| t	|jdd| d S )Nr   r   r:   r6   )
r   r   r   r|   r   r   r  r}   rD   rH   )r   rR   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sdJ t	|jdd| t	|jdd| d S )Nr   r^   r   r:   r6   )
r   r   r   r%   rX  r|   r   r}   rD   rH   )r   rR   Zexpected_float_seriesr    r    r!   *test_min_max_dt64_api_consistency_empty_dfl  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   r|   r}   )r  c                 C   s<   t |}t|g}t|g}t||dd}t|| d S )Nr6   r:   )r   r   r   rC   rD   rH   )r   r  r   Z
initial_dtrV   rR   rS   r    r    r!   test_preserve_timezonex  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)utcrR  r6   r3   )r   r   r   r   r  rC   rD   rH   )r   r   r5   r  rR   r   rS   rV   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   r   r6   ms)r1   tr:   FTr1   r  )r  rA   r  )r   r   r   r   rD   rH   r  r    r    r!   test_frame_any_with_timedelta  s    
z5TestDataFrameReductions.test_frame_any_with_timedeltac                 C   sn   |dkr| tjjdd |g d}d}tjt|d  t||d d W d    n1 s`0    Y  d S )Nrx   zCount does not accept skipnar   r   zAFor argument "skipna" expected type bool, received type NoneType.r>   r/  )r9  rJ   r7  r8  rK   rL   rC   )r   r;  Zframe_or_seriesr@  objr   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]rR  r1   r-   rJ  )r   r   r   r}   rD   rH   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]rR  r1   r-   rJ  )r   r   r   r*  r}   rD   rH   r  r    r    r!   &test_reduction_timedelta_smallest_unit  s    z>TestDataFrameReductions.test_reduction_timedelta_smallest_unitN)r  r  r  r  r  r  r  rJ   r7  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   sT  t ddgddd}| }tjtdd t||  W d    n1 sJ0    Y  tjtdd tt|| W d    n1 s0    Y  tjtdd  t||dd	 W d    n1 s0    Y  tjtdd  t||d d	 W d    n1 s0    Y  tjtdd" tt||dd
 W d    n1 sF0    Y  d S )Nr   r6   r  r   )rB   r  does not support reductionr>   Fr  r:   )r   to_framerJ   rK   r   rC   r%   )r   r   serrR   r    r    r!   .test_any_all_categorical_dtype_nuisance_column  s    *,.0zBTestNuisanceColumns.test_any_all_categorical_dtype_nuisance_columnc                 C   sL  t dtg di}|d }tjtdd |  W d    n1 sH0    Y  tjtdd |jdd W d    n1 s0    Y  tjtdd |  W d    n1 s0    Y  |d t|d< tjtdd |jdd W d    n1 s0    Y  tjtdd |  W d    n1 s>0    Y  d S )Nr   )r6   r.   r.   r.   r   r  r>   FrC  r   )r   r	   rJ   rK   r   r{   r   r   )r   rR   r  r    r    r!   -test_median_categorical_dtype_nuisance_column  s    &*&,zATestNuisanceColumns.test_median_categorical_dtype_nuisance_columnr|   r}   c                 C   s  t g ddd}t|}|d}tjtdd t||  W d    n1 sR0    Y  tjtdd tt|| W d    n1 s0    Y  tjtdd  t||dd W d    n1 s0    Y  tjtdd t||  W d    n1 s0    Y  tjtdd" tt||dd	 W d    n1 sJ0    Y  |d t	|d
< tjtdd t||  W d    n1 s0    Y  tjtdd" tt||dd	 W d    n1 s0    Y  d S )N)r1   r-   r   r-   F)orderedr   zis not ordered for operationr>   rC  r   r:   r   )
r	   r   r  rJ   rK   r   rC   r%   r   rm   )r   r   catr  rR   r    r    r!   :test_min_max_categorical_dtype_non_ordered_nuisance_column  s$    
*,.,2,zNTestNuisanceColumns.test_min_max_categorical_dtype_non_ordered_nuisance_columnN)	r  r  r  rJ   r7  r  r  r  r  r    r    r    r!   r    s
   
r  c                   @   sJ  e Zd Zejddejdejfdejdej	fdejdejfdejdejfdej
dejfdej
dejfdejdejfdejdejfdejdejfdejdejfdejdejfgdd Zejddejejfdejejfdejejfdejejfdej
ejfdej
ejfdejejfdejejfdejejfdejejfdejejfgd	d
 Zejdddderjdndfddder~dndfddderdndfddddderdndfddderdndfdddddgdd Zejddderdndfdderdndfdddderdndfdder*dndfddddd gd!d" Zd#S )$TestEmptyDataFrameReductionsz#opname, dtype, exp_value, exp_dtyper;   r   r<   r6   c                 C   sB   t g g d|d}t||dd}t||g|d}t|| d S Nr   r6   r^   r   rK  r?  r   rM   rB   Z	exp_value	exp_dtyperR   rS   rV   r    r    r!   test_df_empty_min_count_0)  s    z6TestEmptyDataFrameReductions.test_df_empty_min_count_0zopname, dtype, exp_dtypec                 C   sF   t g g d|d}t||dd}ttjtjg|d}t|| d S Nr  r^   r6   rK  )r   rC   r   r%   r&   rD   rH   r   rM   rB   r  rR   rS   rV   r    r    r!   test_df_empty_min_count_1@  s    z6TestEmptyDataFrameReductions.test_df_empty_min_count_1ZInt8ZInt32rf  )r;   rf  r   rf  )r<   rf  r6   rf  ZUInt8ZUInt32UInt64)r;   r  r   r  )r<   r  r6   r  )r;   Float32r   r  )r<   r  r6   r  )r;   rg  r   rg  c                 C   sB   t g g d|d}t||dd}t||g|d}t|| d S r  r?  r  r    r    r!   "test_df_empty_nullable_min_count_0W  s    z?TestEmptyDataFrameReductions.test_df_empty_nullable_min_count_0)r;   rf  rf  )r<   rf  rf  )r;   r  r  )r<   r  r  )r;   r  r  )r<   r  r  )r;   rg  rg  c                 C   sF   t g g d|d}t||dd}ttjtjg|d}t|| d S r  )r   rC   r   r   NArD   rH   r  r    r    r!   "test_df_empty_nullable_min_count_1q  s    z?TestEmptyDataFrameReductions.test_df_empty_nullable_min_count_1N)r  r  r  rJ   r7  r  r%   Zint8r  int_Zuint8Zuint64Zuintr   rD  r  r  is_windows_np2_or_is32r  is_windows_or_is32r  r    r    r    r!   r  (  s   


	r  c                 C   s   | rt jjdd}|| tdtjd	dd}d|d< t
|}|j|jk s`J |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   r3   r6   rh   r  )rJ   r7  r8  r9  r%   r  r   r  viewZreshaper   r  rB   r'  r;   r   r   r*  r  rD   rH   )r:  r;  r7  r   rR   rS   rV   r    r    r!   !test_sum_timedelta64_skipna_false  s0    
 


	r  z#sum doesn't work with arrow stringsr   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 )Nr1   r6   abr   r-   rf  r   )r   rn   r   r;   r   rD   rH   )rR   rS   rV   r    r    r!   !test_mixed_frame_with_integer_sum  s
    r  r   )TFNr   r|   r}   c                 C   sl   t d}t|jd |jgt d}td|i}t|| |d}tt|| gdt	dgd}t
|| d S )Nr  r^   rf  rC  rJ  )r%   Ziinfor   r}   r|   r   Z
Int64Dtyper   rC   r   rD   rH   )r   r   Z
int64_infor  rR   rS   rV   r    r    r!   test_minmax_extensionarray  s    

r  ts_valuez
2000-01-01c                 C   sT   t dgdgdg| gd}tjtdd |  W d    n1 sF0    Y  d S )Nr6   g?r   r   r  r>   )r   rJ   rK   r   r;   )r  rR   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d}t|| td}tj	t
|d	  | jdddd W d    n1 st0    Y  d S )
N)r6   r1   Tr   r6   F)r4   rE  r   r1   r^   z2unsupported operand type(s) for +: 'int' and 'str'r>   )r   r<   r   rm   rD   rH   r   escaperJ   rK   r   r;   )rR   rS   rV   r   r    r    r!   $test_prod_sum_min_count_mixed_object  s    
r  )r|   r}   ry   r{   r   r   rB   rD  rg  c                 C   s   t tjdd|d}t|| d |d}|jtjd}| dv rzt	d}| dkrXd} t|| |d	d d
}t
|| ntt| |d d}||ksJ d S )Nr.   )r]   r]   r^   r   >   r   r   r   r   r   F)r   r4   r:   )r   r%   rs   rt   ru   rC   Zto_numpyrD  rJ   r   rD   r   )r   r   rB   rR   rS   Znp_arrZcomp_modrV   r    r    r!   'test_reduction_axis_none_returns_scalar  s    
r  kernel)ZcorrcorrwithZcovr|  rl  r   r}   ry   r{   r|   r<   quantiler   r   r   r;   r   c                 C   s   t g dtd}| dkr |fnd}dg d}| dkrPd}d	}d||g}tjt|d
 t|| |  W d    n1 s0    Y  d S )Nr   rR  r  r    r   )znot allowed for this dtypez%argument must be a string or a numberz"not supported between instances ofr\  z*argument must be a string or a real numberr{   zTCannot convert \[\[<class 'object'> <class 'object'> <class 'object'>\]\] to numericzPCannot convert \[<class 'object'> <class 'object'> <class 'object'>\] to numericr>   )r   rm   r   rJ   rK   r   rC   )r  rR   argsr   Zmsg1ro  r    r    r!   test_fails_on_non_numeric  s    	r  )r'  r   rx   r|  rl  r   r   r}   ry   r{   r|   r~   r<   rz   r   r   r   r;   r   rE  r.   c                 C   s|  t tg d|dtddtjdg|dd}t g ddd	tjd
gd}| dv rVd}n*| dv rdd}n| dv r||ds|d}n|}i }| dvr||d< | dv r||d< d }d }	|s| dv rt}d|  d}	tj	||	d( t
|| f ddi|}
W d    n1 s0    Y  tj	||	d( t
|| f ddi|}W d    n1 sN0    Y  | dvrl||}t|
| d S )Nr  r^   r   r6   r   rR  )r   r   r   r   r   r   r   r   r  )r'  r   boolean)r   r   ry   r{   r   r   r   r   Floatrg  )rx   r~   r  r5   )r<   rz   r;   rE  )r|  rl  zThe behavior of DataFrame.z with all-NA valuesr>   r4   )r   r   r   r  r%   r&   
startswithrk  rD   rE   rC   r   rH   )r   r5   rE  Zany_numeric_ea_dtyperR   Zexpected_dfrA  rT  rn  r   rS   rV   r    r    r!   test_numeric_ea_axis_1#  sH    	
88

r  )N)TTFr+   r,   N)Bdatetimer   decimalr   r   Zdateutil.tzr   numpyr%   rJ   Zpandas._configr   Zpandas.compatr   r   Zpandas.compat.numpyr   Zpandas.util._test_decoratorsutilZ_test_decoratorsr  Zpandasr   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   Zpandas._testingZ_testingrD   Zpandas.corer   r   r  r  r*   r[   Zfixturerq   rv   rw   r  r  r  r  r7  r8  r  r  r  r  r  r  r  r  r  r    r    r    r!   <module>   s   @
$      
n

          O 0Ra"
	

