
    bMhw4                     |    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c mZ  G d d          Z G d d          ZdS )    N)	DataFrameIndexSeriesc                   >   e Zd Zej        d             Zej                            d e e	d                              d             Z
d Zd Zd Zd Zd	 Zd
 Zd Zd Zd Zd Zd Zej                            ddg dfddg          d             Zd Zd ZdS )
TestSamplec                     |t           u r3t          j                            d                              d          }n2t          j                            d                              d          } ||d           S )N   
   )r
   r
   )dtype)r   nprandomdefault_rngstandard_normal)selfframe_or_seriesarrs      f/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/pandas/tests/frame/methods/test_sample.pyobjzTestSample.obj   sj    f$$)''**::2>>CC)''**::8DDCs$////    testr
   c           
      N   t           j                            d                              dd          }t	          j        |                    d|          |                    d|                     t	          j        |                    d|          |                    d|                     t	          j        |                    dt           j                            |                    |                    dt           j                            |                               t	          j        |                    dt           j                            |                    |                    dt           j                            |                               t	          j        |                    ddt           j                            |          	          |                    ddt           j                            |          	                     g g }}t          d          D ]V}|                    |                    d|                     |                    |                    d|                     Wt	          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_s          r   test_samplezTestSample.test_sample   sU    y$$Q''00C88
JJJ..

QT
0R0R	
 	
 	
 	JJCdJ33JJCdJ33	
 	
 	

 	JJ)>)>t)D)DJEEJJ)>)>t)D)DJEE	
 	
 	

 	JJCbi.C.CD.I.IJJJJJCbi.C.CD.I.IJJJ	
 	
 	

 	JJY22488   
 JJY22488   	
 	
 	
 rSq 	@ 	@AJJszzADz99:::JJszzsz>>????

