提取 Pandas 数据框的人类可读内存使用情况
Extract human readable memory usage for Pandas data frame
我有一个数据框:
pd.DataFrame({'A': range(1, 10000)})
使用 df.info()
:
我可以得到一个很好的人类可读的东西说它有 78.2 KB 的内存使用
df.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 9999 entries, 0 to 9998
Data columns (total 1 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 A 9999 non-null int64
dtypes: int64(1)
memory usage: 78.2 KB
我可以使用 df.memory_usage()
(这就是 Pandas 本身计算自己的内存使用量的方式)获得具有类似效果的无用语句,但我想避免自己动手。我查看了 df.info
来源并一直追踪到 this line.
字符串的来源
这个特定的字符串是如何生成的,我怎样才能将其提取出来以便打印到日志中?
Nb 我无法解析 df.info()
输出,因为它直接打印到缓冲区;调用 str
只是 returns None
.
Nb This line 也没有帮助,初始化的只是一个布尔标志,用于指示是否应该打印内存使用情况。
您可以创建 pandas.io.formats.info.DataFrameInfo
and read the memory_usage_string
property, which is exactly what df.info()
does 的实例:
>>> df.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 9999 entries, 0 to 9998
Data columns (total 1 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 A 9999 non-null int64
dtypes: int64(1)
memory usage: 78.2 KB
>>> pd.io.formats.info.DataFrameInfo(df).memory_usage_string.strip()
'78.2 KB'
如果您将 memory_usage
传递给 df.info
,您可以直接将其传递给 DataFrameInfo
:
pd.io.formats.info.DataFrameInfo(df, memory_usage='deep').memory_usage_string.strip()
我有一个数据框:
pd.DataFrame({'A': range(1, 10000)})
使用 df.info()
:
df.info() <class 'pandas.core.frame.DataFrame'> RangeIndex: 9999 entries, 0 to 9998 Data columns (total 1 columns): # Column Non-Null Count Dtype --- ------ -------------- ----- 0 A 9999 non-null int64 dtypes: int64(1) memory usage: 78.2 KB
我可以使用 df.memory_usage()
(这就是 Pandas 本身计算自己的内存使用量的方式)获得具有类似效果的无用语句,但我想避免自己动手。我查看了 df.info
来源并一直追踪到 this line.
这个特定的字符串是如何生成的,我怎样才能将其提取出来以便打印到日志中?
Nb 我无法解析 df.info()
输出,因为它直接打印到缓冲区;调用 str
只是 returns None
.
Nb This line 也没有帮助,初始化的只是一个布尔标志,用于指示是否应该打印内存使用情况。
您可以创建 pandas.io.formats.info.DataFrameInfo
and read the memory_usage_string
property, which is exactly what df.info()
does 的实例:
>>> df.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 9999 entries, 0 to 9998
Data columns (total 1 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 A 9999 non-null int64
dtypes: int64(1)
memory usage: 78.2 KB
>>> pd.io.formats.info.DataFrameInfo(df).memory_usage_string.strip()
'78.2 KB'
如果您将 memory_usage
传递给 df.info
,您可以直接将其传递给 DataFrameInfo
:
pd.io.formats.info.DataFrameInfo(df, memory_usage='deep').memory_usage_string.strip()