In [ ]:
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
In [ ]:
#read data
df = pd.read_csv('student.csv')
df.head()
Out[ ]:
| gender | ethnicity | parental_education | lunch | test_preparation_course | math_score | reading_score | writing_score | |
|---|---|---|---|---|---|---|---|---|
| 0 | female | group B | bachelor's degree | standard | none | 72 | 72 | 74 |
| 1 | female | group C | some college | standard | completed | 69 | 90 | 88 |
| 2 | female | group B | master's degree | standard | none | 90 | 95 | 93 |
| 3 | male | group A | associate's degree | free/reduced | none | 47 | 57 | 44 |
| 4 | male | group C | some college | standard | none | 76 | 78 | 75 |
In [ ]:
#create a small sample
df_sample = df.iloc[0:200, :]
len(df_sample)
Out[ ]:
200
In [ ]:
# check the math score distrubution across df_sample
sns.catplot(data= df_sample, x='gender', y='math_score', kind= 'swarm',
hue= 'lunch') # swarm cleans up how the dots look but dont use for larger datasets
plt.show()
In [ ]:
sns.catplot(data=df_sample, x= 'math_score', y= 'gender', kind = 'swarm',
hue= 'lunch', order = ['male', 'female'],
palette= {'standard':'green', 'free/reduced': 'lightgreen'})
plt.show()
In [ ]:
# violon plot to identify patterns, shows median 50 blox plot
sns.catplot(data= df, x= 'gender', y= 'math_score', kind= 'violin', hue= 'gender',
palette={'male':'steelblue', 'female':'pink'})
plt.show()
In [ ]:
sns.catplot(data=df, x= 'gender', y='math_score', kind= 'violin',
hue= 'lunch')
plt.show()
In [ ]:
#swarm plot & violin plot together (stacking technique)
sns.catplot(data= df_sample, x= 'gender', y= 'math_score', kind= 'violin', color = 'pink',
inner=None)
sns.swarmplot(data= df_sample, x= 'gender', y= 'math_score', hue= 'gender',
palette={'female':'red', 'male':'blue'})
plt.show()
In [ ]: