Vik*_*ram 2 python csv machine-learning pandas scikit-learn
尝试对医疗数据执行简单的线性分类.样本数据由所有字符串组成,大多数值为'yes','no'格式,我希望将此数据转换为整数值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'])
Run Code Online (Sandbox Code Playgroud)
我尝试将csv数据移动到数据帧后进行转换,使用map()尝试使用特定列,但我希望对所有值为'yes','no'字符串的列进行此操作.是否有任何一种方法可以在运行read_csv时将所有'yes','no'字符串直接转换为整数1和0
d = {'yes': 1, 'no': 0}
print df['Outcome1-Urinary-bladder'].map(d)
Run Code Online (Sandbox Code Playgroud)
看看这个解决方案,但它不适合我的要求.
请帮帮我,提前谢谢.
Jia*_* Li 11
你可以使用.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
Run Code Online (Sandbox Code Playgroud)
或者
pd.DataFrame(np.where(df=='yes', 1, 0), columns=df.columns, index=df.index)
Run Code Online (Sandbox Code Playgroud)
这是矢量化numpy方法,比元素映射快得多.
| 归档时间: |
|
| 查看次数: |
2245 次 |
| 最近记录: |