<p>计算任何列中出现的<code>'?'</code>或任何符号的优雅方法是使用dataframe对象的内置函数<strong><code>isin</code></strong>。</p>
<p>假设我们已将“Automobile”<a href="https://www.kaggle.com/toramky/automobile-dataset" rel="noreferrer">dataset</a>加载到<code>df</code>对象中。
我们不知道哪些列包含缺少的值(<code>'?'</code>符号),因此请执行以下操作:</p>
<pre><code>df.isin(['?']).sum(axis=0)
</code></pre>
<p><code>DataFrame.isin(values)</code>官方文件说:</p>
<blockquote>
<p>it returns boolean DataFrame showing whether each element in the DataFrame
is contained in values</p>
</blockquote>
<p>注意,<code>isin</code>接受<em>iterable</em>作为输入,因此我们需要将包含目标符号的列表传递给此函数。<code>df.isin(['?'])</code>将返回一个布尔数据帧,如下所示。</p>
<pre><code> symboling normalized-losses make fuel-type aspiration-ratio ...
0 False True False False False
1 False True False False False
2 False True False False False
3 False False False False False
4 False False False False False
5 False True False False False
...
</code></pre>
<p>要计算每列中目标符号的出现次数,让我们通过指示<code>axis=0</code>来对上述数据帧的所有行进行<code>sum</code>。
最终(截断)结果显示了我们的期望:</p>
<pre><code>symboling 0
normalized-losses 41
...
bore 4
stroke 4
compression-ratio 0
horsepower 2
peak-rpm 2
city-mpg 0
highway-mpg 0
price 4
</code></pre>