zmc
2023-08-08 e792e9a60d958b93aef96050644f369feb25d61b
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
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
U
­ý°d'{ã@sœddlZddlZddlmZddlZddlmZmZm    Z    m
Z
m Z m Z ddl mZejdd„ƒZGdd„dƒZej dd    d
g¡ej d d    d
g¡d d „ƒƒZdS)éN)Úis_categorical_dtype)ÚCategoricalIndexÚ    DataFrameÚIndexÚ
MultiIndexÚSeriesÚcrosstabcCs‚tdddddddddddg dddddddddddg dddddddddddg tj d¡tj d¡tj d¡dœƒ}tj||gd    d
S) NÚfooÚbarÚoneÚtwoÚdullÚshinyé )ÚAÚBÚCÚDÚEÚFT)Z ignore_index)rÚnpÚrandomÚrandnÚpdÚconcat)Údf©rúYd:\z\workplace\vscode\pyvenv\venv\Lib\site-packages\pandas/tests/reshape/test_crosstab.pyrsVõõõ
 
 
Öÿ/rc@s$eZdZdd„Zdd„Zej dej    e
e g¡dd„ƒZ dd    „Z d
d „Zd d „Zdd„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd„Zd d!„Zd"d#„Zd$d%„Zd&d'„Zd(d)„Zd*d+„Zd,d-„Zej d.d/d0gd1d2gg¡d3d4„ƒZ d5d6„Z!d7d8„Z"d9d:„Z#d;d<„Z$d=d>„Z%d?d@„Z&dAS)BÚ TestCrosstabcCsFt|d|dƒ}| ddg¡ ¡ ¡}t || d¡ tj    ¡¡dS)Nrrr)
rÚgroupbyÚsizeÚunstackÚtmÚassert_frame_equalÚfillnaÚastyperÚint64©ÚselfrÚresultÚexpectedrrrÚtest_crosstab_singleGsz!TestCrosstab.test_crosstab_singlecCs®t|d|d|dgƒ}| dddg¡ ¡}| d¡ d¡ d¡ tj¡}t     ||¡t|d|dg|dƒ}| dddg¡ ¡}| d¡ d¡ tj¡}t     ||¡dS)Nrrrr)
rrr r!r$r%rr&r"r#r'rrrÚtest_crosstab_multipleLs z#TestCrosstab.test_crosstab_multipleÚboxcCs
|tjjddddƒ}|tjjddddƒ}|tjjddddƒ}t|||dœƒ}t|||gdgd    d
}t|d|d |d gƒ}t ||¡t||g|dgd    d }t|d |d g|dƒ}t ||¡t||ƒ}t|d|d ƒ}dg|j_dg|j    _t ||¡dS)Nrééd©r éé
©ÚaÚbÚcr4©r5r6)ÚrownamesÚcolnamesr5r6)r9r8Úrow_0Úcol_0)
rrÚrandintrrr"r#ÚindexÚnamesÚcolumns)r(r-r4r5r6rr)r*rrrÚtest_crosstab_ndarrayWs  
 
 
z"TestCrosstab.test_crosstab_ndarraycCs°tdddgdddgd}tdddddgdddd    d
gd}tjdddgtjd }tddgddggtddgd d tddgdd d}t||ƒ}t ||¡t||ƒ}t ||¡dS)Nrér4r5r6©r=r1éÚdÚf©Údtyper:©Únamer;©r=r?)    rrÚarrayr&rrrr"r#)r(r4r5r6r*r)rrrÚtest_crosstab_non_alignedos ý
 
z&TestCrosstab.test_crosstab_non_alignedc CsPtjjdddd}tjjdddd}tjjdddd}t|||dœƒ}t|||gdgd    d
d }|jjd ksnt‚|jjd dgks‚t‚|d}|     dg¡ 
¡  d¡}t t |ƒgtdgddd}t ||g¡}d|_t ||¡|jd}    |     d dg¡ 
¡  d¡}
t |
t t |ƒgdgdg¡}
d|
_|
 |    j¡}
|
 d¡  tj¡}
