Ë
    ¤ehõp  ã                  ó,  — d dl mZ d dlmZmZ d dlmZmZmZ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Z d d	lmZmZmZ d d
lmZ d dlmZmZ d dlm c m!Z" d dl#m$Z$ d dl%m&Z& d dl'm(Z(m)Z)m*Z* d dl+m,Z, d dl-m.Z. d dl/m0Z0 erd dl1m2Z2m3Z3m4Z4m5Z5 d dl6m7Z7  ed«       ee$d   d¬«      ddddddddejp                  df
	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d*d„«       «       Z9	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d+d„Z:	 	 d,	 	 	 	 	 	 	 d-d„Z;	 d.	 	 	 d/d„Z<	 d.	 	 	 	 	 d0d „Z=	 d.	 	 	 	 	 	 	 d1d!„Z>d"„ Z? ed«       ee$d#   d¬«      ejp                  ejp                  d$œ	 	 	 	 	 	 	 	 	 d2d%„«       «       Z@	 	 	 	 	 	 	 	 d3	 	 	 	 	 	 	 	 	 d4d&„ZA	 d.	 	 	 	 	 	 	 d5d'„ZBd6d7d(„ZC	 	 	 	 	 	 d8d)„ZDy)9é    )Úannotations)ÚHashableÚSequence)ÚTYPE_CHECKINGÚCallableÚLiteralÚcastN)Úlib)ÚAppenderÚSubstitution)Úfind_stack_level)Úmaybe_downcast_to_dtype)Úis_list_likeÚis_nested_list_likeÚ	is_scalar)ÚExtensionDtype)ÚABCDataFrameÚ	ABCSeries)Ú_shared_docs)ÚGrouper)ÚIndexÚ
MultiIndexÚget_objs_combined_axis)Úconcat)Úcartesian_product)ÚSeries)ÚAggFuncTypeÚAggFuncTypeBaseÚAggFuncTypeDictÚ
IndexLabel©Ú	DataFramez
data : DataFrameÚpivot_tableé   )ÚindentsÚmeanFTÚAllc                ó|  — t        |«      }t        |«      }t        |t        «      rog }g }|D ]E  }t        | |||||||||	|
¬«      }|j	                  |«       |j	                  t        |d|«      «       ŒG t        ||d¬«      }|j                  | d¬«      S t        | |||||||||	|
«      }|j                  | d¬«      S )N)
ÚvaluesÚindexÚcolumnsÚ
fill_valueÚaggfuncÚmarginsÚdropnaÚmargins_nameÚobservedÚsortÚ__name__r$   )ÚkeysÚaxisr#   )Úmethod)Ú_convert_byÚ
isinstanceÚlistÚ__internal_pivot_tableÚappendÚgetattrr   Ú__finalize__)Údatar)   r*   r+   r-   r,   r.   r/   r0   r1   r2   Úpiecesr4   ÚfuncÚ_tableÚtables                   úW/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/pandas/core/reshape/pivot.pyr#   r#   =   sò   € ô ˜Ó€EÜ˜'Ó"€Gä�'œ4Ô Ø"$ˆØˆØò 	9ˆDÜ+ØØØØØ%ØØØØ)Ø!ØôˆFð �M‰M˜&Ô!Ø�K‰Kœ  j°$Ó7Õ8ð	9ô" �v D¨qÔ1ˆØ×!Ñ! $¨}Ð!Ó=Ð=ä"ØØØØØØØØØØØó€Eð ×Ñ˜d¨=ÐÓ9Ð9ó    c                ól	  — ||z   }|du}|r™t        |«      rd}t        |«      }nd}|g}|D ]  }|| vsŒt        |«      ‚ g }||z   D ]4  }t        |t        «      r|j
                  }	 || v r|j                  |«       Œ6 t        |«      t        | j                  «      k  r6| |   } n0| j                  }|D ]  }	 |j                  |«      }Œ t        |«      }|	t        j                  u rdn|	}| j                  |||
|¬«      }|	t        j                  u rJt        d„ |j                   j"                  D «       «      r$t%        j&                  dt(        t+        «       ¬«       |j-                  |«      }|r7t        |t.        «      r't        |j                  «      r|j1                  d¬	«      }|}|j2                  j4                  d
kD  rž|rœ|j2                  j6                  dt        |«       }g }t9        t        |«      t        |«      «      D ]D  }|j2                  j6                  |   }|�||v r|j                  |«       Œ4|j                  |«       ŒF |j;                  ||¬«      }|sìt        |j2                  t<        «      r\t=        j>                  tA        |j2                  jB                  «      |j2                  j6                  ¬«      }|jE                  |d|¬«      }t        |j                  t<        «      r\t=        j>                  tA        |j                  jB                  «      |j                  j6                  ¬«      }|jE                  |d
|¬«      }|
du r"t        |t.        «      r|jG                  d
¬«      }|�O|jI                  |«      }|t        u r6|	s4t        jJ                  |«      r|jM                  tN        jP                  «      }|r9|r#| | jS                  «       jU                  d
¬«         } tW        || |||||||¬«	      }|r;s9|j                  j4                  d
kD  r |j                  jY                  d«      |_	        t        |«      dk(  rt        |«      dkD  r|jZ                  }t        |t.        «      r|r|j1                  dd
¬«      }|S # t        $ r Y �ŒPw xY w# t        t        t        f$ r Y �Œÿw xY w)zL
    Helper of :func:`pandas.pivot_table` for any non-list ``aggfunc``.
    NTF)r1   r2   r/   c              3  ó4   K  — | ]  }|j                   –— Œ y ­w©N)Ú_passed_categorical)Ú.0Úpings     rC   ú	<genexpr>z)__internal_pivot_table.<locals>.<genexpr>­   s   è ø€ ò *Ø%)ˆ× Õ ñ*ùs   ‚zÀThe default value of observed=False is deprecated and will change to observed=True in a future version of pandas. Specify observed=False to silence this warning and retain the current behavior)ÚcategoryÚ
