ó
    ¬œ‘h÷  ã                  óÀ   • S SK Jr  S SKJr  S SKrS SKJr  S SKJ	r	J
r
  S SKJr  \(       a  S SKJr  S SKJr  S S	KJrJr   S     SS
 jjr        SS jrSS jrg)é    )Úannotations)ÚTYPE_CHECKINGN)Úremove_na_arraylike)Ú
MultiIndexÚconcat)Úunpack_single_str_list)ÚHashable)Ú
IndexLabel)Ú	DataFrameÚSeriesc           	     ó  • US:X  a  SnOSn[        U R                  [        5      (       d   eU R                  R                  U    Vs0 s H2  nX0R                  SS2U R                  R                  U5      U:H  4   _M4     sn$ s  snf )aú  
Create data for iteration given `by` is assigned or not, and it is only
used in both hist and boxplot.

If `by` is assigned, return a dictionary of DataFrames in which the key of
dictionary is the values in groups.
If `by` is not assigned, return input as is, and this preserves current
status of iter_data.

Parameters
----------
data : reformatted grouped data from `_compute_plot_data` method.
kind : str, plot kind. This function is only used for `hist` and `box` plots.

Returns
-------
iter_data : DataFrame or Dictionary of DataFrames

Examples
--------
If `by` is assigned:

>>> import numpy as np
>>> tuples = [('h1', 'a'), ('h1', 'b'), ('h2', 'a'), ('h2', 'b')]
>>> mi = pd.MultiIndex.from_tuples(tuples)
>>> value = [[1, 3, np.nan, np.nan],
...          [3, 4, np.nan, np.nan], [np.nan, np.nan, 5, 6]]
>>> data = pd.DataFrame(value, columns=mi)
>>> create_iter_data_given_by(data)
{'h1':     h1
     a    b
0  1.0  3.0
1  3.0  4.0
2  NaN  NaN, 'h2':     h2
     a    b
0  NaN  NaN
1  NaN  NaN
2  5.0  6.0}
Úhistr   é   N)Ú
isinstanceÚcolumnsr   ÚlevelsÚlocÚget_level_values)ÚdataÚkindÚlevelÚcols       ÚgC:\Users\psant\Downloads\Noiseback\school\venv\Lib\site-packages\pandas/plotting/_matplotlib/groupby.pyÚcreate_iter_data_given_byr      sŠ   € ð^ ˆvƒ~Ø‰àˆô �d—l‘l¤J×/Ñ/Ð/Ð/ð —<‘<×&Ñ& uÒ-óâ-ˆCð 	�X‰X’a˜Ÿ™×6Ñ6°uÓ=ÀÑDÐDÑEÒEÙ-ñð ùò s   Á9Bc                óÔ   • [        U5      nU R                  U5      n/ nU H9  u  pg[        R                  " U/U/5      nXr   n	X‰l        UR                  U	5        M;     [        USS9n U $ )a  
Internal function to group data, and reassign multiindex column names onto the
result in order to let grouped data be used in _compute_plot_data method.

Parameters
----------
data : Original DataFrame to plot
by : grouped `by` parameter selected by users
cols : columns of data set (excluding columns used in `by`)

Returns
-------
Output is the reconstructed DataFrame with MultiIndex columns. The first level
of MI is unique values of groups, and second level of MI is the columns
selected by users.

Examples
--------
>>> d = {'h': ['h1', 'h1', 'h2'], 'a': [1, 3, 5], 'b': [3, 4, 6]}
>>> df = pd.DataFrame(d)
>>> reconstruct_data_with_by(df, by='h', cols=['a', 'b'])
   h1      h2
   a     b     a     b
0  1.0   3.0   NaN   NaN
1  3.0   4.0   NaN   NaN
2  NaN   NaN   5.0   6.0
r   )Úaxis)r   Úgroupbyr   Úfrom_productr   Úappendr   )
r   ÚbyÚcolsÚby_modifiedÚgroupedÚ	data_listÚkeyÚgroupr   Ú	sub_groups
             r   Úreconstruct_data_with_byr(   X   ss   € ô< )¨Ó,€KØ�l‰l˜;Ó'€Gà€IÛ‰
ˆô ×)Ò)¨C¨5°$¨-Ó8ˆØ‘Kˆ	Ø#ÔØ×Ñ˜Ö#ñ ô �) !Ñ$€DØ€Kó    c                óâ   • Ub]  [        U R                  5      S:”  aD  [        R                  " U R                   Vs/ s H  n[        U5      PM     sn5      R                  $ [        U 5      $ s  snf )zÔInternal function to reformat y given `by` is applied or not for hist plot.

If by is None, input y is 1-d with NaN removed; and if by is not None, groupby
will take place and input y is multi-dimensional array.
r   )ÚlenÚshapeÚnpÚarrayÚTr   )Úyr    r   s      r   Úreformat_hist_y_given_byr1   †   sW   € ð 
�~œ#˜aŸg™g›,¨Ó*Ü�xŠx¸Q¿SºSÓAºS°cÔ,¨SÖ1¹SÑAÓB×DÑDÐDÜ˜qÓ!Ð!ùò Bs   »A,)r   )r   r   r   ÚstrÚreturnz"dict[Hashable, DataFrame | Series])r   r   r    r
   r!   r
   r3   r   )r0   ú
np.ndarrayr    zIndexLabel | Noner3   r4   )Ú
__future__r   Útypingr   Únumpyr-   Úpandas.core.dtypes.missingr   Úpandasr   r   Ú pandas.plotting._matplotlib.miscr   Úcollections.abcr	   Úpandas._typingr
   r   r   r   r(   r1   © r)   r   Ú<module>r>      sx   ðÝ "å  ã å :÷õ
 DæÝ(å)÷ð "(ð:Ø
ð:Øð:à'õ:ðz+Ø
ð+Ø#ð+Ø+5ð+àô+õ\"r)   