Ë
    £�Dj1W  ã                   ó¸  — d dl mZmZmZ d dlmZ d dlmZ d dlm	Z	 d dl
Zd dlZerd dlmZ nd„ Zd dlmZ d d	lmZ d d
lmZ d dlmZ d dlmZmZ d dlmZmZmZmZ dZ  ejB                  e «      dz  Z"d„ Z#d9d„Z$d9d„Z%d9d„Z&d9d„Z'd9d„Z(d9d„Z)e$ejT                  ejV                  ejX                  ejZ                  e%ej\                  e)e&e(e'dœZ/d„ Z0d„ Z1d9d„Z2dZ3dZ4e4D � cg c]	  } | e3vsŒ| ‘Œ c} Z5e3 e6e5«      z   Z7 G d„ d«      Z8 ee8jr                  «      Z:e:jw                  d edd d!g«      «       e:jw                  d"g «       e:jw                  d#d$gd%gfd&gd'gfg«        e e<e:«      «      	 d:d(d(d)d*e d+d,œd-eejz                  ej|                  ej~                  f   d.e	e<   d/e@d0e@d1eAd2e@d3e	eeBeAf      d4e@d5ej~                  fd6„«       ZC G d7„ d8«      ZDyc c} w );é    )ÚPD_LT_2ÚAppenderÚis_numeric_dtype)ÚSP_LT_19)ÚUnion)ÚSequenceN)Úis_categorical_dtypec                 ó6   — t        | t        j                  «      S ©N)Ú
isinstanceÚpdÚCategoricalDtype©Údtypes    úfC:\Crop_Prediction\Backend\crop-ai-system\venv\Lib\site-packages\statsmodels\stats\descriptivestats.pyr	   r	      s   € Ü˜%¤×!4Ñ!4Ó5Ð5ó    )Ústats)ÚSimpleTable)Újarque_bera)Úcache_readonly)Ú	DocstringÚ	Parameter)Ú
array_likeÚ	bool_likeÚ
float_likeÚint_like)	é   é   é
   é   é2   éK   éZ   é_   éc   g      Y@c                 óD   — | j                  «       | j                  «       z
  S r   )ÚmaxÚmin)Údfs    r   Úpd_ptpr*   "   s   € Ø�6‰6‹8�b—f‘f“hÑÐr   c                 óR   — dt        j                  | «      z
  j                  |¬«      S )Nr   ©Úaxis)ÚnpÚisnanÚsum)Úxr-   s     r   Únancountr2   &   s"   € Ø”—‘˜“‰O× Ñ  dÐ Ó+Ð+r   c                 ó`   — t        j                  | |¬«      t        j                  | |¬«      z
  S ©Nr,   )r.   ÚnanmaxÚnanmin©Úarrr-   s     r   Únanptpr9   *   s#   € Ü�9‰9�S˜tÔ$¤r§y¡y°¸4Ô'@Ñ@Ð@r   c                 ó6   — t        j                  | dz  |¬«      S )Né   r,   )r.   Únansumr7   s     r   Únanussr=   .   s   € Ü�9‰9�S˜A‘X DÔ)Ð)r   c                 ó:   — t        j                  | t        |¬«      S r4   )r.   ÚnanpercentileÚPERCENTILESr7   s     r   r?   r?   2   s   € Ü×Ñ˜C¤°4Ô8Ð8r   c                 ó2   — t        j                  | |d¬«      S ©NÚomit)r-   Ú
nan_policy)r   Úkurtosisr7   s     r   ÚnankurtosisrF   6   s   € Ü�>‰>˜# D°VÔ<Ð<r   c                 ó2   — t        j                  | |d¬«      S rB   )r   Úskewr7   s     r   ÚnanskewnessrI   :   s   € Ü�:‰:�c °Ô8Ð8r   )ÚobsÚmeanÚstdr'   r(   ÚptpÚvarrH   ÚussrE   Úpercentilesc                 ór   — 	 t        j                  | «      }|S # t        $ r t        j                  }Y |S w xY w)zi
    wrapper for scipy.stats.kurtosis that returns nan instead of raising Error

    missing options
    )r   rE   Ú
