hyb
2025-11-07 cadac0a99d87c53805a07f3b4ca7fd11e524fe4a
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
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
Ë
nñúhmãóœ—ddlmZddlmZmZddlZddlmZddlm    Z    ddl
m Z ddl m ZddlmZe    rdd    lmZmZmZmZdd
lmZmZdd lmZmZmZed «Zed «Zed«Zed«Z ddeeee ddœZ!ed«Z"ed«Z#dddee"e#ddœZ$ed«Z%d9d„Z&d:d„Z'    d;            d<d„Z(Gd„de«Z)Gd„de)«Z*Gd „d!e)«Z+Gd"„d#«Z,Gd$„d%e,«Z-Gd&„d'e,«Z.Gd(„d)e«Z/Gd*„d+e/«Z0Gd,„d-e0«Z1Gd.„d/e/«Z2Gd0„d1e0e2«Z3Gd2„d3e/«Z4Gd4„d5e4«Z5Gd6„d7e4e2«Z6d=d8„Z7y)>é)Ú annotations)ÚABCÚabstractmethodN)Údedent)Ú TYPE_CHECKING©Ú
get_option)Úformat)Ú pprint_thing)ÚIterableÚIteratorÚMappingÚSequence)ÚDtypeÚ WriteBuffer)Ú    DataFrameÚIndexÚSeriesa    max_cols : int, optional
        When to switch from the verbose to the truncated output. If the
        DataFrame has more than `max_cols` columns, the truncated output
        is used. By default, the setting in
        ``pandas.options.display.max_info_columns`` is used.aR    show_counts : bool, optional
        Whether to show the non-null counts. By default, this is shown
        only if the DataFrame is smaller than
        ``pandas.options.display.max_info_rows`` and
        ``pandas.options.display.max_info_columns``. A value of True always
        shows the counts, and False never shows the counts.a     >>> int_values = [1, 2, 3, 4, 5]
    >>> text_values = ['alpha', 'beta', 'gamma', 'delta', 'epsilon']
    >>> float_values = [0.0, 0.25, 0.5, 0.75, 1.0]
    >>> df = pd.DataFrame({"int_col": int_values, "text_col": text_values,
    ...                   "float_col": float_values})
    >>> df
        int_col text_col  float_col
    0        1    alpha       0.00
    1        2     beta       0.25
    2        3    gamma       0.50
    3        4    delta       0.75
    4        5  epsilon       1.00
 
    Prints information of all columns:
 
    >>> df.info(verbose=True)
    <class 'pandas.core.frame.DataFrame'>
    RangeIndex: 5 entries, 0 to 4
    Data columns (total 3 columns):
     #   Column     Non-Null Count  Dtype
    ---  ------     --------------  -----
     0   int_col    5 non-null      int64
     1   text_col   5 non-null      object
     2   float_col  5 non-null      float64
    dtypes: float64(1), int64(1), object(1)
    memory usage: 248.0+ bytes
 
    Prints a summary of columns count and its dtypes but not per column
    information:
 
    >>> df.info(verbose=False)
    <class 'pandas.core.frame.DataFrame'>
    RangeIndex: 5 entries, 0 to 4
    Columns: 3 entries, int_col to float_col
    dtypes: float64(1), int64(1), object(1)
    memory usage: 248.0+ bytes
 
    Pipe output of DataFrame.info to buffer instead of sys.stdout, get
    buffer content and writes to a text file:
 
    >>> import io
    >>> buffer = io.StringIO()
    >>> df.info(buf=buffer)
    >>> s = buffer.getvalue()
    >>> with open("df_info.txt", "w",
    ...           encoding="utf-8") as f:  # doctest: +SKIP
    ...     f.write(s)
    260
 
    The `memory_usage` parameter allows deep introspection mode, specially
    useful for big DataFrames and fine-tune memory optimization:
 
    >>> random_strings_array = np.random.choice(['a', 'b', 'c'], 10 ** 6)
    >>> df = pd.DataFrame({
    ...     'column_1': np.random.choice(['a', 'b', 'c'], 10 ** 6),
    ...     'column_2': np.random.choice(['a', 'b', 'c'], 10 ** 6),
    ...     'column_3': np.random.choice(['a', 'b', 'c'], 10 ** 6)
    ... })
    >>> df.info()
    <class 'pandas.core.frame.DataFrame'>
    RangeIndex: 1000000 entries, 0 to 999999
    Data columns (total 3 columns):
     #   Column    Non-Null Count    Dtype
    ---  ------    --------------    -----
     0   column_1  1000000 non-null  object
     1   column_2  1000000 non-null  object
     2   column_3  1000000 non-null  object
    dtypes: object(3)
    memory usage: 22.9+ MB
 
    >>> df.info(memory_usage='deep')
    <class 'pandas.core.frame.DataFrame'>
    RangeIndex: 1000000 entries, 0 to 999999
    Data columns (total 3 columns):
     #   Column    Non-Null Count    Dtype
    ---  ------    --------------    -----
     0   column_1  1000000 non-null  object
     1   column_2  1000000 non-null  object
     2   column_3  1000000 non-null  object
    dtypes: object(3)
    memory usage: 165.9 MBz”    DataFrame.describe: Generate descriptive statistics of DataFrame
        columns.
    DataFrame.memory_usage: Memory usage of DataFrame columns.rz  and columnsÚ)ÚklassÚtype_subÚ max_cols_subÚshow_counts_subÚ examples_subÚ see_also_subÚversion_added_subaî    >>> int_values = [1, 2, 3, 4, 5]
    >>> text_values = ['alpha', 'beta', 'gamma', 'delta', 'epsilon']
    >>> s = pd.Series(text_values, index=int_values)
    >>> s.info()
    <class 'pandas.core.series.Series'>
    Index: 5 entries, 1 to 5
    Series name: None
    Non-Null Count  Dtype
    --------------  -----
    5 non-null      object
    dtypes: object(1)
    memory usage: 80.0+ bytes
 
    Prints a summary excluding information about its values:
 
    >>> s.info(verbose=False)
    <class 'pandas.core.series.Series'>
    Index: 5 entries, 1 to 5
    dtypes: object(1)
    memory usage: 80.0+ bytes
 
    Pipe output of Series.info to buffer instead of sys.stdout, get
    buffer content and writes to a text file:
 
    >>> import io
    >>> buffer = io.StringIO()
    >>> s.info(buf=buffer)
    >>> s = buffer.getvalue()
    >>> with open("df_info.txt", "w",
    ...           encoding="utf-8") as f:  # doctest: +SKIP
    ...     f.write(s)
    260
 
    The `memory_usage` parameter allows deep introspection mode, specially
    useful for big Series and fine-tune memory optimization:
 
    >>> random_strings_array = np.random.choice(['a', 'b', 'c'], 10 ** 6)
    >>> s = pd.Series(np.random.choice(['a', 'b', 'c'], 10 ** 6))
    >>> s.info()
    <class 'pandas.core.series.Series'>
    RangeIndex: 1000000 entries, 0 to 999999
    Series name: None
    Non-Null Count    Dtype
    --------------    -----
    1000000 non-null  object
    dtypes: object(1)
    memory usage: 7.6+ MB
 
    >>> s.info(memory_usage='deep')
    <class 'pandas.core.series.Series'>
    RangeIndex: 1000000 entries, 0 to 999999
    Series name: None
    Non-Null Count    Dtype
    --------------    -----
    1000000 non-null  object
    dtypes: object(1)
    memory usage: 55.3 MBzp    Series.describe: Generate descriptive statistics of Series.
    Series.memory_usage: Memory usage of Series.rz
