o
    Û­jw4  ã                   @   sb   d dl Zd dlZd dlmZmZmZ d dlmZ	 d dl
m  mZ G dd„ dƒZG dd„ dƒZdS )é    N)Ú	DataFrameÚIndexÚSeriesc                   @   sÄ   e Zd Zejdd„ ƒZej dee	dƒƒ¡dd„ ƒZ
dd„ Zd	d
„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zej ddg d¢fd d!g¡d"d#„ ƒZd$d%„ Zd&d'„ Zd(S ))Ú
TestSamplec                 C   s:   |t u rtj d¡ d¡}n	tj d¡ d¡}||d d�S )Né   é
   )r   r   )Údtype)r   ÚnpÚrandomÚdefault_rngÚstandard_normal)ÚselfÚframe_or_seriesÚarr© r   úc/var/www/html/CropPilot/venv/lib/python3.10/site-packages/pandas/tests/frame/methods/test_sample.pyÚobj   s   zTestSample.objÚtestr   c              	   C   s@  t j d¡ dd¡}t |jd|d�|jd|d�¡ t |jd|d�|jd|d�¡ t |jdt j |¡d�|jdt j |¡d�¡ t |jdt j |¡d�|jdt j |¡d�¡ t |jddt j |¡d	�|jddt j |¡d	�¡ g g }}tdƒD ]}| |jd|d�¡ | |jd|d�¡ q}tj|Ž  tj|Ž  d S )
Nr   r   éd   é   ©ÚnÚrandom_stategffffffæ?)Úfracr   T)r   Úreplacer   )	r	   r
   r   ÚintegersÚtmÚassert_equalÚsampleÚrangeÚappend)r   r   r   ÚseedÚos1Úos2Ú_r   r   r   Útest_sample   sD   ÿþþþ
ý
ýú

zTestSample.test_samplec                 C   sL   t |jdd�dkƒsJ ‚t |jdd�dkƒsJ ‚t |jdd�dkƒs$J ‚d S )Nr   ©r   gÃõ(\�ÂÕ?©r   é   g
×£p=
×?)Úlenr   ©r   r   r   r   r   Útest_sample_lengthsE   s   zTestSample.test_sample_lengthsc                 C   sD   d}t jt|d�� |jdd� W d   ƒ d S 1 sw   Y  d S )Nzdrandom_state must be an integer, array-like, a BitGenerator, Generator, a numpy RandomState, or None©ÚmatchÚa_string)r   ©ÚpytestÚraisesÚ
ValueErrorr   ©r   r   Úmsgr   r   r   Ú test_sample_invalid_random_stateK   s
   ÿ"ÿz+TestSample.test_sample_invalid_random_statec                 C   sF   d}t jt|d�� |jddd� W d   ƒ d S 1 sw   Y  d S )Nz0Please enter a value for `frac` OR `n`, not bothr,   r(   g333333Ó?)r   r   r/   r3   r   r   r   Ú"test_sample_wont_accept_n_and_fracT   s   "ÿz-TestSample.test_sample_wont_accept_n_and_fracc                 C   sz   t jtdd�� |jdd� W d   ƒ n1 sw   Y  t jtdd�� |jdd� W d   ƒ d S 1 s6w   Y  d S )Nz<A negative number of rows requested. Please provide `n` >= 0r,   éýÿÿÿr&   z?A negative number of rows requested. Please provide `frac` >= 0g333333Ó¿r'   r/   r*   r   r   r   Ú$test_sample_requires_positive_n_fracZ   s   þüþ"üz/TestSample.test_sample_requires_positive_n_fracc                 C   s@   t jtdd�� |jdd� W d   ƒ d S 1 sw   Y  d S )Nz$Only integers accepted as `n` valuesr,   gš™™™™™	@r&   r/   r*   r   r   r   Útest_sample_requires_integer_nf   s   "ÿz)TestSample.test_sample_requires_integer_nc                 C   sØ   d}t jt|d�� |jdddgd� W d   ƒ n1 sw   Y  t jt|d�� dgd }|jd|d� W d   ƒ n1 s@w   Y  t jtd	d�� tg d
¢ƒ}|jd|d� W d   ƒ d S 1 sew   Y  d S )Nú5Weights and axis to be sampled must be of same lengthr,   r(   r   é   ©r   Úweightsç      à?é   z%Fewer non-zero entries in p than size)r   r   gš™™™™™É?r   )r0   r1   r2   r   r   )r   r   r4   Úbad_weightsÚbad_weight_seriesr   r   r   Ú"test_sample_invalid_weight_lengthsk   s   ÿ
þ"þz-TestSample.test_sample_invalid_weight_lengthsc                 C   sP   dgd }d}t jt|d�� |jd|d� W d   ƒ d S 1 s!w   Y  d S )Ngš™™™™™¹¿r   z.weight vector many not include negative valuesr,   r(   r<   r/   )r   r   r@   r4   r   r   r   Útest_sample_negative_weightsy   s
   