ValueErrorr.   Únan©ÚaÚress     r   Ú	_kurtosisrW   M   s;   € ðÜ�n‰n˜QÓˆð €Jøô ò Ü�f‰f‰Ø€Jðúó   ‚ ™6µ6c                 ór   — 	 t        j                  | «      }|S # t        $ r t        j                  }Y |S w xY w)ze
    wrapper for scipy.stats.skew that returns nan instead of raising Error

    missing options
    )r   rH   rR   r.   rS   rT   s     r   Ú_skewrZ   Z   s:   € ðÜ�j‰j˜‹mˆð €Jøô ò Ü�f‰f‰Ø€JðúrX   c                 ón  — t        j                  | «      } t        j                  | |kD  «      }t        j                  | |k  «      }||z
  dz  }	 t        j                  t        ||«      ||z   d«      j                  }||fS # t        $ r* t        j                  t        ||«      ||z   d«      }Y ||fS w xY w)a8  
    Signs test

    Parameters
    ----------
    samp : array_like
        1d array. The sample for which you want to perform the sign test.
    mu0 : float
        See Notes for the definition of the sign test. mu0 is 0 by
        default, but it is common to set it to the median.

    Returns
    -------
    M
    p-value

    Notes
    -----
    The signs test returns

    M = (N(+) - N(-))/2

    where N(+) is the number of values above `mu0`, N(-) is the number of
    values below.  Values equal to `mu0` are discarded.

    The p-value for M is calculated using the binomial distribution
    and can be interpreted the same as for a t-test. The test-statistic
    is distributed Binom(min(N(+), N(-)), n_trials, .5) where n_trials
    equals N(+) + N(-).

    See Also
    --------
    scipy.stats.wilcoxon
    g       @ç      à?)	r.   Úasarrayr0   r   Ú	binomtestr(   ÚpvalueÚAttributeErrorÚ
binom_test)ÚsampÚmu0ÚposÚnegÚMÚps         r   Ú	sign_testrh   g   s¯   € ôF �:‰:�dÓ€DÜ
�&‰&�˜‘Ó
€CÜ
�&‰&�˜‘Ó
€CØ	ˆs‰�cÑ€Að<Ü�O‰OœC  S›M¨3°©9°cÓ:×AÑAˆð ˆaˆ4€Køô ò <ä×ÑœS  c›]¨C°#©I°sÓ;‰Øˆaˆ4€Kð<ús   Á.B Â-B4Â3B4)ÚnobsÚmissingrK   Ústd_errÚcirL   ÚiqrÚ
iqr_normalÚmadÚ
mad_normalÚcoef_varÚranger'   r(   rH   rE   r   ÚmodeÚmedianrP   )ri   rj   ÚdistinctÚtopÚfreqc                   óŒ  — e Zd ZdZg d¢ZeZeZe	Z
	 dddddeddœd	eej                  ej                   ej"                  f   d
ee   dededededeeeef      defd„Zdej"                  dej"                  fd„Zedej"                  fd„«       Zedej"                  fd„«       Zedej"                  fd„«       Zdefd„Zdefd„Zy)ÚDescriptiona  
    Extended descriptive statistics for data

    Parameters
    ----------
    data : array_like
        Data to describe. Must be convertible to a pandas DataFrame.
    stats : Sequence[str], optional
        Statistics to include. If not provided the full set of statistics is
        computed. This list may evolve across versions to reflect best
        practices. Supported options are:
        "nobs", "missing", "mean", "std_err", "ci", "ci", "std", "iqr",
        "iqr_normal", "mad", "mad_normal", "coef_var", "range", "max",
        "min", "skew", "kurtosis", "jarque_bera", "mode", "freq",
        "median", "percentiles", "distinct", "top", and "freq". See Notes for
        details.
    numeric : bool, default True
        Whether to include numeric columns in the descriptive statistics.
    categorical : bool, default True
        Whether to include categorical columns in the descriptive statistics.
    alpha : float, default 0.05
        A number between 0 and 1 representing the size used to compute the
        confidence interval, which has coverage 1 - alpha.
    use_t : bool, default False
        Use the Student's t distribution to construct confidence intervals.
    percentiles : sequence[float]
        A distinct sequence of floating point values all between 0 and 100.
        The default percentiles are 1, 5, 10, 25, 50, 75, 90, 95, 99.
    ntop : int, default 5
        The number of top categorical labels to report. Default is

    Attributes
    ----------
    numeric_statistics
        The list of supported statistics for numeric data
    categorical_statistics
        The list of supported statistics for categorical data
    default_statistics
        The default list of statistics

    See Also
    --------
    pandas.DataFrame.describe
        Basic descriptive statistics
    describe
        A simplified version that returns a DataFrame

    Notes
    -----
    The selectable statistics include:

    * "nobs" - Number of observations
    * "missing" - Number of missing observations
    * "mean" - Mean
    * "std_err" - Standard Error of the mean assuming no correlation
    * "ci" - Confidence interval with coverage (1 - alpha) using the normal or
      t. This option creates two entries in any tables: lower_ci and upper_ci.
    * "std" - Standard Deviation
    * "iqr" - Interquartile range
    * "iqr_normal" - Interquartile range relative to a Normal
    * "mad" - Mean absolute deviation
    * "mad_normal" - Mean absolute deviation relative to a Normal
    * "coef_var" - Coefficient of variation
    * "range" - Range between the maximum and the minimum
    * "max" - The maximum
    * "min" - The minimum
    * "skew" - The skewness defined as the standardized 3rd central moment
    * "kurtosis" - The kurtosis defined as the standardized 4th central moment
    * "jarque_bera" - The Jarque-Bera test statistic for normality based on
      the skewness and kurtosis. This option creates two entries, jarque_bera
      and jarque_beta_pval.
    * "mode" - The mode of the data. This option creates two entries in all tables,
      mode and mode_freq which is the empirical frequency of the modal value.
    * "median" - The median of the data.
    * "percentiles" - The percentiles. Values included depend on the input value of
      ``percentiles``.
    * "distinct" - The number of distinct categories in a categorical.
    * "top" - The mode common categories. Labeled top_n for n in 1, 2, ..., ``ntop``.
    * "freq" - The frequency of the common categories. Labeled freq_n for n in 1,
      2, ..., ``ntop``.
    ©ri   rj   ru   NTçš™™™™™©?Fr   ©ÚnumericÚcategoricalÚalphaÚuse_trP   ÚntopÚdatar   r}   r~   r   r€   rP   r�   c          	      ó˜  — |}	t        |t        j                  t        j                  f«      st	        |dd¬«      }	|	j
                  dk(  rt        j                  |«      }t        |d«      }t        |d«      }g }
