Pandas是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具。Pandas提供了大量能使我们快速便捷地处理数据的函数和方法。你很快就会发现,它是使Python成为强大而高效的数据分析环境的重要因素之一。本文主要介绍一下Pandas中pandas.DataFrame.info方法的使用。

DataFrame.info(self, verbose=None, buf=None, max_cols=None, memory_usage=None, null_counts=None)      [source]

打印DataFrame的简要摘要。

此方法显示有关DataFrame的信息,包括索引dtype和列dtype,非空值和内存使用情况。

参数:

verbose : bool,可选

是否打印完整的摘要。默认情况下,

pandas.options.display.max_info_columns

遵循中的设置 。

buf : 可写缓冲区,默认为sys.stdout

将输出发送到哪里。默认情况下,

输出将打印到sys.stdout。如果需要进一步处理输出,

请传递可写缓冲区。

max_cols : int,可选

何时从详细输出切换到截断输出。

如果DataFrame的列数超过max_cols列,

则使用截断的输出。默认情况下,

使用中的设置 pandas.options.display.max_info_columns。

memory_usage : bool,str,可选

指定是否应显示DataFrame元素(包括索引)

的总内存使用情况。默认情况下,

这遵循pandas.options.display.memory_usage设置。

True始终显示内存使用情况。

False永远不会显示内存使用情况。

‘deep’ 的值等效于“真正的内省”。

内存使用情况以可读单位(以2为基数的表示形式)

显示。无需深入自省,

就可以根据列dtype和行数进行内存估计,

假设值为相应的dtype消耗相同的内存量。

使用深度内存自省,

将以计算资源为代价执行实际内存使用量计算。

null_counts : 布尔值,可选

是否显示非空计数。默认情况下,

仅当框架小于 pandas.options.display.max_info_rows

和时显示 pandas.options.display.max_info_columns。

值为True始终显示计数,而值为False则不显示计数。

返回值:

None

此方法打印DataFrame的摘要并返回None。

例子

>>> 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

打印所有列的信息:

>>> df.info(verbose=True)
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 5 entries, 0 to 4
Data columns (total 3 columns):
int_col 5 non-null int64
text_col 5 non-null object
float_col 5 non-null float64
dtypes: float64(1), int64(1), object(1)
memory usage: 248.0+ bytes

显示列数及其dtype的摘要,但不显示每列的信息:

>>> 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

将DataFrame.info的输出通过管道传递到缓冲区而不是sys.stdout,获取缓冲区内容并写入文本文件:

>>> 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

该memory_usage参数允许深刻反省模式,为大DataFrames和微调内存优化特别有用:

>>> 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_1 1000000 non-null object
column_2 1000000 non-null object
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_1 1000000 non-null object
column_2 1000000 non-null object
column_3 1000000 non-null object
dtypes: object(3)
memory usage: 188.8 MB