栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

pd.get

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

pd.get

pd.get_dummies的使用

参考pandas官网

pandas.get_dummies(data, prefix=None, prefix_sep='_', dummy_na=False, columns=None, sparse=False, drop_first=False, dtype=None)

参数:
data:array-like, Series, or DataFrame
prefix:str, list of str, or dict of str, default None.String to append DataFrame column names.
prefix_sep:str, default ‘_‘.If appending prefix, separator/delimiter to use.
dummy_na:bool, default False.Add a column to indicate NaNs, if False NaNs are ignored.
columns:list-like, default None.Column names in the DataFrame to be encoded.
sparse:bool, default False.Whether the dummy-encoded columns should be backed by a SparseArray (True) or a regular NumPy array (False).
drop_first:bool, default False.Whether to get k-1 dummies
dtype:dtype, default np.uint8.Data type for new columns.
例子:

>>>df = pd.DataFrame({'A': ['a', 'b', 'a'], 'B': ['b', 'a', 'c'],'C': [1, 2, 3]})
>>>pd.get_dummies(df, prefix=['col1', 'col2'])
   C  col1_a  col1_b  col2_a  col2_b  col2_c
0  1       1       0       0       1       0
1  2       0       1       1       0       0
2  3       1       0       0       0       1
>>>pd.get_dummies(df, prefix={"B": "from_B", "A": "from_A"})
   C  from_A_a  from_A_b  from_B_b  from_B_c
0  1         1         0         0         1
1  2         0         1         0         1
2  3         1         0         1         0
>>>df = pd.DataFrame({"A": list("aaaaa"), "B": list("ababc")})
>>>pd.get_dummies(df, drop_first=True)
   B_b  B_c
0    0    0
1    1    0
2    0    0
3    1    0
4    0    1

与cut()连用:

>>>values = np.random.randn(10)
>>>values
array([ 0.4082, -1.0481, -0.0257, -0.9884,  0.0941,  1.2627,  1.29  ,
        0.0824, -0.0558,  0.5366])
>>>bins = [0, 0.2, 0.4, 0.6, 0.8, 1]
>>>pd.get_dummies(pd.cut(values, bins))
   (0.0, 0.2]  (0.2, 0.4]  (0.4, 0.6]  (0.6, 0.8]  (0.8, 1.0]
0           0           0           1           0           0
1           0           0           0           0           0
2           0           0           0           0           0
3           0           0           0           0           0
4           1           0           0           0           0
5           0           0           0           0           0
6           0           0           0           0           0
7           1           0           0           0           0
8           0           0           0           0           0
9           0           0           1           0           0

合并到原始数据

df = df.join(pd.get_dummies(df.A))
df.drop([A],axis=1,inplace=True)
几点疑惑及验证

实验中需要分别对训练集和测试集进行One-hot编码,要求两个数据集编码后变量和数据含义一致,实际操作中遇到一些问题:

  1. 如果遇到某个变量的某个取值只在训练集中出现而未在测试集中出现,one-hot后的变量数不一致,怎么办?
    答:检测出不一致的列,在缺少这些列的数据集中加入取值全为0的同名列。
for col in list(test.columns.difference(train.columns)):#train没有的列
    df_obj = pd.DataFrame({col:np.squeeze(np.zeros((1,train.shape[0])))})
    train = pd.concat([train,df_obj], axis = 1)
for col in list(train.columns.difference(test.columns)):#test没有的列
    df_obj = pd.DataFrame({col:np.squeeze(np.zeros((1,test.shape[0])))})
    test = pd.concat([test,df_obj], axis = 1)

2. 对于取值只有两类的变量,训练集中的1与测试集中的1代表相同类别吗?(如果变量取值类别大于2,one-hot时会生成带后缀的变量,不存在此问题)
答:是一样的。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/920750.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号