hyb
2025-11-10 e0a856b5072c5a09f3f6de6da85abf90e00ee704
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
Ë
oñúh£ãór—ddlmZddlmZddlZddlZerddlm    Z    Gd„d«Z
d    d„Z e dk(re «yy)
é)Ú annotations)Ú TYPE_CHECKINGN)ÚIterablecó^—eZdZdZ            d
                            d d„Zd d„Zd d„Zddd„Zd„Zd„Z    ddd    „Z
y)Ú TablePlotterzg
    Layout some DataFrames in vertical/horizontal layout for explanation.
    Used in merging.rst
    có.—||_||_||_y©N)Ú
cell_widthÚ cell_heightÚ    font_size)Úselfr
r r s    úHH:\Change_password\venv_build\Lib\site-packages\pandas/util/_doctools.pyÚ__init__zTablePlotter.__init__s€ð %ˆŒØ&ˆÔØ"ˆócó„—|j\}}||jjz||jjzfS)zA
        Calculate table shape considering index levels.
        )ÚshapeÚcolumnsÚnlevelsÚindex)r ÚdfÚrowÚcols    rÚ_shapezTablePlotter._shapes:€ð—8‘8‰ˆˆSؐR—Z‘Z×'Ñ'Ñ'¨¨r¯x©x×/?Ñ/?Ñ)?Ð?Ð?rcó⇗|r]ttˆfd„|D««‰j|«d«}tˆfd„|D««‰j|«dz}||fSt|Dcgc]}‰j|«d‘Œc}‰j|«dgz«}t|Dcgc]}‰j|«d‘Œc}‰j|«dgz«}||fScc}wcc}w)zQ
        Calculate appropriate figure size based on left and right data.
        c3óF•K—|]}‰j|«d–—Œy­w©rN©r©Ú.0rr s  €rú    <genexpr>z*TablePlotter._get_cells.<locals>.<genexpr>*søèø€Ò?°B˜TŸ[™[¨›_¨QÕ/Ñ?ùóƒ!rc3óF•K—|]}‰j|«d–—Œy­w©éNrrs  €rr z*TablePlotter._get_cells.<locals>.<genexpr>+søèø€Ò;°˜Ÿ™ R›¨Õ+Ñ;ùr!r$)ÚmaxÚsumr)r ÚleftÚrightÚverticalÚvcellsÚhcellsrs`      rÚ
_get_cellszTablePlotter._get_cells$säø€ñ äœÓ?¸$Ô?Ó?ÀÇÁÈUÓASÐTUÑAVÓWˆFÜÓ;°dÔ;Ó;¸d¿k¹kÈ%Ó>PÐQRÑ>SÑSˆFðvˆ~Ðô°tÖ<°˜$Ÿ+™+ b›/¨!Ó,Ò<ÀÇ Á ÈEÓ@RÐSTÑ@UÐ?VÑVÓWˆFܰtÖ<°˜$Ÿ+™+ b›/¨!Ó,Ò<ÀÇ Á ÈEÓ@RÐSTÑ@UÐ?VÑVÓWˆFؐvˆ~Ðùò=ùÚ<s Á*C'Â+C,c    ó‡—ddlm}ddlm}t    |t
«s|g}|Dcgc]}‰j |«‘Œ}}‰j |«}‰j|||«\}}    |r‰j|z‰j|    zf}
n‰j|z‰j|    zf}
|j|
¬«} |rÜ|jt|«|«} tˆfd„|D««} tˆfd„|D««}tt||««D]8\}\}}| j!| |d| …f«}‰j#|||d|z ¬«Œ:|j%| dd…| d…f«}‰j#||d    d
|    z ¬«| j'd d d d ¬«| Stˆfd„||gzD««}dt)j|«z }|jd|«} d}t||«D]Q\}}‰j+|«}| j!| d|||dz…f«}‰j#||||¬«||dz }ŒS|j%| d|d…f«}‰j#||d    |¬«| j'dd d d ¬«| Scc}w)a
        Plot left / right DataFrames in specified layout.
 
        Parameters
        ----------
        left : list of DataFrames before operation is applied
        right : DataFrame of operation result
        labels : list of str to be drawn as titles of left DataFrames
        vertical : bool, default True
            If True, use vertical layout. If False, use horizontal layout.
        r)ÚgridspecN)Úfigsizec3óF•K—|]}‰j|«d–—Œy­wr#rrs  €rr z$TablePlotter.plot.<locals>.<genexpr>Qóøèø€ÒB°r § ¡ ¨B£°Õ 2ÑBùr!c3óF•K—|]}‰j|«d–—Œy­wrrrs  €rr z$TablePlotter.plot.<locals>.<genexpr>Rr1r!çð?)ÚtitleÚheightÚResultgÍÌÌÌÌÌð?gÍÌÌÌÌÌì?gš™™™™™©?gffffffî?)ÚtopÚbottomr'r(c3óF•K—|]}‰j|«d–—Œy­wrrrs  €rr z$TablePlotter.plot.<locals>.<genexpr>[søèø€ÒG°"˜4Ÿ;™; r›?¨1Õ-ÑGùr!r$g333333ë?)Ú
matplotlibr.Úmatplotlib.pyplotÚpyplotÚ
isinstanceÚlistÚ_convr,r
r ÚfigureÚGridSpecÚlenr%Ú    enumerateÚzipÚ add_subplotÚ _make_tableÚsubplotÚsubplots_adjustÚnpr)r r'r(Úlabelsr)r.Úpltrr+r*r/ÚfigÚgsÚ max_left_colsÚ max_left_rowsÚiÚ_leftÚ_labelÚaxÚmax_rowsr5Úsps`                     rÚplotzTablePlotter.plot1sœø€õ    (Ý'ä˜$¤Ô%ؐ6ˆDØ)-Ö. 2—
‘
˜2•Ð.ˆÐ.Ø—
‘
˜5Ó!ˆàŸ™¨¨u°hÓ?‰ˆá Ø—o‘o¨Ñ.°×0@Ñ0@À6Ñ0IÐI‰Gð—o‘o¨Ñ.°×0@Ñ0@À6Ñ0IÐIˆG؏j‰j ˆjÓ)ˆá Ø×"Ñ"¤3 t£9¨fÓ5ˆBäÓB¸TÔBÓBˆMÜÓB¸TÔBÓBˆMÜ&/´°D¸&Ó0AÓ&Bò VÑ"‘?E˜6Ø—_‘_ R¨¨1¨]¨?Ð(:Ñ%;Ó<Ø× Ñ   U°&ÀÀ}ÑATРÕUð V𗑘R¢ =¡>Р1Ñ2Ó3ˆBØ × Ñ ˜R ¨h¸tÀf¹}Ð Ô MØ × Ñ  C°¸4ÀtÐ Ô Lð"ˆ
ôÓG¸À¸w¹ÔGÓGˆHØœ2Ÿ6™6 (Ó+Ñ+ˆFØ×"Ñ" 1 fÓ-ˆBàˆAÜ! $¨Ó/ò ‘
FØ—[‘[ “_Ø—_‘_ R¨¨1¨q°2°a±5©y¨=Ð(8Ñ%9Ó:Ø× Ñ   R¨v¸fРÔEؐR˜‘U‘
‘ð     ð —‘˜R  1¡2 ™YÓ'ˆBØ × Ñ ˜R ¨h¸vÐ Ô FØ × Ñ  D°¸DÈÐ Ô Màˆ
ùòQ/s¥I=cóº—t|tj«r/|j€|j    d¬«}n|j    «}|j d«}|S)zF
        Convert each input to appropriate for table outplot.
        Ú)ÚnameÚNaN)r=ÚpdÚSeriesrYÚto_frameÚfillna)r Údatas  rr?zTablePlotter._convlsJ€ô dœBŸI™IÔ &؏y‰yРؗ}‘}¨"}Ó-‘à—}‘}“Ø{‰{˜5Ó!ˆØˆ rcóŒ—|j«}|jj}|dk(r|jdd|j«n?t    |«D]1}|j|d|›|jj |««Œ3|j j}|dkDr›|j j d«}t    d|«Dcgc]'}|j j |«j‘Œ)}}tj|«}|j |_tj||g«}||_|Scc}w)Nr$rÚIndex) ÚcopyrrÚinsertÚrangeÚ_get_level_valuesrÚ_valuesr[Ú    DataFrameÚconcat)r r_Ú idx_nlevelsrPÚ col_nlevelsrÚvaluesÚcol_dfs        rÚ _insert_indexzTablePlotter._insert_indexxs€ày‰y‹{ˆØ—j‘j×(Ñ(ˆ Ø ˜!Ò Ø K‰K˜˜7 D§J¡JÕ /ä˜;Ó'ò MØ— ‘ ˜A  q c˜{¨D¯J©J×,HÑ,HÈÓ,KÕLð Mð—l‘l×*Ñ*ˆ Ø ˜Š?Ø—,‘,×0Ñ0°Ó3ˆCäCHÈÈKÓCXöØ>?— ‘ ×.Ñ.¨qÓ1×9Ó9ðˆFðô—\‘\ &Ó)ˆFØ!Ÿ>™>ˆDŒLÜ—9‘9˜f d˜^Ó,ˆD؈DŒL؈ ùòsà ,ENcó¬—|€|jd«yddlm}|jj}|j