r   c                     t          |                    d          dk              sJ t          |                    d          dk              sJ t          |                    d          dk              sJ d S )Nr   r   g(\?r      g
ףp=
?)lenr"   r   r   s     r   test_sample_lengthszTestSample.test_sample_lengthsE   s{    3:::??a'(((((3::4:((A-.....3::4:((A-.......r   c                     d}t          j        t          |          5  |                    d           d d d            d S # 1 swxY 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   msgs      r    test_sample_invalid_random_statez+TestSample.test_sample_invalid_random_stateK   s    + 	 ]:S111 	0 	0JJJJ///	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0s   AA	Ac                     d}t          j        t          |          5  |                    dd           d d d            d S # 1 swxY w Y   d S )Nz0Please enter a value for `frac` OR `n`, not bothr2   r-   g333333?)r   r   r5   r9   s      r   "test_sample_wont_accept_n_and_fracz-TestSample.test_sample_wont_accept_n_and_fracT   s    @]:S111 	& 	&JJJ%%%	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	&s   AA
Ac                 ,   t          j        t          d          5  |                    d           d d d            n# 1 swxY w Y   t          j        t          d          5  |                    d           d d d            d S # 1 swxY w Y   d S )Nz<A negative number of rows requested. Please provide `n` >= 0r2   r+   z?A negative number of rows requested. Please provide `frac` >= 0g333333ӿr,   r5   r/   s     r   $test_sample_requires_positive_n_fracz/TestSample.test_sample_requires_positive_n_fracZ   s#   ]P
 
 
 	 	 JJJ		 	 	 	 	 	 	 	 	 	 	 	 	 	 	
 ]S
 
 
 	" 	" JJDJ!!!		" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"s!   ?AA%B		BBc                     t          j        t          d          5  |                    d           d d d            d S # 1 swxY w Y   d S )Nz$Only integers accepted as `n` valuesr2   g	@r+   r5   r/   s     r   test_sample_requires_integer_nz)TestSample.test_sample_requires_integer_nf   s    ]:-STTT 	 	JJJ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   A  AAc                    d}t          j        t          |          5  |                    dddg           d d d            n# 1 swxY w Y   t          j        t          |          5  dgdz  }|                    d|           d d d            n# 1 swxY w Y   t          j        t          d	          5  t	          g d
          }|                    d|           d d d            d S # 1 swxY w Y   d S )N5Weights and axis to be sampled must be of same lengthr2   r-   r      r   weights      ?   z%Fewer non-zero entries in p than size)r   r   g?r   )r6   r7   r8   r"   r   )r   r   r:   bad_weightsbad_weight_seriess        r   "test_sample_invalid_weight_lengthsz-TestSample.test_sample_invalid_weight_lengthsk   s   E]:S111 	, 	,JJQFJ+++	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, ]:S111 	1 	1%"*KJJKJ000	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 ]:-TUUU 	7 	7 &{{{ 3 3JJ$5J666	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7s5   AAA*BBB:)C00C47C4c                     dgdz  }d}t          j        t          |          5  |                    d|           d d d            d S # 1 swxY w Y   d S )Ngr
   z.weight vector many not include negative valuesr2   r-   rF   r5   )r   r   rJ   r:   s       r   test_sample_negative_weightsz'TestSample.test_sample_negative_weightsy   s    frk>]:S111 	1 	1JJKJ000	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1s   A		AAc                    dgdz  }t           j        |d<   d}t          j        t          |          5  |                    d|           d d d            n# 1 swxY w Y   dgdz  }t           j         |d<   t          j        t          |          5  |                    d|           d d d            d S # 1 swxY w Y   d S )Ng?r
   r   z*weight vector may not include `inf` valuesr2   r-   rF   )r   infr6   r7   r8   r"   )r   r   weights_with_infr:   weights_with_ninfs        r   test_sample_inf_weightsz"TestSample.test_sample_inf_weights   sP     52: f:]:S111 	6 	6JJ$4J555	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 !EBJ "w!]:S111 	7 	7JJ$5J666	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7s#   AAAB88B<?B<c                     dgdz  }t          j        t          d          5  |                    d|           d d d            d S # 1 swxY w Y   d S )Nr   r
   $Invalid weights: weights sum to zeror2   r-   rF   r5   )r   r   zero_weightss      r   test_sample_zero_weightsz#TestSample.test_sample_zero_weights   s     sRx]:-STTT 	2 	2JJLJ111	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2s   AAAc                     t           j        gdz  }t          j        t          d          5  |                    d|           d d d            d S # 1 swxY w Y   d S )Nr
   rU   r2   r-   rF   )r   nanr6   r7   r8   r"   )r   r   nan_weightss      r   test_sample_missing_weightsz&TestSample.test_sample_missing_weights   s     vhm]:-STTT 	1 	1JJKJ000	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1s   AAAc                     d gdz  }d|d<   t          j        |                    dd|          |j        dd                    d S )Nr
   rH      rE   r   r   axisrG      )r    r!   r"   iloc)r   r   weights_with_Nones      r   test_sample_none_weightsz#TestSample.test_sample_none_weights   sY    !FRK"!