d}|r!|
j                  t        j                  «       d}|r"|
j                  d«       ||dk7  rd	ndz  }|dz  }|s|st        d
«      ‚t        j                  |«      j                  |
«      | _        | j                  j                  d   dk(  rt        d|› d�«      ‚| j                  j                  D �cg c]  }t        |«      ‘Œ c}| _        | j                  j                  D �cg c]  }t#        |«      ‘Œ c}| _        |�7|D �cg c]  }|t&        vsŒ|‘Œ }}|rt        dj)                  |«      › d�«      ‚|€t+        t&        «      n
t+        |«      | _        t/        |d«      | _        d| j,                  v | _        d| j,                  v | _        | j2                  r4| j0                  dcxk  r"t7        | j$                  «      k  rt        d«      ‚ ddgddgddgt9        d| j0                  dz   «      D �cg c]  }d|› �‘Œ	 c}t9        d| j0                  dz   «      D �cg c]  }d|› �‘Œ	 c}dœ}|D ]Y  }|| j,                  v sŒ| j,                  j;                  |«      }| j,                  d | ||   z   | j,                  |dz   d  z   | _        Œ[ t	        |ddd¬«      | _        t        j>                  | j<                  «      | _        t        j@                  | j<                  «      j                  d   | j<                  j                  d   k7  rt        d «      ‚t        jB                  | j<                  d!k\  «      s"t        jB                  | j<                  dk  «      rt        d"«      ‚tE        |d#«      | _#        d|cxk  rdk  st        d$«      ‚ t        d$«      ‚t        |d%«      | _$        y c c}w c c}w c c}w c c}w c c}w )&Nr‚   r;   )Úmaxdimr   r}   r~   Ú Úcategoryzand z4At least one of numeric and categorical must be Truer   z
Selecting z results in an empty DataFramez, z are not known statisticsr�   rv   rw   z"top must be a non-negative integerrs   Ú	mode_freqÚupper_ciÚlower_cir   Újarque_bera_pvalÚtop_Úfreq_)rs   rl   r   rv   rw   rP   Úd)r„   r   zpercentiles must be distinctéd   z.percentiles must be strictly between 0 and 100r   z&alpha must be strictly between 0 and 1r€   )%r   r   ÚSeriesÚ	DataFramer   Úndimr   Úappendr.   ÚnumberrR   Úselect_dtypesÚ_dataÚshapeÚdtypesr   Ú_is_numericr	   Ú_is_cat_likeÚDEFAULT_STATISTICSÚjoinÚlistÚ_statsr   Ú_ntopÚ_compute_topÚ_compute_freqr0   rr   ÚindexÚ_percentilesÚsortÚuniqueÚanyr   Ú_alphaÚ_use_t)Úselfr‚   r   r}   r~   r   r€   rP   r�   Údata_arrÚincludeÚ	col_typesÚdtÚstatÚundefÚiÚreplacementsÚkeyÚidxs                      r   Ú__init__zDescription.__init__  s  € ð ˆÜ˜$¤§¡¬B¯L©LÐ 9Ô:Ü! $¨°qÔ9ˆHØ�=‰=˜AÒÜ—9‘9˜T“?ˆDÜ˜G YÓ/ˆÜ ¨]Ó;ˆØˆØˆ	ÙØ�N‰Nœ2Ÿ9™9Ô%Ø!ˆIÙØ�N‰N˜:Ô&Ø 9°¢?™¸Ñ:ˆIØ˜Ñ&ˆIÙ™{ÜØFóð ô —\‘\ $Ó'×5Ñ5°gÓ>ˆŒ
Ø�:‰:×Ñ˜AÑ !Ò#äØ˜Y˜KÐ'EÐFóð ð <@¿:¹:×;LÑ;LÖM°RÔ,¨RÕ0ÒMˆÔà/3¯z©z×/@Ñ/@ö
Ø)+Ô  Õ$ò
ˆÔð ÐØ&+ÖN˜d¨tÔ;MÒ/M’TÐNˆEÐNÙÜ Ø—y‘y Ó'Ð(Ð(AÐBóð ð ).¨ŒDÔ#Ô$¼4À»;ð 	Œô ˜d FÓ+ˆŒ
Ø! T§[¡[Ð0ˆÔØ# t§{¡{Ð2ˆÔØ×Ò §¡¨qÔ!I´3°t×7HÑ7HÓ3IÒ!IÜÐAÓBÐBð "Jð
 ˜[Ð)Ø˜zÐ*Ø)Ð+=Ð>Ü(-¨a°·±¸a±Ó(@ÖA 1�d˜1˜#’JÒAÜ*/°°4·:±:À±>Ó*BÖC Q�u˜Q˜C’[ÒCñ
ˆð  ò 	ˆCØ�d—k‘kÒ!Ø—k‘k×'Ñ'¨Ó,�à—K‘K  Ð%Ø" 3Ñ'ñ(à—k‘k #¨¡' )Ð,ñ-ð •ð	ô 'Ø˜¨q¸ô
ˆÔô ŸG™G D×$5Ñ$5Ó6ˆÔÜ�9‰9�T×&Ñ&Ó'×-Ñ-¨aÑ0°D×4EÑ4E×4KÑ4KÈAÑ4NÒNÜÐ;Ó<Ð<Ü�6‰6�$×#Ñ# sÑ*Ô+¬r¯v©v°d×6GÑ6GÈ1Ñ6LÔ/MÜÐMÓNÐNÜ  ¨Ó0ˆŒØ�5Œ}˜1Š}ÜÐEÓFÐFð ÜÐEÓFÐFÜ  wÓ/ˆ�ùòc Nùò
ùò
 Oùò& BùÚCs$   Ä=P3Å/P8ÆP=ÆP=É>Q
Ê'Qr)   Úreturnc                 óx   — |j                   | j                  D �cg c]  }||j                  v sŒ|‘Œ c}   S c c}w r   )Úlocr�   r¡   )r¨   r)   Úss      r   Ú_reorderzDescription._reorderd  s-   € Ø�v‰v $§+¡+Ö?˜Q°°b·h±h²’qÒ?Ñ@Ð@ùÒ?s   š7®7c                 ó  — | j                   }| j                  }|j                  d   dk(  r|S |j                  d   dk(  r|S t        j                  ||gd¬«      }| j                  || j                  j                     «      S )zœ
        Descriptive statistics for both numeric and categorical data

        Returns
        -------
        DataFrame
            The statistics
        r   r   r,   )r}   r~   r–   r   Úconcatr¸   r•   Úcolumns)r¨   r}   r~   r)   s       r   ÚframezDescription.frameg  sz   € ð —,‘,ˆØ×&Ñ&ˆØ×Ñ˜QÑ 1Ò$ØˆNØ�]‰]˜1Ñ Ò"ØÐÜ�Y‰Y˜ Ð-°AÔ6ˆØ�}‰}˜R §