stacklevelÚall)Úhowr$   ©r,   ©Únamesr   )r5   r,   ©r5   )ÚrowsÚcolsr-   r1   r0   r,   )rO   r5   ).r   r9   ÚKeyErrorr8   r   Úkeyr;   Ú	TypeErrorÚlenr+   ÚdropÚ
ValueErrorr
   Ú
no_defaultÚgroupbyÚanyÚ_grouperÚ	groupingsÚwarningsÚwarnÚFutureWarningr   Úaggr   r/   r*   ÚnlevelsrR   ÚrangeÚunstackr   Úfrom_arraysr   ÚlevelsÚreindexÚ
sort_indexÚfillnaÚ
is_integerÚastypeÚnpÚint64ÚnotnarN   Ú_add_marginsÚ	droplevelÚT)r>   r)   r*   r+   r-   r,   r.   r/   r0   r1   r2   r4   Úvalues_passedÚvalues_multiÚiÚ	to_filterÚxrW   Úobserved_boolÚgroupedÚaggedrB   Úindex_namesÚ
to_unstackÚnameÚms                             rC   r:   r:   v   sB  € ð  �7‰?€Dà $Ð&€MÙÜ˜ÔØˆLÜ˜&“\‰Fà ˆLØ�XˆFð ò 	"ˆAØ˜Š}Ü˜q“kÐ!ð	"ð ˆ	Ø˜‘ò 	ˆAÜ˜!œWÔ%Ø—E‘E�ðØ˜‘9Ø×$Ñ$ QÔ'øð	ô ˆy‹>œC §¡Ó-Ò-Ø˜	‘?‰Dð —‘ˆØò 	ˆCðØŸ™ SÓ)‘ð	ô
 �f“ˆà%¬¯©Ñ7‘E¸X€MØ�l‰l˜4¨-¸dÈ6ˆlÓR€GØ”3—>‘>Ñ!¤cñ *Ø-4×-=Ñ-=×-GÑ-Gô*ô 'ô 	�‰ðUô #Ü'Ó)õ	
ð �K‰K˜Ó €Eá”*˜U¤LÔ1´c¸%¿-¹-Ô6HØ—‘ �Ó'ˆà€Eð ‡{�{×Ñ˜QÒ¡5ð —k‘k×'Ñ'¨¬#¨e«*Ð5ˆØˆ
Ü”s˜5“z¤3 t£9Ó-ò 	(ˆAØ—;‘;×$Ñ$ QÑ'ˆDØˆ|˜t {Ñ2Ø×!Ñ! !Õ$à×!Ñ! $Õ'ð	(ð —‘˜j°Z�Ó@ˆáÜ�e—k‘k¤:Ô.Ü×&Ñ&Ü! %§+¡+×"4Ñ"4Ó5¸U¿[¹[×=NÑ=NôˆAð —M‘M !¨!¸
�MÓCˆEä�e—m‘m¤ZÔ0Ü×&Ñ&Ü! %§-¡-×"6Ñ"6Ó7¸u¿}¹}×?RÑ?RôˆAð —M‘M !¨!¸
�MÓCˆEàˆt�|œ
 5¬,Ô7Ø× Ñ  aÐ Ó(ˆàÐØ—‘˜ZÓ(ˆØ”c‰>¡(¬s¯~©~¸jÔ/Ið —L‘L¤§¡Ó*ˆEáÙØ˜Ÿ
™
›×(Ñ(¨aÐ(Ó0Ñ1ˆDÜØØØØØØØØ%Ø!ô

ˆñ ™\¨e¯m©m×.CÑ.CÀaÒ.GØŸ™×/Ñ/°Ó2ˆŒÜ
ˆ5ƒz�Q‚œ3˜w›<¨!Ò+Ø—‘ˆô �%œÔ&©6Ø—‘ ¨Q�Ó/ˆà€LøôA ò Úðûô œz¬8Ð4ò Úðús$   Á'RÂ7RÒ	RÒRÒR3Ò2R3c	           
     ó0  — t        |t        «      st        d«      ‚d|› d�}	| j                  j                  D ]*  }
|| j                  j                  |
«      v sŒ!t        |	«      ‚ t        ||||«      }| j                  dk(  rF| j                  j                  dd  D ]*  }
|| j                  j                  |
«      v sŒ!t        |	«      ‚ t        |«      dkD  r|fdt        |«      dz
  z  z   }n|}|s5t        | t        «      r%| j                  | j                  |||   i«      «      S |r+t        | |||||||«      }t        |t        «      s|S |\  }}}n;t        | t        «      sJ ‚t!        | ||||||«      }t        |t        «      s|S |\  }}}|j#                  |j                  |¬«      }|D ]&  }t        |t        «      r	||   ||<   Œ||d      ||<   Œ( dd	lm}  ||t)        |g«      ¬
