§
    Ñ! 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j8        df
dHd)„¦   «         ¦   «         Z9dId+„Z:	 	 dJdKd.„Z;	 dLdMd/„Z<	 dLdNd0„Z=	 dLdOd1„Z>d2„ Z? ed¦  «         ee$d3         d¬¦  «        ej8        ej8        d4œdPd:„¦   «         ¦   «         Z@	 	 	 	 	 	 	 	 dQdRd=„ZA	 dLdSd>„ZBdTdUdB„ZCdVdG„ZDdS )Wé    )Ú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ÚAllÚdatar"   Úaggfuncr   ÚmarginsÚboolÚdropnaÚmargins_namer   Úobservedúbool | lib.NoDefaultÚsortÚreturnc                óÒ  — t          |¦  «        }t          |¦  «        }t          |t          ¦  «        r…g }g }|D ]U}t          | |||||||||	|
¬¦  «        }|                     |¦  «         |                     t          |d|¦  «        ¦  «         ŒVt          ||d¬¦  «        }|                     | d¬¦  «        S t          | |||||||||	|
¦  «        }|                     | d¬¦  «        S )N)
ÚvaluesÚindexÚcolumnsÚ
fill_valuer)   r*   r,   r-   r.   r0   Ú__name__r$   )ÚkeysÚaxisr#   )Úmethod)Ú_convert_byÚ
isinstanceÚlistÚ__internal_pivot_tableÚappendÚgetattrr   Ú__finalize__)r(   r3   r4   r5   r)   r6   r*   r,   r-   r.   r0   Úpiecesr8   ÚfuncÚ_tableÚtables                   úSc:\xampp_lite_8_4\www\timesheet\venv\Lib\site-packages\pandas/core/reshape/pivot.pyr#   r#   =   s+  € õ ˜ÑÔ€EÝ˜'Ñ"Ô"€Gå�'�4Ñ Ô ð >Ø"$ˆØˆØð 	9ð 	9ˆDÝ+ØØØØØ%ØØØØ)Ø!Øðñ ô ˆFð �MŠM˜&Ñ!Ô!Ð!Ø�KŠK�  j°$Ñ7Ô7Ñ8Ô8Ð8Ð8å�v D¨qÐ1Ñ1Ô1ˆØ×!Ò! $¨}Ð!Ñ=Ô=Ð=å"ØØØØØØØØØØØñô €Eð ×Ò˜d¨=ÐÑ9Ô9Ð9ó    ú!AggFuncTypeBase | AggFuncTypeDictc                óÀ	  — ||z   }|du}|r¼t          |¦  «        rd}t          |¦  «        }nd}|g}|D ]}|| vrt          |¦  «        ‚Œg }||z   D ]H}t          |t          ¦  «        r|j        }	 || v r|                     |¦  «         Œ9# t          $ r Y ŒEw xY wt          |¦  «        t          | j	        ¦  «        k     r| |         } nN| j	        }|D ]5}	 | 
                    |¦  «        }Œ# t          t          t          f$ r Y Œ2w xY wt          |¦  «        }|	t          j        u rdn|	}|                      |||
|¬¦  «        }|	t          j        u rKt          d„ |j        j        D ¦   «         ¦  «        r(t%          j        dt(          t+          ¦   «         ¬¦  «         |                     |¦  «        }|r?t          |t.          ¦  «        r*t          |j	        ¦  «        r|                     d¬	¦  «        }|}|j        j        d
k    r¬|rª|j        j        dt          |¦  «        …         }g }t9          t          |¦  «        t          |¦  «        ¦  «        D ]E}|j        j        |         }|�||v r|                     |¦  «         Œ0|                     |¦  «         ŒF|                     ||¬¦  «        }|sÒt          |j        t<          ¦  «        rOt=          j        tA          |j        j!        ¦  «        |j        j        ¬¦  «        }| "                    |d|¬¦  «        }t          |j	        t<          ¦  «        rOt=          j        tA          |j	        j!        ¦  «        |j	        j        ¬¦  «        }| "                    |d
|¬¦  «        }|
du r+t          |t.          ¦  «        r| #                    d
¬¦  «        }|�S| $                    |¦  «        }|t          u r5|	s3t          j%        |¦  «        r| &                    tN          j(        ¦  «        }|rH|r.| |  )                    ¦   «          *                    d
¬¦  «                 } tW          || |||||||¬¦	  «	        }|r1|s/|j	        j        d
k    r|j	         ,                    d¦  «        |_	        t          |¦  «        dk    rt          |¦  «        dk    r|j-        }t          |t.          ¦  «        r|r|                     dd
¬¦  «        }|S )zL
    Helper of :func:`pandas.pivot_table` for any non-list ``aggfunc``.
    NTF)r.   r0   r,   c              3  ó$   K  — | ]}|j         V — Œd S ©N)Ú_passed_categorical)Ú.0Úpings     rF   ú	<genexpr>z)__internal_pivot_table.<locals>.<genexpr>­   s6   è è € ð *ð *Ø%)ˆÔ ð*ð *ð *ð *ð *ð *rG   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$   ©r6   ©Únamesr   )r9   r6   ©r9   )ÚrowsÚcolsr)   r.   r-   r6   )rS   r9   ).r   r=   ÚKeyErrorr<   r   Úkeyr?   Ú	TypeErrorÚlenr5   ÚdropÚ
ValueErrorr
   Ú