¡
× 2Ñ 2Ñ3Ó4Ð4r   c           	      óœ  ‡$— | j                   j                  dd…| j                  f   }|j                  }|j                  \  }}|j                  «       }|j                  «       }|j                  «       }||z
  j                  «       j                  «       }|j                  «       }	|	j                  |dkD  xx   |j                  |dkD     dz  z  cc<   | j                  r8t        j                  |dz
  «      j                  d| j                  dz  z
  «      }
n/t        j                  j                  d| j                  dz  z
  «      }
d„ }|j!                  |«      j"                  }|j$                  dkD  rØt'        |t(        j*                  «      rGt-        j.                  |d   t0        ¬«      }t-        j.                  |d   t,        j2                  ¬«      }nŽg }g }|j4                  D ]9  }|j                  |   }|j7                  |d   «       |j7                  |d   «       Œ; t-        j8                  |«      }t-        j8                  |«      }nt-        j:                  d«      x}}|dkD  }t-        j<                  |j                  d   t,        j>                  «      }||   |j                  |   z  ||<   |}	 dd	l m!} |j                  «       }|D ]_  } |||   jD                  «      sŒ||   jG                  «       jI                  «       sŒ;||   jK                  t,        j>                  «      ||<   Œa 	 |j                  d   dkD  r$|jO                  d
«      |jO                  d«      z
  }n|}d„ Š$|j!                  ˆ$fd„d¬«      j"                  }|j                  «       }t,        j>                  |j                  |dk(  <   ||z  }i dt)        jP                  t-        jR                  |t,        j2                  ¬«      |j                  d   z  |¬«      “d|j                  d   |z
  “d|“d|	“d||
|	z  z   “d||
|	z  z
  “d|“d|“d|“d|“dtU        |«      “d|jW                  «       “d|jY                  «       “d|d   “d|d    “d!|t-        jZ                  t        j                  j                  dd
