我尝试将数据帧df
的特定列转换为分类数据类型!或者R编程指的是factor
。
import pandas as pd
import numpy as np
df = pd.DataFrame(data=np.array([[1,1,2,2,3,3]]))
df = df.T
df[0].describe()
产量
count 6.000000
mean 2.000000
std 0.894427
min 1.000000
25% 1.250000
50% 2.000000
75% 2.750000
max 3.000000
Name: 0, dtype: float64
转换为'类别'
后df[0] = df[0].astype('category')
df[0].describe()
产量
count 6
unique 3
top 3
freq 2
Name: 0, dtype: int64
预期输出:我使用正确的代码(我试图弄清楚)将列的数据类型转换为类别后,我想要df[0].describe()
显示类似
dtype: category
Categories (3, object): [1, 2, 3]
我想我知道自己哪里出错了。当我转换为分类数据类型时,我觉得我需要明确提到不同的类别或不同的级别。如果你能指出我正确的方向做这件事,我会很高兴。
每个具有object
数据类型的列都可以被视为category
数据类型吗?如果您能突出显示“对象”之间的一些主要差异,将会很有帮助。数据类型和'类别'。
此外,在为机器学习实现单热编码时,我理解,它用于将分类功能转换为数字功能,因此您可以将它们插入到sci-kit中。那么(用更正式的术语)这是否意味着,单热编码有助于将object
或category
的数据类型转换为int64
数据类型?
从评论中解决的问题:输入df [0]和df [0] .describe()之间存在差异,只需打印df[0]
显示的数据类型为{{1} },而category
将其显示为int64。
答案 0 :(得分:0)
键入然后向下滚动
df[0]
Out[942]:
0 1
1 1
2 2
3 2
4 3
5 3
Name: 0, dtype: category
Categories (3, int64): [1, 2, 3]
根据我的理解,不同的基础:categroy
将继续保持原始级别,当您执行某些数据slice
时,这是一个很好的技巧,您不想保留value
但是你想要输出中的level
在更改为category
之前
df[0].value_counts()
Out[947]:
3 2
2 2
1 2
Name: 0, dtype: int64
df1=df.iloc[2:3]
df1[0].value_counts()
Out[956]:
2 1
Name: 0, dtype: int64
更改为类别后
df[0] = df[0].astype('category')
df1=df.iloc[2:3]
df1
Out[953]:
0
2 2
df1[0].value_counts()
Out[954]:
2 1
3 0
1 0