t |    |
¡dS)Nrér/r0r1r.r3r4r7T)r8r9Úmargins©r4r5r6©ÚAllÚÚi8rQrHrB)rrr<rrr=r>ÚAssertionErrorr?rr r%rÚlenrrrrIr"Úassert_series_equalÚlocÚreindexr$r&) r(r4r5r6rr)Úall_colsÚexp_colsÚ
exp_marginÚall_rowsÚexp_rowsrrrÚtest_crosstab_marginss( 
 z"TestCrosstab.test_crosstab_marginsc
Cs tjjdddd}tjjdddd}tjjdddd}t|||dœƒ}t|||gdgd    d
d d }|jjd kspt‚|jjddgks„t‚|d}|     dg¡ 
¡  d¡}t t |ƒgtd gddd}t ||g¡}d|_t ||¡|jd }    |     ddg¡ 
¡  d¡}
t |
t t |ƒgdgdg¡}
d |
_|
 |    j¡}
|
 d¡  tj¡}
t |    |
¡d} ddddgfD]:} tjt| d t|||gdgd    d
| d W5QRXq`dS)NrrMr/r0r1r.r3r4r7TÚTOTAL)r8r9rNÚ margins_namerOr5r6)r_rRrSrHrBz&margins_name argument must be a stringiš©Úmatch)rrr<rrr=r>rTr?rr r%rrUrrrrIr"rVrWrXr$r&ÚpytestÚraisesÚ
ValueError) r(r4r5r6rr)rYrZr[r\r]Úmsgr`rrrÚ%test_crosstab_margins_set_margin_nameŸsLú     
  úz2TestCrosstab.test_crosstab_margins_set_margin_namecCsœtjjdddd}tjjdddd}tjjdddd}tj d¡}t||g||tjddgd    gd
}t||||d œƒ}|jd ddgd    tjd }t     ||¡dS)NrrMr/r0r1r.r    r
Úbaz)Úaggfuncr8r9)r    r
rhÚvaluesrj)r=r?ri)
rrr<rrÚsumrZ pivot_tabler"r#)r(r4r5r6rjÚtablerr*rrrÚtest_crosstab_pass_valuesÑs( ÿÿz&TestCrosstab.test_crosstab_pass_valuescCsœtjdddddddgtd}tjdddddddgtd}tjdddddddgtd}t|||gdgd    d
gd d }tjd dddgd    d
gd}t |j|¡dS)Nr    r
rFr r r rr4r5r6F)r8r9Údropna)r r )r r)r r )r r©r>)    rrKÚobjectrrÚ from_tuplesr"Zassert_index_equalr?)r(r4r5r6ÚresÚmrrrÚtest_crosstab_dropnaâsÿ
þz!TestCrosstab.test_crosstab_dropnacCsjtdddgdddgd}tdddgdddgd}t||ƒ}ttgdd    d
tgdd d
d }t ||¡dS) NrAér1rBrCr.ér&r:©rGrIr;rJ)rrrrr"r#)r(Ús1Ús2Úactualr*rrrÚtest_crosstab_no_overlapðs
  þz%TestCrosstab.test_crosstab_no_overlapcCs”tdddddtjgddddddgdœƒ}t|j|jddd}tdddgdddgddd    ggƒ}td
d d gd d|_tddd gdd|_t     
||¡dS)NrArur1rC©r4r5T©rNrnrr.çð?ç@rQr4rHr5© rrÚnanrr4r5rr=r?r"r#©r(rrzr*rrrÚtest_margin_dropnaþs ( zTestCrosstab.test_margin_dropnacCsœtdtjtjtjdtjgdtjddddgdœƒ}t|j|jddd}tdddgdddgdddggƒ}td    d
d gd d |_tddd gdd |_t     
||¡dS)NrArur1rCr|Tr}rr~rrQr4rHç@ç@r5r€r‚rrrÚtest_margin_dropna2
s*ÿ z TestCrosstab.test_margin_dropna2cCsštdtjtjtjtjdgddddddgdœƒ}t|j|jddd}tdddgdddgdddggƒ}td    d
d gd d |_tddd gdd |_t     
||¡dS)NrArur1rCr|Tr}rr~rrQr4rHr5r€r‚rrrÚtest_margin_dropna3s(ÿ z TestCrosstab.test_margin_dropna3cCs”tdddddtjgddddddgdœƒ}t|j|jddd}tdd    dgdddgddd
ggƒ}td d d gdd|_tddd gdd|_t     
||¡dS)NrArur1rCr|TFr}rrvr~rrQr4rHr5r€r‚rrrÚtest_margin_dropna4s ( z TestCrosstab.test_margin_dropna4cCsœtdtjtjtjdtjgdtjddddgdœƒ}t|j|jddd}tdd    dgd    ddgddd
ggƒ}td d d gdd|_tddd gdd|_t     
||¡dS)NrArur1rCr|TFr}rrvr~rrQr4rHr„r…r5r€r‚rrrÚtest_margin_dropna5)s*ÿ z TestCrosstab.test_margin_dropna5cCs*tjdddddddgtd}tjdddddtjdgtd}tjdddddddgtd}t|||gdgd    d
gd d d }tjdddddgdddddggd    d
gd}tdddddgdddddgdddddgg|d}tdddgdd|_    t
  ||¡t||g|dd    gd