j}|j |«}|j||d¬«}|j|j«|€dt|«dzz }|j«}    |    dj«D]g\\}
} } | d    k(r| jd«n7|
|kr| |kr| jd«n|
|ks| |kr| jd
«| j|«Œi|j||j¬ «|j!d «y) NFr)Úplottingé    )Úlocr3r$Úcelldéÿÿÿÿz#AAAAAA)ÚsizeÚoff)Ú set_visibleÚpandasrorrrrmÚtableÚ set_fontsizer rBÚ
propertiesÚitemsÚ set_facecolorÚ
set_heightÚ    set_titleÚaxis) r rSrr4r5rorirjÚtbÚpropsÚrÚcÚcells              rrFzTablePlotter._make_tableŽs)€Ø ˆ:Ø N‰N˜5Ô !Ø å#à—h‘h×&Ñ&ˆ Ø—j‘j×(Ñ(ˆ à × Ñ  Ó #ˆØ ^‰^˜B ¨ˆ^Ó *ˆØ
‰˜Ÿ™Ô'à ˆ>ØœC ›G a™KÑ(ˆFà— ‘ “ˆØ! '™N×0Ñ0Ó2ò    $‰L‰FˆQDؐBŠwØ× Ñ  Õ'ؐ[’ Q¨¢_Ø× Ñ  Õ'ؐ[’ A¨ ¢OØ×"Ñ" 9Ô-Ø O‰O˜FÕ #ð    $ð      ‰ U §¡ˆ Ô0Ø
‰r)g®Gáz®×?gÐ?g@)r
Úfloatr r…r r…ÚreturnÚNone)rz pd.DataFramer†útuple[int, int])r†rˆ)©T)rJz Iterable[str]r)Úboolr    )r4Ústrr5z float | Noner†r‡) Ú__name__Ú
__module__Ú __qualname__Ú__doc__rrr,rVr?rmrFr‰rrrr s]„ñð!Ø!Øð    #àð#ðð#ðð    #ð
 
