日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

python中成绩分析函数_自学Python笔记:用Python做成绩分析(1)

發布時間:2024/3/26 50 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python中成绩分析函数_自学Python笔记:用Python做成绩分析(1) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

有朋友會問,剛學了一周,什么是面向對象都還不清楚就可以寫程序?還有Python不是寫“爬蟲”嗎?

Python是面向對象的語言,函數、模塊、數字、字符串都是對象,并且完全支持繼承、重載、派生、多繼承,有益于增強源代碼的復用性。如果想快速的搞清楚面向對象的三大特性“封裝、繼承和多態”估計不下點功夫還真搞不明白,還有Python的類可以繼承多個類,雖然是一種多態語言但多態的使用也有爭議,純粹學面向感覺對于數據結構不扎實的初學者來說搞不好容易搞迷糊。

抽象派

函數式編程對于初學者來說可能更容易理解,再就是編個小程序直接函數式編程就可以解決了。好處是Python同時支持兩種編程方式,且函數式編程能完成的操作,面向對象都可以實現,雖然從編寫成績分析這樣的小程序來說可能面向對象更合適,為什么這么說呢?在編寫時需要創建多個事物,每個事物屬性個數相同,但是值的需求都是不相同(如:張三、李四、楊五,他們都有姓名、班級、成績,但值不同)這種非常適合面向對象的。

不管是哪種方式,只要能夠解決當前的問題就是正確的方式,畢竟對于軟件工程來說解決問題是最主要的,用的工具反而沒有那么重要,就像對程序員來說語言不重要,重要的是解決問題的思想。

另外Python翻譯過來“蟒蛇”,蟒蛇是什么?爬的大蟲啊O(∩_∩)O~?!芭老x”主要目的是將網頁下載到本地,然后通過一系列的數據分析算法等提取有效信息,進而對后續的機器學習,自然語言分析,數據可視化。因為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)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。