JJ,=J>>1	
 	
 	
 	
 	
r   zfunc_str,argznp.array)r	   r-   rE   r   )znp.random.MT19937r-   )znp.random.PCG64rI   c           	         t          t          dd          t          dd          d          }t          j        ||          }|                    d t          |          |                    }|                    dt          j         t          |          |                              }t          j        ||           d S )Nr
         col1col2r-   r   )	r   r#   r    get_objr"   evalcomr   r!   )r   func_strargr   r   resultexpecteds          r   test_sample_random_statez#TestSample.test_sample_random_state   s     r2b"FFGGjo..and8nnS.A.ABB::0@hPSATAT0U0U:VV
)))))r   c                 0    |t          j        d                    }t           j                            d          }|                    d|          }|                    d|          }|j        j        |j        j        k                                    rJ |                    dt           j                            d                    }|                    dt           j                            d                    }t          j	        ||           d S )Nr   r	   2   r   rI   )
r   aranger   r   r"   indexvaluesallr    r!   )r   r   r   rngresult1result2s         r   test_sample_generatorz TestSample.test_sample_generator   s    obinn--i##A&& **r*44**r*44M(GM,@@EEGGGGG **r	0E0Eb0I0I*JJ**r	0E0Eb0I0I*JJ
)))))r   c                    t          dt          d          i          }t          j        ||          }d}t	          j        t          |          5  |                    dd           d d d            d S # 1 swxY w Y   d S )NAabczJReplace has to be set to `True` when upsampling the population `frac` > 1.r2   r	   F)r   r   )r   listr    rj   r6   r7   r8   r"   )r   r   r   r:   s       r   *test_sample_upsampling_without_replacementz5TestSample.test_sample_upsampling_without_replacement   s     d5kk*++jo..4 	 ]:S111 	. 	.JJAuJ---	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	.s   A66A:=A:N)__name__
__module____qualname__r6   fixturer   markparametrizer   r#   r)   r0   r;   r=   r@   rB   rL   rN   rS   rW   r[   rc   rq   r{   r    r   r   r   r      s{       ^0 0 ^0 [VTT%%))__55, , 65,\/ / /0 0 0& & &
" 
" 
"  
7 7 71 1 17 7 72 2 21 1 1
 
 
 [&$#	
 * * ** * * . . . . .r   r   c                   2    e Zd Zd Zd Zd Zd Zd Zd ZdS )TestSampleDataFramec                 $   dgdz  }d|d<   t          t          dd          t          dd          dgdz  |d          }|                    dd	
          }t          j        ||j        dd                    t          t          d                    }d}t          j        t          |          5  |                    dd
           d d d            n# 1 swxY w Y   d}t          j        t          |          5  |                    ddd           d d d            n# 1 swxY w Y   t          j        t          d          5  |                    dd
           d d d            n# 1 swxY w Y   dgdz  }d|d<   t          j        |                    d|
          |j        d d                    t          t          d          dgdz  d          }ddg}t          j        |                    dd|          |dg                    t          j        |                    dd|          |dg                    dgdz  }d|d<   t          j        |                    dd|          |j        dd                    t          j        |                    dd|          |j        dd                    d}t          j        t          |          5  |                    dd           d d d            n# 1 swxY w Y   d}t          j        t          |          5  |                    dd           d d d            n# 1 swxY w Y   t          t          d                    }t          j        t          d           5  |                    dd           d d d            n# 1 swxY w Y   d!}t          j        t          |          5  |                    dddgdz             d d d            d S # 1 swxY w Y   d S )"Nr   r
   rE   r]   re   rf   a)rh   ri   	colStringeasyweightsr   rF   r`   z@Strings cannot be passed as weights when sampling from a Series.r2   r-   weight_columnzLStrings can only be passed to weights when sampling from rows on a DataFrame)r   rG   r_   z-'String passed to weights not a valid column'not_a_real_column_namerH   rg   r^   ri   columnsrowsru   z)No axis named 2 for object type DataFramer	   )r   r_   z2No axis named not_a_name for object type DataFrame
not_a_namez&No axis named 1 for object type SeriesrD   )r   r#   r"   r    assert_frame_equalra   r   r6   r7   r8   KeyError)	r   easy_weight_listdfsample1serr:   weights_less_than_1second_column_weightweights	            r   r)   zTestSampleDataFrame.test_sample   s   
 38b"b"!URZ/	 
 
 ))a)77
grwqs|444 U2YYP]:S111 	5 	5JJOJ444	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	 ]:S111 	< 	<II?I;;;	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< ]K
 
 
 	= 	= II#;I<<<	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	=  !cBh!$A
bii!5HiII27SUTUSU;WWW b		C52:>>?? !1v
II+?I@@"fX,	
 	
 	

 	II	3GIHH"fX,	
 	
 	
 rq	
bii!&&iII27STUVSV<XXX
III88"'!A#,	
 	
 	

 :]:S111 	# 	#III"""	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# C]:S111 	. 	.III---	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. U2YY]:-UVVV 	$ 	$JJJ###	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ F]:S111 	7 	7IIC52:I666	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7s~   2CCC>D##D'*D'	E--E14E1LLL)MMMN33N7:N7PP	P	c                 j   dgdz  }d|d<   t          t          dd          t          dd          dgdz  d	          }|                    dd|
          }t          j        ||dg                    t          j        |                    dd          |                    ddd                     d S )Nr   r-   rE   r	   r
   re   rf   r   rh   ri   r   r^   r   *   r   )r   r_   r   )r   r#   r"   r    r   )r   r   r   r   s       r   test_sample_axis1z%TestSampleDataFrame.test_sample_axis1+  s    372r]]E"bMMPR
SS
 
 ))aa1A)BB
gr;-'8999 	III++RYYQSY-T-T	
 	
 	
 	
 	
r   c                    t          g dg ddg d          }t          g dg d          }t          j        |j        dg         |                    d	|
                     t          g dg d          }t          j        |j        dg         |                    d	|
                     t          ddgddg          }t          j        |j        dg         |                    d	|
                     t          d	dgd	dg          }t          j        t          d          5  |                    d	|
           d d d            d S # 1 swxY w Y   d S )N)r]   r`      r   bcrg   )	   r]   r-   )ru   )rE   r   r   )r-   r]   r   r-   rE   rG   )gMbP?r   i'  )r-   r]   r
   g{Gz?r   r]   r	   rU   r2   )	r   r   r    r   locr"   r6   r7   r8   )r   r   r   ser2ser3ser4s         r   %test_sample_aligns_weights_with_framez9TestSampleDataFrame.test_sample_aligns_weights_with_frame;  s   			???CC999UUUYYYiii000
