web-dev-qa-db-ja.com

文字列行列を整数行列に変更する方法

私はそのような投票データセットを持っています:

republican,n,y,n,y,y,y,n,n,n,y,?,y,y,y,n,y
republican,n,y,n,y,y,y,n,n,n,n,n,y,y,y,n,?
democrat,?,y,y,?,y,y,n,n,n,n,y,n,y,y,n,n
democrat,n,y,y,n,?,y,n,n,n,n,y,n,y,n,n,y

しかし、どちらも文字列なので、整数行列に変更して、統計値hou_dat = pd.read_csv( "house.data"、header = None)にしたいと思います。

for i in range (0, hou_dat.shape[0]):
    for j in range (0, hou_dat.shape[1]):
        if hou_dat[i, j] == "republican":
            hou_dat[i, j] = 2
        if hou_dat[i, j] == "democrat":
            hou_dat[i, j] = 3
        if hou_dat[i, j] == "y":
            hou_dat[i, j] = 1
        if hou_dat[i, j] == "n":
            hou_dat[i, j] = 0
        if hou_dat[i, j] == "?":
            hou_dat[i, j] = -1

hou_sta = hou_dat.apply(pd.value_counts)
print(hou_sta)

ただし、エラーが表示されます。解決方法は?:

Exception has occurred: KeyError
(0, 0)
6
4daJKong

Csvからのデータを処理する場合は、pandasのメソッドを使用することをお勧めします。この場合、replaceメソッドを使用して、要求したとおりに実行できます。

hou_dat.replace(to_replace={'republican':2, 'democrat':3, 'y':1, 'n':0, '?':-1}, inplace=True)

あなたはそれでこれについてもっと読むことができます ドキュメント

0
Roim