no_defaultÚgroupbyÚanyÚ_grouperÚ	groupingsÚwarningsÚwarnÚFutureWarningr   Úaggr   r,   r4   ÚnlevelsrV   ÚrangeÚunstackr   Úfrom_arraysr   ÚlevelsÚreindexÚ
sort_indexÚfillnaÚ
is_integerÚastypeÚnpÚint64ÚnotnarR   Ú_add_marginsÚ	droplevelÚT)r(   r3   r4   r5   r)   r6   r*   r,   r-   r.   r0   r8   Úvalues_passedÚvalues_multiÚiÚ	to_filterÚxr[   Úobserved_boolÚgroupedÚaggedrE   Úindex_namesÚ
to_unstackÚnameÚms                             rF   r>   r>   v   sK  € ð  �7‰?€Dà $Ð&€MØð  Ý˜ÑÔð 	ØˆLÝ˜&‘\”\ˆFˆFà ˆLØ�XˆFð ð 	"ð 	"ˆAØ˜ˆ}ˆ}Ý˜q‘k”kÐ!ð ð ˆ	Ø˜‘ð 	ð 	ˆAÝ˜!�WÑ%Ô%ð Ø”E�ðØ˜�9�9Ø×$Ò$ QÑ'Ô'Ð'øøÝð ð ð Ø�ðøøøåˆy‰>Œ>�C ¤Ñ-Ô-Ò-Ð-Ø˜	”?ˆDøð ”ˆØð 	ð 	ˆCðØŸš SÑ)Ô)��øÝ�z­8Ð4ð ð ð Ø�ðøøøå�f‘”ˆà%­¬Ð7Ð7�E�E¸X€MØ�lŠl˜4¨-¸dÈ6ˆlÑRÔR€GØ•3”>Ð!Ð!¥cð *ð *Ø-4Ô-=Ô-Gð*ñ *ô *ñ 'ô 'Ð!õ 	ŒðUõ #Ý'Ñ)Ô)ð	
ñ 	
ô 	
ð 	
ð �KŠK˜Ñ Ô €Eàð (•*˜U¥LÑ1Ô1ð (µc¸%¼-Ñ6HÔ6Hð (Ø—’ �Ñ'Ô'ˆà€Eð „{Ô˜QÒÐ 5Ðð ”kÔ'¨­#¨e©*¬*¨Ô5ˆØˆ
Ý•s˜5‘z”z¥3 t¡9¤9Ñ-Ô-ð 	(ð 	(ˆAØ”;Ô$ QÔ'ˆDØˆ|˜t {Ð2Ð2Ø×!Ò! !Ñ$Ô$Ð$Ð$à×!Ò! $Ñ'Ô'Ð'Ð'Ø—’˜j°Z�Ñ@Ô@ˆàð DÝ�e”k¥:Ñ.Ô.ð 	DÝÔ&Ý! %¤+Ô"4Ñ5Ô5¸U¼[Ô=Nðñ ô ˆAð —M’M !¨!¸
�MÑCÔCˆEå�e”m¥ZÑ0Ô0ð 	DÝÔ&Ý! %¤-Ô"6Ñ7Ô7¸u¼}Ô?Rðñ ô ˆAð —M’M !¨!¸
�MÑCÔCˆEàˆt€|€|�
 5­,Ñ7Ô7€|Ø× Ò  aÐ Ñ(Ô(ˆàÐØ—’˜ZÑ(Ô(ˆØ•cˆ>ˆ> (ˆ>­s¬~¸jÑ/IÔ/Iˆ>ð —L’L¥¤Ñ*Ô*ˆEàð 
Øð 	2Ø˜Ÿ
š
™œ×(Ò(¨aÐ(Ñ0Ô0Ô1ˆDÝØØØØØØØØ%Ø!ð

ñ 

ô 

ˆð ð 3˜\ð 3¨e¬mÔ.CÀaÒ.GÐ.GØœ×/Ò/°Ñ2Ô2ˆŒÝ
ˆ5�z„z�Q‚€�3˜w™<œ<¨!Ò+Ð+Ø”ˆõ �%�Ñ&Ô&ð 0¨6ð 0Ø—’ ¨Q�Ñ/Ô/ˆà€Ls$   Á0B
Â

BÂBÃC*Ã*DÄDrE   úDataFrame | Seriesc	           
     óž  — t          |t          ¦  «        st          d¦  «        ‚d|› d�}	| j        j        D ]-}
|| j                             |
¦  «        v rt          |	¦  «        ‚Œ.t          ||||¦  «        }| j        dk    rB| j        j        dd …         D ]-}
|| j                             |
¦  «        v rt          |	¦  «        ‚Œ.t          |¦  «        dk    r|fdt          |¦  «        dz
  z  z   }n|}|sEt          | t          ¦  «        r0|                      |                      |||         i¦  «        ¦  «        S |r4t          | |||||||¦  «        }t          |t          ¦  «        s|S |\  }}}nIt          | t          ¦  «        sJ ‚t!          | ||||||¦  «        }t          |t          ¦  «        s|S |\  }}}|                     |j        |¬¦  «        }|D ]4}t          |t          ¦  «        r||         ||<   Œ#||d                  ||<   Œ5dd	lm}  ||t)          |g¦  «        ¬