bfaSk299Q9+D+DEEE '''zzz:::
bfaSk299Q9+E+EFFF tQi1v...
bfaSk299Q9+E+EFFF q!fQF+++]:-STTT 	' 	'IIaI&&&	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	's   ,EEEc                    t          t          j                            d                              d          g d          }|                    d          }t          j        d           5  d|d<   d d d            d S # 1 swxY w Y   d S )Nr	   )r
   r-   r   )r   r-   rE   d)r   r   r   r   r   r"   r    assert_produces_warning)r   r   df2s      r   test_sample_is_copyz'TestSampleDataFrame.test_sample_is_copyP  s     I!!!$$44W==
 
 
 iill'-- 	 	CH	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   -B  BBc                    t          j        t           j        dt           j        g          }|                                }t	          g d          }|                    |           t          j        ||           t          g ddt           j        t           j        gd          }|d                                         }|                    ddd	           |d         }t          j	        ||           d S )
NrE   )rE   r	   r-   r   )rE   rE   rE   )rv   rG   rG   g      ?T)r   r   rG   )
r   arrayrY   copyr   r"   r    assert_numpy_array_equalr   assert_series_equal)r   ro   rp   r   r   s        r   #test_sample_does_not_modify_weightsz7TestSampleDataFrame.test_sample_does_not_modify_weights[  s    261bf-..;;==YYY 	

6
"""
#FH555 )))BFBF8KLLMMi=%%''
		sD)	<<<I
vx00000r   c                 
   t          t          dd          t          dd          dgdz  d          }|                    dd          }t          t          d                    }t	          j        |j        |d	           d S )
Nr
   re   rf   r   r   r-   T)ignore_index)exact)r   r#   r"   r   r    assert_index_equalru   )r   r   ro   expected_indexs       r   test_sample_ignore_indexz,TestSampleDataFrame.test_sample_ignore_indexm  s}    2r]]E"bMMPR
SS
 
 1400uQxx
flN$GGGGGGr   N)	r   r   r   r)   r   r   r   r   r   r   r   r   r   r      sw        S7 S7 S7j
 
 
 ' ' '*	 	 	1 1 1$H H H H Hr   r   )numpyr   r6   pandasr   r   r   pandas._testing_testingr    pandas.core.commoncorecommonrl   r   r   r   r   r   <module>r      s                 
                        B. B. B. B. B. B. B. B.JbH bH bH bH bH bH bH bH bH bHr   