zmc
2023-12-22 9fdbf60165db0400c2e8e6be2dc6e88138ac719a
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
U
¬ý°dNã@sŠddlZddlZddlZddlmZddlmZmZm    Z    m
Z
m Z m Z ddl mZddlmZGdd„dƒZGdd„dƒZGd    d
„d
ƒZdS) éN)ÚPY311)Ú CategoricalÚCategoricalIndexÚ    DataFrameÚIndexÚSeriesÚ StringDtype)Úrecode_for_categoriesc@s6eZdZdd„Zdd„Zdd„Zej ddd    d
d gdd    gg¡d d „ƒZ    dd„Z
dd„Z dd„Z ej ddgdddgddddgg¡dd„ƒZ dd„Zdd„Zdd„Zd d!„Zej d"dddgddgddgfdddgddgddgfdddgddgddgfdddgddgddgfdddgddgddgfdddgddgddgfdddgddgddgfdddgddgddgfdddgddgdgfdddgddgdgfdddgddgdgfdddgddgdgfdddgddgdd#gfg ¡ej d$d%d&g¡d'd(„ƒƒZd)d*„Zd+d,„Zd-d.„Zej d/dgdejgdddgg¡d0d1„ƒZd2d3„Zd4S)5ÚTestCategoricalAPIcCsØttdƒdd}t |jtdddgƒ¡|jr2t‚ttdƒtdƒdd}t |jtdddgƒ¡|jrjt‚ttdƒd    d}t |jtdddgƒ¡|jsœt‚ttdƒtdƒd    d}t |jtdddgƒ¡|jsÔt‚dS)
NZacbF©ÚorderedÚaÚbÚcZbca©Ú
categoriesr T)rÚlistÚtmÚassert_index_equalrrr ÚAssertionError)ÚselfZcat1Úcat2Zcat3Zcat4©rú_d:\z\workplace\vscode\pyvenv\venv\Lib\site-packages\pandas/tests/arrays/categorical/test_api.pyÚtest_ordered_apis
 
 
z#TestCategoricalAPI.test_ordered_apic    Cs¨tddddgdd}| ¡}|jr&t‚| ¡}|js8t‚| d¡jsHt‚| d¡jrXt‚tr`dnd}tjt    |d     d|_W5QRXtjt    |d     d|_W5QRXdS)
Nr rrTr Fz8property 'ordered' of 'Categorical' object has no setterúcan't set attribute©Úmatch)
rZ as_unorderedr rZ
as_orderedÚ set_orderedrÚpytestÚraisesÚAttributeError)rÚcatrÚmsgrrrÚtest_set_ordered's
 
ÿýz#TestCategoricalAPI.test_set_orderedcCsÎtddddgƒ}| dddg¡}t | ¡tjddddgtjd¡t |j    t
dddgƒ¡tjddddgtj d}t | ¡|¡t
dddgƒ}t |j    |¡| dd    „¡}td
d d d
gƒ}t  ||¡dS) Nr rrééé©ZdtypecSs| ¡S)N)Úupper)ÚxrrrÚ<lambda>Móz;TestCategoricalAPI.test_rename_categories.<locals>.<lambda>ÚAÚBÚC) rÚrename_categoriesrÚassert_numpy_array_equalÚ    __array__ÚnpÚarrayÚint64rrrÚobject_Úassert_categorical_equal)rr"ÚresZexp_catÚresultÚexpectedrrrÚtest_rename_categories<sÿz)TestCategoricalAPI.test_rename_categoriesÚnew_categoriesr%r&r'éc    Cs<tddddgƒ}d}tjt|d| |¡W5QRXdS)Nr rrzKnew categories need to have the same number of items as the old categories!r)rrr Ú
ValueErrorr0©rr<r"r#rrrÚ*test_rename_categories_wrong_length_raisesQs
ÿz=TestCategoricalAPI.test_rename_categories_wrong_length_raisescCsBtddgƒ}| tddgddgd¡}tddgƒ}t ||¡dS)Nr rrr%©Úindex)rr0rrr7)rrr9r:rrrÚtest_rename_categories_series[s  z0TestCategoricalAPI.test_rename_categories_seriesc    Cstddddgƒ}| ddddd    œ¡}tddddgƒ}t |j|¡tddddgƒ}| ddd
œ¡}tddddgƒ}t |j|¡tddddgƒ}| ddddd d d œ¡}tddddgƒ}t |j|¡tddddgƒ}| dddœ¡}tddddgƒ}t |j|¡dS)Nr rrÚdr=r'r&r%)r rrrD)r réé)r rrrDÚeÚf)rHÚg)rr0rrrr)rr"r8r:rrrÚtest_rename_categories_dictbs z.TestCategoricalAPI.test_rename_categories_dictcCsdtddddgdd}| ¡}tddddgdddgdd}| dddg¡}t ||¡t ||¡dS©Nr rrTr r)rÚcopyÚreorder_categoriesrr7©rr"ÚoldÚnewr8rrrÚtest_reorder_categories}s
ÿ z*TestCategoricalAPI.test_reorder_categoriesr rrDrc    Cs@tddddgdd}d}tjt|d| |¡W5QRXdS)Nr rrTr z=items in new_categories are not the same as in old categoriesr)rrr r>rMr?rrrÚtest_reorder_categories_raisesŠs    z1TestCategoricalAPI.test_reorder_categories_raisescCs tddddgdd}| ¡}tddddgddddgdd}| d¡}t ||¡t ||¡| dg¡}t ||¡t ||¡ttdƒdd}ttdƒtd    ƒdd}| tdd
gƒ¡}t ||¡| t dd
g¡¡}t ||¡| t    dd
gƒ¡}t ||¡| dd
g¡}t ||¡dS) Nr rrTr rDrÚabcZabcderG)
rrLÚadd_categoriesrr7rrr3r4r)rr"rOrPr8r:rrrÚtest_add_categories˜s.
 