«      j*                  }|j                  j                  }t-        |j.                  «      D ]M  }t        |t0        «      rŒ|j3                  |g«      j                  }||   j5                  t6        |f¬«      ||<   ŒO |j                  |«      }||j                  _        |S )Nz&margins_name argument must be a stringzConflicting name "z" in marginsé   r$   ©Ú rP   r   r!   )r+   )Úargs)r8   Ústrr[   r*   rR   Úget_level_valuesÚ_compute_grand_marginÚndimr+   rY   r   Ú_appendÚ_constructorÚ_generate_marginal_resultsÚtupler   Ú)_generate_marginal_results_without_valuesrj   Úpandasr"   r   rt   ÚsetÚdtypesr   Úselect_dtypesÚapplyr   )rB   r>   r)   rT   rU   r-   r1   r0   r,   ÚmsgÚlevelÚgrand_marginrW   Úmarginal_result_setÚresultÚmargin_keysÚ
row_marginÚkr"   Úmargin_dummyÚ	row_namesÚdtypes                         rC   rr   rr      s©  € ô �l¤CÔ(ÜÐAÓBÐBà˜|˜n¨LÐ
9€CØ—‘×"Ñ"ò "ˆØ˜5Ÿ;™;×7Ñ7¸Ó>Ò>Ü˜S“/Ð!ð"ô )¨¨v°wÀÓM€Là‡z�z�Q‚à—]‘]×(Ñ(¨¨Ð,ò 	&ˆEØ˜uŸ}™}×=Ñ=¸eÓDÒDÜ  “oÐ%ð	&ô
 ˆ4ƒy�1‚}Øˆo ¬¨T«°Q©Ñ 7Ñ7‰àˆá”j ¬	Ô2ð �}‰}˜U×/Ñ/°°lÀ<Ñ6PÐ0QÓRÓSÐSá	Ü8Ø�4˜  t¨W°hÀó
Ðô Ð-¬uÔ5Ø&Ð&Ø*=Ñ'ˆ�™Zô ˜%¤Ô.Ð.Ð.ÜGØ�4˜˜t W¨h¸ó
Ðô Ð-¬uÔ5Ø&Ð&Ø*=Ñ'ˆ�˜Zà×#Ñ# F§N¡N¸zÐ#ÓJ€Jàò /ˆÜ�aœÔØ(¨™OˆJ�qŠMà(¨¨1©Ñ.ˆJ�qŠMð	/õ !á˜Z´¸°u³Ô>×@Ñ@€Là—‘×"Ñ"€Iô �V—]‘]Ó#ò 
ˆÜ�eœ^Ô,àà×#Ñ# U GÓ,×4Ñ4ˆØ)¨$Ñ/×5Ñ5Ü#¨5¨(ð 6ó 
ˆ�TÒð
ð �^‰^˜LÓ)€FØ"€F‡L�LÔà€MrD   c                ó€  — |rši }| |   j                  «       D ]€  \  }}	 t        |t        «      r t        ||«      «       ||<   nUt        |t        «      r:t        ||   t        «      r t        |||   «      «       ||<   n ||   |«      ||<   n ||«      ||<   Œ‚ |S | || j                  «      iS # t
        $ r Y Œ¤w xY wrG   )Úitemsr8   r†   r<   ÚdictrX   r*   )r>   r)   r-   r0   r–   r›   Úvs          rC   rˆ   rˆ   U  sÒ   € ñ ØˆØ˜‘L×&Ñ&Ó(ò 	‰DˆAˆqðÜ˜g¤sÔ+Ø&9¤g¨a°Ó&9Ó&;�L ’OÜ ¬Ô.Ü! '¨!¡*¬cÔ2Ø*@¬'°!°W¸Q±ZÓ*@Ó*B˜ Qšà*4¨'°!©*°Q«-˜ Qšá&-¨a£j�L ‘Oøð	ð Ðà™g d§j¡jÓ1Ð2Ð2øô	 ò Ùðús   ŸA:B1Â1	B=Â<B=c                óÚ  ‡‡— t        ‰«      dkD  �rßg }g }	ˆˆfd„}
t        |«      dkD  rŸ|||z      j                  ||¬«      j                  |«      }d}| j                  j                  d|¬«      D ]S  \  }}|j                  } |
|«      }|j	                  «       }||   ||<   |j                  |«       |	j                  |«       ŒU �nddlm} d}| j                  d|¬«      D ]é  \  }}t        ‰«      dkD  r	 |
|«      }n‰}|j                  |«        ||j                  |«      «      j                  }t        |j                  t        «      r6t        j                  |g|j                  j                  d gz   ¬«      |_
        n't        |g|j                  j                  ¬«      |_
        |j                  |«       |	j                  |«       Œë |s| S t!        ||¬	«      }t        |«      dk(  r|S | }| j"                  }	t        ‰«      dkD  r«|‰|z      j                  ‰|¬«      j                  |«      }|j%                  d
