注意:本實驗是基於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,我現在還沒有吃飯。嚶嚶嚶~~~·~~