2015-01-19 2 views
5

Я смотрю на знаменитый Титаник набор данных с соревнований Kaggle здесь: http://www.kaggle.com/c/titanic-gettingStarted/dataпанды scatter_matrix - сюжетные категориальные переменные

Я загрузки и обработки данных с помощью:

# 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

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

+1

Точечная участок не является хорошим выбором для категориальных переменных, так что это не будет действительно иметь смысл «добавить» те переменные этого рассеяния матрицы. Вы можете сделать другой набор графиков с этими переменными (например, ящики с каждой числовой переменной, сгруппированные по категориям). – BrenBarn

+1

BrenBarn - спасибо .... Я не полностью согласен с вами ... когда факторы ограничены (например, пол: мужчина, женщина, неизвестно). Я нахожу очень проницательным подход к этим целым числам, таким как 1,2 и 3, и строить их в диаграмме рассеяния. Если я помню правильно наизусть, R обрабатывает его факторы в такой кадре данных, как при построении диаграммы рассеяния. Надеюсь, что с пандами можно было бы сделать то же самое. –

+0

Я думаю, вы захотите взглянуть на граненые и парегриды моряков для этого типа сюжета: http://web.stanford.edu/~mwaskom/software/seaborn/examples/scatterplot_matrix.html –

ответ

6

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

Пример (при условии, что столбец «Пол» проводит гендерные данные, с «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 Неизвестные гендерные группы (если они есть) будут проигнорированы.

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

2

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

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

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

Смежные вопросы