大家訪問這個即可下載數(shù)據(jù)集和源代碼!!!
gitee項目源碼及數(shù)據(jù)文件在這里,點擊
案列要求
1、訓練要點
(1)掌握使用seaborn庫或者matplotlib庫進行數(shù)據(jù)可視化的方法
(2)掌握撰寫可視化分析報告的方法
2、需求說明
在現(xiàn)實生活中,學生的成績與表現(xiàn)往往受制于多方面的因素。在教學研究中,除去對各科目考試結(jié)果本身的分析外,如果能夠深入地對學生其他信息(如對學生家庭背景、性別、飲食、課前準備等影響因素)進行分析,那么老師將會進一步了解學生在考試中的表現(xiàn)。學生考試成績數(shù)據(jù)集中包含8各字段,共計1000條數(shù)據(jù),其字段信息說明如下表所示。
表:學生考試成績數(shù)據(jù)集中的字段信息說明
為了了解不同性別的學生在數(shù)學、閱讀、寫作中的表現(xiàn),了解父母受教育程度對學生數(shù)學、閱讀、寫作是否有影響,了解午餐標準對學生成績是否有影響,了解考試準備充分是否有助于提高學生成績,需要對學生考試成績數(shù)據(jù)集進行數(shù)據(jù)讀取、處理、可視化分析。
(1)使用Pandas庫讀取文件,查看原始數(shù)據(jù)的相關特征和描述信息,檢查是否有空值。
(2)分別獲取數(shù)據(jù)框中的閱讀成績、數(shù)學成績、寫作成績3個字段,累加求和計算出每個學生的總分total_score,再除以3得到平均分percentage。
(3)設置各門課程及格線為60分,分別判斷學生是否通過(Fail/Pass)每門課,合并新的數(shù)據(jù)列pass_reading、pass_math、pass_writing。
(4)判斷每個學生的整體狀態(tài)是否通過。如果3門課中有一門為Fail,則最后考核為Fail,合并新的數(shù)據(jù)列status。
(5)對于總分是Pass的數(shù)據(jù),根據(jù)平均分設置5級制成績,即percentage大于等于90分為優(yōu)秀,8089分為良好,7079分為中等,60~69分為幾個,其他為不及格。
(6)繪制可視化圖形。
繪制父母受教育程度的水平柱狀圖
繪制全體學生成績分布餅圖
繪制各科成績分布直方圖
繪制父母受教育程度與前置課程是否完成統(tǒng)計分類圖
繪制成績評級與性別分布箱線圖
繪制午餐標準與總成績的性別分類散點圖
繪制各特征的相關熱力圖
背景
為了了解不同性別的學生在數(shù)學、閱讀、寫作中的表現(xiàn),了解父母受教育程度對學生數(shù)學、閱讀、寫作是否有影響,了解午餐標準對學生成績是否有影響,了解考試準備充分是否有助于提高學生成績,需要對學生考試成績數(shù)據(jù)集進行數(shù)據(jù)讀取、處理、可視化分析。在當今社會,教育是許多人生中最重要的一部分。隨著數(shù)據(jù)分析和可視化技術的不斷發(fā)展,越來越多的人開始將這些技術應用于教育領域,以幫助學校、家長和政府更好地管理和決策。而Python作為一種流行的編程語言,其數(shù)據(jù)分析和可視化能力已經(jīng)得到廣泛認可和使用。本文介紹了一個基于Python腳本的學生特征和成績分析方案,旨在探究不同特征對學生成績的影響,并提供有力支持和參考,為學校和家長提供更有效的教育決策。
一、處理數(shù)據(jù)
import pandas as pd
import pandas as pd
# 使用 GBK 編碼方式讀取文件
df = pd.read_csv("StudentsPerformance.csv", encoding="gbk")
# 查看數(shù)據(jù)的前幾行
print(df.head())
# 查看數(shù)據(jù)的基本信息,包括每列數(shù)據(jù)的類型和非空數(shù)量等
print(df.info())
# 查看數(shù)據(jù)的統(tǒng)計信息,包括每列數(shù)據(jù)的基本統(tǒng)計量(如均值、標準差、最大值、最小值等)
print(df.describe())
# 檢查是否有空值
print(df.isnull().sum())
這段代碼主要使用了 Python 的 Pandas 庫對名為 “StudentsPerformance.csv” 的 CSV 文件進行了分析。在運行這段代碼后,它會執(zhí)行以下幾個操作:
使用 Pandas 庫的 read_csv() 函數(shù)讀取 “StudentsPerformance.csv” 文件中的數(shù)據(jù),并將其存儲在一個名為 df 的 Dataframe 對象中。
執(zhí)行 df.head() 函數(shù),可以顯示出這個 Dataframe 對象的前五行,方便我們初步查看數(shù)據(jù)。
執(zhí)行 df.info() 函數(shù),可以打印出 Dataframe 的基本信息,包括列數(shù)、每列名稱、每列中非空值的數(shù)量和數(shù)據(jù)類型等
執(zhí)行 df.describe() 函數(shù),可以打印出 Dataframe 中各列數(shù)據(jù)的統(tǒng)計信息,如均值、標準差、最大值、最小值等。
執(zhí)行 df.isnull().sum() 函數(shù),可以檢查 Dataframe 中是否有缺失值,統(tǒng)計每列缺失值的數(shù)量,并將其打印出來。
結(jié)果:
性別 民族 父母教育程度 午餐 課程完成情況 數(shù)學成績 閱讀成績 寫作成績
0 女 B 學士學位 標準 未完成 72 72 74
1 女 C 大學未畢業(yè) 標準 完成 69 90 88
2 女 B 碩士學位 標準 未完成 90 95 93
3 男 A 副學士學位 自由/減少 未完成 47 57 44
4 男 C 大學未畢業(yè) 標準 未完成 76 78 75
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 1000 entries, 0 to 999
Data columns (total 8 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 性別 1000 non-null object
1 民族 1000 non-null object
2 父母教育程度 1000 non-null object
3 午餐 1000 non-null object
4 課程完成情況 1000 non-null object
5 數(shù)學成績 1000 non-null int64
6 閱讀成績 1000 non-null int64
7 寫作成績 1000 non-null int64
dtypes: int64(3), object(5)
memory usage: 62.6+ KB
None
數(shù)學成績 閱讀成績 寫作成績
count 1000.00000 1000.000000 1000.000000
mean 66.08900 69.169000 68.054000
std 15.16308 14.600192 15.195657
min 0.00000 17.000000 10.000000
25% 57.00000 59.000000 57.750000
50% 66.00000 70.000000 69.000000
75% 77.00000 79.000000 79.000000
max 100.00000 100.000000 100.000000
性別 0
民族 0
父母教育程度 0
午餐 0
課程完成情況 0
數(shù)學成績 0
閱讀成績 0
寫作成績 0
dtype: int64
二、選取閱讀成績、數(shù)學成績、寫作成績3個字段,計算總分和平均分
# 選取閱讀成績、數(shù)學成績、寫作成績3個字段,計算總分和平均分
df['總分'] = df.iloc[:,5:8].sum(axis=1)
df['平均分'] = df['總分'] / 3
# 查看計算結(jié)果
print(df[['閱讀成績', '數(shù)學成績', '寫作成績', '總分', '平均分']].head())
這段代碼的作用是從 DataFrame 對象 df 中選取閱讀成績、數(shù)學成績、寫作成績3個字段,并計算每位學生的總分和平均分。具體解釋如下:
df.iloc[:, 5:8] 表示選取第6、7、8列(閱讀成績、數(shù)學成績、寫作成績),使用 sum(axis=1) 對每行求和,將每位學生的總分添加到 df 中。
計算每位學生的平均分,即將每位學生的總分除以3,并將其添加到 df 中。
使用 df[['閱讀成績', '數(shù)學成績', '寫作成績', '總分', '平均分']] 選取 DataFrame 對象 df 中的 閱讀成績、數(shù)學成績、寫作成績、總分、平均分這5個字段,并使用 head() 方法打印出前五行數(shù)據(jù)。
總之,這段代碼的目的是對 DataFrame 對象 df 的特定字段進行處理,并將處理結(jié)果添加到 df 中。它計算了每位學生的總分和平均分,并把這兩個指標加入到了原始數(shù)據(jù)中,方便進一步統(tǒng)計和分析。最后,使用 print 函數(shù)輸出了所選的字段以及新增字段的結(jié)果,以便于我們查看計算結(jié)果。
三、設置及格線為60分,并使用 lambda 函數(shù)判斷每位學生是否通過各門課程
閱讀成績 數(shù)學成績 寫作成績 總分 平均分
0 72 72 74 218 72.666667
1 90 69 88 247 82.333333
2 95 90 93 278 92.666667
3 57 47 44 148 49.333333
4 78 76 75 229 76.333333
# 設置及格線為60分,并使用 lambda 函數(shù)判斷每位學生是否通過各門課程
df['pass_reading'] = df['閱讀成績'].apply(lambda x: 'Pass' if x >= 60 else 'Fail')
df['pass_math'] = df['數(shù)學成績'].apply(lambda x: 'Pass' if x >= 60 else 'Fail')
df['pass_writing'] = df['寫作成績'].apply(lambda x: 'Pass' if x >= 60 else 'Fail')
# 打印修改后的數(shù)據(jù)幀
print(df.head())
這段代碼的主要作用是,首先設置及格線為 60 分,然后使用 lambda 函數(shù)判斷每位學生是否通過閱讀、數(shù)學和寫作三門課程,并將結(jié)果存儲到 df 新添加的三列 pass_reading、pass_math 和 pass_writing 中。具體解釋如下:
使用 apply 方法和 lambda 函數(shù),對閱讀成績、數(shù)學成績、寫作成績這三列,使用 if 判斷語句,若成績大于等于 60,則將該學生的值設定為 ‘Pass’,否則設定為 ‘Fail’,并將判斷結(jié)果添加到 DataFrame 對象 df 的新列中。
因為 DataFrame 對象 df 的三列 pass_reading、pass_math 和 pass_writing 新添加了判斷結(jié)果,所以打印出修改后的 DataFrame 對象 df,以便于我們查看結(jié)果。
總之,這段代碼的目的是對 DataFrame 對象 df 的閱讀成績、數(shù)學成績、寫作成績這三列數(shù)據(jù)進行判斷,并將判斷結(jié)果添加到 df 新添加的三列中。它使用了 apply 方法和 lambda 函數(shù)來對每個成績進行判斷,并根據(jù)判斷結(jié)果添加到相應的新列中。這樣做有利于我們更好地判斷每位學生是否通過各門課程,并能夠在進一步分析中幫助我們更精準地對學生成績進行評估。
性別 民族 父母教育程度 午餐 課程完成情況 數(shù)學成績 閱讀成績 寫作成績 總分 平均分 pass_reading \
0 女 B 學士學位 標準 未完成 72 72 74 218 72.666667 Pass
1 女 C 大學未畢業(yè) 標準 完成 69 90 88 247 82.333333 Pass
2 女 B 碩士學位 標準 未完成 90 95 93 278 92.666667 Pass
3 男 A 副學士學位 自由/減少 未完成 47 57 44 148 49.333333 Fail
4 男 C 大學未畢業(yè) 標準 未完成 76 78 75 229 76.333333 Pass
pass_math pass_writing
0 Pass Pass
1 Pass Pass
2 Pass Pass
3 Fail Fail
4 Pass Pass
四、使用 apply() 函數(shù)和 lambda 表達式判斷每個學生的整體狀態(tài)是否通過,并將判斷結(jié)果存儲在新的數(shù)據(jù)列中
# 使用 apply() 函數(shù)和 lambda 表達式判斷每個學生的整體狀態(tài)是否通過,并將判斷結(jié)果存儲在新的數(shù)據(jù)列中
df['情況'] = df.apply(lambda x: 'Pass' if x['pass_reading'] == 'Pass' and x['pass_math'] == 'Pass' and x['pass_writing'] == 'Pass' else 'Fail', axis=1)
# 打印修改后的數(shù)據(jù)幀
print(df.head())
性別 民族 父母教育程度 午餐 課程完成情況 數(shù)學成績 閱讀成績 寫作成績 總分 平均分 pass_reading \
0 女 B 學士學位 標準 未完成 72 72 74 218 72.666667 Pass
1 女 C 大學未畢業(yè) 標準 完成 69 90 88 247 82.333333 Pass
2 女 B 碩士學位 標準 未完成 90 95 93 278 92.666667 Pass
3 男 A 副學士學位 自由/減少 未完成 47 57 44 148 49.333333 Fail
4 男 C 大學未畢業(yè) 標準 未完成 76 78 75 229 76.333333 Pass
這段代碼的目的是使用 apply() 函數(shù)和 lambda 表達式計算出每個學生的整體狀態(tài)是否通過,并將結(jié)果存儲在 DataFrame 對象 df 的新列 ‘情況’ 中。具體解釋如下:
使用 apply() 函數(shù)和 lambda 表達式,對 DataFrame 對象 df 進行遍歷并應用 lambda 函數(shù),axis=1 表示沿著行方向進行操作。對于每個學生,判斷其閱讀、數(shù)學、寫作三科成績是否全部通過,如果全部通過則該學生整體通過,否則整體不通過。
根據(jù)判斷結(jié)果,將"Pass"或"Fail"存儲到 DataFrame 對象 df 的新列’情況’中。
打印輸出修改后的 DataFrame 對象 df,以便于我們查看計算結(jié)果。
總之,這段代碼的目的是對 DataFrame 對象 df 的三門科目成績是否通過進行整體判斷,并將判斷結(jié)果存儲到一個新列中,這樣可以更加方便地進行學生成績評估。
pass_math pass_writing 情況
0 Pass Pass Pass
1 Pass Pass Pass
2 Pass Pass Pass
3 Fail Fail Fail
4 Pass Pass Pass
五、計算每個學生的總分和平均分,并使用條件表達式判斷成績等級,并將判斷結(jié)果存儲在新的數(shù)據(jù)列中
# 計算每個學生的總分和平均分,并使用條件表達式判斷成績等級,并將判斷結(jié)果存儲在新的數(shù)據(jù)列中
df['總分'] = df['數(shù)學成績'] + df['閱讀成績'] + df['寫作成績']
df['平均分'] = df['總分'] / 3
df['等級'] = df.apply(lambda x: '優(yōu)秀' if x['平均分'] >= 90 else '良好' if x['平均分'] >= 80 else '中等' if x['平均分'] >= 70 else '及格' if x['平均分'] >= 60 else '不及格', axis=1)
# 打印修改后的數(shù)據(jù)幀
print(df.head())
這段代碼的目的是計算每個學生的總分和平均分,并根據(jù)條件表達式判斷成績等級,并將判斷結(jié)果存儲在 DataFrame 對象 df 的新列’等級’中。具體解釋如下:
首先,計算每個學生的總分和平均分,將其存儲在 DataFrame 對象 df 的’總分’和’平均分’列中。
使用 apply() 函數(shù)和 lambda 表達式遍歷 DataFrame 對象 df,axis=1 表示沿著行方向進行操作。對于每個學生,根據(jù)其平均分使用條件表達式判斷其成績等級,例如如果平均分大于等于 90 分,則為優(yōu)秀,大于等于 80 分則為良好,以此類推,將其判斷結(jié)果存儲到 DataFrame 對象 df 的新列’等級’中。
打印輸出修改后的 DataFrame 對象 df,以便于我們查看計算結(jié)果。
總之,這段代碼的目的是對 DataFrame 對象 df 的三門科目成績進行計算并判斷成績等級,將判斷結(jié)果存儲到一個新的數(shù)據(jù)列中。這樣可以更加方便地對學生成績做出評估和分析。
性別 民族 父母教育程度 午餐 課程完成情況 數(shù)學成績 閱讀成績 寫作成績 總分 平均分 pass_reading \
0 女 B 學士學位 標準 未完成 72 72 74 218 72.666667 Pass
1 女 C 大學未畢業(yè) 標準 完成 69 90 88 247 82.333333 Pass
2 女 B 碩士學位 標準 未完成 90 95 93 278 92.666667 Pass
3 男 A 副學士學位 自由/減少 未完成 47 57 44 148 49.333333 Fail
4 男 C 大學未畢業(yè) 標準 未完成 76 78 75 229 76.333333 Pass
pass_math pass_writing 情況 等級
0 Pass Pass Pass 中等
1 Pass Pass Pass 良好
2 Pass Pass Pass 優(yōu)秀
3 Fail Fail Fail 不及格
4 Pass Pass Pass 中等
六、數(shù)據(jù)可視化
1.統(tǒng)計每個家長受教育水平的人數(shù),并繪制水平柱狀圖
import seaborn as sns
import matplotlib.pyplot as plt
# 指定字體
plt.rcParams['font.sans-serif'] = ['SimHei']
# 統(tǒng)計每個家長受教育水平的人數(shù),并繪制水平柱狀圖
edu_counts = df['父母教育程度'].value_counts()
plt.bar(edu_counts.index, edu_counts.values)
plt.xlabel('父母教育程度')
plt.ylabel('人數(shù)')
plt.title('父母受教育程度的水平柱狀圖')
plt.show()
2. 統(tǒng)計及格和不及格的人數(shù),并繪制餅圖
# 統(tǒng)計及格和不及格的人數(shù),并繪制餅圖
pass_counts = df['情況'].value_counts()
labels = ['及格', '不及格']
sizes = [pass_counts['Pass'], pass_counts['Fail']]
plt.pie(sizes,
labels=labels,
autopct='%1.1f%%')
plt.title('全體學生成績分布餅圖')
plt.axis('equal')
plt.show()
3. 繪制數(shù)學成績、閱讀成績和寫作成績的直方圖
# 繪制數(shù)學成績、閱讀成績和寫作成績的直方圖
plt.hist(df['數(shù)學成績'], bins=10, alpha=0.5, label='math score')
plt.hist(df['閱讀成績'], bins=10, alpha=0.5, label='reading score')
plt.hist(df['寫作成績'], bins=10, alpha=0.5, label='writing score')
plt.legend(loc='upper right')
plt.xlabel('成績')
plt.ylabel('人數(shù)')
plt.title('各科成績分布直方圖')
plt.show()
4. 繪制父母受教育程度和前置課程是否完成的分類圖
# 繪制父母受教育程度和前置課程是否完成的分類圖
sns.countplot(x='父母教育程度',
data=df,
hue='課程完成情況')
plt.title('父母受教育程度與前置課程是否完成統(tǒng)計分類圖')
plt.show()
5. 繪制成績評級和性別分布的箱線圖
# 繪制成績評級和性別分布的箱線圖
sns.boxplot(x='等級',
y='總分',
hue='性別',
data=df)
plt.title('成績評級與性別分布箱線圖')
plt.show()
6. 繪制午餐標準和總成績的性別分類散點圖
# 繪制午餐標準和總成績的性別分類散點圖
sns.scatterplot(x='午餐',
y='總分',
hue='性別',
data=df)
plt.title('午餐標準與總成績的性別分類散點圖')
plt.show()
7. 計算各特征之間的相關系數(shù),并繪制熱力圖
corr = df.corr()
sns.heatmap(corr, annot=True, cmap='coolwarm')
plt.title('各特征的相關熱力圖')
plt.show()
七、總結(jié)
通過對學生數(shù)據(jù)的分析和可視化,本Python腳本探討了學生的不同特征與其成績之間的關系,并得出了多個結(jié)論。其中包括父母受教育程度普遍較高、女性學生總成績明顯高于男性學生等。這些結(jié)論為學校、家長和政府制定更有效的教育方案提供了非常有價值的參考。
此外,使用Matplotlib和Seaborn這兩個強大的可視化庫,使得數(shù)據(jù)結(jié)果更加直觀和易懂。通過直觀的圖表呈現(xiàn),我們可以更清晰地看到數(shù)據(jù)分布和相互關系,從而更準確地分析和解讀數(shù)據(jù)。
需要注意的是,盡管本腳本得出了多個結(jié)論,但這些結(jié)論并不一定適用于所有情況,仍需考慮實際情況和背景。同時,還可以通過進一步探究和分析數(shù)據(jù),尋求更深層次的規(guī)律和結(jié)論,為教育領域提供更多的參考和指導。
總之,本Python腳本為教育領域的數(shù)據(jù)分析和研究提供了一個好的起點,也為學生特征和成績之間的關系提供了有力支持。在今后的學生管理和教育實踐中,我們應該進一步挖掘數(shù)據(jù)的潛力,為學生成長和發(fā)展提供更有效的幫助和支持。
八、完整代碼
以下代碼為基于 Pandas 庫對學生表現(xiàn)數(shù)據(jù)進行的一系列操作和可視化,主要包括數(shù)據(jù)讀取、數(shù)據(jù)清洗、數(shù)據(jù)計算、數(shù)據(jù)分析和數(shù)據(jù)可視化等方面的內(nèi)容。其中,我們可以看到對于數(shù)據(jù)的大量處理操作,例如:查看數(shù)據(jù)的前幾行和基本信息、計算總分和平均分、判斷每門課程是否及格、判斷整體狀態(tài)是否通過、計算成績等級、統(tǒng)計分類圖、箱線圖、散點圖、熱力圖等。這些操作可以幫助我們更好地了解和分析該數(shù)據(jù)集,以便后續(xù)做出更好的決策和指導。文章來源:http://www.zghlxwxcb.cn/news/detail-455861.html
import pandas as pd
import pandas as pd
# 使用 GBK 編碼方式讀取文件
df = pd.read_csv("StudentsPerformance.csv", encoding="gbk")
# 查看數(shù)據(jù)的前幾行
print(df.head())
# 查看數(shù)據(jù)的基本信息,包括每列數(shù)據(jù)的類型和非空數(shù)量等
print(df.info())
# 查看數(shù)據(jù)的統(tǒng)計信息,包括每列數(shù)據(jù)的基本統(tǒng)計量(如均值、標準差、最大值、最小值等)
print(df.describe())
# 檢查是否有空值
print(df.isnull().sum())
# 選取閱讀成績、數(shù)學成績、寫作成績3個字段,計算總分和平均分
df['總分'] = df.iloc[:,5:8].sum(axis=1)
df['平均分'] = df['總分'] / 3
# 查看計算結(jié)果
print(df[['閱讀成績', '數(shù)學成績', '寫作成績', '總分', '平均分']].head())
# 設置及格線為60分,并使用 lambda 函數(shù)判斷每位學生是否通過各門課程
df['pass_reading'] = df['閱讀成績'].apply(lambda x: 'Pass' if x >= 60 else 'Fail')
df['pass_math'] = df['數(shù)學成績'].apply(lambda x: 'Pass' if x >= 60 else 'Fail')
df['pass_writing'] = df['寫作成績'].apply(lambda x: 'Pass' if x >= 60 else 'Fail')
# 打印修改后的數(shù)據(jù)幀
print(df.head())
# 使用 apply() 函數(shù)和 lambda 表達式判斷每個學生的整體狀態(tài)是否通過,并將判斷結(jié)果存儲在新的數(shù)據(jù)列中
df['情況'] = df.apply(lambda x: 'Pass' if x['pass_reading'] == 'Pass' and x['pass_math'] == 'Pass' and x['pass_writing'] == 'Pass' else 'Fail', axis=1)
# 打印修改后的數(shù)據(jù)幀
print(df.head())
# 計算每個學生的總分和平均分,并使用條件表達式判斷成績等級,并將判斷結(jié)果存儲在新的數(shù)據(jù)列中
df['總分'] = df['數(shù)學成績'] + df['閱讀成績'] + df['寫作成績']
df['平均分'] = df['總分'] / 3
df['等級'] = df.apply(lambda x: '優(yōu)秀' if x['平均分'] >= 90 else '良好' if x['平均分'] >= 80 else '中等' if x['平均分'] >= 70 else '及格' if x['平均分'] >= 60 else '不及格', axis=1)
# 打印修改后的數(shù)據(jù)幀
print(df.head())
import seaborn as sns
import matplotlib.pyplot as plt
# 指定字體
plt.rcParams['font.sans-serif'] = ['SimHei']
# 統(tǒng)計每個家長受教育水平的人數(shù),并繪制水平柱狀圖
edu_counts = df['父母教育程度'].value_counts()
plt.bar(edu_counts.index, edu_counts.values)
plt.xlabel('父母教育程度')
plt.ylabel('人數(shù)')
plt.title('父母受教育程度的水平柱狀圖')
plt.show()
# 統(tǒng)計及格和不及格的人數(shù),并繪制餅圖
pass_counts = df['情況'].value_counts()
labels = ['及格', '不及格']
sizes = [pass_counts['Pass'], pass_counts['Fail']]
plt.pie(sizes,
labels=labels,
autopct='%1.1f%%')
plt.title('全體學生成績分布餅圖')
plt.axis('equal')
plt.show()
# 繪制數(shù)學成績、閱讀成績和寫作成績的直方圖
plt.hist(df['數(shù)學成績'], bins=10, alpha=0.5, label='math score')
plt.hist(df['閱讀成績'], bins=10, alpha=0.5, label='reading score')
plt.hist(df['寫作成績'], bins=10, alpha=0.5, label='writing score')
plt.legend(loc='upper right')
plt.xlabel('成績')
plt.ylabel('人數(shù)')
plt.title('各科成績分布直方圖')
plt.show()
# 繪制父母受教育程度和前置課程是否完成的分類圖
sns.countplot(x='父母教育程度',
data=df,
hue='課程完成情況')
plt.title('父母受教育程度與前置課程是否完成統(tǒng)計分類圖')
plt.show()
# 繪制成績評級和性別分布的箱線圖
sns.boxplot(x='等級',
y='總分',
hue='性別',
data=df)
plt.title('成績評級與性別分布箱線圖')
plt.show()
# 繪制午餐標準和總成績的性別分類散點圖
sns.scatterplot(x='午餐',
y='總分',
hue='性別',
data=df)
plt.title('午餐標準與總成績的性別分類散點圖')
plt.show()
# 計算各特征之間的相關系數(shù),并繪制熱力圖
corr = df.corr()
sns.heatmap(corr, annot=True, cmap='coolwarm')
plt.title('各特征的相關熱力圖')
plt.show()
附錄: 數(shù)據(jù)文件
本次案列所用到的CSV數(shù)據(jù)文章來源地址http://www.zghlxwxcb.cn/news/detail-455861.html
到了這里,關于Python數(shù)據(jù)可視化實戰(zhàn)期末課程設計——各科目考試成績可視化項目的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!