gd d d }tjdddddgdddddggdd    gd}tdddgdddgdddgdddgdddgg|d}tdddgd
d|_ t
  ||¡t||g|dd    gd
gd d d }tjdddddgdddddggdd    gd}tdddgdddgdddgdddgdddgg|d}tdddgd
d|_ t
  ||¡dS)Nr    r
rFr r r rr4r5r6TF)r8r9rNrnrQrRrorArrur.r1rM)r?rHrBrv) rrKrprrrÚ from_arraysrrr=r"r#r?)r(r4r5r6rzrsr*rrrÚtest_margin_dropna63s|ÿÿ  þû&ÿ ÿþ*ÿ ÿþ*ÿz TestCrosstab.test_margin_dropna6c
Csntdddddgdddddgddtjddgdœƒ}tddgdd}tddgdd}td    d
gd    d gg||d }td d
gddgg||d }tdd
gdd gg||d }t t|j|jdd|¡t t|j|jdd|¡t t|j|jdd|¡t t|j|jdd|¡t t|j|jddt|j|jdd¡t t|j|jd
dt|j|jdd¡td d
gddgdd ggtdddgdddtddgdddd }tdd
d    gdd dggtddgdddtdddgdddd }td    d
d    gd    d dgdd dggtdddgdddtdddgdddd }    t t|j|jddd|¡t t|j|jddd|¡t t|j|jddd|    ¡dS)NrArur1rCr3r4rHr5皙™™™™É?rç333333ã?rJr~çÐ?çè?çà?Úall©Ú    normalizeTr=r?皙™™™™Ù?rQrp©rIrGgš™™™™™é?©r“rN)    rrrrr"r#rr4r5)
r(rÚrindexZcindexZ full_normalZ
row_normalZ
col_normalZrow_normal_marginsZcol_normal_marginsZall_normal_marginsrrrÚtest_crosstab_normalizeds^*ÿþÿýýýÿÿÿz$TestCrosstab.test_crosstab_normalizecCsttdddddgdddddgddtjddgdœƒ}tt ddddg¡t ddddg¡gt ddddg¡ƒtdddgddd    gdddggtddd
gd d d tddd
gddd}t|j|j|jdddd}t     
||¡tdddddgdddddgddtjddgdœƒ}tdddgdddgdddggtddd
gd d d tddd
gdd d d}t|j|j|jtj ddd}t     
||¡dS)NrArur1rCr3rŽrrrrQr4rpr•r5rHrJÚcountr‘T)rir“rNçr”r) rrrrrKrr4r5r6r"r#rk)r(rZ norm_countsZ    test_caseZnorm_sumrrrÚtest_crosstab_normalize_arrays—sL*ÿ"ÿýÿ *ÿýÿz+TestCrosstab.test_crosstab_normalize_arrayscCstdddddgdddddgtjtjtjtjtjgdœƒ}tddgddggtddgddd    tddgd
d d }d D](}t|j|j|jd|d}t     ||¡qptdtjgddggtddgddd    tddgd
d d }|ræ|d 
d¡|d<t|j|j|jddd}t     ||¡dS)NrArur1rCr3ršr4r&r•r5rHrJ)Tr=r?r™)rjrir“F) rrrrrr4r5r6r"r#r%)r(Zusing_array_managerrÚemptyÚiZ
calculatedZnansrrrÚtest_crosstab_with_empties»s.  ýÿýýz'TestCrosstab.test_crosstab_with_emptiesc    Cs&tdddddgdddddgddtjddgdœƒ}d}tjt|dt|j|j|j    dW5QRXd    }tjt|dt|j|jtj
d
W5QRXd }tjt|dt|j|jd d W5QRXtjt|dt|j|jdd W5QRXd}tjt|dt|j|jdddW5QRXdS)NrArur1rCr3z)values cannot be used without an aggfunc.ra)rjz%aggfunc cannot be used without values)rizNot a valid normalize argumentZ42r’é*zNot a valid margins argumentr‘r–) rrrrcrdrerr4r5r6Zmean)r(rÚerrorrrrÚtest_crosstab_errorsÛs"*ÿz!TestCrosstab.test_crosstab_errorscCs¸tddddddgddddddgdœƒ}dddg}|d d    ¡j |¡|d<t|d
|dƒ}tdddgd
d }t||d dd }dddgdddgdddgg}t|||d}t ||¡dS)NZHondaZAcuraZTeslaZSedanZElectricZPickup)ÚMAKEÚMODELr£Úcategoryr¢rHF)Ú
categoriesZorderedrIrurrArJ)    rr%ÚcatZset_categoriesrrrr"r#)r(rr¥r)Úexpected_indexZexpected_columnsÚ expected_datar*rrrÚ%test_crosstab_with_categorial_columnsõs,þÿ
ÿÿz2TestCrosstab.test_crosstab_with_categorial_columnscCsptddddgddddgdd    d    d    d
d
d
gd tj d ¡tj d ¡d œƒ}t|d|dg|dgdtj|dd}tddddgddddggddddddddddg
ddddddddddg
gddgd}td
d    dgddd}t dddgdddgdddgdtj    dgtj    ddgdtj    dgtj    ddgdtj    dgtj    ddgdddgg
¡}t|||d}|d 
d¡|d<t   ||¡dS) Nr r Úthreervrrrér    r
rCé©rrrrrTr)r=r?rNrirjrQrRrArur1r©ÚlevelsÚcodesr>rprwrr…g(@g8@rJr&) rrrrrr rrrKrr%r"r#)r(rr)r§Zexpected_columnr¨r*rrrÚtest_crosstab_with_numpy_size sR 
 