ÿ
        z&TestCategoricalAPI.test_add_categoriesc    CsHtddddgdd}t d¡}tjt|d| dg¡W5QRXdS)    Nr rrrDTr z5new categories must not include old categories: {'d'}r)rÚreÚescaperr r>rT)rr"r#rrrÚ#test_add_categories_existing_raises´s
z6TestCategoricalAPI.test_add_categories_existing_raisescCsÌttddgddƒ}tdgdd}| |¡}ttddgddtdddgddd}t ||¡ttdddgtƒdƒ}td    gtƒd}| |¡}ttdddgtƒdtddd    gtƒdd}t ||¡dS)
Nr%r&ZInt64r(r=©rr rrD)rrrTrr7r)rr"Zserr9r:rrrÚ,test_add_categories_losing_dtype_information»s 
ÿ 
þz?TestCategoricalAPI.test_add_categories_losing_dtype_informationc        Cstddddgdd}tdddgƒ}tjddddgtjd}| dddg¡}| dddg¡}t |j|¡t     | 
¡|¡tdddgƒ}t |j|¡t     | 
¡|¡tddddgdd}| dg¡}t     |j tjddddgtj d¡| ddd    g¡}t     |j tjdd
ddgtj d¡t |jtddd    gƒ¡| dddd    g¡}tdddd    gƒ}t |j|¡td
d d d d
gd
d d d gdd}t     |j tjdd
d d dgtj d¡t |jtd
d d d gƒ¡tjd
d d d d
gtjd}t     t |¡|¡| d d d d
g¡}t     |j tjd d d
dd gtj d¡t |jtd d d d
gƒ¡tjd
d d d d
gtjd}t     t |¡|¡| ¡d ksxt‚| ¡d
ksŠt‚|jd d d d
gdd}|jr¬t‚t     t |¡t |¡¡| d¡ d d d d
g¡}|jrèt‚t     t |¡t |¡¡dS)Nr rrTr r(réÿÿÿÿrDr%r&r'r=rF)rrr3r4r6Úset_categoriesrrrr1r2ÚcodesÚint8Ú_codesr5ZasarrayÚminrÚmaxr r)    rr"Zexp_categoriesZ
exp_valuesr8Zexp_categories_backrÚexpÚc2rrrÚtest_set_categoriesÎsJ "" $$  z&TestCategoricalAPI.test_set_categoriesz"values, categories, new_categoriesrGr TFcCs4t||ƒ}t|||ƒ}|j||d}t ||¡dS)Nr )rr\rr7)rÚvaluesrr<r rr:r9rrrÚtest_set_categories_manys
 z+TestCategoricalAPI.test_set_categories_manycCs:tddgƒ}|jdgdd}tdtjgƒ}t ||¡dS)Nr-r.T)Úrename)rr\r3Únanrr7)rr"r9r:rrrÚtest_set_categories_rename_less0s z2TestCategoricalAPI.test_set_categories_rename_lesscCs¤tdddgddddgd}| ddddg¡tdddgtdƒd}t ||¡tdddgddddgd}|jddddgdd    tdddgtdƒd}t ||¡dS)
Nr rrrDrYrGZacdeT)Zfastpath)rZ_set_categoriesrrr7)rr"r:rrrÚtest_set_categories_private7s z.TestCategoricalAPI.test_set_categories_privatecCs‚tddddgdd}| ¡}tddtjdgddgdd}| d¡}t ||¡t ||¡| dg¡}t ||¡t ||¡dSrK)rrLr3rhÚremove_categoriesrr7rNrrrÚtest_remove_categoriesCs
    z)TestCategoricalAPI.test_remove_categoriesÚremovalsc    Cs@tdddgƒ}t d¡}tjt|d| |¡W5QRXdS)Nr rz-removals must all be in old categories: {'c'}r)rrVrWrr r>rk)rrmr"ÚmessagerrrÚtest_remove_categories_raisesPs