¬«      }t        ‰«      gt'        t)        t        ‰«      «      «      z   }|D �cg c]  }|j                  j                  |   ‘Œ }}|j                  j+                  |«      |_
        n+|j-                  t.        j0                  |j"                  ¬«      }||	|fS c c}w )Nr   c                ó0   •— | ‰fdt        ‰«      dz
  z  z   S )Nrƒ   r$   ©rY   )rW   rU   r0   s    €€rC   Ú_all_keyz,_generate_marginal_results.<locals>._all_key|  s    ø€ Ø˜Ð&¨´#°d³)¸a±-Ñ)@Ñ@Ð@rD   ©r1   r$   )r•   r1   r!   rQ   ©r   rS   T)Úfuture_stack©r*   )rY   r]   rd   rt   Úcopyr;   r�   r"   r“   r8   r*   r   Úfrom_tuplesrR   r   r   r   r+   Ústackr9   rf   Úreorder_levelsÚ_constructor_slicedro   Únan)rB   r>   r)   rT   rU   r-   r1   r0   Útable_piecesr™   r¦   ÚmarginÚcat_axisrW   ÚpieceÚall_keyr"   Útransformed_piecer˜   rš   Únew_order_indicesrw   Únew_order_namess       `  `               rC   rŒ   rŒ   l  s´  ù€ ô ˆ4ƒy�1ƒ}àˆØˆõ	Aô ˆt‹9�qŠ=Ø˜$ ™-Ñ(×0Ñ0°ÀÐ0ÓI×MÑMÈgÓVˆFØˆHà#Ÿg™gŸo™o°AÀ˜oÓIò 	,‘
��UØŸ™�Ù" 3›-�ð Ÿ
™
›�Ø!'¨¡��g‘à×#Ñ# EÔ*Ø×"Ñ" 7Õ+ò	,õ )àˆHØ#Ÿm™m°!¸h˜mÓGò ,‘
��UÜ�t“9˜q’=Ù& s›m‘Gà*�GØ×#Ñ# EÔ*ñ %.¨e¯k©k¸'Ó.BÓ$C×$EÑ$EÐ!Ü˜eŸk™k¬:Ô6ä.8×.DÑ.DØ ˜	¨¯©×):Ñ):¸d¸VÑ)Cô/Ð%Õ+ô /4°W°IÀEÇKÁK×DTÑDTÔ.UÐ%Ô+ð ×#Ñ#Ð$5Ô6Ø×"Ñ" 7Õ+ð',ñ* àˆLä˜L¨xÔ8ˆFäˆt‹9˜Š>ØˆMàˆØ—m‘mˆä
ˆ4ƒy�1‚}Ø˜$ ™-Ñ(×0Ñ0°ÀÐ0ÓI×MÑMÈgÓVˆ
Ø×%Ñ%°4Ð%Ó8ˆ
ô ! ›Y˜K¬$¬u´S¸³YÓ/?Ó*@Ñ@ÐØ>OÖP¸˜:×+Ñ+×1Ñ1°!Ó4ÐPˆÐPØ%×+Ñ+×:Ñ:¸?ÓKˆ
Õà×-Ñ-¬b¯f©f¸F¿N¹NÐ-ÓKˆ
à�; 
Ð*Ð*ùò Qs   É5 K(c                ó2  ‡‡— t        ‰«      dkD  rŸg }ˆˆfd„}t        |«      dkD  rE|j                  ||¬«      |   j                  |«      }	 |«       }
|	| |
<   | }|j                  |
«       nR|j                  dd|¬«      j                  |«      }	 |«       }
|	| |
<   | }|j                  |
«       |S | }| j                  }t        ‰«      r&|j                  ‰|¬«      ‰   j                  |«      }n%t        t        j                  |j                  ¬«      }|||fS )Nr   c                 óN   •— t        ‰ «      dk(  r‰S ‰fdt        ‰ «      dz
  z  z   S )Nr$   rƒ   r¥   )rU   r0   s   €€rC   r¦   z;_generate_marginal_results_without_values.<locals>._all_keyÎ  s.   ø€ Ü�4‹y˜AŠ~Ø#Ð#Ø �? U¬c°$«i¸!©mÑ%<Ñ<Ð<rD   r§   )r•   r5   r1   rª   )rY   r]   r“   r;   r+   r   ro   r°   )rB   r>   rT   rU   r-   r1   r0   r™   r¦   r²   rµ   r˜   rš   s      `  `      rC   rŽ   rŽ   À  s  ù€ ô ˆ4ƒy�1‚}àˆõ	=ô
 ˆt‹9�qŠ=Ø—\‘\ $°�\Ó:¸4Ñ@×FÑFÀwÓOˆFÙ“jˆGØ#ˆE�'‰NØˆFØ×Ñ˜wÕ'ð —\‘\¨°¸H�\ÓE×KÑKÈGÓTˆFÙ“jˆGØ#ˆE�'‰NØˆFØ×Ñ˜wÔ'ØˆMàˆØ—m‘mˆä
