如何在熊猫中显示类似空字符串的列值的计数
Posted
技术标签:
【中文标题】如何在熊猫中显示类似空字符串的列值的计数【英文标题】:How to show counts of null string-like column values in pandas 【发布时间】:2019-12-09 07:16:58 【问题描述】:dataframe.describe()
具有以下列用于类似字符串的列:
count unique top freq first last
虽然这些肯定很有用,但了解任何给定列中是否有空值以及有多少也很重要。
虽然我可以求助于编写自定义函数来找到它,但这将是一个显着的额外开销。请注意,有一个 related 问题,但侧重于 numeric 列,因此不直接适用:How to count the NaN values in a column in pandas DataFrame。那么是否有另一个辅助函数可以提供额外的信息?
【问题讨论】:
dataframe.isna().sum()
?
df.describe(include="all")
怎么样?计数是非空值的计数。所以如果你知道长度,你就知道有多少是空的。例如:df.shape[0] - df.describe(include="all").loc["count", :]
也可以试试df.info()
。
@VivekSolanki 请回答。哦,等等.. info()
确实 显示 需要的空计数,但我需要捕获系列或 DataFrame 中的计数,而不仅仅是将其盲目地转储到标准输出。对此有何建议?
捕获系列或 df 中的计数是什么意思?请详细说明
【参考方案1】:
快速浏览每列中nan
的数量:
dataframe.isna().sum()
【讨论】:
实际上这不仅仅是“快速浏览”,因为返回的是完全结构化的数据帧。我需要它用于内存数据结构。我可能会将这个结果加入到pd.describe()
返回的数据框中,以提供完整的一处摘要
我在包含Nulls
列的完全实现的增强型describe()
中使用了您的结果:请参阅下面的答案【参考方案2】:
你可以试试:dataframe.info()
如in the docs 所述,df.info()
为您提供有关 DataFrame 的信息,包括索引数据类型和列数据类型、非空值和内存使用情况。
根据您存储信息的要求,您可以尝试以下操作:
import io
buffer = io.StringIO()
df.info(buf=buffer)
s = buffer.getvalue()
with open("df_info.txt", "w", encoding="utf-8") as f:
f.write(s)
来源:df.info() docs
【讨论】:
info()
打印到控制台。虽然这种方法对临时评估很有帮助,但当目标是将摘要统计信息存储在内存数据结构中时,这种方法就不那么有用了。我会投赞成票,因为它对前一个用例很有用,但我仍在寻找一种方法来捕获数据结构中的 na 计数。可能将df.describe()
与df.counts()
结合起来可以解决问题:我现在正在努力。哦 nmd @QuangHoang 有更好的答案
您更新的答案只允许将结果存储为字符串 blob。它不是数据结构。
同意。如果将来有人想将它存储为字符串 blob,我将保持原样。【参考方案3】:
使用 describe() 包含 Null 计数
以下提供了我在dataframe.describe()
提供的信息中添加nulls
列的初衷的完整实现。感谢@QuangHoang 提到了构成此答案一部分的dataframe.isna().sum()
。
请注意,我们必须转置来自describe()
的输出。然后将Nulls
预先添加到转置的describe()
输出,并通过set_axis
将列重命名为Nulls
:
df = pd.DataFrame( 'a': [1,2,3], 'b': ['a','b','c'], 'c': [99.5,11.2, 433.1],
'd':[123,'abc',None])
desc = df.describe() # Returns a DataFrame with stats in the row index
combo = pd.concat([df.isna().sum(),desc.T],axis=1)
.set_axis(['Nulls']+list(desc.index),axis=1,inplace=False)
【讨论】:
以上是关于如何在熊猫中显示类似空字符串的列值的计数的主要内容,如果未能解决你的问题,请参考以下文章