web-dev-qa-db-ja.com

Pandas scatter_matrix-カテゴリ変数をプロットします

私はここにあるKaggleコンペティションの有名なタイタニックデータセットを見ています: http://www.kaggle.com/c/titanic-gettingStarted/data

私は以下を使用してデータをロードして処理しました:

# import required libraries
import pandas as pd
import matplotlib.pyplot as plt
%matplotlib inline

# load the data from the file
df = pd.read_csv('./data/train.csv')

# import the scatter_matrix functionality
from pandas.tools.plotting import scatter_matrix

# define colors list, to be used to plot survived either red (=0) or green (=1)
colors=['red','green']

# make a scatter plot
scatter_matrix(df,figsize=[20,20],marker='x',c=df.Survived.apply(lambda x:colors[x]))

df.info()

scatter_matrix from matplotlib

性別や乗船などのカテゴリ列をプロットに追加するにはどうすればよいですか?

7
Geoffrey Stoel

カテゴリ変数を数値に変換してプロットする必要があります。

例(列「Sex」が性別データを保持していると仮定します。「M」は男性、「F」は女性です)

df['Sex_int'] = np.nan
df.loc[df['Sex'] == 'M', 'Sex_int'] = 0
df.loc[df['Sex'] == 'F', 'Sex_int'] = 1

これで、すべての女性が0で表され、男性が1で表されます。不明な性別(存在する場合)は無視されます。

コードの残りの部分は、更新されたデータフレームを適切に処理する必要があります。

7
knightofni

グーグルして.map()関数のようなものを覚えた後、次の方法で修正しました。

colors=['red','green'] # color codes for survived : 0=red or 1=green

# create mapping Series for gender so it can be plotted
gender = Series([0,1],index=['male','female'])    
df['gender']=df.Sex.map(gender)

# create mapping Series for Embarked so it can be plotted
embarked = Series([0,1,2,3],index=df.Embarked.unique())
df['embarked']=df.Embarked.map(embarked)

# add survived also back to the df
df['survived']=target

これで、もう一度プロットできます...後で追加した列を削除します。

返信してくれてありがとう.....

2
Geoffrey Stoel