首页 > 解决方案 > 需要对数据框中的数据类型进行计数

问题描述

我需要为数据框中的不同数据类型创建一个 seaborn 计数图。例如在下面的示例中,我应该得到一个计数为 3 的 float64 和计数为 1 的 int64 的条形图。
我发现有人通过将 df.dtypes 作为 x 或 y 参数传递来做到这一点,但我一直收到错误消息。TypeError:数据类型“”不理解请有人知道该怎么做吗?谢谢你的帮助。

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns

df = pd.DataFrame({"A":[12, 4, 5, None, 1],  
                   "B":[7, 2, 54, 3, None],  
                   "C":[20, 16, 11, 3, 8],  
                   "D":[14, 3, None, 2, 6]})  

print(df.dtypes)
sns.countplot(y=df.dtypes, data=df)
plt.show()

标签: pythonpandasdataframe

解决方案


您只需要传递dtypes系列,但请确保将类型对象转换为字符串。Matplotlib 无法显示您作为numpy.dtypes 传递的标签。尝试这个:

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

df = pd.DataFrame({"A":[12, 4, 5, None, 1],  
                   "B":[7, 2, 54, 3, None],  
                   "C":[20, 16, 11, 3, 8],  
                   "D":[14, 3, None, 2, 6]})  

sns.countplot(df.dtypes.map(str))
plt.show()

输出:

在此处输入图像描述


推荐阅读