目錄
一、實踐要求
二、測試數(shù)據(jù)
18.student_score.csv文件:(以下是分別用記事本和Excel打開的數(shù)據(jù),可自行粘貼到記事本或Excel上保存為csv文件)
三、代碼實現(xiàn)
1.從18.student_score.csv文件中讀取同學(xué)的成績冊,處理好缺失值。
輸出的結(jié)果(print(df)):
2.將實驗報告成績從ABCD轉(zhuǎn)換成百分制,統(tǒng)計出實驗成績。A為90分,B為75分,C為60分,D為40分。
輸出的結(jié)果(print(df)):
3.按照平時成績20%,實驗成績30%,期末成績50%的比例計算綜合成績,形成新的綜合成績列。
輸出的結(jié)果:print(df)
print(counts):
4.統(tǒng)計全班綜合成績[90,100],[80,89],[70,79],[60-69],[0,59]各段成績的人數(shù)并畫餅圖。
輸出的結(jié)果:
5.將完整的成績保存到score.csv文件中,打開excel檢查輸出是否正確。
打開excel檢查輸出是否正確:
?四、學(xué)習(xí)資料
一、實踐要求
1.從18.student_score.csv文件中讀取同學(xué)的成績冊,處理好缺失值。
2.將實驗報告成績從ABCD轉(zhuǎn)換成百分制,統(tǒng)計出實驗成績。A為90分,B為75分,C為60分,D為40分。
3.按照平時成績20%,實驗成績30%,期末成績50%的比例計算綜合成績,形成新的綜合成績列。
4.統(tǒng)計全班綜合成績[90,100],[80,89],[70,79],[60-69],[0,59]各段成績的人數(shù)并畫餅圖。
5.將完整的成績保存到score.csv文件中,打開excel檢查輸出是否正確。
二、測試數(shù)據(jù)
18.student_score.csv文件:(以下是分別用記事本和Excel打開的數(shù)據(jù),可自行粘貼到記事本或Excel上保存為csv文件)
序號,姓名,平時成績,實驗成績,期末成績
1,張三,95,A,81
2,李四,94,B,60
3,王五,95,C,87
4,馬七,97,D,75
5,夢雪,97,A,63
6,櫻花,94,A,66
7,杏子,94,A,28
8,天涯,99,A,76
9,孔維,94,B,84
10,趙四,95,D,86
11,孫二,100,C,60
12,,98,,
13,太良,98,D,83
14,丁云,95,D,83
15,淑萍,98,D,80
16,溪美,98,C,53
17,泰山,96,A,67
18,梅花,,A,64
19,梅六,98,B,68
20,云霞,96,B,85
序號 姓名 平時成績 實驗成績 期末成績 1 張三 95 A 81 2 李四 94 B 60 3 王五 95 C 87 4 馬七 97 D 75 5 夢雪 97 A 63 6 櫻花 94 A 66 7 杏子 94 A 28 8 天涯 99 A 76 9 孔維 94 B 84 10 趙四 95 D 86 11 孫二 100 C 60 12 98 13 太良 98 D 83 14 丁云 95 D 83 15 淑萍 98 D 80 16 溪美 98 C 53 17 泰山 96 A 67 18 梅花 A 64 19 梅六 98 B 68 20 云霞 96 B 85
三、代碼實現(xiàn)
1.從18.student_score.csv文件中讀取同學(xué)的成績冊,處理好缺失值。
import pandas as pd
# 繪圖需要使用的庫
from matplotlib import pyplot as plt
# 從18.student_score.csv文件中讀取同學(xué)的成績冊,處理好缺失值
df = pd.read_csv("18.student_score.csv")
df.set_index("序號", inplace=True) # 將序號作為index索引
df['姓名'].fillna('老六', inplace=True)
df = df.fillna(method="bfill") # 處理缺失值:backfill / bfill表示用后面行的值,填充當(dāng)前行的空值
# print(df)
輸出的結(jié)果(print(df)):
2.將實驗報告成績從ABCD轉(zhuǎn)換成百分制,統(tǒng)計出實驗成績。A為90分,B為75分,C為60分,D為40分。
# 將實驗報告成績從ABCD轉(zhuǎn)換成百分制,統(tǒng)計出實驗成績。A為90分,B為75分,C為60分,D為40分。
for x in df.index:
if df.loc[x, "實驗成績"] == 'A':
df.loc[x, "實驗成績"] = 90
if df.loc[x, "實驗成績"] == 'B':
df.loc[x, "實驗成績"] = 75
if df.loc[x, "實驗成績"] == 'C':
df.loc[x, "實驗成績"] = 60
if df.loc[x, "實驗成績"] == 'D':
df.loc[x, "實驗成績"] = 40
# print(df)
輸出的結(jié)果(print(df)):
3.按照平時成績20%,實驗成績30%,期末成績50%的比例計算綜合成績,形成新的綜合成績列。
# 按照平時成績20%,實驗成績30%,期末成績50%的比例計算綜合成績,形成新的綜合成績列。
df["綜合成績"] = df["平時成績"] * 0.2 + df["實驗成績"] * 0.3 + df["期末成績"] * 0.5
print(df)
# 統(tǒng)計全班綜合成績[90,100],[80,89],[70,79],[60-69],[0,59]各段成績的人數(shù),并畫餅圖。
num = pd.cut(df['綜合成績'], bins=[0, 60, 70, 80, 90, 100], labels=['0-59', '60-69', '70-79', '80-89', '90-100'],
right=False) # bins為分區(qū)的分界值,labels為相應(yīng)區(qū)間的標(biāo)簽
counts = num.value_counts() # 統(tǒng)計區(qū)間人數(shù)
# print(counts)
輸出的結(jié)果:print(df)
print(counts):
4.統(tǒng)計全班綜合成績[90,100],[80,89],[70,79],[60-69],[0,59]各段成績的人數(shù)并畫餅圖。
plt.rcParams['font.sans-serif'] = ['SimHei'] # 顯示中文字體
plt.pie(counts, autopct='%1.1f%%')# autopct后面的值1.1表示保留2位小數(shù)
plt.legend(labels=['70-79', '80-89', '60-69', '0-59', '90-100'], loc="best") # 繪制圖的圖例為name,位置為最佳
plt.title("學(xué)生綜合成績區(qū)間分布圖") # 餅圖的名稱
plt.show()
輸出的結(jié)果:
5.將完整的成績保存到score.csv文件中,打開excel檢查輸出是否正確。
# 完整的成績保存到score.csv文件中,打開excel檢查輸出是否正確。
df.to_csv('score.csv', encoding='utf-8-sig')
# “utf-8-sig"中sig全拼為 signature 也就是"帶有簽名的utf-8”,
# 因此"utf-8-sig"讀取帶有BOM的"utf-8文件時"會把BOM單獨(dú)處理,與文本內(nèi)容隔離開,也是我們期望的結(jié)果。
打開excel檢查輸出是否正確:
?四、學(xué)習(xí)資料
?以下是本實踐涉及到的學(xué)習(xí)資料鏈接:
python解決csv文件用excel打開亂碼問題 - 簡書 (jianshu.com)
(93條消息) python csv寫文件,用Excel打開中文亂碼解決_dcong9010的博客-CSDN博客
數(shù)據(jù)分箱之pd.cut() - 知乎 (zhihu.com)
Pandas 數(shù)據(jù)清洗 | 菜鳥教程 (runoob.com)文章來源:http://www.zghlxwxcb.cn/news/detail-458014.html
(93條消息) 菜鳥編程:python中使用matplotlib繪制餅狀圖_小菜鳥Zoe的博客-CSDN博客文章來源地址http://www.zghlxwxcb.cn/news/detail-458014.html
到了這里,關(guān)于Python實踐之Pandas的使用——分析統(tǒng)計學(xué)生期末成績并繪圖的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!