获得熊猫中所有分类列的优雅方式?

时间:2016-03-19 22:25:01

标签: numpy pandas scipy

有没有办法让Pandas中的所有分类变量?我知道的最好方法是遍历所有列并检查dtype是否属于分类。

最终,我想要一个单行来绘制所有分类变量的所有条形图。

2 个答案:

答案 0 :(得分:4)

使用select_dtypes并传递'category'作为类型来过滤df,这将返回dtype与之匹配的所有列:

In [9]:
df = pd.DataFrame({'a': np.random.randn(6),
                    'b': [True, False] * 3,
                    'c': [1.0, 2.0] * 3})
df.info()

<class 'pandas.core.frame.DataFrame'>
Int64Index: 6 entries, 0 to 5
Data columns (total 3 columns):
a    6 non-null float64
b    6 non-null bool
c    6 non-null float64
dtypes: bool(1), float64(2)
memory usage: 150.0 bytes

In [10]:
df['a'] = pd.Categorical(df['a'])
df['c'] = pd.Categorical(df['c'])
df.info()

<class 'pandas.core.frame.DataFrame'>
Int64Index: 6 entries, 0 to 5
Data columns (total 3 columns):
a    6 non-null category
b    6 non-null bool
c    6 non-null category
dtypes: bool(1), category(2)
memory usage: 130.0 bytes

In [11]:
df.select_dtypes(['category'])

Out[11]:
          a  c
0  1.295878  1
1 -1.230722  2
2  0.340209  1
3 -0.277246  2
4 -2.336386  1
5  0.363829  2

答案 1 :(得分:0)

catCols = [col for col in df.columns if df[col].dtype=="O"]

catcols 是一个列表,将包含 df 中类型为 O 的所有列,即对象