ˆ4„yØ—\‘\ $°�\Ó:¸4Ñ@×FÑFÀwÓO‰
äœBŸF™F¨&¯.©.Ô9ˆ
à�; 
Ð*Ð*rD   c                ó²   — | €g } | S t        | «      s5t        | t        j                  t        t
        t        f«      st        | «      r| g} | S t        | «      } | S rG   )	r   r8   ro   Úndarrayr   r   r   Úcallabler9   )Úbys    rC   r7   r7   í  sX   € Ø	€zØˆð €Iô 	�"ŒÜ�bœ2Ÿ:™:¤u¬i¼ÐAÔBÜ�BŒ<àˆTˆð €Iô �"‹XˆØ€IrD   Úpivot)r*   r)   c               ó¶  — t        j                  |«      }| j                  d¬«      } | j                  j                  «       | _        | j                  j                  D �cg c]  }|�|nt
        j                  ‘Œ c}| j                  _        |t
        j                  u rT|t
        j                  urt        j                  |«      }ng }|t
        j                  u }| j                  ||z   |¬«      }�nv|t
        j                  u r“t        | j                  t        «      rFt        | j                  j                  «      D �	cg c]  }	| j                  j                  |	«      ‘Œ }
}	nX| j                  | j                  | j                  j                  ¬«      g}
n%t        j                  |«      D �cg c]  }| |   ‘Œ	 }
}|D �cg c]  }| |   ‘Œ	 }}|
j                  |«       t        j                   |
«      }t#        |«      rIt        |t$        «      s9t'        t(        t*           |«      }| j-                  | |   j.                  ||¬«      }n | j                  | |   j.                  |¬«      }|j1                  |«      }|j                  j                  D �cg c]  }|t
        j                  ur|nd ‘Œ c}|j                  _        |S c c}w c c}	w c c}w c c}w c c}w )NF)Údeep)r;   r¨   )r*   r+   rª   )ÚcomÚconvert_to_list_liker«   r*   rR   r
   r\   Ú	set_indexr8   r   rf   re   r‡   r¯   r   Úextendrh   r   r�   r	   r   r   r‹   Ú_valuesrg   )r>   r+   r*   r)   Úcolumns_listliker   rU   r;   Úindexedrw   Ú
index_listÚidxÚcolÚdata_columnsÚ
multiindexr˜   s                   rC   r¿   r¿   û  sr  € ô ×/Ñ/°Ó8Ðð
 �9‰9˜%ˆ9Ó €DØ—‘—‘Ó"€D„JàAEÇÁ×AQÑAQöØ9=�Ð ‰¤c§n¡nÑ4ò€D‡J�JÔð
 ”—‘ÑØœŸ™Ñ&Ü×+Ñ+¨EÓ2‰DàˆDàœ#Ÿ.™.Ð(ˆð —.‘.ØÐ#Ñ#¨Fð !ó 
Šð
 ”C—N‘NÑ"Ü˜$Ÿ*™*¤jÔ1ô =BÀ$Ç*Á*×BTÑBTÓ<UöØ78�D—J‘J×/Ñ/°Õ2ð�
ñ ð
 ×,Ñ,¨T¯Z©Z¸d¿j¹j¿o¹oÐ,ÓNð‘
ô 03×/GÑ/GÈÓ/NÖO¨˜$˜s›)ÐOˆJÐOà-=Ö> c˜˜S›	Ð>ˆÐ>Ø×Ñ˜,Ô'Ü×+Ñ+¨JÓ7ˆ
ä˜Ô¬
°6¼5Ô(Aäœ(¤8Ñ,¨fÓ5ˆFØ×'Ñ'Ø�V‘×$Ñ$¨JÀð (ó ‰Gð ×.Ñ.¨t°F©|×/CÑ/CÈ:Ð.ÓVˆGð �_‰_Ð-Ó.€FàAGÇÁ×ASÑASöØ9=�œCŸN™NÑ*‰°Ñ4ò€F‡L�LÔð €Mùòiùò,ùò Pùâ>ùò s   ÁKÄ?"KÆ.KÇ KÊKc
           
     ó¦  — |€|�t        d«      ‚|�|€t        d«      ‚t        | «      s| g} t        |«      s|g}d}
