Pandas scatter matrix-график категориальных переменных

Я смотрю на знаменитый набор данных Titanic из конкурса 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

Как я могу добавить категориальные столбцы, такие как секс и приступил к сюжету?

2 ответов


вам нужно преобразовать категориальные переменные в числа, чтобы построить их.

пример (предполагая, что столбец " пол "содержит гендерные данные, с" 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. Неизвестный пол (если таковой имеется) будет проигнорирован.

остальная часть вашего кода должна обрабатывать обновленный фрейм данных красиво.


после гуглить и вспоминая что-то вроде.функция 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

теперь я могу построить его снова...а потом отбросьте добавленные столбцы.

спасибо всем за ответы.....