我已阅读此链接:Check which columns in DataFrame are Categorical
我有一个数据框,其中提到了工资,前面是$。它也被显示为分类数据。
此外,假设我的名义数据不是字符串形式,例如' F' M' M'等等 那么我们如何分类哪些列是数字,分类(带字符串)和名义?
说我的数据如下:
ID Gender Salary HasPet
1 M $250 0
2 F $5000 0
3 M $4500 1
答案 0 :(得分:5)
您将categorical数据类型与strings混淆(pandas将其显示为object
)。
数字不能包含$
美元符号的性质,因为大熊猫将Salary
列视为字符串,这是正确的行为!
如果您愿意,可以轻松地将薪水栏转换为整数/浮点数:
In [180]: df
Out[180]:
Gender Salary
0 F $3283
1 M $6958
2 F $3721
3 F $7732
4 M $7198
5 F $5475
6 F $7410
7 M $8673
8 F $8582
9 M $4115
10 F $8658
11 F $6331
12 M $6174
13 F $6261
14 M $6212
In [181]: df.dtypes
Out[181]:
Gender object
Salary object
dtype: object
让我们移除前导$
并将Salary
转换为int
:
In [182]: df.Salary = df.Salary.str.lstrip('$').astype(int)
In [183]: df.dtypes
Out[183]:
Gender object
Salary int32
dtype: object
和您的Gender
列分类:
In [186]: df.Gender = df.Gender.astype('category')
In [187]: df.dtypes
Out[187]:
Gender category
Salary int32
dtype: object