g«      «      z  “d"|t-        j\                  dt,        j^                  z  «      z  “|d   |d   t)        jP                  ||¬«      t)        jP                  ||¬«      |ja                  «       d#œ¥}|jc                  «       D ��ci c]  \  }}|| jd                  v sŒ||“Œ }}}t)        j*                  tg        |ji                  «       «      |tg        |jk                  «       «      ¬$«      }d%| jd                  vr|S |j                  d   dkD  r2|jO                  | jl                  d&z  «      jo                  t0        «      }n(t)        j*                  | jl                  d&z  t0        ¬'«      }t-        jp                  t-        jr                  d&|j4                  z  «      d&|j4                  z  k(  «      r/|j4                  D �cg c]  }tu        d&|z  «      › d(�‘Œ c}|_        nÏd)}d&} |j4                  }!|rW| d*z  } t-        jr                  | |j4                  z  «      }t-        jp                  t-        jZ                  |«      dkD  «      rd+}|rŒWt-        jr                  | |!z  «      | d&z  z  }!d,tw        ty        | d&z  «      «      dz
  › d-�}"d.|"› d/�}#|!D �cg c]  }|#j{                  |«      ‘Œ c}|_        | jd                  |j4                  j}                  «       z   | _2        | j                  t)        j€                  ||gd¬0«      «      S # tL        $ r Y �Œ�w xY wc c}}w c c}w c c}w )1zž
        Descriptive statistics for numeric data

        Returns
        -------
        DataFrame
            The statistics of the numeric columns
        Nr   r\   r   g      ð?r;   c                 ó  — t        | j                  t        j                  «      r| j                  n| j                  j                  }| j	                  «       j                  |¬«      }t        ri nddi}t        j                  |fi |¤Ž}t        j                  |d   «      rt        |d   «      |d   fS |d   j                  d   dkD  r|D �cg c]  }t        |«      ‘Œ c}S t        j                  t        j                  fS c c}w )Nr   ÚkeepdimsTr   r   )r   r   r.   Únumpy_dtypeÚdropnaÚto_numpyr   r   rs   ÚisscalarÚfloatr–   rS   )Úserr   Úser_no_missingÚkwargsÚmode_resÚvals         r   Ú_modez"Description.numeric.<locals>._mode’  sÍ   € Ü!+¨C¯I©I´r·x±xÔ!@�C—I’IÀcÇiÁi×F[ÑF[ˆEØ ŸZ™Z›\×2Ñ2¸Ð2Ó?ˆNÝ#‘R¨*°dÐ);ˆFÜ—z‘z .Ñ;°FÑ;ˆHä�{‰{˜8 A™;Ô'Ü˜X a™[Ó)¨8°A©;Ð6Ð6Ø˜‰{× Ñ  Ñ# aÒ'Ø.6Ö7 sœ˜c�
Ò7Ð7Ü—6‘6œ2Ÿ6™6�>Ð!ùò 8s   ÃDr   )Úis_extension_array_dtypeg      è?g      Ð?c                 óŽ   — t        j                  | «      }|j                  d   dk  rt         j                  fdz  S t	        |«      S )Nr   r;   é   )r.   r]   r–   rS   r   )ÚcrU   s     r   Ú_safe_jarque_beraz.Description.numeric.<locals>._safe_jarque_beraÅ  s8   € Ü—
‘
˜1“ˆAØ�w‰w�q‰z˜AŠ~ÜŸ™�y 1‘}Ð$Ü˜q“>Ð!r   c                 óB   •— t         ‰| j                  «       «      «      S r   )rœ   rÁ   )r1   rÏ   s    €r   ú<lambda>z%Description.numeric.<locals>.<lambda>Ì  s   ø€ ”dÑ,¨Q¯X©X«ZÓ8Ó9€ r   Úexpand)Úresult_typeri   ©r¡   rj   rK   rk   rˆ   r‰   rL   rm   ro   rq   rr   r'   r(   rH   rE   é   rn   rp   )r   rŠ   rs   r‡   rt   )r»   r¡   rP   rŽ   )r¡   r   ú%Tr   Fz0.Úfz{0:z}%r,   )Ar•   r¶   r˜   r»   r–   rL   ÚcountrK   ÚabsÚcopyr§   r   ÚtÚppfr¦   ÚnormÚapplyÚTÚsizer   r   r�   r.   r]   rÄ   Úint64r¡   r’   Ú
atleast_1dÚemptyÚfullrS   Úpandas.api.typesrË   r   Úisnullr¥   ÚfillnaÚImportErrorÚquantiler�   Úonesr*   r'   r(   ÚdiffÚsqrtÚpirt   Úitemsr�   rœ   ÚvaluesÚkeysr¢   ÚastypeÚallÚfloorÚintÚlenÚstrÚformatÚtolistr¸   rº   )%r¨   r)   ÚcolsÚ_ÚkrL   rØ   rK   ro   rk   ÚqrÊ   Úmode_valuesrs   Úmode_countsr²   rÉ   r¶   r‡   Ú_dfrË   Úcolrm   ÚjbÚnan_meanrq   ÚresultsÚvÚfinalÚ
results_dfÚpercÚdupeÚscaler¡   ÚfmtÚoutputrÏ   s%                                       @r   r}   zDescription.numericz  sÚ  ø€ ð  Ÿ:™:Ÿ>™>ª!¨T×-=Ñ-=Ð*=Ñ>ˆØ�z‰zˆØ�x‰x‰ˆˆ1Ø�f‰f‹hˆØ—‘“
ˆØ�w‰w‹yˆØ�D‰y�o‰oÓ×$Ñ$Ó&ˆØ—(‘(“*ˆØ�‰�E˜A‘IÓ %§)¡)¨E°A©IÑ"6¸#Ñ"=Ñ=ÓØ�;Š;Ü—‘˜ ™	Ó"×&Ñ& s¨T¯[©[¸1©_Ñ'<Ó=‰Aä—
‘
—‘˜s T§[¡[°1¡_Ñ4Ó5ˆAò
	"ð —h‘h˜u“o×'Ñ'ˆØ×Ñ˜aÒÜ˜+¤r§|¡|Ô4ä—z‘z +¨a¡.¼Ô>�Ü Ÿj™j¨°Q©¼r¿x¹xÔH‘ð �Ø �Ø&×,Ñ,ò /�CØ%Ÿ/™/¨#Ñ.�CØ—K‘K  A¡Ô'Ø×&Ñ& s¨1¡vÕ.ð/ô —}‘} TÓ*�Ü Ÿm™m¨KÓ8‘ä!#§¡¨!£Ð,ˆD�;Ø�a‰iˆÜ—G‘G˜DŸJ™J q™M¬2¯6©6Ó2ˆ	Ø$ SÑ)¨E¯I©I°c©NÑ:ˆ	�#‰ð ˆð	ÝAØ—'‘'“)ˆCØò ;�Ù+¨B¨s©G¯M©MÕ:Ø˜3‘x—‘Ó(×,Ñ,Õ.Ø#& s¡8§?¡?´2·6±6Ó#:˜˜Cšñ;ð �8‰8�A‰;˜Š?Ø—,‘,˜tÓ$ s§|¡|°DÓ'9Ñ9‰CàˆCò	"ð �X‰XÛ9Àxð ó 
ç
‰!ð 	ð —9‘9“;ˆÜ&(§f¡fˆ�‰�X ‘]Ñ#Ø˜‘>ˆð
Ø”B—I‘IÜ—‘˜¤§¡Ô*¨R¯X©X°a©[Ñ8Àôð
ð �r—x‘x ‘{ UÑ*ð	
ð
 �Dð
ð �wð
ð ˜˜q 7™{Ñ*ð
ð ˜˜q 7™{Ñ*ð
ð �3ð
ð �3ð
ð �3ð
ð ˜ð
ð ”V˜B“Zð
ð �2—6‘6“8ð
ð �2—6‘6“8ð
ð  �B�q‘Eð!
ð" ˜˜1™ð#
ð$ ˜#¤§¡¬¯
©
¯©¸¸d°|Ó(DÓ EÑEð%
ð& ˜#¤§¡¨¬B¯E©E©	Ó 2Ñ2ð'
ð( ˜a™5Ø " 1¡Ü—I‘I˜d¨$Ô/ÜŸ™ 9°DÔ9Ø—i‘i“kò1
ˆð4 #*§-¡-£/×F™$˜!˜Q°Q¸$¿+¹+Ò5E��A‘ÐFˆÑFÜ—\‘\Ü�—‘“Ó ¨$´d¸5¿:¹:»<Ó6Hô
ˆ
ð  §¡Ñ+ØÐà�8‰8�A‰;˜Š?à—<‘< × 1Ñ 1°CÑ 7Ó8×?Ñ?ÄÓF‰Dä—<‘< d×&7Ñ&7¸#Ñ&=ÄUÔKˆDÜ�6‰6”"—(‘(˜3 §¡Ñ+Ó,°°t·z±zÑ1AÑBÔCØ:>¿*¹*ÖE°3œS  s¡›^Ð,¨AÒ.ÒEˆD�JàˆDØˆEØ—J‘JˆEÙØ˜‘�Ü—h‘h˜u t§z¡zÑ1Ó2�Ü—6‘6œ"Ÿ'™' #›,¨Ñ*Ô+Ø �Dò	 ô
 —H‘H˜U U™]Ó+¨u°s©{Ñ;ˆEØ”sœ3˜u c™z›?Ó+¨AÑ-Ð.¨aÐ0ˆCØ˜C˜5 �_ˆFØ8=Ö>°˜&Ÿ-™-¨Õ,Ò>ˆDŒJð —k‘k D§J¡J×$5Ñ$5Ó$7Ñ7ˆŒà�}‰}œRŸY™Y¨
°DÐ'9ÀÔBÓCÐCøô] ò 	Úð	üó^ Gùò Fùò ?s6   Ê20^. Ë#!^. Ì'^. Ô6^>Õ^>Ù*_Ü:_	Þ.	^;Þ:^;c                 ó$  — | j                   j                  dd…| j                  D �cg c]  }|‘Œ c}f   }|j                  d   }|j                  }|D �ci c]  }|||   j                  d¬«      “Œ }}t        j                  |D �ci c]  }|||   j                  d   “Œ c}t        j                  ¬«      }i }i }|D ]î  }||   }	|	j                  d   | j                  k\  rB|	j                  d| j                   ||<   t        j                  |	j                  dd «      ||<   Œft        |	j                  «      }
|
dg| j                  t        |
«      z
  z  z  }
|
||<   t        |	«      }|t        j                   g| j                  t        |«      z
  z  z  }t        j                  |«      ||<   Œð t#        d| j                  dz   «      D �cg c]  }d|› �‘Œ	 }}t        j$                  |d	||¬