| |z   D �cg c]  }t        |t        t        f«      sŒ|‘Œ }}|rt        |dd¬«      }
t        | |d¬«      }t        ||d	¬«      }t        ||«      \  }}}}d
dlm	} i t        t        || «      «      ¥t        t        ||«      «      ¥} |||
¬«      }|€d
|d<   t        d
dœ}n	||d<   d|i} |j                  	 d|||||ddœ|¤Ž}|	durt        ||	||¬«      }|j                  |d
¬«      }|j                  |d¬«      }|S c c}w )aº  
    Compute a simple cross tabulation of two (or more) factors.

    By default, computes a frequency table of the factors unless an
    array of values and an aggregation function are passed.

    Parameters
    ----------
    index : array-like, Series, or list of arrays/Series
        Values to group by in the rows.
    columns : array-like, Series, or list of arrays/Series
        Values to group by in the columns.
    values : array-like, optional
        Array of values to aggregate according to the factors.
        Requires `aggfunc` be specified.
    rownames : sequence, default None
        If passed, must match number of row arrays passed.
    colnames : sequence, default None
        If passed, must match number of column arrays passed.
    aggfunc : function, optional
        If specified, requires `values` be specified as well.
    margins : bool, default False
        Add row/column margins (subtotals).
    margins_name : str, default 'All'
        Name of the row/column that will contain the totals
        when margins is True.
    dropna : bool, default True
        Do not include columns whose entries are all NaN.
    normalize : bool, {'all', 'index', 'columns'}, or {0,1}, default False
        Normalize by dividing all values by the sum of values.

        - If passed 'all' or `True`, will normalize over all values.
        - If passed 'index' will normalize over each row.
        - If passed 'columns' will normalize over each column.
        - If margins is `True`, will also normalize margin values.

    Returns
    -------
    DataFrame
        Cross tabulation of the data.

    See Also
    --------
    DataFrame.pivot : Reshape data based on column values.
    pivot_table : Create a pivot table as a DataFrame.

    Notes
    -----
    Any Series passed will have their name attributes used unless row or column
    names for the cross-tabulation are specified.

    Any input passed containing Categorical data will have **all** of its
    categories included in the cross-tabulation, even if the actual data does
    not contain any instances of a particular category.

    In the event that there aren't overlapping indexes an empty DataFrame will
    be returned.

    Reference :ref:`the user guide <reshaping.crosstabulations>` for more examples.

    Examples
    --------
    >>> a = np.array(["foo", "foo", "foo", "foo", "bar", "bar",
    ...               "bar", "bar", "foo", "foo", "foo"], dtype=object)
    >>> b = np.array(["one", "one", "one", "two", "one", "one",
    ...               "one", "two", "two", "two", "one"], dtype=object)
    >>> c = np.array(["dull", "dull", "shiny", "dull", "dull", "shiny",
    ...               "shiny", "dull", "shiny", "shiny", "shiny"],
    ...              dtype=object)
    >>> pd.crosstab(a, [b, c], rownames=['a'], colnames=['b', 'c'])
    b   one        two
    c   dull shiny dull shiny
    a
    bar    1     2    1     0
    foo    2     2    1     2

    Here 'c' and 'f' are not represented in the data and will not be
    shown in the output because dropna is True by default. Set
    dropna=False to preserve categories with no data.

    >>> foo = pd.Categorical(['a', 'b'], categories=['a', 'b', 'c'])
    >>> bar = pd.Categorical(['d', 'e'], categories=['d', 'e', 'f'])
    >>> pd.crosstab(foo, bar)
    col_0  d  e
    row_0
    a      1  0
    b      0  1
    >>> pd.crosstab(foo, bar, dropna=False)
    col_0  d  e  f
    row_0
    a      1  0  0
    b      0  1  0
    c      0  0  0
    Nz&aggfunc cannot be used without values.z)values cannot be used without an aggfunc.TF)Ú	intersectr2   Úrow)ÚprefixrË   r   r!   rª   Ú	__dummy__)r-   r,   r-   )r*   r+   r.   r0   r/   r1   )Ú	normalizer.   r0   )r*   r5   r$   )r+   r5   )rÒ   )r[   r   r8   r   r   r   Ú
_get_namesÚ_build_names_mapperr�   r"   r¡   ÚziprY   r#   Ú
_normalizeÚrename_axis)r*   r+   r)   ÚrownamesÚcolnamesr-   r.   r0   r/   rÓ   Ú
common_idxry   Ú	pass_objsÚrownames_mapperÚunique_rownamesÚcolnames_mapperÚunique_colnamesr"   r>   ÚdfÚkwargsrB   s                         rC   Úcrosstabrã   B  s»  € ðT €~˜'Ð-ÜÐAÓBÐBàÐ˜g˜oÜÐDÓEÐEä˜uÔ%Ø�ˆÜ˜wÔ'Ø�)ˆà€JØ! G™OÖX�q¬z¸!¼iÌÐ=VÕ/W’ÐX€IÐXÙÜ+¨IÀÈEÔRˆ
ä˜% °%Ô8€HÜ˜' 8°EÔ:€Hô 	˜H hÓ/ñØØØØõ !ðÜ
Œs�? EÓ*Ó
+ðä
Œs�? GÓ,Ó
-ð€Dñ 
�4˜zÔ	*€Bà€~Øˆˆ;‰Ü °Ñ2‰à ˆˆ;‰Ø˜WÐ%ˆð ˆB�N‰NØð	àØØØ!ØØñ	ð ñ	€Eð ˜ÑÜØ˜Y°Àlô
ˆð ×Ñ O¸!ÐÓ<€EØ×Ñ o¸AÐÓ>€Eà€Lùòi Ys   ÁEÁ Ec                óŒ  — t        |t        t        f«      sdddœ}	 ||   }|du r2d„ d„ d„ d	œ}|d
   |d<   	 ||   } || «      } | j                  d«      } | S |du �r¤| j                  }| j                  }	| j                  dd d …f   j                  }