¦  «        j        }|j        j        }t-          |j        ¦  «        D ]Y}t          |t0          ¦  «        rŒ|                     |g¦  «        j        }||                              t6          |f¬¦  «        ||<   ŒZ|                     |¦  «        }||j        _        |S )Nz&margins_name argument must be a stringzConflicting name "z" in marginsé   r$   ©Ú rT   r   r!   )r5   )Úargs)r<   Ústrr_   r4   rV   Úget_level_valuesÚ_compute_grand_marginÚndimr5   r]   r   Ú_appendÚ_constructorÚ_generate_marginal_resultsÚtupler   Ú)_generate_marginal_results_without_valuesrn   Úpandasr"   r   rx   ÚsetÚdtypesr   Úselect_dtypesÚapplyr   )rE   r(   r3   rX   rY   r)   r.   r-   r6   ÚmsgÚlevelÚgrand_marginr[   Úmarginal_result_setÚresultÚmargin_keysÚ
row_marginÚkr"   Úmargin_dummyÚ	row_namesÚdtypes                         rF   rv   rv      s9  € õ �l¥CÑ(Ô(ð CÝÐAÑBÔBÐBà
9˜|Ð
9Ð
9Ð
9€CØ”Ô"ð "ð "ˆØ˜5œ;×7Ò7¸Ñ>Ô>Ð>Ð>Ý˜S‘/”/Ð!ð ?õ )¨¨v°wÀÑMÔM€Là„z�Q‚€à”]Ô(¨¨¨Ô,ð 	&ð 	&ˆEØ˜uœ}×=Ò=¸eÑDÔDÐDÐDÝ  ‘o”oÐ%ð Eõ ˆ4�y„y�1‚}€}Øˆo ­¨T©¬°Q©Ñ 7Ñ7ˆˆàˆàð >•j ­	Ñ2Ô2ð >ð �}Š}˜U×/Ò/°°lÀ<Ô6PÐ0QÑRÔRÑSÔSÐSà	ð >Ý8Ø�4˜  t¨W°hÀñ
ô 
Ðõ Ð-­uÑ5Ô5ð 	'Ø&Ð&Ø*=Ñ'ˆ�˜Z˜Zõ ˜%¥Ñ.Ô.Ð.Ð.Ð.ÝGØ�4˜˜t W¨h¸ñ
ô 
Ðõ Ð-­uÑ5Ô5ð 	'Ø&Ð&Ø*=Ñ'ˆ�˜Zà×#Ò# F¤N¸zÐ#ÑJÔJ€Jàð /ð /ˆÝ�a�ÑÔð 	/Ø(¨œOˆJ�q‰MˆMà(¨¨1¬Ô.ˆJ�q‰MˆMà Ð Ð Ð Ð Ð à�9˜Zµ¸°u±´Ð>Ñ>Ô>Ô@€Là”Ô"€Iõ �V”]Ñ#Ô#ð 
ð 
ˆÝ�e�^Ñ,Ô,ð 	àà×#Ò# U GÑ,Ô,Ô4ˆØ)¨$Ô/×5Ò5Ý#¨5¨(ð 6ñ 
ô 
ˆ�TÑÐð �^Š^˜LÑ)Ô)€FØ"€F„LÔà€MrG   c                óà  — |rÛi }| |                               ¦   «         D ]¼\  }}	 t          |t          ¦  «        r t          ||¦  «        ¦   «         ||<   nut          |t          ¦  «        rRt          ||         t          ¦  «        r" t          |||         ¦  «        ¦   «         ||<   n# ||         |¦  «        ||<   n ||¦  «        ||<   Œ­# t
          $ r Y Œ¹w xY w|S | || j        ¦  «        iS rK   )Úitemsr<   r‹   r@   Údictr\   r4   )r(   r3   r)   r-   r›   r    Úvs          rF   r�   r�   U  s  € ð ð 3ØˆØ˜”L×&Ò&Ñ(Ô(ð 	ð 	‰DˆAˆqðÝ˜g¥sÑ+Ô+ð 1Ø&9¥g¨a°Ñ&9Ô&9Ñ&;Ô&;�L ‘O�OÝ ­Ñ.Ô.ð 1Ý! '¨!¤*­cÑ2Ô2ð 8Ø*@­'°!°W¸Q´ZÑ*@Ô*@Ñ*BÔ*B˜ Q™˜à*4¨'°!¬*°Q©-¬-˜ Q™˜à&- g¨a¡j¤j�L ‘OøøÝð ð ð Ø�ðøøøàÐà˜g˜g d¤jÑ1Ô1Ð2Ð2s   ¥B&CÃ
CÃCc                ó4  ‡‡‡— t          ‰¦  «        dk    �r
g }g }	ˆˆfd„}
t          |¦  «        dk    r´|||z                                 ||¬¦  «                             |¦  «        }d}| j                             d|¬¦  «        D ]`\  }}|j        } |
|¦  «        }|                     ¦   «         }||         ||<   |                     |¦  «         |	                     |¦  «         Œa�nddlm} d}|                      d|¬¦  «        D ]î\  }}t          ‰¦  «        dk    r |
|¦  «        }n‰}|                     |¦  «          ||                     |¦  «        ¦  «        j        }t          |j
        t          ¦  «        r+t          j        |g|j
        j        d gz   ¬¦  «        |_
        n!t          |g|j
        j        ¬¦  «        |_
        |                     |¦  «         |	                     |¦  «         Œï|s| S t!          ||¬	¦  «        }t          |¦  «        dk    r|S n	| }| j        }	t          ‰¦  «        dk    r±|‰|z                                 ‰|¬¦  «                             |¦  «        Š‰                     d
¬¦  «        Št          ‰¦  «        gt'          t)          t          ‰¦  «        ¦  «        ¦  «        z   }ˆfd„|D ¦   «         }‰j
                             |¦  «        ‰_
        n&|                     t.          j        |j        ¬¦  «        Š||	‰fS )Nr   c                ó8   •— | ‰fdt          ‰¦  «        dz
  z  z   S )Nrˆ   r$   ©r]   )r[   rY   r-   s    €€rF   Ú_all_keyz,_generate_marginal_results.<locals>._all_key|  s"   ø€ Ø˜Ð&¨µ#°d±)´)¸a±-Ñ)@Ñ@Ð@rG   ©r.   r$   )rš   r.   r!   rU   ©rƒ   rW   T)Úfuture_stackc                ó4   •— g | ]}‰j         j        |         ‘ŒS © )r4   rV   )rM   r{   rŸ   s     €rF   ú
<listcomp>z._generate_marginal_results.<locals>.<listcomp>¸  s$   ø€ ÐPÐPÐP¸˜:Ô+Ô1°!Ô4ÐPÐPÐPrG   ©r4   )r]   ra   rh   rx   Úcopyr?   r”   r"   r˜   r<   r4   r   Úfrom_tuplesrV   r   rƒ   r   r5   Ústackr=   rj   Úreorder_levelsÚ_constructor_slicedrs   Únan)rE   r(   r3   rX   rY   r)   r.   r-   Útable_piecesrž   r«   ÚmarginÚcat_axisr[   ÚpieceÚall_keyr"   Útransformed_piecer�   Únew_order_indicesÚnew_order_namesrŸ   s       `  `             @rF   r‘   r‘   l  sY  øøø€ õ ˆ4�y„y�1‚}�}àˆØˆð	Að 	Að 	Að 	Að 	Að 	Aõ ˆt‰9Œ9�qŠ=ˆ=Ø˜$ ™-Ô(×0Ò0°ÀÐ0ÑIÔI×MÒMÈgÑVÔVˆFØˆHà#œgŸošo°AÀ˜oÑIÔIð 	,ð 	,‘
��UØœ�Ø"˜( 3™-œ-�ð Ÿ
š
™œ�Ø!'¨¤��g‘à×#Ò# EÑ*Ô*Ð*Ø×"Ò" 7Ñ+Ô+Ð+Ð+ñ	,ð )Ð(Ð(Ð(Ð(Ð(àˆHØ#Ÿmšm°!¸h˜mÑGÔGð ,ð ,‘
��UÝ�t‘9”9˜q’=�=Ø&˜h s™mœm�G�Gà*�GØ×#Ò# EÑ*Ô*Ð*ð %. I¨e¯kªk¸'Ñ.BÔ.BÑ$CÔ$CÔ$EÐ!Ý˜eœk­:Ñ6Ô6ð Vå.8Ô.DØ ˜	¨¬Ô):¸d¸VÑ)Cð/ñ /ô /Ð%Ô+Ð+õ /4°W°IÀEÄKÔDTÐ.UÑ.UÔ.UÐ%Ô+ð ×#Ò#Ð$5Ñ6Ô6Ð6Ø×"Ò" 7Ñ+Ô+Ð+Ð+àð 	9àˆLå˜L¨xÐ8Ñ8Ô8ˆFåˆt‰9Œ9˜Š>ˆ>ØˆMð ð ˆØ”mˆå
ˆ4�y„y�1‚}€}Ø˜$ ™-Ô(×0Ò0°ÀÐ0ÑIÔI×MÒMÈgÑVÔVˆ
Ø×%Ò%°4Ð%Ñ8Ô8ˆ
õ ! ™YœY˜K­$­uµS¸±Y´YÑ/?Ô/?Ñ*@Ô*@Ñ@ÐØPÐPÐPÐPÐ>OÐPÑPÔPˆØ%Ô+×:Ò:¸?ÑKÔKˆ
ÔÐà×-Ò-­b¬f¸F¼NÐ-ÑKÔKˆ
à�; 
Ð*Ð*rG   c                ó’  ‡‡— t          ‰¦  «        dk    rÅg }ˆˆfd„}t          |¦  «        dk    rW|                     ||¬¦  «        |                              |¦  «        }	 |¦   «         }
|	| |
<   | }|                     |
¦  «         n\|                     dd|¬¦  «                             |¦  «        }	 |¦   «         }
|	| |
<   | }|                     |
¦  «         |S | }| j        }t          ‰¦  «        r1|                     ‰|¬¦  «        ‰                              |¦  «        }n t          t          j        |j        ¬¦  «        }|||fS )Nr   c                 ó`   •— t          ‰ ¦  «        dk    r‰S ‰fdt          ‰ ¦  «        dz
  z  z   S )Nr$   rˆ   rª   )rY   r-   s   €€rF   r«   z;_generate_marginal_results_without_values.<locals>._all_keyÎ  s4   ø€ Ý�4‰yŒy˜AŠ~ˆ~Ø#Ð#Ø �? U­c°$©i¬i¸!©mÑ%<Ñ<Ð<rG   r¬   )rš   r9   r.   r²   )r]   ra   r˜   r?   r5   r   rs   r¸   )rE   r(   rX   rY   r)   r.   r-   rž   r«   rº   r½   r�   rŸ   s      `  `      rF   r“   r“   À  sa  øø€ õ ˆ4�y„y�1‚}€}àˆð	=ð 	=ð 	=ð 	=ð 	=ð 	=õ
 ˆt‰9Œ9�qŠ=ˆ=Ø—\’\ $°�\Ñ:Ô:¸4Ô@×FÒFÀwÑOÔOˆFØ�h‘j”jˆGØ#ˆE�'‰NØˆFØ×Ò˜wÑ'Ô'Ð'Ð'ð —\’\¨°¸H�\ÑEÔE×KÒKÈGÑTÔTˆFØ�h‘j”jˆGØ#ˆE�'‰NØˆFØ×Ò˜wÑ'Ô'Ð'ØˆMàˆØ”mˆå
