【问题标题】:Converting strings into将字符串转换为
【发布时间】:2015-10-29 21:26:28
【问题描述】:

尝试对医疗数据执行简单的线性分类。样本数据由所有字符串组成,大部分值都是“是”、“否”格式,我希望将这些数据转换为整数值 1 和 0,以便进行一些统计分析。

以下是我的代码

import pandas as pd
from sklearn.cross_validation import train_test_split
from sklearn import preprocessing

df = pd.read_csv('sample-data.csv',encoding='utf-16', header=None, sep=',',names=['Temp','Occurrence','Lumbar-pain','Urine-pushing','Micturition-pains','Burning-of-urethra-swelling-of-urethra-outlet','Outcome1-Urinary-bladder','Outcome2-Nephritis-of-renal'])

Click here to view Sample-data.csv

我尝试在将 csv 数据移动到数据框后进行转换,尝试使用 map() 对特定列进行转换,但我希望对值为“是”、“否”字符串的所有列执行此操作。 在运行 read_csv 时,是否有任何一揽子方法可以直接将所有“是”、“否”字符串转换为整数 1 和 0

d = {'yes': 1, 'no': 0}
print df['Outcome1-Urinary-bladder'].map(d) 

查看this solution,但它不适合我的要求。

请帮帮我,在此先感谢。

【问题讨论】:

  • Jianxun 的回答看起来不错,但如果你想要一个 sklearn 解决方案,LabelBinarizer 正是你想要的 scikit-learn.org/stable/modules/generated/…
  • 将字符串转换成什么?你应该修正你的标题。

标签: python csv pandas machine-learning scikit-learn


【解决方案1】:

还有另一种选择,您可以使用 sklearn imputer。处理空值,后面可以使用pandas的get_dummy()方法

Scountry_imputer = preprocessing.Imputer(missing_values='NaN', 策略='平均',轴=0)

数据 = pd.get_dummies(df['column_name'])

【讨论】:

    【解决方案2】:

    您可以使用.replace 方法。

    df = pd.DataFrame(np.random.choice(['yes', 'no'], size=(5,3)), columns=list('ABC'))
    df
    
         A    B    C
    0   no  yes   no
    1   no  yes  yes
    2  yes  yes   no
    3  yes   no   no
    4  yes  yes  yes
    
    
    df.replace(['yes', 'no'], [1, 0])
    
       A  B  C
    0  0  1  0
    1  0  1  1
    2  1  1  0
    3  1  0  0
    4  1  1  1
    

    或者

    pd.DataFrame(np.where(df=='yes', 1, 0), columns=df.columns, index=df.index)
    

    这是矢量化的numpy 方法,比元素映射要快得多。

    【讨论】:

      猜你喜欢
      • 2019-10-10
      • 2019-01-05
      • 2015-01-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-29
      • 2011-08-22
      相关资源
      最近更新 更多