«      }t#        d| j                  dz   «      D �cg c]  }d|› �‘Œ	 }}t        j$                  |d	||¬
«      }t        j                  t        j&                  |t        j                  ¬«      |j                  d   z  |¬«      |j                  d   |j)                  «       z
  |dœ}|j+                  «       D ��ci c]  \  }}|| j,                  v sŒ||“Œ }}}t        j$                  t        |j/                  «       «      |t        |j1                  «       «      d	¬«      }| j2                  rt        j4                  ||gd¬«      }| j6                  rt        j4                  ||gd¬«      }| j9                  |«      S c c}w c c}w c c}w c c}w c c}w c c}}w )z¦
        Descriptive statistics for categorical data

        Returns
        -------
        DataFrame
            The statistics of the categorical columns
        Nr   T)Ú	normalizer   r   r   r‹   Úobject)r   r¡   r»   rŒ   rÔ   rz   )r»   r¡   r   r,   )r•   r¶   r™   r–   r»   Úvalue_countsr   r�   r.   rá   rž   r¡   r]   Úilocrœ   rõ   rS   rr   r�   rê   rØ   rî   r�   rï   rð   rŸ   rº   r    r¸   )r¨   r   r)   rû   rù   Úvcru   rv   rw   ÚsinglerÉ   Úfreq_valr¯   r¡   Útop_dfÚfreq_dfr  r  r  r  s                       r   r~   zDescription.categorical  s  € ð �Z‰Z�^‰^šA¨t×/@Ñ/@ÖA¨¢ÒAÐAÑBˆØ�H‰H�Q‰KˆØ�z‰zˆØCEÖF¸Cˆc�2�c‘7×'Ñ'°$Ð'Ó7Ñ7ÐFˆÐFÜ—9‘9Ø.0Ö1 sˆS�"�S‘'—-‘- Ñ"Ñ"Ò1¼¿¹ô
ˆð ˆØˆØò 	1ˆCØ˜‘WˆFØ�|‰|˜A‰ $§*¡*Ò,Ø!Ÿ<™<¨¨$¯*©*Ð5��C‘ÜŸJ™J v§{¡{°2°A Ó7��S’	ä˜6Ÿ<™<Ó(�Ø˜�v §¡¬c°#«hÑ!6Ñ7Ñ7�Ø��C‘Ü ›<�ØœRŸV™V˜H¨¯
©
´S¸³]Ñ(BÑCÑC�ÜŸJ™J xÓ0��S’	ð	1ô &+¨1¨d¯j©j¸1©nÓ%=Ö> �4˜�s’Ð>ˆÐ>Ü—‘˜c¨¸ÈÔMˆÜ&+¨A¨t¯z©z¸A©~Ó&>Ö? �5˜˜’Ð?ˆÐ?Ü—,‘,˜t¨8¸5È$ÔOˆô —I‘IÜ—‘˜¤§¡Ô*¨R¯X©X°a©[Ñ8Àôð —x‘x ‘{ R§X¡X£ZÑ/Ø ñ
ˆð #*§-¡-£/×F™$˜!˜Q°Q¸$¿+¹+Ò5E��A‘ÐFˆÑFÜ—\‘\Ü�—‘“Ó ØÜ�u—z‘z“|Ó$Øô	
ˆ
ð ×ÒÜŸ™ J°Ð#7¸aÔ@ˆJØ×ÒÜŸ™ J°Ð#8¸qÔAˆJà�}‰}˜ZÓ(Ð(ùò[  Bùò Gùâ1ùò  ?ùâ?ùó Gs)   §	M3ÁM8ÂM=Ç
NÈNÊ2NË	Nc                 ó  — | j                   j                  t        «      }|j                  «       j	                  «       j	                  «       r|j                  d«      }|j                  D �cg c]  }t        |«      ‘Œ }}|j                  D �cg c]  }t        |«      ‘Œ }}g }|j                  «       D ]$  \  }}|j                  |D �	cg c]  }	|	‘Œ c}	«       Œ& d„ }
t        |||ddd|
dœidgt        |«      z  ¬«      S c c}w c c}w c c}	w )	z¸
        Summary table of the descriptive statistics

        Returns
        -------
        SimpleTable
            A table instance supporting export to text, csv and LaTeX
        r…   c                 óf   — t        | t        «      r| S | dz  | k(  rt        t        | «      «      S | d›S )Nr   z0.4g)r   rö   rô   )r  s    r   Ú
_formatterz'Description.summary.<locals>._formatterY  s4   € Ü˜!œSÔ!Ø�Ø�a‘˜1’Üœ3˜q›6“{Ð"Ø˜�XÐr   zDescriptive StatisticsÚ	data_fmtsz%s)r   r   r   )ÚheaderÚstubsÚtitleÚtxt_fmtÚ	datatypes)r¼   rñ   r  ræ   r¥   rç   r»   rö   r¡   Úiterrowsr’   r   rõ   )r¨   r)   r   rù   r²   r  r‚   rú   Úrowr  r  s              r   ÚsummaryzDescription.summaryG  sð   € ð �Z‰Z×ÑœvÓ&ˆØ�9‰9‹;�?‰?Ó× Ñ Ô"Ø—‘˜2“ˆBØ$&§J¡JÖ/˜S”�C•Ð/ˆÐ/Ø%'§X¡XÖ.˜c”�S•Ð.ˆÐ.ØˆØ—k‘k“mò 	*‰FˆAˆsØ�K‰K CÖ(˜qšÒ(Õ)ð	*ò	ô ØØØØ*Ø  d¨zÑ":Ð;Ø�cœC ›I‘oô
ð 	
ùò 0ùÚ.ùò )s   Á+D ÂDÃ	D