.. versionadded:: 1.4.0
aÅ
    Print a concise summary of a {klass}.
 
    This method prints information about a {klass} including
    the index dtype{type_sub}, non-null values and memory usage.
    {version_added_sub}
    Parameters
    ----------
    verbose : bool, optional
        Whether to print the full summary. By default, the setting in
        ``pandas.options.display.max_info_columns`` is followed.
    buf : writable buffer, defaults to sys.stdout
        Where to send the output. By default, the output is printed to
        sys.stdout. Pass a writable buffer if you need to further process
        the output.
    {max_cols_sub}
    memory_usage : bool, str, optional
        Specifies whether total memory usage of the {klass}
        elements (including the index) should be displayed. By default,
        this follows the ``pandas.options.display.memory_usage`` setting.
 
        True always show memory usage. False never shows memory usage.
        A value of 'deep' is equivalent to "True with deep introspection".
        Memory usage is shown in human-readable units (base-2
        representation). Without deep introspection a memory estimation is
        made based in column dtype and number of rows assuming values
        consume the same memory amount for corresponding dtypes. With deep
        memory introspection, a real memory usage calculation is performed
        at the cost of computational resources. See the
        :ref:`Frequently Asked Questions <df-memory-usage>` for more
        details.
    {show_counts_sub}
 
    Returns
    -------
    None
        This method prints a summary of a {klass} and returns None.
 
    See Also
    --------
    {see_also_sub}
 
    Examples
    --------
    {examples_sub}
    có<—t|«d|j|«S)a»
    Make string of specified length, padding to the right if necessary.
 
    Parameters
    ----------
    s : Union[str, Dtype]
        String to be formatted.
    space : int
        Length to force string to be of.
 
    Returns
    -------
    str
        String coerced to given length.
 
    Examples
    --------
    >>> pd.io.formats.info._put_str("panda", 6)
    'panda '
    >>> pd.io.formats.info._put_str("panda", 4)
    'pand'
    N)ÚstrÚljust)ÚsÚspaces  úIH:\Change_password\venv_build\Lib\site-packages\pandas/io/formats/info.pyÚ_put_strr#%s€ô. ˆq‹6&5ˆ>× Ñ  Ó &Ð&ócóL—dD]}|dkr |d›|›d|›cS|dz}Œ|d›|›dS)a{
    Return size in human readable format.
 
    Parameters
    ----------
    num : int
        Size in bytes.
    size_qualifier : str
        Either empty, or '+' (if lower bound).
 
    Returns
    -------
    str
        Size in human readable format.
 
    Examples
    --------
    >>> _sizeof_fmt(23028, '')
    '22.5 KB'
 
    >>> _sizeof_fmt(23028, '+')
    '22.5+ KB'
    )ÚbytesÚKBÚMBÚGBÚTBg@z3.1fú z PB©)ÚnumÚsize_qualifierÚxs   r"Ú _sizeof_fmtr0?sQ€ð0/òˆØ Š<ؘ$Z Ð/¨q°°Ð4Ò 4Ø ˆv‰ ‰ðð$ˆZ˜Ð' sÐ +Ð+r$có —|€ td«}|S)z5Get memory usage based on inputs and display options.zdisplay.memory_usager)Ú memory_usages r"Ú_initialize_memory_usager3^s€ðÐÜ!Ð"8Ó9ˆ Ø Ðr$cóà—eZdZUdZded<ded<eedd„««Zeedd„««Zeedd„««Z    eedd    „««Z
edd
„«Z edd „«Z e                                        dd „«Z y )Ú    _BaseInfoaj
    Base class for DataFrameInfo and SeriesInfo.
 
    Parameters
    ----------
    data : DataFrame or Series
        Either dataframe or series.
    memory_usage : bool or str, optional
        If "deep", introspect the data deeply by interrogating object dtypes
        for system-level memory consumption, and include it in the returned
        values.
    úDataFrame | SeriesÚdataú