||
v||
k7  z  rt	        |› d�«      ‚| j                  d d…df   }| j                  dd d…f   }| j                  d d…d d…f   } t        | |d¬«      } |dk(  r<||j                  «       z  }t        | |gd¬«      } | j                  d«      } |	| _        | S |dk(  r>||j                  «       z  }| j                  |«      } | j                  d«      } || _        | S |d
k(  s|du rv||j                  «       z  }||j                  «       z  }d|j                  |<   t        | |gd¬«      } | j                  |«      } | j                  d«      } || _        |	| _        | S t	        d«      ‚t	        d«      ‚# t        $ r}t	        d«      |‚d }~ww xY w# t        $ r}t	        d«      |‚d }~ww xY w)Nr*   r+   )r   r$   zNot a valid normalize argumentFc                óL   — | | j                  d¬«      j                  d¬«      z  S ©Nr$   rS   r   ©Úsum©ry   s    rC   ú<lambda>z_normalize.<locals>.<lambda>ü  s#   € ˜Q §¡¨A £×!2Ñ!2¸Ð!2Ó!:Ñ:€ rD   c                ó(   — | | j                  «       z  S rG   rç   ré   s    rC   rê   z_normalize.<locals>.<lambda>ý  s   €   Q§U¡U£W¡€ rD   c                óH   — | j                  | j                  d¬«      d¬«      S ræ   )Údivrè   ré   s    rC   rê   z_normalize.<locals>.<lambda>þ  s   € ˜qŸu™u Q§U¡U° U£]¸˜uÓ;€ rD   )rN   r+   r*   rN   Tr   éÿÿÿÿz not in pivoted DataFrame)rÓ   r.   r$   rS   zNot a valid margins argument)r8   Úboolr†   rV   r[   rl   r*   r+   Úilocr   r×   rè   r   rŠ   Úloc)rB   rÓ   r.   r0   Ú	axis_subsÚerrÚnormalizersÚfÚtable_indexÚtable_columnsÚlast_ind_or_colÚcolumn_marginÚindex_margins                rC   r×   r×   ï  s³  € ô �i¤$¬ Ô-Ø IÑ.ˆ	ð	HØ! )Ñ,ˆIð �%Ññ ;Ù,Ù;ñ3
ˆð (¨Ñ.ˆ�DÑð	HØ˜IÑ&ˆAñ �%“ˆØ—‘˜Q“ˆðf €Lðc 
�DŠà—k‘kˆØŸ™ˆØŸ*™* Rª UÑ+×0Ñ0ˆð  Ð/°LÀOÑ4SÒTÜ ˜~Ð-FÐGÓHÐHØŸ
™
 3 B 3¨ 7Ñ+ˆØ—z‘z " c r c 'Ñ*ˆð —
‘
˜3˜B˜3   ˜8Ñ$ˆô ˜5¨I¸uÔEˆð ˜	Ò!Ø)¨M×,=Ñ,=Ó,?Ñ?ˆMÜ˜E =Ð1¸Ô:ˆEØ—L‘L “OˆEØ)ˆEŒMð2 €Lð/ ˜'Ò!Ø'¨,×*:Ñ*:Ó*<Ñ<ˆLØ—M‘M ,Ó/ˆEØ—L‘L “OˆEØ%ˆEŒKð& €Lð# ˜%Ò 9°Ñ#4Ø)¨M×,=Ñ,=Ó,?Ñ?ˆMØ'¨,×*:Ñ*:Ó*<Ñ<ˆLØ-.ˆL×Ñ˜\Ñ*Ü˜E =Ð1¸Ô:ˆEØ—M‘M ,Ó/ˆEà—L‘L “OˆEØ%ˆEŒKØ)ˆEŒMð €Lô Ð=Ó>Ð>ô Ð7Ó8Ð8øôI ò 	HÜÐ=Ó>ÀCÐGûð	Hûô ò 	HÜÐ=Ó>ÀCÐGûð	Hús.   �H ¸H) È	H&ÈH!È!H&È)	IÈ2H>È>Ic                óN  — |€eg }t        | «      D ]S  \  }}t        |t        «      r(|j                  �|j	                  |j                  «       Œ>|j	                  |› d|› �«       ŒU |S t        |«      t        | «      k7  rt        d«      ‚t        |t        «      st        |«      }|S )NÚ_z*arrays and names must have the same length)Ú	enumerater8   r   r   r;   rY   ÚAssertionErrorr9   )ÚarrsrR   rÑ   rw   Úarrs        rC   rÔ   rÔ   ?  s™   € Ø€}ØˆÜ “oò 	.‰FˆAˆsÜ˜#œyÔ)¨c¯h©hÐ.BØ—‘˜SŸX™XÕ&à—‘ ˜x q¨¨˜_Õ-ð		.ð €Lô ˆu‹:œ˜T›Ò"Ü Ð!MÓNÐNÜ˜%¤Ô&Ü˜“KˆEà€LrD   c                óâ  — d„ }t        | «      j                  t        |«      «      } || «       ||«      z  |z  }t        | «      D ��ci c]  \  }}||v sŒd|› �|“Œ }}}t        | «      D ��cg c]  \  }}||v rd|› �n|‘Œ }}}t        |«      D ��ci c]  \  }}||v sŒd|› �|“Œ }	}}t        |«      D ��cg c]  \  }}||v rd|› �n|‘Œ }
}}|||	|
fS c c}}w c c}}w c c}}w c c}}w )a¤  
    Given the names of a DataFrame's rows and columns, returns a set of unique row
    and column names and mappers that convert to original names.

    A row or column name is replaced if it is duplicate among the rows of the inputs,
    among the columns of the inputs or between the rows and the columns.

    Parameters
    ----------
    rownames: list[str]
    colnames: list[str]

    Returns
    -------
    Tuple(Dict[str, str], List[str], Dict[str, str], List[str])

    rownames_mapper: dict[str, str]
        a dictionary with new row names as keys and original rownames as values
    unique_rownames: list[str]
        a list of rownames with duplicate names replaced by dummy names
    colnames_mapper: dict[str, str]
        a dictionary with new column names as keys and original column names as values
    unique_colnames: list[str]
        a list of column names with duplicate names replaced by dummy names

    c                óJ   — t        «       }| D �ch c]	  }||vsŒ|’Œ c}S c c}w rG   )r�   )rR   Úseenr   s      rC   Úget_duplicatesz+_build_names_mapper.<locals>.get_duplicatesn  s$   € Ü“EˆØ!&Ö;˜¨$°dÒ*:’Ò;Ð;ùÒ;s   �	 ™ Úrow_Úcol_)r�   Úintersectionrý   )rÙ   rÚ   r  Úshared_namesÚ	dup_namesrw   r   rÝ   rÞ   rß   rà   s              rC   rÕ   rÕ   P  s?  € ò<<ô �x“=×-Ñ-¬c°(«mÓ<€LÙ˜xÓ(©>¸(Ó+CÑCÀlÑR€Iô )2°(Ó(;÷Ù$˜Q ¸tÀyÒ?Pˆ$ˆqˆcˆ
�DÑð€Oñ ô BKÈ8ÓAT÷Ù6=°a¸�d˜iÑ'ˆ$ˆqˆc‰
¨TÑ1ð€Oñ ô
 )2°(Ó(;÷Ù$˜Q ¸tÀyÒ?Pˆ$ˆqˆcˆ
�DÑð€Oñ ô BKÈ8ÓAT÷Ù6=°a¸�d˜iÑ'ˆ$ˆqˆc‰
¨TÑ1ð€Oñ ð ˜O¨_¸oÐMÐMùóùóùóùós$   Á	CÁCÁ/CÂC%Â"C%Â;C+)r>   r"   r-   r   r.   rï   r/   rï   r0   r   r1   úbool | lib.NoDefaultr2   rï   Úreturnr"   )r>   r"   r-   z!AggFuncTypeBase | AggFuncTypeDictr.   rï   r/   rï   r0   r   r1   r
  r2   rï   r  r"   )r'   N)rB   zDataFrame | Seriesr>   r"   r1   rï   r0   r   )r'   )r>   r"   r0   r   )r>   r"   r1   rï   r0   r   )rB   r"   r>   r"   r1   rï   r0   r   )
r>   r"   r+   r    r*   úIndexLabel | lib.NoDefaultr)   r  r  r"   )NNNNFr'   TF)
r.   rï   r0   r   r/   rï   rÓ   z/bool | Literal[0, 1, 'all', 'index', 'columns']r  r"   )rB   r"   r.   rï   r0   r   r  r"   )rÐ   )rÑ   r†   )rÙ   ú	list[str]rÚ   r  r  z;tuple[dict[str, str], list[str], dict[str, str], list[str]])EÚ
__future__r   Úcollections.abcr   r   Útypingr   r   r   r	   ra   Únumpyro   Úpandas._libsr
   Úpandas.util._decoratorsr   r   Úpandas.util._exceptionsr   Úpandas.core.dtypes.castr   Úpandas.core.dtypes.commonr   r   r   Úpandas.core.dtypes.dtypesr   Úpandas.core.dtypes.genericr   r   Úpandas.core.commonÚcoreÚcommonrÂ   Úpandas.core.framer   Úpandas.core.groupbyr   Úpandas.core.indexes.apir   r   r   Úpandas.core.reshape.concatr   Úpandas.core.reshape.utilr   Úpandas.core.seriesr   Úpandas._typingr   r   r   r    r�   r"   r\   r#   r:   rr   rˆ   rŒ   rŽ   r7   r¿   rã   r×   rÔ   rÕ   © rD   rC   ú<module>r$     sN  ðÝ "÷÷ó ó ã å ÷õ 5å ;÷ñ õ
 5÷÷
 !Ð  Ý *Ý '÷ñ õ
 .Ý 6Ý %á÷ó õ !ñ
 Ð"Ó#Ù	ˆ,�}Ñ
%¨qÔ1ð Ø
ØØ!ØØØØ"Ø%(§^¡^Øð4:Ø
ð4:ð
 ð4:ð ð4:ð ð4:ð ð4:ð #ð4:ð ð4:ð ò4:ó 2ó $ð4:ðnGØ
ðGð
 /ðGð ðGð ðGð ðGð #ðGð ðGð óGðd #ØðRØðRà
ðRð ðRð óRðl @Eð3Ø
ð3Ø4<ó3ð> #ðQ+à
ðQ+ð ðQ+ð óQ+ðv #ð*+Øð*+à
ð*+ð ð*+ð ó*+òZñ Ð"Ó#Ù	ˆ,�wÑ
¨Ô+ð
 ),¯©Ø),¯©ñBØ
ðBð ðBð &ð	Bð
 'ðBð òBó ,ó $ðBðP ØØØØØ"ØØAFðjð ðjð ðjð ðjð ?ðjð ójð\ JOðMØðMØ*.ðMØ>FðMàóMô`ð"3NØð3NØ#,ð3Nà@ô3NrD   