gL iBddlZddlZddlZddlmZmZmZmZm Z m Z m Z ddl m ZejdZGddZej$j'dddgej$j'd ddgd Zy) N)CategoricalDtypeCategoricalIndex DataFrameIndex MultiIndexSeriescrosstabc ltgdgdgdtjjdj dtjjdj dtjjdj dd}t j ||gdS) N) foor r r barr r r r r r ) oner r twor r r rrrr ) dullrshinyrrrrrrrr )ABCDEFT) ignore_index)rnprandom default_rngstandard_normalpdconcat)dfs h/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/pandas/tests/reshape/test_crosstab.pyr r s    &&q)99"=&&q)99"=&&q)99"=U+ - B^ 99b"XD 11cbeZdZdZdZej jdeje e gdZ dZ dZdZdZd Zd Zd Zd Zd ZdZdZdZdZdZdZdZdZdZdZej jdddgddggdZ dZ!dZ"d Z#d!Z$d"Z%d#Z&d$Z'y%)& TestCrosstabc t|d|d}|jddgjj}t j ||j djtjy)Nrrr) r groupbysizeunstacktmassert_frame_equalfillnaastyperint64selfr resultexpecteds r!test_crosstab_singlez!TestCrosstab.test_crosstab_singleFsb"S'2c7+::sCj)..088: fhooa&8&?&?&IJr"cNt|d|d|dg}|jgdj}|jdjdj dj t j}tj||t|d|dg|d}|jgdj}|jdj dj t j}tj||y)Nrrrrrrr)rrr) r r&r'r(r+r,rr-r)r*r.s r!test_crosstab_multiplez#TestCrosstab.test_crosstab_multipleKs"S'BsGRW#56::o.335##C(005<r?r@)rownamescolnamesr?r@)rCrBrow_0col_0) rrrintegersrr r)r*indexnamescolumns)r/r6r>r?r@r r0r1s r!test_crosstab_ndarrayz"TestCrosstab.test_crosstab_ndarrayVsk  %%a(11!QS1A B  %%a(11!QS1A B  %%a(11!Rc1B C QQQ/ 0!aVsejIBsGbgr#w%78 fh/1a&!sejIRWbg.38 fh/!QBsGRW- 'y") fh/r"cztgdgd}tgdgd}tjgdtj}t dd gddggt d dgd t d d gd }t ||}tj||t ||}tj||y)NrrMr=rG)r;r;rOr;)r>r?r@df)r;rOr;dtyperMrrDnamer;rOrErGrI) rrarrayr-rrr r)r*)r/r>r?r@r1r0s r!test_crosstab_non_alignedz&TestCrosstab.test_crosstab_non_alignedns 9O 4 ?*C D HHYbhh /VaV AW-1a&w/  !Q fh/!Q fh/r"ctjjdjddd}tjjdjddd}tjjdjddd}t |||d}t |||gd gd d }|j jd k(sJ|jjddgk(sJ|d}|jd gjjd}tt|gtdgd }tj ||g}d|_t%j&|||j(d} |jddgjjd} tj | tt|gdgg} d| _| j+| j } | j-djtj.} t%j&| | y)Nrrr9r:r;r8r=r>rAT)rBrCmarginsr>r?r@Alli8r^rTrN)rrrrFrr rGrHrIr&r'r,rlenrrrrUr)assert_series_equallocreindexr+r-) r/r>r?r@r r0all_colsexp_cols exp_marginall_rowsexp_rowss r!test_crosstab_marginsz"TestCrosstab.test_crosstab_marginss II ! !! $ - -a - = II ! !! $ - -a - = II ! !! $ - -a - = QQQ/ 0!aVsejRVW||!!V+++~~##Sz111)$::se$))+2248SWIUE7-EF 99h 34#  x2::e$::sCj)..077=99hBy (NOP ##HNN3??1%,,RXX6 x2r"c >tjjdjddd}tjjdjddd}tjjdjddd}t |||d}t |||gd gd d d }|j jdk(sJ|jjddgk(sJ|d}|jd gjjd}tt|gtd gd }tj ||g}d|_t%j&|||j(d } |jddgjjd} tj | tt|gdgg} d | _| j+| j } | j-djtj.} t%j&| | d} ddd dgfD]:} t1j2t4| 5t |||gd gd d | ddd<y#1swYGxYw)NrrrZr9r:r;r8r=r>rATTOTAL)rBrCr[ margins_namer\r?r@)rlr_r`rTrNz&margins_name argument must be a stringimatch)rrrrFrr rGrHrIr&r'r,rrarrrrUr)rbrcrdr+r-pytestraises ValueError) r/r>r?r@r r0rerfrgrhrimsgrms r!%test_crosstab_margins_set_margin_namez2TestCrosstab.test_crosstab_margins_set_margin_namesU II ! !! $ - -a - = II ! !! $ - -a - = II ! !! $ - -a - = QQQ/ 0 FU  ||!!V+++~~##Sz111+&::se$))+2248SWIUG93-GH 99h 34%  x2::g&::sCj)..077=99hBy(PQR ##HNN3??1%,,RXX6 x26 $c 3 Lz5 F!U' !-      s 3JJ c,tjjdjddd}tjjdjddd}tjjdjddd}tjjdj d}t ||g||dd d gd g }t ||||d }|jdd d gd d}tj||y)NrrrZr9r:r;r8sumr r baz)aggfuncrBrC)r r rwvaluesry)rGrIrx) rrrrFrr r pivot_tabler)r*)r/r>r?r@rytabler r1s r!test_crosstab_pass_valuesz&TestCrosstab.test_crosstab_pass_valuess II ! !! $ - -a - = II ! !! $ - -a - = II ! !! $ - -a - =&&q)99#> FAvuu~QVPW q1G H>> UENE5"  eX.r"cRtjgdt}tjgdt}tjgdt}t|||gdgddgd }t j gd ddg }t j|j|y) Nr r r r r r r rR)r r rr rrrrrrrrrrr>r?r@F)rBrCdropna))r r)r r)rr)rrrH) rrWobjectr r from_tuplesr)assert_index_equalrI)r/r>r?r@resms r!test_crosstab_dropnaz!TestCrosstab.test_crosstab_dropnas HHFf U HHFf U HH Ff q1a&C5C:eT  " " R*  ckk1-r"ctgdgd}tgdgd}t||}ttgddtgdd}t j ||y) N)rMrr;rN)rOr8r-rDrSrUrErV)rr rrr)r*)r/s1s2actualr1s r!test_crosstab_no_overlapz%TestCrosstab.test_crosstab_no_overlaps\IY / IY /"b!'8"G':  fh/r"c6tdddddtjggdd}t|j|j dd}tgdgdgd g}t gd d |_t gd d |_tj||y)NrMrr;r;rOrOrOrOr>r?Tr[rrMrrM)rMr;rO)rr;r8?@r^r>rTr;rOr^r? rrnanr r>r?rrGrIr)r*r/r rr1s r!test_margin_dropnazTestCrosstab.test_margin_dropnas| aAq!RVV4;MN O"$$d4@iI>?0s; S9 fh/r"c tdtjtjtjdtjgdtjddddgd}t|j|j dd}tgdgd gd g}t gd d |_t gdd |_tj||y)NrMrr;rOrTrrrLrMrMrrr>rT)@@r^r?rrs r!test_margin_dropna2z TestCrosstab.test_margin_dropna2 s bffbffbffa82661aQRTU?V W "$$d4@iI>?0s; !2= fh/r"ctdtjtjtjtjdggdd}t|j|j dd}tgdgdgd g}t gd d |_t gd d |_tj||y)NrMrrrTrrrLrrr>rTrr?rrs r!test_margin_dropna3z TestCrosstab.test_margin_dropna3s bffbffbffbffa8?Q R "$$d4@iI>?0s; S9 fh/r"cztdddddtjggdd}t|j|j dd}tgdgd d dtjggd g}t d d tjdgd|_t gdd|_tj||y)NrMrrrTFrrMrr)rMr;rr)rrO@rrr^r>rTrr?rrs r!test_margin_dropna4z TestCrosstab.test_margin_dropna4s aAq!RVV4;MN O"$$d5Ak;Arvv TUS"&&%8sC S9 fh/r"c tdtjtjtjdtjgdtjddddgd}t|j|j dd}tgd gd d ddtjggd g}t d dtjdgd|_t ddtjdgd|_tj||y)NrMrr;rOrTFr)rMrrr)rrMrrr)rMrOrrrrr^r>rTrrr?rrs r!test_margin_dropna5z TestCrosstab.test_margin_dropna5)s bffbffbffa82661aQRTU?V W "$$d5A ^aArvv-> O S"&&%8sC #sBFFE!:E fh/r"c ztjgdt}tjdddddtjdgt}tjgdt}t |||gdgddgd d }t j ddddtjtjd ggd gddg}tgdgdgdg|}tgdd|_ tj||t ||g|ddgdgd d }t j gdddtjddtjdggddg}tgdgdddtjggdgdddtjggdg|}tgdd|_ tj||t ||g|ddgdgd d }t j gdgd gddg}tgd!gd!gd"gd#gd$g|}tgdd|_ tj||y)%Nr~rRr rrr>r?r@TF)rBrCr[rr^)rrrrrrr_r)rMrrMrrrr)rrrMrMrrMr8)r;rrrMrrrZ)rIr r r^rT)r r r r r r r^r_rr)rrr)rMrMrrM)r8rg@rN)rrr^)r r r r r^)r rr rr_r)rrrr)r8rMr) rrWrrr r from_arraysrrrGr)r*rI)r/r>r?r@rrr1s r!test_margin_dropna6z TestCrosstab.test_margin_dropna66s( HHFf U HHeUE5%Gv V HH Ff  1vc DQV   " "ueRVVRVVUCG *   "$9;P Q 43? fh/ FAc cUDQV   " "ArvvueRVVR@ *  ArvvArvv   !!9D fh/ FAc cUDQU   " " 02R S*   9i C1 !!9D fh/r"c tgdgdddtjddgd}tddgd}tdd gd }td d gd d gg||}tdd gddgg||}tdd gddgg||}t j t |j|jd|t j t |j|jd|t j t |j|jd|t j t |j|jd|t j t |j|jdt |j|jdt j t |j|jd t |j|jdtdd gddgdd ggtgdddtdd gd d}tgdgdgtddgddtgdd d}tgdgd gd!gtgdddtgdd d} t j t |j|jdd"|t j t |j|jdd"|t j t |j|jdd"| y)#NrMrrrrr;r;rOrOrOrMr=rr>rTr;rOr?皙?r333333?rVr???all normalizeTrGrI皙?rMrr^rrUrS)rrr)rr皙?r)rrr)rrrrrrMrr[) rrrrr)r*r r>r?) r/r rindexcindex full_normal row_normal col_normalrow_normal_marginscol_normal_marginsall_normal_marginss r!test_crosstab_normalizez$TestCrosstab.test_crosstab_normalizeus !q!RVVQPQ>R S 1vC(1vC(#qC: 6ffU a4,7vvV a3*5VVT  hrttRTTUC[Q hrttRTTTBKP hrttRTTWEzR hrttRTTYGT  RTT2441 - RTT2449 5   RTT2441 -xbddg/V '1Xd|c3Z 0 Cx@1a&s(;  ' O ,AS9-cB  ' O] ; Cx@-cB   RTT2447D ACU   RTT2449d CEW   RTT2444 >@R r"c tgdgdddtjddgd}ttjgdtjgdgtjgdtgdgdgd gt gd d d t gdd}t|j |j|jddd}tj||tgdgdddtjddgd}tgdgdgdgt gd d d t gddd }d}tjt|5t|j |j|jtjdd}dddtj||y#1swY xYw)NrrrMr=)rMrMrr)rMrrMr)rrr)rrr)rrrMrr>rrrr?rTrVcountrT)rxrr[rrOr;)rrrusing DataFrameGroupBy.sumrn)rrrr rWrr>r?r@r)r*assert_produces_warning FutureWarningrv)r/r norm_counts test_casenorm_sumrss r!test_crosstab_normalize_arraysz+TestCrosstab.test_crosstab_normalize_arrayssp !q!RVVQPQ>R S   XXl #RXXl%; T  / ? Cx@-c2  DD"$$g  i5 !q!RVVQPQ>R S  - 7 Cx@-cB  +  ' ' S A  bddBDD"&&E4I  i2   s !>F>>Gc tgdgdtjtjtjtjtjgd}tddgddggtddgdd td d gd }dD]F}t |j |j |jd|}tj||Htdtjgddggtddgdd td d gd }|r|d jd|d <t |j |j |jdd}tj||y)Nrrr=rrMrr>r-rr;rOr?rTrV)TrGrIr)ryrxrF) rrrrr r>r?r@r)r*r,)r/using_array_managerr emptyi calculatednanss r!test_crosstab_with_emptiesz'TestCrosstab.test_crosstab_with_emptiess; $$ffbffbffbffbff=  3Z#s $AS81a&s+  , 5A!"$$RTT7VWXJ  ! !% 4 5266]S#J 'AS81a&s+  1gnnW-DGbddBDDwRWX  dJ/r"c tgdgdddtjddgd}d}tjt |5t |j|j|jdddd}tjt |5t |j|jtj dddd }tjt |5t |j|jd dddtjt |5t |j|jd dddd}tjt |5t |j|jdd dddy#1swY8xYw#1swYxYw#1swYxYw#1swYxxYw#1swYyxYw)NrrrMr=z)values cannot be used without an aggfunc.rn)ryz%aggfunc cannot be used without values)rxzNot a valid normalize argument42r*zNot a valid margins argumentrr) rrrrprqrrr r>r?r@mean)r/r errors r!test_crosstab_errorsz!TestCrosstab.test_crosstab_errorssh!q!RVVQPQ>R S < ]]:U 3 . RTT244 - .8 ]]:U 3 2 RTT244 1 21 ]]:U 3 1 RTT2444 0 1]]:U 3 / RTT2442 . // ]]:U 3 > RTT2445" = > > . . 2 2 1 1 / / > >s<-F'1F4,#G2#G :$G'F14F=G  GG!cNtgdgdd}gd}|djdjj||d<t |d|d}t gdd }t ||d d }gd gd gdg}t|||}tj||y)N)HondaAcuraTeslarrr)SedanrElectricPickuprr)MAKEMODEL)rrrrcategoryr)rrrrTF) categoriesorderedrU)rrr)rrrMrrMrrV) rr,catset_categoriesr rrr)r*)r/r rr0expected_indexexpected_columns expected_datar1s r!%test_crosstab_with_categorial_columnsz2TestCrosstab.test_crosstab_with_categorial_columnss NS   5 k((488GG S7 "V*bk2:H+ :u7 #Iy9  9I  fh/r"c 4tgddzgddzgddztjjdj dtjjdj dd }t |d |d g|d gd tj |d}tgdgdggdgdgd d g}tgdd }tjgdgdgddtjdgtjddgdtjdgtjddgdtjdgtjddggdg }t|||}|djd|d<tj||y)Nr r rthreerr4r r r r r r rOrrrrrrrrrTr)rGrIr[rxry)r^r rr)r_rrr) rMrMrMrrrr;r;r;r) rMrr;rMrr;rMrr;rlevelscodesrHrrT)rrrr)(@rg8@rVr^r-)rrrrrr r'rrrWrr,r)r*)r/r r0rexpected_columnrr1s r!test_crosstab_with_numpy_sizez*TestCrosstab.test_crosstab_with_numpy_sizes} 3a7$q(?!CYY**1-==bAYY**1-==bA   c7BsG$WIGGc7  $24GH13QR*   5C@bffc"c"bffc"c"bffc"c""     #5/009 fh/r"cJttdd}ttddd}ttddd}ttdd}ddi}t||}t||j|d}t j ||t||g|}t||g|j|d }t j ||t|||g}t|||gj|d}t j ||y) Nr;r rTrMrOr waldo)rIaxisr)rGr)rranger rename_axisr)r*)r/rs2_foos2_bars3mapperr0r1s r!test_crosstab_duplicate_namesz*TestCrosstab.test_crosstab_duplicate_namesKsE!H5 )a %0a %0 E!H7 +"f%B'33F3K fh/2v,+RL"-99Q9O fh/"r6l+BV -99&q9Q fh/r"rHr>rArr@cBttd|d}ttdd|d}tjtdtddg|}td|j dd}t ||}t j||y) Nr;rrTrMrOrrN) fill_value)rrrrr(r r)r*)r/rHrrmir1r0s r!test_crosstab_tuple_namez%TestCrosstab.test_crosstab_tuple_namegs E!H58 , E!QKeAh /  # #U1XuQ{$;5 I!2&..qQ.?"b! fh/r"c 6ttdd}ttdd}ttjddt tddt tdd}t ||}tj||y)Nr;rrT)r@rPr-rRrV) rrrreyerr r)r*)r/rrr1r0s r!test_crosstab_both_tuple_namesz+TestCrosstab.test_crosstab_both_tuple_namesrst E!H: . E!H: . FF1G $az2%(4  "b! fh/r"c6tgdgddgd}t|j|j|jg}t gdd}t jgd d d g }tgd gdgdg||}tj||y)N)r;rMr)r8rOr)r?r>rrrrNr4rDrT))rMrO)rr)r;r8r?r>r)rMrrr)rrrMrV) rr rGr?r>rrrr)r*)r/r r0e_idx e_columnsr1s r!test_crosstab_unsorted_orderz)TestCrosstab.test_crosstab_unsorted_orders} YY7 O"((RTT244L1oG4**+CCQT:V   9 -UI  fh/r"c @tgddzgddzgddzdgdzdgdzd }d }tjt| 5t |j |j g|j|jtjd d }dddttjdgdzdgztjddtgddtj gdddg}tj"|y#1swYxYw)Nrrr4rrrOrrrrrnT)ryrxrr[rMrRr<r;rrrT) )r r)r r)r r)rr)rr)rr)rr)rr)rrr]rrr)rIrG)rr)rrr rrrrrrvrWfloatreshaperrrr*)r/r rsr0r1s r!(test_crosstab_normalize_multiple_columnsz5TestCrosstab.test_crosstab_normalize_multiple_columnss 3a7$q(?!CS2XS2X   +  ' ' S A rtt tt F  HHaS2X^5 1 9 9"a @/c:(( Cj & fh/9  s A DDctgdgdgdgdgdd}t|j|jg|jddd }td d gd d gd d gd dgddgg}t gdgdggdgdgddg|_tddgd|_tj||t|j|jg|jddd }tgdgdgdgdg}tgdd|_t d d!gd"d#gggd$gd%gddg|_tj||t|j|jg|jddd }tgd&gd&gd'gd(gd)g}tgdd|_t gdgdggdgdgddg|_tj||y)*N r r r r r r r r r r r r rrr r rr smalllargerrrrrrr rMrrr;r;rOr8rrZ rrOr8r8rrr r!rT Sub-Totalr)r[rmrrg]QJVU?F]kSU?rM9?q?'c`?)r"r r r_r r)rMrMrrrrMrrMrrrrrrrrrT)rr9?q?)rrr#)rrr()rrr"r r r r)rrrMrMrrMrrM)9?q?r*r()r(r*r#)rr(r()r$g#G?rM) rr rrrrrGrrIr)r*r.s r!test_margin_normalizez"TestCrosstab.test_margin_normalizes TT 10  ( TT244L"$$;RS 3Z#sh%9Aq6HhCW X $/1CD"O4*  !'7!3#> fh/ TT244L"$$;RS %%$"   !!@sK#ENUEN3.*  fh/ TT244L"$$;RV ....'   !!@sK#/1CD"O4*  fh/r"cZtgdgdgdgdgdd}t|j|j|jgddd }tgd gd gd ggd }t gdgdggdgdgddg|_d|j_tj||y)Nrrrrr rTmargin)rGrIr[rmr)r*r*r(rr$)r*r*r*r(r%)r(r(r#r(r)rrr-rN)r r r-r&)rrrMrMrr'rrrr) rr rrrrrIrGrUr)r*r.s r!&test_margin_normalize_multiple_columnsz3TestCrosstab.test_margin_normalize_multiple_columnssTT 10  &$$TT244L!  BB=  /  &,.@A"O4*  " fh/r"c 8tgdgdgddd}t|d|d|d d d }td tjddgddtjdggdgt gdddt gdddd}t j ||y)N)rMrrrM)r;r;rOr8)$@rr1r4Float64rRrrrrvT)ryrxr[r0r1"@rg&@)r3rr1g4@rrr)rrg@r^)rGrIrS)rr rNArr)r*r.s r!test_margin_support_Floatz&TestCrosstab.test_margin_support_Float.s\8O P  sG sGc7  ruudC(sBEE4(&  )D0sK   fh/r"c|tgdgdd}|djtd|d<gd}|djj ||d<t |d|dd }t gd d }t gd d }gd gdgdgdg}t|||}tj||y)N)rrrrrr)rrrrrr)FirstSecondr7T)rrr8)r[)rrrr^rT)rrrr^)rMrMrrr))rrMrr;)rMr;rrrV) rr,rrreorder_categoriesr rr)r*)r/r customized_categories_orderr0rrrr1s r!+test_margin_with_ordered_categorical_columnz8TestCrosstab.test_margin_with_ordered_categorical_columnHs 78   k(()9$)GH7 &5#koo889TU7 "W+r(|TB5GD !7hG%|\<P  9I  fh/r"N)(__name__ __module__ __qualname__r2r5rpmark parametrizerrWlisttuplerJrXrjrtr|rrrrrrrrrrrrrrrr rrrr+r.r5r;r"r!r$r$EsK 0 [[URXXtU$;<0=0.0$3<0d/" . 0 000 0 0=0~1 f$3L0@>40,+0Z08 [[WZ'8:s:K&LM0N0 00)0VK0Z+0Z040r"r$a_dtyperr-b_dtypec&tjjd}t|j dddj |}t|j dddj |}t ||dd}tgd d d }tgd d d }gdgdgdgdg}t|||} tj|| d|j|dk(<t|jt} | r"|jjddk(sJt ||dd}gdgdgdgdg}t|||} | s(| jgd} | dj d| d<tj|| y)Nrrr;r9r:TFr)rrMr^rrEr)rrMrr^rD)r<)')rJ!)2rNr9rM)rrr)( H)rrr^r^r-)rrrrrFr,r rrr)r*rc isinstancerSr value_counts) rDrEgr>r?r0rIrGryr1a_is_cats r!test_categoricalsrV^sd a Aqzz!QSz)*11':Aqzz!QSz)*11':A aD 7FM@G "( AEL, FF0H&(+AEE!q&M!''#34H1>>+//2a77 7 aD 7FI|] CF0H << ."5/009&(+r")numpyrrppandasrrrrrrrr pandas._testing_testingr)fixturer r$r?r@rVrCr"r!r\s 0202fV 0V 0rZ$9:Z$9:,;;,r"