ûÿ    û.ý
 
 
 
 
 
öÿÿz*TestCrosstab.test_crosstab_with_numpy_sizecCsÞttdƒdd}ttddƒdd}ttddƒdd}ttdƒdd}ddi}t||ƒ}t||ƒj|dd}t ||¡t||g|ƒ}t||g|ƒj|d    d
}t ||¡t|||gƒ}t|||gƒj|dd}t ||¡dS) Nr1r    rHrArCr
Zwaldo)r?Úaxisr)r=r²)rÚrangerZ rename_axisr"r#)r(rxZs2_fooZs2_barZs3Zmapperr)r*rrrÚtest_crosstab_duplicate_names8s
  z*TestCrosstab.test_crosstab_duplicate_namesr>r4r7r|r6cCsvttdƒ|dd}ttddƒ|dd}tjtdƒtddƒg|d}td|djddd}t||ƒ}t ||¡dS)    Nr1rrHrArCrorB)Z
fill_value)rr³rrŠr!rr"r#)r(r>rxryÚmir*r)rrrÚtest_crosstab_tuple_nameTs 
z%TestCrosstab.test_crosstab_tuple_namecCsjttdƒdd}ttdƒdd}ttjdddttdƒddttdƒddd}t||ƒ}t ||¡dS)Nr1r|rH)r6rDr&rFrJ)    rr³rrZeyerrr"r#)r(rxryr*r)rrrÚtest_crosstab_both_tuple_names_s ý
z+TestCrosstab.test_crosstab_both_tuple_namescCs˜tdddgdddgdœdd    d
gd }t|j|j|jgƒ}td    d
dgd d }tjdddgddgd}tdddgdddgdddgg||d}t     ||¡dS)Nr1rArur.rCrv)r5r4rrrrBr:rH)rArC)rurv)r1r.r5r4rorrJ)
rrr=r5r4rrrqr"r#)r(rr)Ze_idxZ    e_columnsr*rrrÚtest_crosstab_unsorted_orderls$ÿz)TestCrosstab.test_crosstab_unsorted_ordercCsÖtddddgddddgdd    d    d    d
d
d
gd d gd d gd dœƒ}t|j|jg|j|jtjddd}ttjd gddgt    d 
dd¡t d
d    dgdddt j dddddddd d!d"g
ddgd#d$}t ||¡dS)%Nr r rªrvrrrr«r    r
rCrr¬r­T)rjrir“rNérArFr2r1rQrprw)r r)r r)r r)rªr)rªr)rªr)r r)r r)r rrPro)r?r=)rrrrrrrrkrKÚfloatZreshaperrrqr"r#r'rrrÚ(test_crosstab_normalize_multiple_columnsvsF ûÿ    
ú ö óýz5TestCrosstab.test_crosstab_normalize_multiple_columnscCsTtdddddddddg    dddddddddg    dddddddddg    dddd    d    d
d d d g    dd
d d d d dddg    dœƒ}t|j|jg|jdddd}tddgddgddgddgddggƒ}tdddgdddggdddddgdddddggddgd|_tddgddd |_t     
||¡t|j|jg|jdddd}td!d"d#gd!d"d#gdd"dgdd$d#ggƒ}tdddgddd |_tddgddggddddgddddggddgd|_t     
||¡t|j|jg|jdddd}td%d%d#gd%d%d#gd#d%dgd&d#d#gdd'dggƒ}tdddgddd |_tdddgdddggdddddgdddddggddgd|_t     
||¡dS)(Nr    r
r r ÚsmallÚlargerArur1rCr.rvrMr«é    r­Tz    Sub-Totalr)rNr`r“rg]QJVUå?çF]kïSUÕ?ç³Ñ9?ÅqÜ?ç'c`Çá?rRrrr®rprrwrŽrŒç³Ñ9?ÅqÌ?r”ç³Ñ9?Åq¼?ršg#„GÇá?) rrrrrrr=rr?r"r#r'rrrÚtest_margin_normalizežsª÷ ñÿ
ÿ ÿý 
ÿüÿÿý 
ÿûÿ    ÿýz"TestCrosstab.test_margin_normalizecCstdddddddddg    dddddddddg    dddddddddg    dddd    d    d
d d d g    dd
d d d d dddg    dœƒ}t|j|j|jgdddd}tdddddgdddddgdddddggdddgd}tdddgdddggdddddgdddddggddgd |_d!|j_t     
||¡dS)"Nr    r
r r r¼r½rArur1rCr.rvrMr«r¾r­TÚmargin)r=r?rNr`r“rÃrÂršrÀrÁr¿r~rBrRrrrr®r) rrrrrrr?r=rIr"r#r'rrrÚ&test_margin_normalize_multiple_columnsïsL÷ ñÿ
û   ýúýz3TestCrosstab.test_margin_normalize_multiple_columnscCs®tddddgddddgddddgd    œd
d }t|d |d |dddd}tdtjddgddtjdgddddggtdddgdd dtddddgdd dd
d}t ||¡dS)NrArur1rCr.gð¿g$@r~)rrrZFloat64rFrrrrkT)rjrirNg"@g&@g4@rrQrprwr„r…g@)r=r?rG)rrrZNArr"r#r'rrrÚtest_margin_support_Floats*"þû  
ýø
z&TestCrosstab.test_margin_support_FloatN)'Ú__name__Ú
__module__Ú __qualname__r+r,rcÚmarkÚ parametrizerrKÚlistÚtupler@rLr^rgrmrtr{rƒr†r‡rˆr‰r‹r˜r›ržr¡r©r±r´r¶r·r¸r»rÄrÆrÇrrrrrFs> 
2 
 
 
13$ -
 
 
(Q-rÚa_dtyper¤r&Úb_dtypec Cs„tj d¡}t|jddddƒ |¡}t|jddddƒ |¡}t||ddd    }tdd
d gd d d}tdd
dd gd dd}dddgdddgdddgdddgg}t|||ƒ}    t     
||    ¡d|j |d
k<t |j ƒ}
|
rè| ¡j d
dksèt‚t||ddd    }dddgdddgdddgdddgg}t|||ƒ}    |
sP|    j ddd g}    |    d  d¡|    d <t|ƒt|    ƒt|    j ddd gƒt     
||    ¡dS)NiðvŒrr1r/r0ruTFr}rArQrpr;rwr:ééé"é é4é0éBr&)rrZ RandomStaterr<r%rrrr"r#rWrrGZ value_countsrTÚrepr) rÏrÐÚgr4r5r)r?r=rjr*Za_is_catrrrÚtest_categoricals7s, $  
$ rÚ)ÚnumpyrrcZpandas.core.dtypes.commonrZpandasrrrrrrrZpandas._testingZ_testingr"ZfixturerrrËrÌrÚrrrrÚ<module>s    
3v