ˆ4�y„yð :Ø—\’\ $°�\Ñ:Ô:¸4Ô@×FÒFÀwÑOÔOˆ
ˆ
å�BœF¨&¬.Ð9Ñ9Ô9ˆ
à�; 
Ð*Ð*rG   c                óÌ   — | €g } n^t          | ¦  «        s<t          | t          j        t          t
          t          f¦  «        st          | ¦  «        r| g} nt          | ¦  «        } | S rK   )	r   r<   rs   Úndarrayr   r   r   Úcallabler=   )Úbys    rF   r;   r;   í  sd   € Ø	€zØˆˆå�"‰Œðå�b�2œ:¥u­i½ÐAÑBÔBðõ �B‰<Œ<ðð
 ˆTˆˆå�"‰XŒXˆØ€IrG   Úpivot)r4   r3   r5   r    r4   úIndexLabel | lib.NoDefaultr3   c               óª  ‡ — t          j        |¦  «        }‰                      d¬¦  «        Š ‰ j                             ¦   «         ‰ _        d„ ‰ j        j        D ¦   «         ‰ j        _        |t
          j        u rO|t
          j        urt          j        |¦  «        }ng }|t
          j        u }‰                      ||z   |¬¦  «        }�nW|t
          j        u rht          ‰ j        t          ¦  «        r&ˆ fd„t          ‰ j        j        ¦  «        D ¦   «         }nH‰                      ‰ j        ‰ j        j        ¬¦  «        g}n ˆ fd„t          j        |¦  «        D ¦   «         }ˆ fd„|D ¦   «         }	|                     |	¦  «         t          j        |¦  «        }