bool | strr2có—y)z¡
        Dtypes.
 
        Returns
        -------
        dtypes : sequence
            Dtype of each of the DataFrame's columns (or one series column).
        Nr,©Úselfs r"Údtypesz_BaseInfo.dtypesxór$có—y)ú!Mapping dtype - number of counts.Nr,r:s r"Ú dtype_countsz_BaseInfo.dtype_counts„r=r$có—y)úBSequence of non-null counts for all columns or column (if series).Nr,r:s r"Únon_null_countsz_BaseInfo.non_null_counts‰r=r$có—y)zœ
        Memory usage in bytes.
 
        Returns
        -------
        memory_usage_bytes : int
            Object's total memory usage in bytes.
        Nr,r:s r"Úmemory_usage_bytesz_BaseInfo.memory_usage_bytesŽr=r$cóH—t|j|j«›dS)z0Memory usage in a form of human readable string.ú
)r0rEr.r:s r"Úmemory_usage_stringz_BaseInfo.memory_usage_stringšs%€ô˜d×5Ñ5°t×7JÑ7JÓKÐLÈBÐOÐOr$có¨—d}|jrC|jdk7r4d|jvs$|jjj    «rd}|S)NrÚdeepÚobjectú+)r2r@r7ÚindexÚ_is_memory_usage_qualified)r;r.s  r"r.z_BaseInfo.size_qualifierŸsM€àˆØ × Ò Ø× Ñ  FÒ*ð
 × 1Ñ 1Ñ1Ø—y‘y—‘×AÑAÔCà%(NØÐr$có—y©Nr,)r;ÚbufÚmax_colsÚverboseÚ show_countss     r"Úrenderz_BaseInfo.render®s€ð     r$N©ÚreturnzIterable[Dtype]©rWúMapping[str, int]©rWú Sequence[int]©rWÚint©rWr©
rQúWriteBuffer[str] | NonerRú
int | NonerSú bool | NonerTrbrWÚNone)Ú__name__Ú
__module__Ú __qualname__Ú__doc__Ú__annotations__Úpropertyrr<r@rCrErHr.rUr,r$r"r5r5gsõ…ñ ð ÓØÓà Øò óóð ðØò0óóð0ðØòQóóðQðØò óóð ðòPóðPðò óð ðð ð%ð ðð     ð
ð  ð !ð  ð
ò óñ r$r5có®—eZdZdZ    d                     d d„Zed d„«Zedd„«Zedd„«Zedd„«Z    edd„«Z
edd    „«Z                                         dd
„Z y)Ú DataFrameInfoz0
    Class storing dataframe-specific info.
    Ncó2—||_t|«|_yrP©r7r3r2©r;r7r2s   r"Ú__init__zDataFrameInfo.__init__¿s€ð
 $ˆŒ    Ü4°\ÓBˆÕr$có,—t|j«SrP)Ú_get_dataframe_dtype_countsr7r:s r"r@zDataFrameInfo.dtype_countsÇs€ä*¨4¯9©9Ó5Ð5r$có.—|jjS)z
        Dtypes.
 
        Returns
        -------
        dtypes
            Dtype of each of the DataFrame's columns.
        ©r7r<r:s r"r<zDataFrameInfo.dtypesËs€ðy‰y×ÑÐr$có.—|jjS)zz
        Column names.
 
        Returns
        -------
        ids : Index
            DataFrame's column names.
        )r7Úcolumnsr:s r"ÚidszDataFrameInfo.ids×s€ðy‰yנѠРr$có,—t|j«S©z#Number of columns to be summarized.)Úlenrvr:s r"Ú    col_countzDataFrameInfo.col_countãs€ô4—8‘8‹}Ðr$có6—|jj«S)rB©r7Úcountr:s r"rCzDataFrameInfo.non_null_countsès€ðy‰y‰Ó Ð r$cóv—|jdk(}|jjd|¬«j«S)NrJT©rMrJ)r2r7Úsum©r;rJs  r"rEz DataFrameInfo.memory_usage_bytesís5€à× Ñ  FÑ*ˆØy‰y×%Ñ%¨D°tÐ%Ó<×@Ñ@ÓBÐBr$cóD—t||||¬«}|j|«y)N)ÚinforRrSrT)Ú_DataFrameInfoPrinterÚ    to_buffer©r;rQrRrSrTÚprinters      r"rUzDataFrameInfo.renderòs*€ô(ØØØØ#ô    
ˆð     ×ј#Õr$rP)r7rr2úbool | str | NonerWrcrXrV©rWrr\rZr_) rdrerfrgrorir@r<rvrzrCrErUr,r$r"rkrkºsâ„ñð+/ðCàðCð(ðCð
ó    Cðò6óð6ðò     óð     ðò    !óð    !ðòóððò!óð!ðòCóðCðð%ððð    ð
ð ð !ð ð
ôr$rkcó”—eZdZdZ    d
                    d d„Zdddddœ                                    d d„Zed d„«Zedd„«Zedd„«Z    edd    „«Z
y)Ú
SeriesInfoz-
    Class storing series-specific info.
    Ncó2—||_t|«|_yrPrmrns   r"rozSeriesInfo.__init__s€ð
