B @`$@sddlmZddlZddlZddlZddlZddlmm Z ddl m Z ddl Zddl mZmZddlmZddlmZddlmmZejZeedZejddgd d d ZGd d d ZGdddZ GdddZ!GdddZ"GdddZ#GdddZ$ddZ%ej&'dej(dfej)dfej*dfej+dfej,dfej-dfej.dfej/dfej0dfej1dfg dd Z2ej&'d!ej3ej4ej)ej+ej-ej5ej6ej7ej8ej9ej1ej0ej:ej;ejd?Z4e"j#d@dAZ5e"j#dBdCZ6e"j#dDdEZ7dFdGZ8dHdIZ9e j dJe:j;e jfe:j?e j@fe:jAe jBfe:jCe jDfe:jEe jFfgdKdLZGdMdNZHdOdPZIdQdRZJdS)ZTestnanopsDataFramec Cstjddt_d}tjj||_tjj||_|j|jd|_tj dd||_ tj dd|dk|_ t |j d |_t |j d |_tj dd | d |_tj dd | d |_ttj||_t|j|jg|_t|j|jg|_t|j|jg|_t|j|jg|_|jtj|_t|j|jg|_t|j|jg|_t|j|j|jg|_t|j|j|jg|_t|j d|j d|j d|j d|j d|j d|j d|j dg|_ tj!ddL|j|jd|_"t|j|j"g|_#|jd|_$t|j|j$g|_%WdQRX|j|_&|j|_'|j|_(|j|_)|j|_*|j|_+|jdddf|_,|jdddf|_-|jdddf|_.|jdddf|_/|jdddf|_0|jdddf|_1dS)Ni+F) y?i rSUi NzM8[ns]zm8[ns]Oignore)invalid)2nprandomseednanops_USE_BOTTLENECKZrandn arr_float arr_float1 arr_complexrandintarr_intarr_boolabsastypearr_strarr_utfarr_date arr_tdeltaZtilenanarr_nanvstack arr_float_nanarr_float1_nanarr_nan_float1 arr_nan_naninfarr_inf arr_float_inf arr_nan_infarr_float_nan_infarr_nan_nan_infarr_objerrstate arr_nan_nanjarr_complex_nan arr_nan_infjarr_complex_nan_infj arr_float_2d arr_float1_2d arr_nan_2darr_float_nan_2darr_float1_nan_2darr_nan_float1_2d arr_float_1d arr_float1_1d arr_nan_1darr_float_nan_1darr_float1_nan_1darr_nan_float1_1d)selfmethodZ arr_shaper r r setup_methods`         z TestnanopsDataFrame.setup_methodcCs tt_dS)N)use_bnrr)rGrHr r r teardown_method_sz#TestnanopsDataFrame.teardown_methodTcCs8t|d|}|dkrLt|drL|jrL|j|jkrLtj||jdgddd}ytj|||dWntk r2t|dr|j dkrt|dr|j j dkr|j j d kr|j j d kr| |j }qt rd nd }| |}| |}n|j j d krtjt |t ||dtjt|t||dYnXdS) NZasm8rshape)axis) check_dtypedtypezm8[ns])crrc16f8)getattrhasattrndimrLrsplittmassert_almost_equalAssertionErrorrOkindr#has_c16realimag)rGtargresrMrNZ cast_dtyper r r check_resultsbs.         z!TestnanopsDataFrame.check_resultsNcKshxtt|jdgD]} |r$|n|} |rR|rRt| rR|| fd| i|} n|| fd| i|} ||f| |d|} |j| | | |d|r||fd| i|} |j| | | |d| dkr||fd|i|} |j| | | |d|r| dkr||f|} |j| | | |dqW|jdkr$dStj|ddd} tj|ddd}|j||| |f|||d |dS) NrM)rMr )rNr r)rM)r rNempty_targfunc) listrangerUrallr`rtakecheck_fun_data)rGtestfunctargfunc testarval targarvalr rNrckwargsrMZ targartempvalr^r_Z testarval2Z targarval2r r r rhs:     z"TestnanopsDataFrame.check_fun_datac Ksb|}|dr,t||ddr,|dd}t||}t||} |j|||| f||d|dS)NZ_nan)r rc)endswithrTrSrh) rGrirjZtestarr rcrmZtargarrkrlr r r check_funs   zTestnanopsDataFrame.check_func Ks|j||d|f| |j||d|f| |j||d|f| |j||d|f| |jd|jd|jdg} |r|j||d|f| |r|j||d|f| |j||d|f| |r|j||d |f| | |jdg7} |r||j|j||d |f| | |jdg7} |rhy||jWntk r@Yn(X|j||d |f| | |jdg7} |rt | |_ |d krt |j ||d }|j||d|f| dS)Nrr+r r!rr)rr8r7r&r'convert)func allow_complexr5)rprr#r r!rr&r' TypeErrorrr*r5r _badobj_wrap) rGrirjr rs allow_all_nan allow_date allow_tdelta allow_objrmobjsr r r check_funss@      zTestnanopsDataFrame.check_funscKs2|jjdkr&|r|d}n |d}||f|S)NrrQrR)rOrZr#)rGvaluerrrsrmr r r rus    z TestnanopsDataFrame._badobj_wrapz nan_op,np_opcCs|j|||ddddS)NF)rvrw)r{)rGnan_opnp_opr r r r test_nan_funcssz"TestnanopsDataFrame.test_nan_funcscCs |jtjtj|ddtjddS)NF)rwrNrc)r{rnansumrsum)rGr r r r test_nansumszTestnanopsDataFrame.test_nansumcCs|jtjtj|ddddS)NF)ryrw)r{rnanmeanrmean)rGr r r r test_nanmeansz TestnanopsDataFrame.test_nanmeancCs`xZdD]R}t|tdtjd}|}|j}||ksr?rr(r=r@)rGcheckfuntarg0targ1rmres00res01res10res11targ2res20res21res22res23res24res25r r r check_nancorr_nancov_2dsJ         z+TestnanopsDataFrame.check_nancorr_nancov_2dcKs~||j|jf|}||j|jfdt|jdi|}t||t||||j|jf|}||j|jfdt|jdi|}t||t||tj} ||j |jf|} ||j|j f|} ||j |j f|} ||j|j f|} ||j|j fdt|jdi|}||j|jfdt|jdi|}t| | t| | t| | t| | t| |t| |dS)Nrra) rArBrrWrXrDrErr(rCrF)rGrrrrmrrrrrrrrrrrr r r check_nancorr_nancov_1dsJ         z+TestnanopsDataFrame.check_nancorr_nancov_1dcCst|j|jd}t|jj|jjd}|tj||t|j|j d}t|jj|j jd}|j tj||dddS)N)rrapearson)rH) rcorrcoefr;r<flatrrnancorrrArBr)rGrrr r r test_nancorr1s z TestnanopsDataFrame.test_nancorrcCst|j|jd}t|jj|jjd}|jtj||ddt|j|j d}t|jj|j jd}|j tj||dddS)N)rrar)rH) rrr;r<rrrrrArBr)rGrrr r r test_nancorr_pearson9s z(TestnanopsDataFrame.test_nancorr_pearsoncCsddlm}||j|jd}||jj|jjd}|jtj||dd||j|j d}||jj|j jd}|j tj||dddS)Nr) kendalltauZkendall)rH) rrr;r<rrrrrArBr)rGrrrr r r test_nancorr_kendallAs z(TestnanopsDataFrame.test_nancorr_kendallcCsddlm}||j|jd}||jj|jjd}|jtj||dd||j|j d}||jj|j jd}|j tj||dddS)Nr) spearmanrZspearman)rH) rrr;r<rrrrrArBr)rGrrrr r r test_nancorr_spearmanLs z)TestnanopsDataFrame.test_nancorr_spearmanc Csbt|j|jd}t|jj|jjd}d}tjt|d|jt j ||ddWdQRXdS)N)rraz;Unknown method 'foo', expected one of 'kendall', 'spearman')matchfoo)rH) rrr;r<rpytestraises ValueErrorrrr)rGrrmsgr r r test_invalid_methodWs z'TestnanopsDataFrame.test_invalid_methodcCs|t|j|jd}t|jj|jjd}|tj||t|j|j d}t|jj|j jd}| tj||dS)N)rra) rZcovr;r<rrrZnancovrArBr)rGrrr r r test_nancov_s zTestnanopsDataFrame.test_nancovcCs4|j}|j}|j}|j}|j}|j}|j} x|jr.|||} t || |jdkrft ||g} nt ||g} |||} tj | | dd|} ||| }tj | |ddt j|ddd}t j|ddd}t j|ddd}t j|ddd}t j|ddd}t j|ddd}t j| ddd} t j|ddd}q.WdS)NraF)rNrrb)rM)rrr)r.r+r,r-rUrWrXrr*hstackassert_numpy_array_equalrg)rGrrrrr)r.r+r,r-res0rZres1rZres2r r r check_nancompgs4      z!TestnanopsDataFrame.check_nancompzop,nanopcCs||j|j}|||dS)N)rrr)rGopZnanoprr r r test_nan_comparisons z'TestnanopsDataFrame.test_nan_comparisoncCsPxJt|ddrJ||}|r$|s,tn|r,tt|ds8Ptj|ddd}qWdS)NrUTrrb)rM)rSrYrTrrg)rGrrr|correctrr r r check_bools  zTestnanopsDataFrame.check_boolc Csdddddddddd g }d d d d dddddg }x*|D]"\}}t||}|tj||q4WxV|D]N\}}t||}|tj|||tj|d||tj|d|q`WdS)N)rF)r F)r!F)r$F)r%F)r8F)r7F)r9T)r:T)rF)r)F)r+F)r.F)r1T)r0T)r2T)r3T)r4TZf4f2)rSrrZ _has_infsr#)rGpairsZ pairs_floatarrrvalr r r test__has_infss6  z"TestnanopsDataFrame.test__has_infscCst|jjdstt|jjds(tt|jjdsznumpy_op, expectedrg@rarcCs$|tddddg}||ks tdS)Nrarrr)rrY)Znumpy_opr8rr r r test_numpy_opssr? operationcCsDtddtjdtjdg}|}||}|||d}||ks@tdS)Nrarrr)mask)rrr(rrY)r@rrAZmedian_expectedZ median_resultr r r %test_nanops_independent_of_mask_param#s  rB)> functoolsrrrZnumpyrrZpandas.util._test_decoratorsutilZ_test_decoratorsrZpandas.core.dtypes.commonrZpandasr5rrZpandas._testingZ_testingrWZpandas.core.arraysrZpandas.core.nanopscorerrrJrTr[Zfixturer r rr r#r2r4r>rrrrrrrrrrrrr?rrrrrrrrrrrBr r r r sn     <0w11#