Python 如何对分类数据使用ColumnTransformer?

Python 如何对分类数据使用ColumnTransformer?,python,scikit-learn,Python,Scikit Learn,我正在尝试预处理数据 data = {'Country':['Germany', 'Turkey', 'England', 'Turkey', 'Germany', 'Turkey'], 'Age':['44', '32', '27', '29', '31', '25'], 'Salary':['5400', '8500', '7200', '4800', '6200', '10850'], 'Purchased':['yes', 'yes', '

我正在尝试预处理数据

data = {'Country':['Germany', 'Turkey', 'England', 'Turkey', 'Germany', 'Turkey'],
        'Age':['44', '32', '27', '29', '31', '25'],
        'Salary':['5400', '8500', '7200', '4800', '6200', '10850'],
        'Purchased':['yes', 'yes', 'no', 'yes', 'no', 'yes']}
df = pd.DataFrame(data)
X = df.iloc[:,0].values
预期结果如下:

|---|---|---|----|-------|---|
| 1 | 0 | 0 | 44 | 5400  | 1 |
| 0 | 1 | 0 | 32 | 8500  | 1 |
| 0 | 0 | 1 | 27 | 7200  | 0 |
| 0 | 1 | 0 | 29 | 4800  | 1 |
| 1 | 0 | 0 | 31 | 6200  | 0 |
| 0 | 1 | 0 | 25 | 10850 | 1 |
下面是失败的代码

from sklearn.preprocessing import OneHotEncoder
from sklearn.compose import ColumnTransformer
ct = ColumnTransformer([("city_category", OneHotEncoder(dtype='int'), [0])], remainder="passthrough")
X = ct.fit_transform(X)
输出:

IndexError: tuple index out of range

我想了解在这种情况下如何使用ColumnTransformer功能?

无需sklearn,您可以使用pandas:

将熊猫作为pd导入
数据={
“国家”:[“德国”、“土耳其”、“英国”、“土耳其”、“德国”、“土耳其”],
“年龄”:[“44”、“32”、“27”、“29”、“31”、“25”],
“工资”:[“5400”、“8500”、“7200”、“4800”、“6200”、“10850”],
“购买”:[“是”、“是”、“否”、“是”、“否”、“是”],
}
df=pd.DataFrame(数据)
df=pd.concat([pd.get_dummies(df[“Country”]),df.drop(“Country”,axis=1)],axis=1)
df[[“年龄”、“薪资”]=df[[“年龄”、“薪资”]].aType(int)
df[“购买的”]=df[“购买的”].map(lambda x:x==“是”).astype(int)
打印(df.head())
输出为:

   England  Germany  Turkey  Age  Salary  Purchased
0        0        1       0   44    5400          1
1        0        0       1   32    8500          1
2        1        0       0   27    7200          0
3        0        0       1   29    4800          1
4        0        1       0   31    6200          0

您能否编辑您的问题以提供一些示例数据和完整的错误回溯?这将有助于我们更好地帮助你,希望现在一切都清楚了。
X_transformer = ColumnTransformer(
    transformers=[
        ("Country",        # Just a name
         OneHotEncoder(), # The transformer class
         [0]            # The column(s) to be applied on.
         )
    ], remainder='passthrough'
)
X = X_transformer.fit_transform(X)
print(X)