!ˆŒ    Ü4°\ÓBˆÕr$)rQrRrSrTcó\—| td«‚t|||¬«}|j|«y)NzIArgument `max_cols` can only be passed in DataFrame.info, not Series.info)rƒrSrT)Ú
ValueErrorÚ_SeriesInfoPrinterr…r†s      r"rUzSeriesInfo.rendersA€ð Ð Üð5óð ô%ØØØ#ô
ˆð
    ×ј#Õr$có8—|jj«gSrPr|r:s r"rCzSeriesInfo.non_null_counts$s€à—    ‘    —‘Ó!Ð"Ð"r$có0—|jjgSrPrsr:s r"r<zSeriesInfo.dtypes(s€à—    ‘    × Ñ Ð!Ð!r$cóD—ddlm}t||j««S)Nr)r)Úpandas.core.framerrqr7)r;rs  r"r@zSeriesInfo.dtype_counts,s€å/ä*©9°T·Y±YÓ+?Ó@Ð@r$cóZ—|jdk(}|jjd|¬«S)z“Memory usage in bytes.
 
        Returns
        -------
        memory_usage_bytes : int
            Object's total memory usage in bytes.
        rJTr)r2r7rs  r"rEzSeriesInfo.memory_usage_bytes2s.€ð× Ñ  FÑ*ˆØy‰y×%Ñ%¨D°tÐ%Ó<Ð<r$rP)r7rr2rˆrWrcr_rZrVrXr\) rdrerfrgrorUrirCr<r@rEr,r$r"r‹r‹sȄñð+/ðCàðCð(ðCð
ó    Cð(,Ø#Ø#Ø#'ñ ð%ððð    ð
ð ð !ð ð
óð(ò#óð#ðò"óð"ðòAóðAð
ò    =óñ    =r$r‹có,—eZdZdZddd„Zedd„«Zy)Ú_InfoPrinterAbstractz6
    Class for printing dataframe or series info.
    Ncó”—|j«}|j«}|€tj}t    j
