利用Python分析學生成績(完整版)

注意:本實驗是基於Anconda3.X所進行的

  • 一、題目描述
  • 二、題目分析
  • 三、完整代碼展示
  • 四、結果展示

一、題目描述

個人構造一個30名學生的班級,每名學生有三門課程,學生的學號和各門成績形如:
學號 高數 英語 Python
1001 85 90 96
1002 96 92 95
1003 78 87 83
爲了輸入數據方便,請保存在如student_score.csv文件中。
(1)請計算三門課程的總分,此班級每門課程的平均分和最高分及最低分,並繪製相應的圖形來統計三門課程的成績分佈。
(2)各圖形自擬。
(3)座標軸標籤,圖例等屬性設置完整。
(4)使用中文標題及標籤。

二、題目分析

第一步:我們需要自己建立一個.csv文件或者從Spyder中進行輸入,我採用的是自己建立一個student_score.csv文件並且手動輸入所有內容。
鏈接:student_score.csv下載鏈接
提取碼:unms

第二步:在Spyder中讀取student_score.csv爲DataFrame字符流,並且賦值給df,需要設置編碼格式爲GBK格式,此處我把student_score.csv文件存放在E盤目錄下。

df=pd.read_csv('E:\\student_score.csv',encoding='GBK')

第三步:設置字體格式,下面需要用到matplotlib庫,需要設置字體格式,否則圖形可視化的時候中文標題無法顯示,設置方法如下:

plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False

第四步:從df中提取需要的數據。

Python_max=df.Python.max() #python最大值
math_max=df.高數.max()  #高數最大值
english_max=df.英語.max()  #英語最大值

Python_min=df.Python.min() #python最小值
math_min=df.高數.min() #高數最小值
english_min=df.英語.min() #英語最小值

name=df.學號
students_scores=df.高數+df.Python+df.英語 #學生總成績

Python_avg=df.Python.mean()#python平均分
math_avg=df.高數.mean() #高數平均分
english_avg=df.英語.mean() #英語平均分

第五步:在代碼開頭導入相關的包。

import matplotlib.pyplot as plt
import pandas as pd

第六步:對數據可視化。

plt.title('學生總成績分佈圖')
plt.xlabel('學號')
plt.ylabel('總分')
plt.bar(name,students_scores)
plt.figure()
plt.show()

plt.title('每門課程平均分展示圖')
plt.xlabel('課程名')
plt.ylabel('平均分')
plt.bar('Python',Python_avg)
plt.bar('高數',math_avg)
plt.bar('英語',english_avg)
plt.figure()
plt.show()

plt.title('每門課程最高分展示圖')
plt.xlabel('課程名')
plt.ylabel('最高分')
plt.bar('Python',Python_max)
plt.bar('高數',math_max)
plt.bar('英語',english_max)
plt.figure()
plt.show()

plt.title('每門課程最低分展示圖')
plt.xlabel('課程名')
plt.ylabel('最低分')
plt.bar('Python',Python_min)
plt.bar('高數',math_min)
plt.bar('英語',english_min)
#plt.figure() #可以刪除
plt.show()

三、完整代碼展示

import matplotlib.pyplot as plt
import pandas as pd
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False
df=pd.read_csv('E:\\student_score.csv',encoding='GBK') #讀取student_score.csv文件爲DataFrame字符流
Python_max=df.Python.max() #python最大值
math_max=df.高數.max()  #高數最大值
english_max=df.英語.max()  #英語最大值

Python_min=df.Python.min() #python最小值
math_min=df.高數.min() #高數最小值
english_min=df.英語.min() #英語最小值

name=df.學號
students_scores=df.高數+df.Python+df.英語 #學生總成績

Python_avg=df.Python.mean()#python平均分
math_avg=df.高數.mean() #高數平均分
english_avg=df.英語.mean() #英語平均分

plt.title('學生總成績分佈圖')
plt.xlabel('學號')
plt.ylabel('總分')
plt.bar(name,students_scores)
plt.figure()
plt.show()


plt.title('每門課程平均分展示圖')
plt.xlabel('課程名')
plt.ylabel('平均分')
plt.bar('Python',Python_avg)
plt.bar('高數',math_avg)
plt.bar('英語',english_avg)
plt.figure()
plt.show()

plt.title('每門課程最高分展示圖')
plt.xlabel('課程名')
plt.ylabel('最高分')
plt.bar('Python',Python_max)
plt.bar('高數',math_max)
plt.bar('英語',english_max)
plt.figure()
plt.show()

plt.title('每門課程最低分展示圖')
plt.xlabel('課程名')
plt.ylabel('最低分')
plt.bar('Python',Python_min)
plt.bar('高數',math_min)
plt.bar('英語',english_min)
#plt.figure() #可以刪除
plt.show()

四、結果展示

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

五、問題總結

有問題可以參考以下鏈接
數據分析入門常見問題彙總

我太難了,現在是2020年4月1日23:06,我現在還沒有吃飯。嚶嚶嚶~~~·~~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章