a
    oÝEb�3  ã                   @   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eegd�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 )*Ú
TestSample)Úparamsc                 C   s6   |j }|tu rtj d¡}ntj dd¡}||d d�S )Né
   )Zdtype)Úparamr   ÚnpÚrandomÚrandn)ÚselfÚrequestÚklassZarr© r   úf/home/ja/django-apps/lartica_env/lib/python3.9/site-packages/pandas/tests/frame/methods/test_sample.pyÚobj   s
    zTestSample.objÚtestr   c              	   C   sB  t j 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 ]4}t j |¡ | 	|jdd
�¡ | 	|jdd�¡ qôtj|Ž  tj|Ž  d S )Nr   éd   é   ©ÚnÚrandom_stategffffffæ?)Úfracr   é   T)r   Úreplacer   ©r   ©r   )
r	   r
   ÚrandintÚtmÚassert_equalÚsampleZRandomStateÚrangeÚseedÚappend)r   r   r   r"   Zos1Zos2Ú_r   r   r   Útest_sample   s6    ÿþþþþ

zTestSample.test_samplec                 C   sL   t |jdd�dkƒsJ ‚t |jdd�dkƒs0J ‚t |jdd�dkƒsHJ ‚d S )Nr   r   gÃõ(\�ÂÕ?r   é   g
×£p=
×?)Úlenr    ©r   r   r   r   r   Útest_sample_lengths?   s    zTestSample.test_sample_lengthsc                 C   sB   d}t jt|d�� |jdd� W d   ƒ n1 s40    Y  d S )Nzdrandom_state must be an integer, array-like, a BitGenerator, Generator, a numpy RandomState, or None©ÚmatchZa_string)r   ©ÚpytestÚraisesÚ
ValueErrorr    ©r   r   Úmsgr   r   r   Ú test_sample_invalid_random_stateE   s    ÿz+TestSample.test_sample_invalid_random_statec                 C   sD   d}t jt|d�� |jddd� W d   ƒ n1 s60    Y  d S )Nz0Please enter a value for `frac` OR `n`, not bothr*   r&   g333333Ó?)r   r   r,   r0   r   r   r   Ú"test_sample_wont_accept_n_and_fracN   s    z-TestSample.test_sample_wont_accept_n_and_fracc                 C   sx   t jtdd�� |jdd� W d   ƒ n1 s00    Y  t jtdd�� |jdd� W d   ƒ n1 sj0    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_fracT   s    þ*þz/TestSample.test_sample_requires_positive_n_fracc                 C   s>   t jtdd�� |jdd� W d   ƒ n1 s00    Y  d S )Nz$Only integers accepted as `n` valuesr*   gš™™™™™	@r   r,   r(   r   r   r   Útest_sample_requires_integer_n`   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:0    Y  t jt|d��( dgd }|jd|d� W d   ƒ n1 s€0    Y  t jtd	d��* tg d
¢ƒ}|jd|d� W d   ƒ n1 sÈ0    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   )r-   r.   r/   r    r   )r   r   r1   Úbad_weightsZbad_weight_seriesr   r   r   Ú"test_sample_invalid_weight_lengthse   s    0
,z-TestSample.test_sample_invalid_weight_lengthsc                 C   sN   dgd }d}t jt|d�� |jd|d� W d   ƒ n1 s@0    Y  d S )Ngš™™™™™¹¿r   z.weight vector many not include negative valuesr*   r&   r9   r,   )r   r   r=   r1   r   r   r   Útest_sample_negative_weightss   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 sJ0    Y  dgd }t j |d< tjt|d�� |jd|d� W d   ƒ n1 sœ0    Y  d S )Ngš™™™™™¹?r   r   z*weight vector may not include `inf` valuesr*   r&   r9   )r	   Úinfr-   r.   r/   r    )r   r   Zweights_with_infr1   Zweights_with_ninfr   r   r   Útest_sample_inf_weightsz   s    

,
z"TestSample.test_sample_inf_weightsc                 C   sJ   dgd }t jtdd�� |jd|d� W d   ƒ n1 s<0    Y  d S )Nr   r   ú$Invalid weights: weights sum to zeror*   r&   r9   r,   )r   r   Zzero_weightsr   r   r   Útest_sample_zero_weightsˆ   s    
z#TestSample.test_sample_zero_weightsc                 C   sL   t jgd }tjtdd�� |jd|d� W d   ƒ n1 s>0    Y  d S )Nr   rB   r*   r&   r9   )r	   Únanr-   r.   r/   r    )r   r   Z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;   é   r8   r   ©r   Úaxisr:   é   )r   r   r    Úiloc)r   r   Zweights_with_Noner   r   r   Útest_sample_none_weights–   s
    
ÿz#TestSample.test_sample_none_weightszfunc_str,argznp.array)r   r&   r8   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   Zfunc_strÚargÚframe_or_seriesr   ÚresultÚexpectedr   r   r   Útest_sample_random_statež   s
    