||«y)z Save dataframe info into buffer.N)Ú_create_table_builderÚ    get_linesÚsysÚstdoutÚfmtÚbuffer_put_lines)r;rQÚ table_builderÚliness    r"r…z_InfoPrinterAbstract.to_bufferDs<€à×2Ñ2Ó4ˆ Ø×'Ñ'Ó)ˆØ ˆ;Ü—*‘*ˆCÜ ×јS %Õ(r$có—y)z!Create instance of table builder.Nr,r:s r"r˜z*_InfoPrinterAbstract._create_table_builderLr=r$rP)rQr`rWrc)rWÚ_TableBuilderAbstract)rdrerfrgr…rr˜r,r$r"r–r–?s „ñô)ðò0óñ0r$r–có’—eZdZdZ            d                                     d d„Zed d„«Zedd„«Zedd„«Zed d„«Z    dd„Z
dd    „Z dd
„Z y)r„a{
    Class for printing dataframe info.
 
    Parameters
    ----------
    info : DataFrameInfo
        Instance of DataFrameInfo.
    max_cols : int, optional
        When to switch from the verbose to the truncated output.
    verbose : bool, optional
        Whether to print the full summary.
    show_counts : bool, optional
        Whether to show the non-null counts.
    Ncóš—||_|j|_||_|j|«|_|j |«|_yrP)rƒr7rSÚ_initialize_max_colsrRÚ_initialize_show_countsrT)r;rƒrRrSrTs     r"roz_DataFrameInfoPrinter.__init__asB€ðˆŒ    Ø—I‘IˆŒ    ØˆŒ Ø×1Ñ1°(Ó;ˆŒ Ø×7Ñ7¸ ÓDˆÕr$cóF—tdt|j«dz«S)z"Maximum info rows to be displayed.zdisplay.max_info_rowsé)r    ryr7r:s r"Úmax_rowsz_DataFrameInfoPrinter.max_rowsns€ôÐ1´3°t·y±y³>ÀAÑ3EÓFÐFr$cóF—t|j|jkD«S)zDCheck if number of columns to be summarized does not exceed maximum.)ÚboolrzrRr:s r"Úexceeds_info_colsz'_DataFrameInfoPrinter.exceeds_info_colsss€ôD—N‘N T§]¡]Ñ2Ó3Ð3r$cóX—tt|j«|jkD«S)zACheck if number of rows to be summarized does not exceed maximum.)rªryr7r¨r:s r"Úexceeds_info_rowsz'_DataFrameInfoPrinter.exceeds_info_rowsxs €ô”C˜Ÿ    ™    “N T§]¡]Ñ2Ó3Ð3r$có.—|jjSrx©rƒrzr:s r"rzz_DataFrameInfoPrinter.col_count}ó€ðy‰y×"Ñ"Ð"r$có<—|€td|jdz«S|S)Nzdisplay.max_info_columnsr§)r    rz)r;rRs  r"r¤z*_DataFrameInfoPrinter._initialize_max_cols‚s$€Ø Ð ÜÐ8¸$¿.¹.È1Ñ:LÓMÐ M؈r$cóT—|€%t|j xr |j «S|SrP)rªr«r­©r;rTs  r"r¥z-_DataFrameInfoPrinter._initialize_show_counts‡s0€Ø РܘD×2Ñ2Ð2ÒQ¸4×;QÑ;QÐ7QÓRÐ RàÐ r$có*—|jr!t|j|j¬«S|jdurt    |j¬«S|j
rt    |j¬«St|j|j¬«S)z[
        Create instance of table builder based on verbosity and display settings.
        ©rƒÚ with_countsF©rƒ)rSÚ_DataFrameTableBuilderVerboserƒrTÚ _DataFrameTableBuilderNonVerboser«r:s r"r˜z+_DataFrameInfoPrinter._create_table_buildersz€ð <Š<Ü0Ø—Y‘YØ ×,Ñ,ôð ð\‰\˜UÑ "Ü3¸¿¹ÔCÐ CØ × #Ò #Ü3¸¿¹ÔCÐ Cä0Ø—Y‘YØ ×,Ñ,ôð r$)NNN)
rƒrkrRrarSrbrTrbrWrcr\©rWrª)rRrarWr]©rTrbrWrª)rWÚ_DataFrameTableBuilder) rdrerfrgrorir¨r«r­rzr¤r¥r˜r,r$r"r„r„Qs®„ñ ð$ $Ø#Ø#'ð Eàð Eðð Eðð     Eð
!ð Eð
ó EðòGóðGðò4óð4ðò4óð4ðò#óð#óó
ô r$r„có<—eZdZdZ        d                            dd„Zdd„Zd    d„Zy)
raClass for printing series info.
 
    Parameters
    ----------
    info : SeriesInfo
        Instance of SeriesInfo.
    verbose : bool, optional
        Whether to print the full summary.
    show_counts : bool, optional
        Whether to show the non-null counts.
    Ncón—||_|j|_||_|j|«|_yrP)rƒr7rSr¥rT)r;rƒrSrTs    r"roz_SeriesInfoPrinter.__init__®s0€ð ˆŒ    Ø—I‘IˆŒ    ØˆŒ Ø×7Ñ7¸ ÓDˆÕr$có —|js |j€!t|j|j¬«St    |j¬«S)zF
        Create instance of table builder based on verbosity.
        rµr·)rSÚ_SeriesTableBuilderVerboserƒrTÚ_SeriesTableBuilderNonVerboser:s r"r˜z(_SeriesInfoPrinter._create_table_builder¹sB€ð <Š<˜4Ÿ<™<Ð/Ü-Ø—Y‘YØ ×,Ñ,ôð ô
1°d·i±iÔ@Ð @r$có —|€y|S)NTr,r³s  r"r¥z*_SeriesInfoPrinter._initialize_show_countsÅs€Ø Ð ØàÐ r$)NN)rƒr‹rSrbrTrbrWrc)rWÚ_SeriesTableBuilderr»)rdrerfrgror˜r¥r,r$r"rr¡sJ„ñ
ð $Ø#'ð        Eàð    Eðð    Eð!ð        Eð
 
ó     Eó
Aôr$rcó¼—eZdZUdZded<ded<edd„«Zedd„«Zedd„«Z    edd    „«Z
edd
„«Z edd „«Z edd „«Z dd „Zdd„Zdd„Zy)r¡z*
    Abstract builder for info table.
    ú    list[str]Ú_linesr5rƒcó—y)z-Product in a form of list of lines (strings).Nr,r:s r"r™z_TableBuilderAbstract.get_linesÔr=r$có.—|jjSrP©rƒr7r:s r"r7z_TableBuilderAbstract.dataØs€ày‰y~‰~Ðr$có.—|jjS)z*Dtypes of each of the DataFrame's columns.)rƒr<r:s r"r<z_TableBuilderAbstract.dtypesÜs€ðy‰y×ÑÐr$có.—|jjS)r?)rƒr@r:s r"r@z"_TableBuilderAbstract.dtype_countsás€ðy‰y×%Ñ%Ð%r$có@—t|jj«S)z Whether to display memory usage.)rªrƒr2r:s r"Údisplay_memory_usagez*_TableBuilderAbstract.display_memory_usageæs€ôD—I‘I×*Ñ*Ó+Ð+r$có.—|jjS)z/Memory usage string with proper size qualifier.)rƒrHr:s r"rHz)_TableBuilderAbstract.memory_usage_stringës€ðy‰y×,Ñ,Ð,r$có.—|jjSrP)rƒrCr:s r"rCz%_TableBuilderAbstract.non_null_countsðs€ày‰y×(Ñ(Ð(r$cór—|jjtt|j«««y)z>Add line with string representation of dataframe to the table.N)rÆÚappendrÚtyper7r:s r"Úadd_object_type_linez*_TableBuilderAbstract.add_object_type_lineôs!€à  ‰ ×Ñœ3œt D§I¡I›Ó/Õ0r$có~—|jj|jjj    ««y)z,Add line with range of indices to the table.N)rÆrÑr7rMÚ_summaryr:s r"Úadd_index_range_linez*_TableBuilderAbstract.add_index_range_lineøs%€à  ‰ ×ј4Ÿ9™9Ÿ?™?×3Ñ3Ó5Õ6r$cóâ—t|jj««Dcgc]\}}|›d|d›d‘Œ}}}|jj    ddj |«›«ycc}}w)z2Add summary line with dtypes present in dataframe.ú(Údú)zdtypes: z, N)Úsortedr@ÚitemsrÆrÑÚjoin)r;ÚkeyÚvalÚcollected_dtypess    r"Úadd_dtypes_linez%_TableBuilderAbstract.add_dtypes_lineüsq€ô/5°T×5FÑ5F×5LÑ5LÓ5NÓ.O÷
Ù"* # sˆsˆe1S˜G˜1Ò ð
Ðñ
ð      ‰ ×јX d§i¡iÐ0@Ó&AÐ%BÐCÕDùó
s§A+N©rWrÅ)rWr6rVrXrºr^rZ©rWrc)rdrerfrgrhrr™rir7r<r@rÍrHrCrÓrÖrár,r$r"r¡r¡Ìs®…ñð ÓØ
ƒOàò<óð<ðòóððò óð ðò&óð&ðò,óð,ðò-óð-ðò)óð)ó1ó7ôEr$r¡cóx—eZdZdZd d„Zd d„Zd d„Zed d„«Ze    dd„«Z
e    dd„«Z e    dd„«Z d d    „Z y
)r¼z
    Abstract builder for dataframe info table.
 
    Parameters
    ----------
    info : DataFrameInfo.
        Instance of DataFrameInfo.
    có—||_yrPr·©r;rƒs  r"roz_DataFrameTableBuilder.__init__s    €Ø#'ˆ    r$cóž—g|_|jdk(r|j«|jS|j«|jS)Nr)rÆrzÚ_fill_empty_infoÚ_fill_non_empty_infor:s r"r™z _DataFrameTableBuilder.get_linessE€ØˆŒ Ø >‰>˜QÒ Ø × !Ñ !Ô #ð{‰{Ðð × %Ñ %Ô '؏{‰{Ðr$có¼—|j«|j«|jjdt    |j
«j ›d«y)z;Add lines to the info table, pertaining to empty dataframe.zEmpty rGN)rÓrÖrÆrÑrÒr7rdr:s r"rèz'_DataFrameTableBuilder._fill_empty_infosD€à ×!Ñ!Ô#Ø ×!Ñ!Ô#Ø  ‰ ×јV¤D¨¯©£O×$<Ñ$<Ð#=¸RÐ@ÕAr$có—y©z?Add lines to the info table, pertaining to non-empty dataframe.Nr,r:s r"réz+_DataFrameTableBuilder._fill_non_empty_infor=r$có.—|jjS)z
DataFrame.rÉr:s r"r7z_DataFrameTableBuilder.data#ó€ðy‰y~‰~Ðr$có.—|jjS)zDataframe columns.)rƒrvr:s r"rvz_DataFrameTableBuilder.ids(s€ðy‰y}‰}Ðr$có.—|jjS)z-Number of dataframe columns to be summarized.r¯r:s r"rzz _DataFrameTableBuilder.col_count-r°r$cóT—|jjd|j›«y©z!Add line containing memory usage.zmemory usage: N©rÆrÑrHr:s r"Úadd_memory_usage_linez,_DataFrameTableBuilder.add_memory_usage_line2ó"€à  ‰ ×ј^¨D×,DÑ,DÐ+EÐFÕGr$N)rƒrkrWrcrârã)rWrr‰r\)rdrerfrgror™rèrrérir7rvrzrôr,r$r"r¼r¼so„ñó(óóBð òNóðNðòóððòóððò#óð#ôHr$r¼có —eZdZdZdd„Zdd„Zy)r¹z>
    Dataframe info table builder for non-verbose output.
    có¾—|j«|j«|j«|j«|jr|j «yyrì)rÓrÖÚadd_columns_summary_linerárÍrôr:s r"réz5_DataFrameTableBuilderNonVerbose._fill_non_empty_info<sL€à ×!Ñ!Ô#Ø ×!Ñ!Ô#Ø ×%Ñ%Ô'Ø ×ÑÔØ × $Ò $Ø × &Ñ &Õ (ð %r$cón—|jj|jjd¬««y)NÚColumns©Úname)rÆrÑrvrÕr:s r"røz9_DataFrameTableBuilderNonVerbose.add_columns_summary_lineEs&€Ø  ‰ ×ј4Ÿ8™8×,Ñ,°)Ð,Ó<Õ=r$Nrã)rdrerfrgrérør,r$r"r¹r¹7s„ñó)ô>r$r¹cóЗeZdZUdZdZded<ded<ded<d    ed
<eedd „««Zedd „«Z    dd „Z
dd„Z dd„Z edd„«Z edd„«Zdd„Zdd„Zdd„Zdd„Zdd„Zy)Ú_TableBuilderVerboseMixinz(
    Mixin for verbose info output.
    z  rÚSPACINGzSequence[Sequence[str]]Ústrrowsr[Úgross_column_widthsrªr¶có—y)ú.Headers names of the columns in verbose table.Nr,r:s r"Úheadersz!_TableBuilderVerboseMixin.headersSr=r$cóR—|jDcgc] }t|«‘Œc}Scc}w)z'Widths of header columns (only titles).)rry©r;Úcols  r"Úheader_column_widthsz._TableBuilderVerboseMixin.header_column_widthsXs €ð%)§L¡LÖ1˜S”C•Ò1Ð1ùÒ1s$có€—|j«}t|j|«Dcgc]
}t|Ž‘Œ c}Scc}w)zAGet widths of columns containing both headers and actual content.)Ú_get_body_column_widthsÚziprÚmax)r;Úbody_column_widthsÚwidthss   r"Ú_get_gross_column_widthsz2_TableBuilderVerboseMixin._get_gross_column_widths]sE€à!×9Ñ9Ó;Ðô˜d×7Ñ7Ð9KÓLö
àô ŠLò
ð    
ùò
s©;có‚—tt|jŽ«}|Dcgc]}td„|D««‘Œc}Scc}w)z$Get widths of table content columns.c3ó2K—|]}t|«–—Œy­wrP)ry)Ú.0r/s  r"ú    <genexpr>zD_TableBuilderVerboseMixin._get_body_column_widths.<locals>.<genexpr>hsèø€Ò(˜q”C˜—FÑ(ùs‚)Úlistr rr )r;Ústrcolsrs   r"r
z1_TableBuilderVerboseMixin._get_body_column_widthses4€ä+/´°T·\±\Ð0BÓ+CˆØ4;Ö<¨S”Ñ( CÔ(Õ(Ò<Ð<ùÒ<s <cóZ—|jr|j«S|j«S)z„
        Generator function yielding rows content.
 
        Each element represents a row comprising a sequence of strings.
        )r¶Ú_gen_rows_with_countsÚ_gen_rows_without_countsr:s r"Ú    _gen_rowsz#_TableBuilderVerboseMixin._gen_rowsjs+€ð × Ò Ø×-Ñ-Ó/Ð /à×0Ñ0Ó2Ð 2r$có—y©z=Iterator with string representation of body data with counts.Nr,r:s r"rz/_TableBuilderVerboseMixin._gen_rows_with_countsur=r$có—y©z@Iterator with string representation of body data without counts.Nr,r:s r"rz2_TableBuilderVerboseMixin._gen_rows_without_countsyr=r$c
óò—|jjt|j|j«Dcgc]\}}t ||«‘Œc}}«}|j j|«ycc}}wrP)rÿrÝr rrr#rÆrÑ)r;ÚheaderÚ    col_widthÚ header_lines    r"Úadd_header_linez)_TableBuilderVerboseMixin.add_header_line}sc€Ø—l‘l×'Ñ'ô*-¨T¯\©\¸4×;SÑ;SÓ)T÷ á%F˜Iô˜ Õ+ó ó
ˆ ð       ‰ ×ј;Õ'ùó  s¹A3
c
óø—|jjt|j|j«Dcgc]\}}t d|z|«‘Œc}}«}|j j|«ycc}}w)Nú-)rÿrÝr rrr#rÆrÑ)r;Úheader_colwidthÚgross_colwidthÚseparator_lines    r"Úadd_separator_linez,_TableBuilderVerboseMixin.add_separator_line†sm€ØŸ™×*Ñ*ô8;Ø×-Ñ-¨t×/GÑ/Gó8÷ á3O ^ô˜˜Ñ.°Õ?ó ó
ˆð      ‰ ×ј>Õ*ùó s¹A6
c ó—|jD]i}|jjt||j«Dcgc]\}}t ||«‘Œc}}«}|j j|«Œkycc}}wrP)rrÿrÝr rr#rÆrÑ)r;Úrowrr&Ú    body_lines     r"Úadd_body_linesz(_TableBuilderVerboseMixin.add_body_lines‘sr€Ø—<‘<ò    *ˆCØŸ ™ ×)Ñ)ô03°3¸×8PÑ8PÓ/Q÷á+˜˜^ô˜S .Õ1óóˆIð K‰K× Ñ ˜yÕ )ñ    *ùós¾A: c#ó<K—|jD]    }|›d–—Œ y­w)z7Iterator with string representation of non-null counts.z     non-nullN)rC)r;r}s  r"Ú_gen_non_null_countsz._TableBuilderVerboseMixin._gen_non_null_counts›s(èø€à×)Ñ)ò    &ˆEؐG˜9Ð%Ó %ñ    &ùs‚c#óHK—|jD]}t|«–—Œy­w)z5Iterator with string representation of column dtypes.N)r<r )r;Údtypes  r"Ú _gen_dtypesz%_TableBuilderVerboseMixin._gen_dtypes s$èø€à—[‘[ò    &ˆEܘuÓ%Ó %ñ    &ùó‚ "N©rWz Sequence[str]rZ©rWzIterator[Sequence[str]]rã©rWz Iterator[str])rdrerfrgrÿrhrirrrrr
rrrr"r(r,r.r1r,r$r"rþrþIs§…ñð€GˆSÓØ $Ó$Ø&Ó&ØÓà Øò=óóð=ðò2óð2ó
ó=ó
    3ðòLóðLðòOóðOó(ó    +ó*ó&ô
&r$rþcóf—eZdZdZ                        d d„Zd d„Zed d„«Zd d„Zdd„Z    dd„Z
dd„Z dd    „Z y
)r¸z:
    Dataframe info table builder for verbose output.
    có†—||_||_t|j««|_|j «|_yrP©rƒr¶rrrrr©r;rƒr¶s   r"roz&_DataFrameTableBuilderVerbose.__init__«ó7€ð ˆŒ    Ø&ˆÔÜ04°T·^±^Ó5EÓ0FˆŒ Ø26×2OÑ2OÓ2QˆÕ r$có—|j«|j«|j«|j«|j    «|j «|j «|jr|j«yyrì)    rÓrÖrør"r(r,rárÍrôr:s r"réz2_DataFrameTableBuilderVerbose._fill_non_empty_info¶sp€à ×!Ñ!Ô#Ø ×!Ñ!Ô#Ø ×%Ñ%Ô'Ø ×ÑÔØ ×ÑÔ!Ø ×ÑÔØ ×ÑÔØ × $Ò $Ø × &Ñ &Õ (ð %r$có*—|jrgd¢Sgd¢S)r)ú # ÚColumnúNon-Null Countr)r=r>r©r¶r:s r"rz%_DataFrameTableBuilderVerbose.headersÂs€ð × Ò Ú?Ð ?Ú)Ð)r$cóV—|jjd|j›d«y)NzData columns (total z
 columns):)rÆrÑrzr:s r"røz6_DataFrameTableBuilderVerbose.add_columns_summary_lineÉs#€Ø  ‰ ×ÑÐ1°$·.±.Ð1AÀÐLÕMr$c#óŽK—t|j«|j«|j««Ed{–—†y7Œ­wr)r Ú_gen_line_numbersÚ _gen_columnsr1r:s r"rz6_DataFrameTableBuilderVerbose._gen_rows_without_countsÌs<èø€äØ × "Ñ "Ó $Ø × Ñ Ó Ø × Ñ Ó ó
÷    
ò    
ús‚;A½A¾Ac#ó¬K—t|j«|j«|j«|j    ««Ed{–—†y7Œ­wr)r rCrDr.r1r:s r"rz3_DataFrameTableBuilderVerbose._gen_rows_with_countsÔsHèø€äØ × "Ñ "Ó $Ø × Ñ Ó Ø × %Ñ %Ó 'Ø × Ñ Ó ó    
÷    
ò    
ús‚A
AÁ AÁ Ac#óTK—t|j«D] \}}d|›–—Œy­w)z6Iterator with string representation of column numbers.r+N)Ú    enumeraterv)r;ÚiÚ_s   r"rCz/_DataFrameTableBuilderVerbose._gen_line_numbersÝs-èø€ä˜dŸh™hÓ'ò    ‰DˆAˆqؐaS'‹Mñ    ùs‚&(c#óHK—|jD]}t|«–—Œy­w)z4Iterator with string representation of column names.N)rvr rs  r"rDz*_DataFrameTableBuilderVerbose._gen_columnsâs$èø€à—8‘8ò    $ˆCܘsÓ#Ó #ñ    $ùr2N)rƒrkr¶rªrWrcrãr3r4r5) rdrerfrgrorérirrørrrCrDr,r$r"r¸r¸¦sa„ñð    Rðð    Rðð        Rð
 
ó     Ró
)ðò*óð*ó Nó
ó
óô
$r$r¸cóL—eZdZdZdd„Zd    d„Zed
d„«Zd d„Ze    d d„«Z
y) rÃz‡
    Abstract builder for series info table.
 
    Parameters
    ----------
    info : SeriesInfo.
        Instance of SeriesInfo.
    có—||_yrPr·ræs  r"roz_SeriesTableBuilder.__init__òs    €Ø $ˆ    r$cóH—g|_|j«|jSrP)rÆrér:s r"r™z_SeriesTableBuilder.get_linesõs€ØˆŒ Ø ×!Ñ!Ô#؏{‰{Ðr$có.—|jjS)zSeries.rÉr:s r"r7z_SeriesTableBuilder.dataúrîr$cóT—|jjd|j›«yròrór:s r"rôz)_SeriesTableBuilder.add_memory_usage_lineÿrõr$có—y©z<Add lines to the info table, pertaining to non-empty series.Nr,r:s r"réz(_SeriesTableBuilder._fill_non_empty_infor=r$N)rƒr‹rWrcrâ)rWrrã) rdrerfrgror™rir7rôrrér,r$r"rÃrÃèsA„ñó%óð
òóðóHðòKóñKr$rÃcó—eZdZdZdd„Zy)rÁz;
    Series info table builder for non-verbose output.
    cóž—|j«|j«|j«|jr|j    «yyrQ)rÓrÖrárÍrôr:s r"réz2_SeriesTableBuilderNonVerbose._fill_non_empty_info s@€à ×!Ñ!Ô#Ø ×!Ñ!Ô#Ø ×ÑÔØ × $Ò $Ø × &Ñ &Õ (ð %r$Nrã)rdrerfrgrér,r$r"rÁrÁs „ñô)r$rÁcóV—eZdZdZ                        d    d„Zd
d„Zd
d„Zed d„«Zd d„Z    d d„Z
y) rÀz7
    Series info table builder for verbose output.
    có†—||_||_t|j««|_|j «|_yrPr8r9s   r"roz#_SeriesTableBuilderVerbose.__init__r:r$có—|j«|j«|j«|j«|j    «|j «|j «|jr|j«yyrQ)    rÓrÖÚadd_series_name_liner"r(r,rárÍrôr:s r"réz/_SeriesTableBuilderVerbose._fill_non_empty_info&sp€à ×!Ñ!Ô#Ø ×!Ñ!Ô#Ø ×!Ñ!Ô#Ø ×ÑÔØ ×ÑÔ!Ø ×ÑÔØ ×ÑÔØ × $Ò $Ø × &Ñ &Õ (ð %r$cóh—|jjd|jj›«y)Nz Series name: )rÆrÑr7rür:s r"rWz/_SeriesTableBuilderVerbose.add_series_name_line2s$€Ø  ‰ ×ј]¨4¯9©9¯>©>Ð*:Ð;Õ<r$có(—|jrddgSdgS)rr?rr@r:s r"rz"_SeriesTableBuilderVerbose.headers5s €ð × Ò Ø$ gÐ.Ð .؈yÐr$c#ó@K—|j«Ed{–—†y7Œ­wr)r1r:s r"rz3_SeriesTableBuilderVerbose._gen_rows_without_counts<sèø€à×#Ñ#Ó%×%Ò%ús ‚–—c#ópK—t|j«|j««Ed{–—†y7Œ­wr)r r.r1r:s r"rz0_SeriesTableBuilderVerbose._gen_rows_with_counts@s0èø€äØ × %Ñ %Ó 'Ø × Ñ Ó ó
÷    
ò    
ús ‚,6®4¯6N)rƒr‹r¶rªrWrcrãr3r4) rdrerfrgrorérWrirrrr,r$r"rÀrÀsV„ñð    Rðð    Rðð        Rð
 
ó     Ró
)ó=ðòóðó &ô
r$rÀcór—|jj«jd„«j«S)zK
    Create mapping between datatypes and their number of occurrences.
    có—|jSrPrû)r/s r"ú<lambda>z-_get_dataframe_dtype_counts.<locals>.<lambda>Ms
€°a·f±f€r$)r<Ú value_countsÚgroupbyr€)Údfs r"rqrqHs,€ð
9‰9× !Ñ !Ó #× +Ñ +Ñ,<Ó =× AÑ AÓ CÐCr$)r z str | Dtyper!r]rWr)r-Úfloatr.rrWrrP)r2rˆrWr8)rarrWrY)8Ú
__future__rÚabcrrršÚtextwraprÚtypingrÚpandas._configr    Úpandas.io.formatsr
rœÚpandas.io.formats.printingr Úcollections.abcr r rrÚpandas._typingrrÚpandasrrrÚframe_max_cols_subrÚframe_examples_subÚframe_see_also_subÚframe_sub_kwargsÚseries_examples_subÚseries_see_also_subÚseries_sub_kwargsÚINFO_DOCSTRINGr#r0r3r5rkr‹r–r„rr¡r¼r¹rþr¸rÃrÁrÀrqr,r$r"ú<module>rus÷ðÝ"÷ó ÝÝ å%å+Ý3á÷ó÷÷
ññð@óÐñð?ó€ñðQóSÐñlðBóÐðØØ&Ø&Ø&Ø&ØñÐñð9ó;Ðñ|ð4óÐðØØØ&Ø'Ø'Ø6ñÐñð.ó0€óf'ó4,ð@'+ðØ#ðàóôP ôP ôfFIôFôR9=ô9=÷x0ñ0ô$MÐ0ôMô`(Ð-ô(ôV5E˜Cô5Eôp0HÐ2ô0Hôf>Ð'=ô>ô$Z&Р5ôZ&ôz?$Ð$:Ð<Uô?$ôDKÐ/ôKô@ )Ð$7ô )ô/
Ð!4Ð6Oô/
ôdDr$