ó #ó@ó ô9òv
òõ,rrcóæ—ddlm}t«}tjgd¢gd¢gd¢dœ«}tjddgdd    gd
œ«}|j ||gtj ||g«d d gd ¬«|j«tjddgdd    gdœ«}|j ||gtj ||gd¬«d d gd¬«|j«tjjgd¢«}tjjddg«}tjgd¢gd¢dœ|¬«}||_
|j ||dg¬«|j«y)Nr)é
é é )ééé)ééé )ÚAÚBÚCr‘r“r—r™)ršrœÚdf1Údf2T)rJr))ÚXÚZr$)rF)©r$rš©r$r›)r$rœ)érš)r£r›)r£rœr¡r¢)r$r£éééé)r¦r§éérpr‘)Úv1Úv2)rÚdf3)rJ) r;r<rr[rgrVrhÚshowÚ
MultiIndexÚ from_tuplesr)rKÚprržr¬ÚidxÚcolumns       rÚmainr³­s4€Ý#ä‹€Aä
,‰,š\² Â<ÑPÓ
Q€CÜ
,‰,˜b "˜X¨R°¨HÑ5Ó
6€Cà‡FFˆCˆ:”r—y‘y # s Ó,°e¸U°^Èd€FÔS؇HH„Jä
,‰,˜b "˜X¨R°¨HÑ5Ó
6€Cà‡FFØ     ˆcˆ
”B—I‘I˜s C˜j¨qÔ1¸5À%¸.ÐSXð ôð‡HH„Jä
-‰-×
#ÚDó €Cô]‰]× &Ñ &¨°(Ð';Ó <€FÜ
,‰,Ò0Ò8KÑLÐTWÔ
X€CØ€C„K؇FFˆ3˜U˜G€FÔ$؇HH…JrÚ__main__)r†r‡) Ú
__future__rÚtypingrÚnumpyrIrwr[Úcollections.abcrrr³rŒr‰rrú<module>r¹s=ðÝ"å ããáÝ(÷]ñ]ó@ð8 ˆzÒÙ…Fðr