Python:用整数替换范畴后存储多个字典

2024-09-25 08:38:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我的数据如下:

source  browser sex age country class
SEO Chrome  M   39  Japan   0
Ads Chrome  F   53  United States   0
SEO Opera   M   53  United States   1
SEO Safari  M   41  NULL    0
Ads Safari  M   45  United States   0
Ads Chrome  M   18  Canada  0

为了让它为机器学习做好准备,我编写了一个函数,用整数代替范畴:

^{pr2}$

然后我使用下面的方法调用它,将所有字符串列转换为整数:

cols=['sex','browser','country','source']
for col in cols:
    df_fraud[col] = convert_str_int(df_fraud[col])

我想存储与每个列相关联的字典并在以后调用它,我可以在def函数中简单地说“return Y,D”,但我不确定如何将其包含在下面的for函数中。在

坦率地说,我不确定在词典中存储这些参考文献的最佳方法是什么,并且愿意听取建议。在

我简化了下面的例子:

使用建议的代码时,这不起作用。有什么想法吗?在

def str2int(data):
    y2= data
    S = set(y2) #set 
    D = dict( zip(S, range(len(S))) ) # assign each string an integer, and put it in a dict
    Y = [D[y2_] for y2_ in y2] # store class labels as ints
    return Y, D

def make_str2int(data):
    categories = set(data) 
    return dict(zip(categories, range(len(categories))))

raw_data = {
        'names': ['A','B','B','D','D','E','B','B','E','F'],
        'gender': ['M','F','F','F','F','M','M','M','M','M']} 

str2int={}
cols = ['names', 'gender']
for col in cols:
    str2int[col] = make_str2int(df_fraud[col])

Tags: 函数inseodffordatacolchrome
1条回答
网友
1楼 · 发布于 2024-09-25 08:38:56

我还没有测试过,我也不确定你打算如何使用这些词典,但这里是我的建议。在

您可以将字典存储在字典字典中:

def make_str2int(data):
    categories = set(data) 
    return dict(zip(categories, range(len(categories))

str2int = {}
cols = ['sex', 'browser', 'country', 'source']
for col in cols:
    str2int[col] = make_str2int(df_fraud[col])

(假设df_fraud代表您的表(您在问题中没有明确说明这一点。)

然后,如果您希望类别存在于一列col,可以调用:

^{pr2}$

如果需要相应的数字:

str2int[col].values()

如果要将编号与已知列col中的分类值cat_val关联:

str2int[col][cat_val]

编辑:应用于您的raw_data示例

def make_str2int(data):
    categories = set(data) 
    return dict(zip(categories, range(len(categories))))

raw_data = {
    'names': ['A','B','B','D','D','E','B','B','E','F'],
    'gender': ['M','F','F','F','F','M','M','M','M','M']} 

str2int={}
cols = raw_data.keys()
for col in cols:
    str2int[col] = make_str2int(raw_data[col])

print "Conversion examples:"

element = raw_data['names'][3]
print "%s -> %s" % (element, str2int['names'][element])

element = raw_data['gender'][2]
print "%s -> %s" % (element, str2int['gender'][element])

输出:

Conversion examples:
D -> 3
F -> 1

相关问题 更多 >