t!          |¦  «        rYt          |t"          ¦  «        sDt%          t&          t(                   |¦  «        }‰                      ‰ |         j        |
|¬	¦  «        }n"‰                      ‰ |         j        |
¬
¦  «        }|                     |¦  «        }d„ |j        j        D ¦   «         |j        _        |S )NF)Údeepc                ó.   — g | ]}|�|nt           j        ‘ŒS rK   ©r
   r`   ©rM   rƒ   s     rF   r±   zpivot.<locals>.<listcomp>  s0   € ð ð ð Ø9=�Ð ˆˆ¥c¤nðð ð rG   )r?   c                óD   •— g | ]}‰j                              |¦  «        ‘ŒS r°   )r4   rŒ   )rM   r{   r(   s     €rF   r±   zpivot.<locals>.<listcomp>!  s6   ø€ ð ð ð Ø78�D”J×/Ò/°Ñ2Ô2ðð ð rG   r­   c                ó    •— g | ]
}‰|         ‘ŒS r°   r°   )rM   Úidxr(   s     €rF   r±   zpivot.<locals>.<listcomp>)  s   ø€ ÐOÐOÐO¨˜$˜sœ)ÐOÐOÐOrG   c                ó    •— g | ]
}‰|         ‘ŒS r°   r°   )rM   Úcolr(   s     €rF   r±   zpivot.<locals>.<listcomp>+  s   ø€ Ð>Ð>Ð> c˜˜Sœ	Ð>Ð>Ð>rG   )r4   r5   r²   c                ó2   — g | ]}|t           j        ur|nd ‘ŒS rK   rÌ   rÍ   s     rF   r±   zpivot.<locals>.<listcomp>;  s5   € ð ð ð Ø9=��CœNÐ*Ð*ˆˆ°ðð ð rG   )ÚcomÚconvert_to_list_liker³   r4   rV   r
   r`   Ú	set_indexr<   r   rj   ri   r·   rƒ   Úextendrl   r   r’   r	   r   r   r�   Ú_valuesrk   )r(   r5   r4   r3   Úcolumns_listlikerY   r?   ÚindexedÚ
index_listÚdata_columnsÚ
multiindexr�   s   `           rF   rÇ   rÇ   û  sw  ø€ õ Ô/°Ñ8Ô8Ðð
 �9Š9˜%ˆ9Ñ Ô €DØ”—’Ñ"Ô"€D„Jðð ØAEÄÔAQðñ ô €D„JÔð
 •”ÐÐØ�œÐ&Ð&ÝÔ+¨EÑ2Ô2ˆDˆDàˆDà�#œ.Ð(ˆð —.’.ØÐ#Ñ#¨Fð !ñ 
ô 
ˆ‰ð
 •C”NÐ"Ð"Ý˜$œ*¥jÑ1Ô1ð ðð ð ð Ý<AÀ$Ä*ÔBTÑ<UÔ<Uðñ ô �
�
ð
 ×,Ò,¨T¬Z¸d¼j¼oÐ,ÑNÔNð�
�
ð PÐOÐOÐO­sÔ/GÈÑ/NÔ/NÐOÑOÔOˆJà>Ð>Ð>Ð>Ð-=Ð>Ñ>Ô>ˆØ×Ò˜,Ñ'Ô'Ð'ÝÔ+¨JÑ7Ô7ˆ
å˜ÑÔð 	W­
°6½5Ñ(AÔ(Að 	Wå�(¥8Ô,¨fÑ5Ô5ˆFØ×'Ò'Ø�V”Ô$¨JÀð (ñ ô ˆGˆGð ×.Ò.¨t°F¬|Ô/CÈ:Ð.ÑVÔVˆGð �_Š_Ð-Ñ.Ô.€Fðð ØAGÄÔASðñ ô €F„LÔð €MrG   Ú	normalizeú/bool | Literal[0, 1, 'all', 'index', 'columns']c
           
     óÞ  — |€|�t          d¦  «        ‚|�|€t          d¦  «        ‚t          | ¦  «        s| g} t          |¦  «        s|g}d}
d„ | |z   D ¦   «         }|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          ||	||¬¦  «        }|                     |d¬¦  «        }|                     |d¬¦  «        }|S )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.c                óJ   — g | ] }t          |t          t          f¦  «        ¯|‘Œ!S r°   )r<   r   r   )rM   r}   s     rF   r±   zcrosstab.<locals>.<listcomp>¸  s,   € ÐXÐXÐX�q­z¸!½iÍÐ=VÑ/WÔ/WÐX�ÐXÐXÐXrG   TF)Ú	intersectr0   Úrow)ÚprefixrÒ   r   r!   r²   Ú	__dummy__)r)   r6   r)   )r4   r5   r*   r-   r,   r.   )rÞ   r*   r-   )r4   r9   r$   )r5   r9   )rå   )r_   r   r   Ú
_get_namesÚ_build_names_mapperr”   r"   r¦   Úzipr]   r#   Ú
_normalizeÚrename_axis)r4   r5   r3   ÚrownamesÚcolnamesr)   r*   r-   r,   rÞ   Ú
common_idxÚ	pass_objsÚrownames_mapperÚunique_rownamesÚcolnames_mapperÚunique_colnamesr"   r(   ÚdfÚkwargsrE   s                        rF   Úcrosstabrõ   B  s  € ðT €~˜'Ð-ÝÐAÑBÔBÐBàÐ˜g˜oÝÐDÑEÔEÐEå˜uÑ%Ô%ð Ø�ˆÝ˜wÑ'Ô'ð Ø�)ˆà€JØXÐX˜E G™OÐXÑXÔX€IØð SÝ+¨IÀÈEÐRÑRÔRˆ
å˜% °%Ð8Ñ8Ô8€HÝ˜' 8°EÐ:Ñ:Ô:€Hõ 	˜H hÑ/Ô/ñØØØØð !Ð Ð Ð Ð Ð ðÝ
�s�? EÑ*Ô*Ñ
+Ô
+ðå
�s�? GÑ,Ô,Ñ
-Ô
-ð€Dð 
ˆ�4˜zÐ	*Ñ	*Ô	*€Bà€~Øˆˆ;‰Ý °Ð2Ð2ˆˆà ˆˆ;‰Ø˜WÐ%ˆð ˆBŒNØð	àØØØ!ØØð	ð 	ð ð	ð 	€Eð ˜ÐÐÝØ˜Y°Àlð
ñ 
ô 
ˆð ×Ò O¸!ÐÑ<Ô<€EØ×Ò o¸AÐÑ>Ô>€Eà€LrG   c                ó  — t          |t          t          f¦  «        s1dddœ}	 ||         }n"# t          $ r}t	          d¦  «        |‚d }~ww xY w|du rbd„ d„ d„ d	œ}|d
         |d<   	 ||         }n"# t          $ r}t	          d¦  «        |‚d }~ww xY w || ¦  «        } |                      d¦  «        } �nÕ|du �rÁ| j        }| j        }	| j        dd d …f         j	        }
||
v||
k    z  rt	          |› d�¦  «        ‚| j        d d…df         }| j        dd d…f         }| j        d d…d d…f         } t          | |d¬¦  «        } |dk    rG||                     ¦   «         z  }t          | |gd¬¦  «        } |                      d¦  «        } |	| _        nû|dk    rI||                     ¦   «         z  }|                      |¦  «        } |                      d¦  «        } || _        n¬|d
k    s|du r„||                     ¦   «         z  }||                     ¦   «         z  }d|j        |<   t          | |gd¬¦  «        } |                      |¦  «        } |                      d¦  «        } || _        |	| _        nt	          d¦  «        ‚t	          d¦  «        ‚| S )Nr4   r5   )r   r$   zNot a valid normalize argumentFc                ó\   — | |                       d¬¦  «                              d¬¦  «        z  S ©Nr$   rW   r   ©Úsum©r}   s    rF   ú<lambda>z_normalize.<locals>.<lambda>ü  s(   € ˜Q §¢¨A ¡¤×!2Ò!2¸Ð!2Ñ!:Ô!:Ñ:€ rG   c                ó0   — | |                       ¦   «         z  S rK   rù   rû   s    rF   rü   z_normalize.<locals>.<lambda>ý  s   €   Q§U¢U¡W¤W¡€ rG   c                óX   — |                       |                      d¬¦  «        d¬¦  «        S rø   )Údivrú   rû   s    rF   rü   z_normalize.<locals>.<lambda>þ  s"   € ˜qŸušu Q§U¢U° U¡]¤]¸˜uÑ;Ô;€ rG   )rR   r5   r4   rR   Tr   éÿÿÿÿz not in pivoted DataFrame)rÞ   r*   r$   rW   zNot a valid margins argument)r<   r+   r‹   rZ   r_   rp   r4   r5   Úilocrƒ   ré   rú   r   r�   Úloc)rE   rÞ   r*   r-   Ú	axis_subsÚerrÚnormalizersÚfÚtable_indexÚtable_columnsÚlast_ind_or_colÚcolumn_marginÚindex_margins                rF   ré   ré   ï  s!  € õ �i¥$­ Ñ-Ô-ð HØ IÐ.Ð.ˆ	ð	HØ! )Ô,ˆIˆIøÝð 	Hð 	Hð 	HÝÐ=Ñ>Ô>ÀCÐGøøøøð	Høøøð �%ÐÐð ;Ð:Ø,Ð,Ø;Ð;ð3
ð 3
ˆð (¨Ô.ˆ�DÑð	HØ˜IÔ&ˆAˆAøÝð 	Hð 	Hð 	HÝÐ=Ñ>Ô>ÀCÐGøøøøð	Høøøð ��%‘”ˆØ—’˜Q‘”ˆ‰à	�Dˆ‰à”kˆØœˆØœ* R¨¨¨ UÔ+Ô0ˆð  Ð/°LÀOÒ4SÑTð 	IÝ ÐGÐGÐGÑHÔHÐHØœ
 3 B 3¨ 7Ô+ˆØ”z " c r c 'Ô*ˆð ”
˜3˜B˜3   ˜8Ô$ˆõ ˜5¨I¸uÐEÑEÔEˆð ˜	Ò!Ð!Ø)¨M×,=Ò,=Ñ,?Ô,?Ñ?ˆMÝ˜E =Ð1¸Ð:Ñ:Ô:ˆEØ—L’L ‘O”OˆEØ)ˆEŒMˆMà˜'Ò!Ð!Ø'¨,×*:Ò*:Ñ*<Ô*<Ñ<ˆLØ—M’M ,Ñ/Ô/ˆEØ—L’L ‘O”OˆEØ%ˆEŒKˆKà˜%ÒÐ 9°Ð#4Ð#4Ø)¨M×,=Ò,=Ñ,?Ô,?Ñ?ˆMØ'¨,×*:Ò*:Ñ*<Ô*<Ñ<ˆLØ-.ˆLÔ˜\Ñ*Ý˜E =Ð1¸Ð:Ñ:Ô:ˆEØ—M’M ,Ñ/Ô/ˆEà—L’L ‘O”OˆEØ%ˆEŒKØ)ˆEŒMˆMõ Ð=Ñ>Ô>Ð>õ Ð7Ñ8Ô8Ð8à€Ls,   £, ¬
A¶AÁAÁ'A0 Á0
BÁ:B
Â
Brã   rä   r‹   c                ó‚  — |€ig }t          | ¦  «        D ]V\  }}t          |t          ¦  «        r"|j        �|                     |j        ¦  «         Œ<|                     |› d|› �¦  «         ŒWnSt          |¦  «        t          | ¦  «        k    rt          d¦  «        ‚t          |t          ¦  «        st          |¦  «        }|S )NÚ_z*arrays and names must have the same length)Ú	enumerater<   r   rƒ   r?   r]   ÚAssertionErrorr=   )ÚarrsrV   rä   r{   Úarrs        rF   ræ   ræ   ?  sÃ   € Ø€}ØˆÝ ‘o”oð 	.ð 	.‰FˆAˆsÝ˜#�yÑ)Ô)ð .¨c¬hÐ.BØ—’˜SœXÑ&Ô&Ð&Ð&à—’ ˜_˜_¨˜_˜_Ñ-Ô-Ð-Ð-ð		.õ ˆu‰:Œ:�˜T™œÒ"Ð"Ý Ð!MÑNÔNÐNÝ˜%¥Ñ&Ô&ð 	 Ý˜‘K”KˆEà€LrG   rë   ú	list[str]rì   ú;tuple[dict[str, str], list[str], dict[str, str], list[str]]c                ó€  ‡— d„ }t          | ¦  «                             t          |¦  «        ¦  «        } || ¦  «         ||¦  «        z  |z  Šˆfd„t          | ¦  «        D ¦   «         }ˆfd„t          | ¦  «        D ¦   «         }ˆfd„t          |¦  «        D ¦   «         }ˆfd„t          |¦  «        D ¦   «         }||||fS )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                ó<   ‡— t          ¦   «         Šˆfd„| D ¦   «         S )Nc                ó   •— h | ]}|‰v¯|’Œ	S r°   r°   )rM   rƒ   Úseens     €rF   ú	<setcomp>z>_build_names_mapper.<locals>.get_duplicates.<locals>.<setcomp>p  s#   ø€ Ð;Ð;Ð;˜¨$°dÐ*:Ð*:�Ð*:Ð*:Ð*:rG   )r•   )rV   r  s    @rF   Úget_duplicatesz+_build_names_mapper.<locals>.get_duplicatesn  s&   ø€ Ý‘E”EˆØ;Ð;Ð;Ð; Ð;Ñ;Ô;Ð;rG   c                ó*   •— i | ]\  }}|‰v ¯	d |› �|“ŒS ©Úrow_r°   ©rM   r{   rƒ   Ú	dup_namess      €rF   ú
<dictcomp>z'_build_names_mapper.<locals>.<dictcomp>u  ó6   ø€ ð ð ð Ù$˜Q ¸tÀyÐ?PÐ?Pˆ
ˆqˆ
ˆ
�DÐ?PÐ?PÐ?PrG   c                ó,   •— g | ]\  }}|‰v rd |› �n|‘ŒS r  r°   r  s      €rF   r±   z'_build_names_mapper.<locals>.<listcomp>x  ó>   ø€ ð ð ð Ù6=°a¸�d˜iÐ'Ð'ˆ
ˆqˆ
ˆ
ˆ
¨Tðð ð rG   c                ó*   •— i | ]\  }}|‰v ¯	d |› �|“ŒS ©Úcol_r°   r  s      €rF   r  z'_build_names_mapper.<locals>.<dictcomp>|  r   rG   c                ó,   •— g | ]\  }}|‰v rd |› �n|‘ŒS r$  r°   r  s      €rF   r±   z'_build_names_mapper.<locals>.<listcomp>  r"  rG   )r•   Úintersectionr  )	rë   rì   r  Úshared_namesrï   rð   rñ   rò   r  s	           @rF   rç   rç   P  s'  ø€ ð<<ð <ð <õ �x‘=”=×-Ò-­c°(©m¬mÑ<Ô<€LØ�˜xÑ(Ô(¨>¨>¸(Ñ+CÔ+CÑCÀlÑR€Iðð ð ð Ý(1°(Ñ(;Ô(;ðñ ô €Oðð ð ð ÝAJÈ8ÑATÔATðñ ô €Oðð ð ð Ý(1°(Ñ(;Ô(;ðñ ô €Oðð ð ð ÝAJÈ8ÑATÔATðñ ô €Oð ˜O¨_¸oÐMÐMrG   )r(   r"   r)   r   r*   r+   r,   r+   r-   r   r.   r/   r0   r+   r1   r"   )r(   r"   r)   rH   r*   r+   r,   r+   r-   r   r.   r/   r0   r+   r1   r"   )r'   N)rE   r…   r(   r"   r.   r+   r-   r   )r'   )r(   r"   r-   r   )r(   r"   r.   r+   r-   r   )rE   r"   r(   r"   r.   r+   r-   r   )
r(   r"   r5   r    r4   rÈ   r3   rÈ   r1   r"   )NNNNFr'   TF)
r*   r+   r-   r   r,   r+   rÞ   rß   r1   r"   )rE   r"   r*   r+   r-   r   r1   r"   )rã   )rä   r‹   )rë   r  rì   r  r1   r  )EÚ
__future__r   Úcollections.abcr   r   Útypingr   r   r   r	   re   Únumpyrs   Ú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>   rv   r�   r‘   r“   r;   rÇ   rõ   ré   ræ   rç   r°   rG   rF   ú<module>r>     sŒ  ðØ "Ð "Ð "Ð "Ð "Ð "ðð ð ð ð ð ð ð ðð ð ð ð ð ð ð ð ð ð ð ð €€€à Ð Ð Ð à Ð Ð Ð Ð Ð ðð ð ð ð ð ð ð ð 5Ð 4Ð 4Ð 4Ð 4Ð 4à ;Ð ;Ð ;Ð ;Ð ;Ð ;ðð ð ð ð ð ð ð ð ð ð
 5Ð 4Ð 4Ð 4Ð 4Ð 4ðð ð ð ð ð ð ð ð
 !Ð  Ð  Ð  Ð  Ð  Ð  Ð  Ð  Ø *Ð *Ð *Ð *Ð *Ð *Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'ðð ð ð ð ð ð ð ð ð ð
 .Ð -Ð -Ð -Ð -Ð -Ø 6Ð 6Ð 6Ð 6Ð 6Ð 6Ø %Ð %Ð %Ð %Ð %Ð %àð !ðð ð ð ð ð ð ð ð ð ð ð ð !Ð Ð Ð Ð Ð ð
 €Ð"Ñ#Ô#Ø	€ˆ,�}Ô
%¨qÐ1Ñ1Ô1ð Ø
ØØ!ØØØØ"Ø%(¤^Øð4:ð 4:ð 4:ð 4:ñ 2Ô1ñ $Ô#ð4:ðnGð Gð Gð Gðd #ØðRð Rð Rð Rð Rðl @Eð3ð 3ð 3ð 3ð 3ð> #ðQ+ð Q+ð Q+ð Q+ð Q+ðv #ð*+ð *+ð *+ð *+ð *+ðZð ð ð €Ð"Ñ#Ô#Ø	€ˆ,�wÔ
¨Ð+Ñ+Ô+ð
 ),¬Ø),¬ðBð Bð Bð Bð Bñ ,Ô+ñ $Ô#ðBðP ØØØØØ"ØØAFðjð jð jð jð jð\ JOðMð Mð Mð Mð Mð`ð ð ð ð ð"3Nð 3Nð 3Nð 3Nð 3Nð 3NrG   