z#TestSample.test_sample_random_statec                 C   sˆ   |t  d¡ƒ}t j ¡ }|jd|d�}|jd|d�}|jj|jjk ¡ rLJ ‚|jdt j d¡d�}|jdt j d¡d�}t 	||¡ d S )Nr   é2   r   r<   )
r	   Zaranger
   Zdefault_rngr    ÚindexÚvaluesÚallr   r   )r   rU   r   ÚrngZresult1Zresult2r   r   r   Útest_sample_generator®   s    
z TestSample.test_sample_generatorc                 C   s`   t dtdƒiƒ}t ||¡}d}tjt|d�� |jddd� W d   ƒ n1 sR0    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   rQ   r-   r.   r/   r    )r   rU   r   r1   r   r   r   Ú*test_sample_upsampling_without_replacement¾   s    ÿz5TestSample.test_sample_upsampling_without_replacementN)Ú__name__Ú
__module__Ú__qualname__r-   Zfixturer   r   r   ÚmarkZparametrizera   r!   r%   r)   r2   r3   r5   r6   r>   r?   rA   rC   rE   rK   rX   r^   rb   r   r   r   r   r      s2   

'	
ýþ
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 sœ0    Y  d}tjt	|d��  |jdddd� W d   ƒ n1 sÞ0    Y  tjt
dd�� |jddd
� W d   ƒ n1 �s0    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 �sB0    Y  d}tjt	|d�� |jddd� W d   ƒ n1 �s„0    Y  ttdƒƒ}tjt	d d�� |jddd� W d   ƒ n1 �sÎ0    Y  d!}tjt	|d��& |jdddgd d� W d   ƒ n1 �s0    Y  d S )"Nr   r   r8   rF   rL   rM   Úa)rO   rP   Ú	colStringÚeasyweightsrj   r9   rI   z@Strings cannot be passed as weights when sampling from a Series.r*   r&   Zweight_columnzLStrings can only be passed to weights when sampling from rows on a DataFrame)r   r:   rH   z-'String passed to weights not a valid column'Znot_a_real_column_namer;   rN   rG   rP   ÚcolumnsÚrowsrZ   z)No axis named 2 for object type DataFramer   )r   rH   z2No axis named not_a_name for object type DataFrameZ
not_a_namez&No axis named 1 for object type Seriesr7   )r   r!   r    r   Úassert_frame_equalrJ   r   r-   r.   r/   ÚKeyError)	r   Úeasy_weight_listÚdfÚsample1Úserr1   Zweights_less_than_1Zsecond_column_weightÚweightr   r   r   r%   Ð   sh    
üÿ,ÿ.ÿ.
 ÿÿ
"ÿ...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&   r8   r   r   rL   rM   rh   ©rO   rP   ri   rG   ri   é*   r   )r   rH   r   )r   r!   r    r   rm   )r   ro   rp   rq   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   ƒ n1 sú0    Y  d S )N)rF   rI   é   ©rh   ÚbÚcrN   )é	   rF   r&   )rZ   )r8   r   r   )r&   rF   r{   r&   r8   ©r:   )gü©ñÒMbP?r   i'  )r&   rF   r   g{®Gáz„?r   rF   r   rB   r*   )	r   r   r   rm   Úlocr    r-   r.   r/   )r   rp   rr   Zser2Zser3Zser4r   r   r   Ú%test_sample_aligns_weights_with_frame5  s    z9TestSampleDataFrame.test_sample_aligns_weights_with_framec                 C   sZ   t tj dd¡g d¢d�}| d¡}t d ¡� d|d< W d   ƒ n1 sL0    Y  d S )Nr   r&   rx   )rk   r8   Úd)r   r	   r
   r   r    r   Zassert_produces_warning)r   rp   Zdf2r   r   r   Útest_sample_is_copyK  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 )
Nr8   )r8   r   r&   r|   )r8   r8   r8   )r[   r:   r:   g      ð?T)r   r   r:   )
r	   ÚarrayrD   Úcopyr   r    r   Zassert_numpy_array_equalr   Zassert_series_equal)r   rV   rW   rr   rp   r   r   r   Ú#test_sample_does_not_modify_weightsT  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   rL   rM   rh   rt   r&   T)Zignore_index)Úexact)r   r!   r    r   r   Zassert_index_equalrZ   )r   rp   rV   Zexpected_indexr   r   r   Útest_sample_ignore_indexf  s    ÿz,TestSampleDataFrame.test_sample_ignore_indexN)	rc   rd   re   r%   rv   r~   r€   rƒ   r…   r   r   r   r   rg   Ì   s   U	rg   )Únumpyr	   r-   Zpandasr   r   r   Zpandas._testingZ_testingr   Zpandas.core.commonÚcoreÚcommonrS   r   rg   r   r   r   r   Ú<module>   s    @