gL i! ddlZddlZddlZddlZddlmZmZmZm Z m Z m Z m Z m Z mZmZmZmZmZmZddlmZddlmZddlmZdZdZdZdZd Zd Z d Z!d Z"d Z#ejHjKdgddZ&ejHjKdgde'e(dgdZ)ejHjKdgdegddfe'e(degddfgdZ*ejHjKdddidfidfddidfddidfgd Z+ejHjKd!gd"ejHjKd#d$d%gejHjKddd&gd'Z,ejHjKd(e ed)e d*ge e d+e d,ggd-.d/Z-ejHjKd0dej\dd$d1gd2Z/ejHjKd3ed4d5e gd6ged)d5egd7ggd8Z0ejHjKd0d9d:gejHjKd;e ejbfejdejffe'ejhfgd<Z5ejHjKd=gd>d?Z6y)@N) Categorical DatetimeIndexInterval IntervalIndexNaTSeries TimedeltaTimedeltaIndex Timestampcut date_rangeisnaqcuttimedelta_range)CategoricalDtype)Dayctjjdjd}t |dd\}}tj |gd}|j jj}tj||ddd sJ|j jj}tj||d dd sJt||d }tj||y) NTretbinsrg?g?g?g?g{Gz?)atol)include_lowest)nprandom default_rngstandard_normalrquantile categoriesleftvaluesallcloserightr tmassert_categorical_equal)arrlabels_ex_binsresult ex_levelss d/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/pandas/tests/reshape/test_qcut.py test_qcutr1s ))   " 2 24 8CS!T*IFAkk#89G    # # * *F ;;vws|$ 77 7    $ $ + +F ;;vwqr{ 66 6C6I 2ctjjdjd}t |dd}t tj |dk(sJy)Nrr Fr+)rrr r!rlenunique)r*factors r0test_qcut_boundsr9/sK ))   " 2 24 8C #r% (F ryy !R '' 'r2ctjjdjd}t |gd}t |d}t j ||y)Nrdrr)rrr r!rr(r))r*r8expecteds r0test_qcut_specify_quantilesr=6sI ))   " 2 23 7C #0 1FC|H1r2ctjtd5tgdddddy#1swYyxYw)Nz edges.*uniquematch) rrrrrrrrrr)pytestraises ValueErrorrr2r0test_qcut_all_bins_samerF>s0 z 90 +Q/000s4=c tjd}t|d}tt ddt ddt ddt ddg}t j |j|y)Nr4rMbPg@g@g@ )rarangerrrr(assert_index_equalr#)r%iir/s r0test_qcut_include_lowestrMCsg YYr]F faB VT " T3  S$  T1   I"--3r2ctjjdjd}tj|ddt |d}t |ddjsJy)Nrr;r)rrr r!nanrrall)r*r.s r0 test_qcut_nasrRRsX ))   " 2 23 7CvvCH #q\F s  "" "r2ctddgd}tddtddg}t|d}tj||y)NrrrHrTordered)rrrr(r))r. intervalsr<s r0test_qcut_indexrWZsD 1a&!_F&!$hq!n5I9d3H1r2c |tjjddd}tj|}t |d}g}g}tj |D]U}|j}|j}||k7sJ|jt||jt|Wtt|dd|ddt|dd|ddD] \\} } \} } | | ksJ| | ksJ| | kr Jy)Nreshapedataz cut_data.csvrOrr) ospathjoinrloadtxtrr7r$r'appendfloatzip) datapathcut_filer*r.startsendslevsespsnepens r0test_qcut_binning_issuesrmbs YGHH **X C #r]F F Dyy  HH IIAv v eAh E!H " F3BK$c$s)T!"X&>R(2rBwwBwwRxx r2c<tgd}t|gd}tjt ddt ddt ddg}t|j gdj td }tj||y) N) rrrrAr)rgZd;O?gZd;O?rrHgZd;O@gZd;O@rr) rrrrrrrrrTrT) rrrarrayrtakeastyperr(assert_series_equal)serres exp_levelsexps r0test_qcut_return_intervalsr{{s , -C s( )C &% (5%"8(5!:LMJ !<= > E E& C3$r2r+)foorTctd}d}tjt|5t |d|dddy#1swYyxYw)NrozJBin labels must either be False, None or passed in as a list-like argumentr?rr5rangerBrCrDrr+r%msgs r0test_qcut_incorrect_labelsrsA1XF VC z -' VQv&''' AA )abcrActd}d}tjt|5t |d|dddy#1swYyxYw)Nr4z9Bin labels must be one fewer than the number of bin edgesr?rr5r~rs r0test_qcut_wrong_length_labelsrsA2YF EC z -' VQv&'''rzlabels, expectedTrT)rrrcbtd}t|d|}tj||y)NrAr5)rrr(r))r+r<r%r.s r0test_qcut_list_like_labelsrs+1XF &!F +F1r2z kwargs,msg duplicatesdropzBin edges must be uniqueraiser|z(invalid value for 'duplicates' parameterc(gd}|2tjt|5t|dfi|dddyt|dfi|}t t ddt ddg}t j|j|y#1swYyxYw)N)rrrrrrrAr?rArHr) rBrCrDrrrr(rKr#)kwargsrr%r.r<s r0test_qcut_duplicates_binrs#F  ]]:S 1 &  %f % & &fa*6* (61"5x1~!FG f//:  & &s BBzdata,start,end))"@gsh|!@r)rHr)"gn"rlengthrrFc,t|g|z}t|d|}|@tt||g|zd}t|j t d}ntdg|zt j}tj||y) Nrr5r')closedTrTrdtype) rrrrrurrintpr(rv) rZstartendrr+rwr.rVr<s r0test_single_quantilers $& !C #q (F ~!8E3#7"86"A'R )$++,rs#agg,r2)idsc|jj|}td|j|}t|d|z tj |dt z g|j}t|dt z tj |dg|j}tj||}tt|d}t|d}tj||y)Nr)unitrrrTrT)dtas_unitr rrrPrrr from_arraysrrr(rv)rwrtdr$r'rVr<r.s r0 test_qcut_natrs &&.. C 14 ( ( .B 3q6B;A7syy ID CFSUNBFFCF3399 EE))$6Ik)T:;H #q\F68,r2binsrc d}ttdd|}t||}ttt t d|t d|t t d|t d|t t d|t d |gj td }tj||y) Nz US/Eastern20130101rA)periodstzz2012-12-31 23:59:59.999999999)rz2013-01-01 16:00:00z2013-01-02 08:00:00z2013-01-03 00:00:00TrT) rr rrrr rurr(rv)rrrwr.r<s r0test_datetime_tz_qcutrs B Jb9 :C #t_F="E3;3;3;3;3;  " f d +,# $68,r2zarg,expected_bins1day)r)z1 daysrz3 days)z 2018-01-01z 2018-01-02z 2018-01-03cht|}t|dd\}}tj||y)NrTr)rrr(rK)arg expected_binsrwr. result_binss r0test_date_like_qcut_binsrs0 +CsAt4FK+}5r2rprqz box, comparec|gddz}|gddz}t||d}t||d}|||y)N)rrrrrr4)FTTFTr)r)r)rboxcompare data_expected data_resultr<r.s r0test_qcut_bool_coercion_to_intrsI",-M6;)= >CuuC!H #q\FCJJu%q)H1r2)7r[numpyrrBpandasrrrrrrrr r r r r rrrpandas._testing_testingr(pandas.api.typesrpandas.tseries.offsetsrr1r9r=rFrMrRrWrmr{mark parametrizerlistrrrrrrlinspacerrrvrsr) assert_equalrrrEr2r0rsW   -&3$(20 4#22 %#34'5'OT%(^#DE'F' +otDE eAhY=>22  & '(  "<=   JK  ; ;SAq6*D%=1 -2+ - }j#z:;<~xh789   - -![R[[Aq%9!:;-<-6 FA . 9 : z1 - D E  6 6!Q( ''( 2../ r)j)2*2r2