有没有办法让Pandas中的所有分类变量?我知道的最好方法是遍历所有列并检查dtype
是否属于分类。
最终,我想要一个单行来绘制所有分类变量的所有条形图。
答案 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 的所有列,即对象