c                 óP   — t        | j                  «       j                  «       «      S r   )rö   r!  Úas_text)r¨   s    r   Ú__str__zDescription.__str__i  s   € Ü�4—<‘<“>×)Ñ)Ó+Ó,Ð,r   r   ) Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú_int_fmtÚNUMERIC_STATISTICSÚnumeric_statisticsÚCATEGORICAL_STATISTICSÚcategorical_statisticsrš   Údefault_statisticsr@   r   r.   Úndarrayr   r�   r�   r   rö   ÚboolrÄ   rô   r³   r¸   r   r¼   r}   r~   r   r!  r$  © r   r   ry   ry   ³   sd  „ ñPòd /€HØ+ÐØ3ÐØ+Ðð
  $ðW0ð
 Ø ØØØ3>ØòW0à�B—J‘J §	¡	¨2¯<©<Ð7Ñ8ðW0ð ˜‰}ðW0ð
 ðW0ð ðW0ð ðW0ð ðW0ð ˜e C¨ JÑ/Ñ0ðW0ð óW0ðrA˜2Ÿ<™<ð A¨B¯L©Ló Að ð5�r—|‘|ò 5ó ð5ð$ ðPD˜Ÿ™ò PDó ðPDðd ð7)˜RŸ\™\ò 7)ó ð7)ðr 
˜ó  
ðD-˜ô -r   ry   ÚReturnsr�   zDescriptive statisticsÚ
AttributeszSee Also)zpandas.DataFrame.describeNzBasic descriptive statistics)ry   Nz;Descriptive statistics class with additional output optionsTr{   Fr   r|   r‚   r   r}   r~   r   r€   rP   r�   r´   c          
      ó<   — t        | |||||||¬«      j                  S )Nr|   )ry   r¼   )r‚   r   r}   r~   r   r€   rP   r�   s           r   Údescriber5  �  s0   € ô ØØØØØØØØô	÷ �eð	r   c                   ó   — e Zd ZdZd„ Zy)ÚDescribez
    Removed.
    c                 ó   — t        d«      ‚)NzDescribe has been removed)ÚNotImplementedError)r¨   Údatasets     r   r³   zDescribe.__init__ž  s   € Ü!Ð"=Ó>Ð>r   N)r%  r&  r'  r(  r³   r1  r   r   r7  r7  ™  s   „ ñó?r   r7  )r   r   )EÚstatsmodels.compat.pandasr   r   r   Ústatsmodels.compat.scipyr   Útypingr   Úcollections.abcr   Únumpyr.   Úpandasr   Úpandas.core.dtypes.commonr	   Úscipyr   Ústatsmodels.iolib.tabler   Ústatsmodels.stats.stattoolsr   Ústatsmodels.tools.decoratorsr   Ústatsmodels.tools.docstringr   r   Ústatsmodels.tools.validationr   r   r   r   r@   ÚarrayÚ	QUANTILESr*   r2   r9   r=   r?   rF   rI   ÚnanmeanÚnanstdr5   r6   ÚnanvarÚMISSINGrW   rZ   rh   r*  r,  Ú_additionalÚtuplerš   ry   r(  ÚdsÚreplace_blockrö   r/  r�   r�   r0  rÄ   rô   r5  r7  )r­   s   0r   ú<module>rR     sj  ðß IÑ IÝ -å Ý $ã Û á
Þ>ò6õ å /Ý 3Ý 7ß <÷ó ð 1€ØˆB�H‰H�[Ó! EÑ)€	òó,óAó*ó9ó=ó9ð
 Ø�J‰JØ�9‰9Ø�9‰9Ø�9‰9ØØ�9‰9ØØØØ ñ€ò
ò
ó,ð^Ð ð, HÐ à+öØ¨tÐ;MÒ/M‚Dò€ð (©%°Ó*<Ñ<Ð ÷w-ñ w-ñt ˆ{×"Ñ"Ó#€Ø × Ñ Ø‰y˜˜{Ð-EÐ,FÓGôð × Ñ �˜rÔ "Ø × Ñ Øð 1Ð1Ø+Ð,ð	
ð
 #Ð#ØJÐKð	
ð	ôñ 
‰#ˆb‹'Óð  ðð ØØØØ/:ØòØ
�—
‘
˜BŸI™I r§|¡|Ð3Ñ
4ðà�C‰=ðð ð	ð
 ðð ðð ðð ˜%  U 
Ñ+Ñ,ðð ðð ‡\�\òó ð÷.?ò ?ùòYs   Ã!	GÃ+G