python中成绩分析函数_自学Python笔记:用Python做成绩分析(1)
有朋友會問,剛學了一周,什么是面向對象都還不清楚就可以寫程序?還有Python不是寫“爬蟲”嗎?
Python是面向對象的語言,函數、模塊、數字、字符串都是對象,并且完全支持繼承、重載、派生、多繼承,有益于增強源代碼的復用性。如果想快速的搞清楚面向對象的三大特性“封裝、繼承和多態”估計不下點功夫還真搞不明白,還有Python的類可以繼承多個類,雖然是一種多態語言但多態的使用也有爭議,純粹學面向感覺對于數據結構不扎實的初學者來說搞不好容易搞迷糊。
抽象派
函數式編程對于初學者來說可能更容易理解,再就是編個小程序直接函數式編程就可以解決了。好處是Python同時支持兩種編程方式,且函數式編程能完成的操作,面向對象都可以實現,雖然從編寫成績分析這樣的小程序來說可能面向對象更合適,為什么這么說呢?在編寫時需要創建多個事物,每個事物屬性個數相同,但是值的需求都是不相同(如:張三、李四、楊五,他們都有姓名、班級、成績,但值不同)這種非常適合面向對象的。
不管是哪種方式,只要能夠解決當前的問題就是正確的方式,畢竟對于軟件工程來說解決問題是最主要的,用的工具反而沒有那么重要,就像對程序員來說語言不重要,重要的是解決問題的思想。
另外Python翻譯過來“蟒蛇”,蟒蛇是什么?爬的大蟲啊O(∩_∩)O~。“爬蟲”主要目的是將網頁下載到本地,然后通過一系列的數據分析算法等提取有效信息,進而對后續的機器學習,自然語言分析,數據可視化。因為python的庫實在是太豐富了,又容易入手,很容易把這些工作無縫銜接起來,自然也就成了第一選擇。
后面恰當的時候會寫一個“爬蟲”來獲取學生成績用于數據分析,什么成績需要“爬”?比如高考成績公布了,領導安排你做數據分析,原來都是學生把查到數據交給班主任,班主任匯總后交到學校,最后才做分析,費時不說還容易出差錯,如果用“爬蟲”可以省去很多的麻煩,這個屬于數據信息的獲取,后面將提到。
數據分析
廢話好像太多了,開始今天的話題:用Python做一份成績分析。
任務交代:
有三個學校(育英中學、育才中學、育德中學)的成績,excel表部分數據如下:
準考證號
姓名
學校
班級
語文
數學
英語
綜合
體育
實驗
信息
總分
名次
20180101002
李子強
育才中學
1
79
105
88
137
41
18
18
20180101312
尹金杰
育德中學
3
72
99
26
122
46
20
12
20180101195
李帥
育德中學
1
89
98
115
140
37
20
11
20180101197
李帥
育德中學
1
93
98
98
136
44
20
13
20180101252
張夢冉
育德中學
2
81
96
64
133
39
20
7
20180101228
張如霞
育德中學
1
83
95
72
137
41
20
14
20180101200
段樹偉
育德中學
1
94
95
96
131
46
18
12
20180101137
徐曉潭
育英中學
1
75
94
69
128
48
20
19
20180101004
吳子航
育才中學
1
90
94
89
125
44
20
13
20180101194
劉帥
育德中學
1
89
93
111
138
45
20
16
20180101221
韓睿
育德中學
1
83
93
84
125
46
20
19
20180101198
張帥
育德中學
1
97
92
103
138
44
20
9
需要計算各考生的總分、總名次并根據公布的分數線(一線:430二線:320)統計各學校的上線情況。
學校
考生數
平均分
一線人數
一線率
二線人數
二線率
育才中學
育英中學
育德中學
任務比較簡單,主要目的還是熟悉Python的基本用法,獲得存在感,其實這么簡單的數據分析用excel很容易搞定,但現實中處理起來可能不限于以上要求,到時根據需要再增加功能即可。
工具選擇:python、 pandas 、openpyxl、matplotlib(考慮后面可能做圖表,也符合教材要求)
Python處理excel有好多的庫可以選擇,比如:xlwings、openpyxl、pandas、Xlsxwriter、xlutils(結合xlrd/xlwt)等,各有各的特點,特別前三種推薦使用,尤其數據處理是pandas的強項,這里它吧Excel 作為輸入/輸出數據的容器。
第一篇筆記中已經完成了pandas 、matplotlib的安裝,為了后面的應用建議安裝一下openpyxl和numexpr,命令如下:
openpyxl的安裝
numexpr的安裝
今天重點學習一下pandas 可能需要的excel操作。
1.導入pandas模塊
import pandas as pd
import pandas as pd
2.導入原始成績Excel文件“grade.xlsx”,如果不加"Sheet1,默認是第一個sheet頁。
df = pd.read_excel("grade.xlsx","Sheet1")
df = pd.read_excel("grade.xlsx","Sheet1")
或者(sheetname=0表示第一個sheet頁,sheetname=1表示第二個sheet頁,以此類推)
df = pd.read_excel(r"grade.xlsx",sheetname=0)
df = pd.read_excel(r"grade.xlsx",sheetname=0)
如果在命令行下可以利用 “df.dtypes”瀏覽一下該數據表的數據類型。
原始表數據類型
3.數據的篩選,如篩選所有“育才中學”的學生。如果想要更多復雜的篩選,可以使用map來以多重標準進行篩選,這里暫且不表。
df[df["學校"] =='育才中學'].head()
df[df["學校"] =='育才中學'].head()
篩選后顯示
如果安裝了numexpr后還可以用query來完成,結果一樣。
df.query('學校 == ["育才中學"]').head()
df.query('學校 == ["育才中學"]').head()
query篩選
注意:df.head()一般列舉的是前5條
4.數據簡單的計算,如計算每個學生的總分。
df["總分"] = df["語文"] + df["數學"] + df["英語"]+ df["綜合"]+ df["體育"]+ df["實驗"]+ df["信息"]
df["總分"] = df["語文"] + df["數學"] + df["英語"]+ df["綜合"]+ df["體育"]+ df["實驗"]+ df["信息"]
計算總分
5.排序,by為字段,ascending為排序方式,如下面為按總分倒序排序。
df.sort_values(by='總分',ascending=False)
df.sort_values(by='總分',ascending=False)
排序
下面這一條是按學校正序、總分倒序排序。
df.sort_values(by=['學校','總分'],ascending=[1,0])
df.sort_values(by=['學校','總分'],ascending=[1,0])
6.數據的統計,利用pandas庫進行數據分組分析十分便捷,其中應用最多的方法包括:groupby、pivot_table及crosstab。舉個小栗子,如統計各個學校的學生人數。
df.groupby('學校')['總分'].count()
df.groupby('學校')['總分'].count()
分類統計
7.文件的保存。只有一個工作簿的話可以用to_excel()方法創建Excel文件是將DataFrame里的內容寫入,這里只有DataFrame對象才可以用to_excel()。多個DataFrame導入同一個Excel表格,但是要區分工作簿時需要用“ExcelWriter”。
df.to_excel('grade.xlsx',sheet_name='grade')
df.to_excel('grade.xlsx',sheet_name='grade')
基本的知識先學到這,下一步嘗試按要求形成demo。
關注我,帶給您更多有趣有意義的信息~
總結
以上是生活随笔為你收集整理的python中成绩分析函数_自学Python笔记:用Python做成绩分析(1)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 优化问题---凸优化基本概念
- 下一篇: 王者荣耀体验服服务器维护,王者荣耀