z0TestCategoricalAPI.test_remove_categories_raisesc
    CsÞtdddddgdddddgd}tdddddgƒ}tddddgƒ}t |j|¡| ¡}t |j|¡t |j|¡tdddtjgdddddgd}| ¡}t |jtt dddg¡ƒ¡tjddd    d
gtj    d }t 
|j |¡t |j|¡d tjd dd d tjg}t|t dƒd}| ¡}t |jtdd d gƒ¡tjd    d
dddd    d
gtj    d }t 
|j |¡|  ¡|ksrt‚t dƒ}    tj |    ddd    …d¡ d¡}tj|tj t|ƒd¡<t||    d}| ¡}|  ¡|  ¡ksÚt‚dS)Nr rrrDrGrYrr%r&r[r(ÚFÚDr.ZABCDEFG)rerÚabcdefghijklmnopqrstuvwxyzi'Úobjectéd)rrrrrZremove_unused_categoriesr3rhr4r^r1r]rÚtolistrÚrandomÚchoiceZastypeÚlen)
rrZexp_categories_allZexp_categories_droppedr8Z    exp_codesÚvalr"ÚoutÚalpharrrÚtest_remove_unused_categoriesXs4   z0TestCategoricalAPI.test_remove_unused_categoriesN)Ú__name__Ú
__module__Ú __qualname__rr$r;rÚmarkÚ parametrizer@rCrJrQrRrUrXrZrdrfrirjrlr3rhror|rrrrr
sZ
     
ýþ
Bìþ    
r
c@seZdZdd„ZdS)ÚTestCategoricalAPIWithFactorc Csz| ¡}|jst‚tdddgd|jd}tdddgdd    dgd
œ|d }t ||¡| ¡}| dddd g¡}| ¡}tt    d ƒ|jdd}tddddgdd    ddgd
œ|d }t ||¡t
dddddddddddg ƒ}| ¡}tdddg|jdd}tdddgdddgd
œ|d }t ||¡t
t j dddgƒ}| ¡}tdddgd    dd    gd
œtddt j gddgddd }t ||¡dS)Nr rrr)Únamer r'r&gØ?gÐ?)ÚcountsZfreqsrArDZabcd)r rƒrr%rEg]tÑEÝ?gtÑE]tÑ?gà?)rrƒ) Zdescriber rrrrZassert_frame_equalrLr\rrr3rh)rZfactorÚdescZ    exp_indexr:r"rrrÚ test_describe}sX
ÿÿ ÿþ þ 
ÿþz*TestCategoricalAPIWithFactor.test_describeN)r}r~rr†rrrrr‚|sr‚c@sŒeZdZdd„Zej dddgddgddgddgfddgddgddgddgfddgddgddgddgfddgddgddgddgfddddgddgdddgddddgfddd    d    gdddgddgddd
d
gfddd
gdddgdddgddd
gfddd
gdddgdgd
dd
gfddd
gdddgd gd
d
d
gfddd
gdddggd
d
d
gfd
d
ggddgd
d
gfddgddgddgddgfg ¡d d „ƒZdd„ZdS)ÚTestPrivateCategoricalAPIc    Cstddddtjgƒ}tjdddddgdd    }t |j|¡trBd
nd }tj    t
|d  tjdddddgdd    |_W5QRX|j}tj    t d d d|d<W5QRXd|d<tjdddddgdd    }t |j|¡d|j d<tjdddddgdd    }t |j|¡dS)Nr rrrr%r&r[r^r(z6property 'codes' of 'Categorical' object has no setterrrz#assignment destination is read-onlyr=) rr3rhr4rr1r]rrr r!r>r_)rrrbr#r]rrrÚtest_codes_immutable¯s$ÿý$
z.TestPrivateCategoricalAPI.test_codes_immutablezcodes, old, new, expectedrr%r rrr&r[rDcCsLtj|tjd}tj|tjd}t|ƒ}t|ƒ}t|||ƒ}t ||¡dS)Nr()r3Z
asanyarrayr^rr    rr1)rr]rOrPr:r9rrrÚtest_recode_to_categoriesÍs  z3TestPrivateCategoricalAPI.test_recode_to_categoriescCsRd}t |¡}t|ƒ}tj|dddtjd}t|ƒ}t|||ƒ}t ||¡dS)Nièr%r[r()r3ZarangerÚint16r    rr1)rÚNr]rOr:rPr9rrrÚtest_recode_to_categories_largeæs
 z9TestPrivateCategoricalAPI.test_recode_to_categories_largeN)    r}r~rrˆrr€rr‰rŒrrrrr‡®s&$$"ôþ
r‡)rVÚnumpyr3rZ pandas.compatrZpandasrrrrrrZpandas._testingZ_testingrZpandas.core.arrays.categoricalr    r
r‚r‡rrrrÚ<module>s    j2