kaggle案例重複:學生在考試中的表現數據集簡單探索
- 2020 年 3 月 3 日
- 筆記
原文地址 https://www.kaggle.com/rajwardhanshinde/data-analysis-and-predicting-percentage/notebook
數據集包括8個變數
- gender 性別
- race/ethnicity 種族
- parental level of education 父母教育水平
- lunch 午餐
- test preparation course (不太明白這個指標)
- math score 數學
- reading score 閱讀
- writting score 寫作
第一步:簡單查看數據
import pandas as pd sp = pd.read_csv("StudentsPerformance.csv") #讀入數據 sp.head() #查看數據前5行 sp.isnull().sum() #查看數據是否包括缺失值 sp.gender.value_counts() #value_counts()函數顯示唯一值及其出現次數 sp['Percentage'] = sp['math score'] + sp['reading score'] + sp['writing score'] sp['Percentage'] = sp['Percentage'] / 3 #數據框增加一列平均成績 sp.sample(10) #隨機選取10行查看 sorted_df = sp.sort_values(by='Percentage', ascending=False)#排序
原文還增加了一列Result,意為三門課程成績任意一門低於35分即為『掛科』,否則為通過;自己暫時還不知道該如何實現增加這一列。原文也提到了嘗試時他也遇到了錯誤。如果以一個指標作為依據實現起來就比較簡單;比如是平均成績小於35即為掛科的話,可以用如下語句實現
import numpy as np np.where(sp['Percentage'] < 35, 'F' , "P" )
和R語言里的ifelse()語句有些像 根據平均成績來劃分ABCDEF
def Grading(x): if x >= 80: return 'A' if x >= 70: return 'B' if x >= 60: return 'C' if x >= 50: return 'D' if x >= 35: return 'E' else: return 'F' sp['Grade'] = sp.apply(lambda x : Grading(x['Percentage']), axis=1) #這條語句沒有看明白 sp.head(10)
第二步:簡單的數據可視化
父母的教育水平是否會影響孩子的成績
import matplotlib.pyplot as plt import seaborn as sns plt.figure(figsize=(20,10)) sns.set(style='whitegrid', palette='coolwarm', font_scale=1.2) sns.barplot(data=sp, x='parental level of education', y='Percentage') plt.ylim([0,100]) plt.savefig('1.png')

這類數據通過箱線圖展示可能會更為直觀
plt.figure(figsize=(20,10)) sns.boxplot(data=sp, x='parental level of education', y='Percentage') plt.ylim([0,100]) plt.savefig('2.png')

取得不同成績的學生人數
plt.figure(figsize=(20,10)) sns.countplot(data=sp, x='Grade', order=['A','B','C','D','E','F']) plt.savefig('3.png')

簇狀柱形圖展示不同父母教育水平取得不同成績的人數(這句話怎麼這麼彆扭呢?)
plt.figure(figsize=(20,10)) sns.countplot(data=sp, x='parental level of education', hue='Grade') plt.savefig('4.png')

不同的午餐學生成績
plt.figure(figsize=(20,10)) sns.countplot(data=sp, x='lunch', hue='Grade') plt.savefig('5.png')

今天就先到這裡吧!
下一個kaggle案例
https://www.kaggle.com/mcevatb/logistic-regression-hw1
邏輯斯蒂回歸分類