"ÿz'TestSample.test_sample_negative_weightsc                 C   s¬   dgd }t j|d< d}tjt|d�� |jd|d� W d   ƒ n1 s%w   Y  dgd }t j |d< tjt|d�� |jd|d� W d   ƒ d S 1 sOw   Y  d S )Ngš™™™™™¹?r   r   z*weight vector may not include `inf` valuesr,   r(   r<   )r	   Úinfr0   r1   r2   r   )r   r   Úweights_with_infr4   Úweights_with_ninfr   r   r   Útest_sample_inf_weights€   s   

ÿ
"ÿz"TestSample.test_sample_inf_weightsc                 C   sL   dgd }t jtdd�� |jd|d� W d   ƒ d S 1 sw   Y  d S )Nr   r   ú$Invalid weights: weights sum to zeror,   r(   r<   r/   )r   r   Úzero_weightsr   r   r   Útest_sample_zero_weightsŽ   s   
"ÿz#TestSample.test_sample_zero_weightsc                 C   sN   t jgd }tjtdd�� |jd|d� W d   ƒ d S 1 s w   Y  d S )Nr   rH   r,   r(   r<   )r	   Únanr0   r1   r2   r   )r   r   Únan_weightsr   r   r   Útest_sample_missing_weights•   s   "ÿz&TestSample.test_sample_missing_weightsc                 C   s8   d gd }d|d< t  |jdd|d�|jdd… ¡ d S )Nr   r>   é   r;   r   ©r   Úaxisr=   é   )r   r   r   Úiloc)r   r   Úweights_with_Noner   r   r   Útest_sample_none_weightsœ   s
   
ÿz#TestSample.test_sample_none_weightszfunc_str,argznp.array)r   r(   r;   r   )znp.random.MT19937r(   )znp.random.PCG64r?   c                 C   sh   t tddƒtddƒdœƒ}t ||¡}|jdt|ƒ|ƒd�}|jdt t|ƒ|ƒ¡d�}t ||¡ d S )Nr   é   é   ©Úcol1Úcol2r(   r   )	r   r   r   Úget_objr   ÚevalÚcomr   r   )r   Úfunc_strÚargr   r   ÚresultÚexpectedr   r   r   Útest_sample_random_state¤   s
   
z#TestSample.test_sample_random_statec                 C   sŠ   |t  d¡ƒ}t j d¡}|jd|d�}|jd|d�}|jj|jjk ¡ r'J ‚|jdt j d¡d�}|jdt j d¡d�}t 	||¡ d S )Nr   r   é2   r   r?   )
r	   Úaranger
   r   r   ÚindexÚvaluesÚallr   r   )r   r   r   ÚrngÚresult1Úresult2r   r   r   Útest_sample_generator´   s   z TestSample.test_sample_generatorc                 C   sb   t dtdƒiƒ}t ||¡}d}tjt|d�� |jddd� W d   ƒ d S 1 s*w   Y  d S )NÚAÚabczJReplace has to be set to `True` when upsampling the population `frac` > 1.r,   r   F)r   r   )r   Úlistr   rZ   r0   r1   r2   r   )r   r   r   r4   r   r   r   Ú*test_sample_upsampling_without_replacementÄ   s   ÿ"ÿz5TestSample.test_sample_upsampling_without_replacementN)Ú__name__Ú
__module__Ú__qualname__r0   Úfixturer   ÚmarkÚparametrizerm   r   r%   r+   r5   r6   r8   r9   rB   rC   rG   rJ   rM   rT   ra   rj   rn   r   r   r   r   r      s4    

.	
ýþ
r   c                   @   s<   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ ZdS )ÚTestSampleDataFramec           	      C   s&  dgd }d|d< t tddƒtddƒdgd |dœƒ}|jdd	d
�}t ||jdd… ¡ ttdƒƒ}d}tjt	|d�� |jddd
� W d   ƒ n1 sNw   Y  d}tjt	|d�� |jdddd� W d   ƒ n1 sow   Y  tjt
dd�� |jddd
� W d   ƒ n1 s�w   Y  dgd }d|d< t |jd|d
�|jd d… ¡ t tdƒdgd dœƒ}ddg}t |jdd|d�|dg ¡ t |jdd|d�|dg ¡ dgd }d|d< t |jdd|d�|jdd… ¡ t |jdd|d�|jdd… ¡ d}tjt	|d�� |jddd� W d   ƒ n	1 �s w   Y  d}tjt	|d�� |jddd� W d   ƒ n	1 �sAw   Y  ttdƒƒ}tjt	d d�� |jddd� W d   ƒ n	1 �sfw   Y  d!}tjt	|d�� |jdddgd d� W d   ƒ d S 1 �sŒw   Y  d S )"Nr   r   r;   rN   rU   rV   Úa)rX   rY   Ú	colStringÚeasyweightsrx   r<   rQ   z@Strings cannot be passed as weights when sampling from a Series.r,   r(   Úweight_columnzLStrings can only be passed to weights when sampling from rows on a DataFrame)r   r=   rP   z-'String passed to weights not a valid column'Únot_a_real_column_namer>   rW   rO   rY   ÚcolumnsÚrowsrd   z)No axis named 2 for object type DataFramer   )r   rP   z2No axis named not_a_name for object type DataFrameÚ
not_a_namez&No axis named 1 for object type Seriesr:   )r   r   r   r   Úassert_frame_equalrR   r   r0   r1   r2   ÚKeyError)	r   Úeasy_weight_listÚdfÚsample1Úserr4   Úweights_less_than_1Úsecond_column_weightÚweightr   r   r   r%   Ö   sv   
üÿÿÿÿÿý
 ÿÿ
"ÿÿÿÿ$ÿzTestSampleDataFrame.test_samplec                 C   s|   dgd }d|d< t tddƒtddƒdgd d	œƒ}|jdd|d
�}t ||dg ¡ t |jddd�|jdddd�¡ d S )Nr   r(   r;   r   r   rU   rV   rv   ©rX   rY   rw   rO   rw   é*   r   )r   rP   r   )r   r   r   r   r~   )r   r€   r�   r‚   r   r   r   Útest_sample_axis1+  s   
ÿÿz%TestSampleDataFrame.test_sample_axis1c                 C   s
  t g d¢g d¢dœg d¢d�}tg d¢g d¢d�}t |jdg |jd	|d
�¡ tg d¢g d¢d�}t |jdg |jd	|d
�¡ tddgddgd�}t |jdg |jd	|d
�¡ td	dgd	dgd�}tjtdd�� |jd	|d
� W d   ƒ d S 1 s~w   Y  d S )N)rN   rQ   é   ©rv   ÚbÚcrW   )é	   rN   r(   )rd   )r;   r   r   )r(   rN   rŽ   r(   r;   ©r=   )gü©ñÒMbP?r   i'  )r(   rN   r   g{®Gáz„?r   rN   r   rH   r,   )	r   r   r   r~   Úlocr   r0   r1   r2   )r   r�   rƒ   Úser2Úser3Úser4r   r   r   Ú%test_sample_aligns_weights_with_frame;  s   "ÿz9TestSampleDataFrame.test_sample_aligns_weights_with_framec                 C   s`   t tj d¡ d¡g d¢d�}| d¡}t d ¡� d|d< W d   ƒ d S 1 s)w   Y  d S )Nr   )r   r(   r‹   )r{   r(   r;   Úd)r   r	   r
   r   r   r   r   Úassert_produces_warning)r   r�   Údf2r   r   r   Útest_sample_is_copyP  s   ÿ

"ÿz'TestSampleDataFrame.test_sample_is_copyc                 C   s�   t  t jdt jg¡}| ¡ }tg d¢ƒ}|j|d� t ||¡ tg d¢dt jt jgdœƒ}|d  ¡ }|jdddd	� |d }t 	||¡ d S )
Nr;   )r;   r   r(   r�   )r;   r;   r;   )re   r=   r=   g      ð?T)r   r   r=   )
r	   ÚarrayrK   Úcopyr   r   r   Úassert_numpy_array_equalr   Úassert_series_equal)r   r_   r`   rƒ   r�   r   r   r   Ú#test_sample_does_not_modify_weights[  s   z7TestSampleDataFrame.test_sample_does_not_modify_weightsc                 C   sR   t tddƒtddƒdgd dœƒ}|jddd�}ttdƒƒ}tj|j|dd	� d S )
Nr   rU   rV   rv   r‡   r(   T)Úignore_index)Úexact)r   r   r   r   r   Úassert_index_equalrd   )r   r�   r_   Úexpected_indexr   r   r   Útest_sample_ignore_indexm  s   ÿz,TestSampleDataFrame.test_sample_ignore_indexN)	ro   rp   rq   r%   r‰   r”   r˜   r�   r¢   r   r   r   r   ru   Ò   s    Uru   )Únumpyr	   r0   Úpandasr   r   r   Úpandas._testingÚ_testingr   Úpandas.core.commonÚcoreÚcommonr\   r   ru   r   r   r   r   Ú<module>   s     F