日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > python >内容正文

python

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

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

有朋友會(huì)問(wèn),剛學(xué)了一周,什么是面向?qū)ο蠖歼€不清楚就可以寫(xiě)程序?還有Python不是寫(xiě)“爬蟲(chóng)”嗎?

Python是面向?qū)ο蟮恼Z(yǔ)言,函數(shù)、模塊、數(shù)字、字符串都是對(duì)象,并且完全支持繼承、重載、派生、多繼承,有益于增強(qiáng)源代碼的復(fù)用性。如果想快速的搞清楚面向?qū)ο蟮娜筇匦浴胺庋b、繼承和多態(tài)”估計(jì)不下點(diǎn)功夫還真搞不明白,還有Python的類(lèi)可以繼承多個(gè)類(lèi),雖然是一種多態(tài)語(yǔ)言但多態(tài)的使用也有爭(zhēng)議,純粹學(xué)面向感覺(jué)對(duì)于數(shù)據(jù)結(jié)構(gòu)不扎實(shí)的初學(xué)者來(lái)說(shuō)搞不好容易搞迷糊。

抽象派

函數(shù)式編程對(duì)于初學(xué)者來(lái)說(shuō)可能更容易理解,再就是編個(gè)小程序直接函數(shù)式編程就可以解決了。好處是Python同時(shí)支持兩種編程方式,且函數(shù)式編程能完成的操作,面向?qū)ο蠖伎梢詫?shí)現(xiàn),雖然從編寫(xiě)成績(jī)分析這樣的小程序來(lái)說(shuō)可能面向?qū)ο蟾线m,為什么這么說(shuō)呢?在編寫(xiě)時(shí)需要?jiǎng)?chuàng)建多個(gè)事物,每個(gè)事物屬性個(gè)數(shù)相同,但是值的需求都是不相同(如:張三、李四、楊五,他們都有姓名、班級(jí)、成績(jī),但值不同)這種非常適合面向?qū)ο蟮摹?/p>

不管是哪種方式,只要能夠解決當(dāng)前的問(wèn)題就是正確的方式,畢竟對(duì)于軟件工程來(lái)說(shuō)解決問(wèn)題是最主要的,用的工具反而沒(méi)有那么重要,就像對(duì)程序員來(lái)說(shuō)語(yǔ)言不重要,重要的是解決問(wèn)題的思想。

另外Python翻譯過(guò)來(lái)“蟒蛇”,蟒蛇是什么?爬的大蟲(chóng)啊O(∩_∩)O~。“爬蟲(chóng)”主要目的是將網(wǎng)頁(yè)下載到本地,然后通過(guò)一系列的數(shù)據(jù)分析算法等提取有效信息,進(jìn)而對(duì)后續(xù)的機(jī)器學(xué)習(xí),自然語(yǔ)言分析,數(shù)據(jù)可視化。因?yàn)閜ython的庫(kù)實(shí)在是太豐富了,又容易入手,很容易把這些工作無(wú)縫銜接起來(lái),自然也就成了第一選擇。

后面恰當(dāng)?shù)臅r(shí)候會(huì)寫(xiě)一個(gè)“爬蟲(chóng)”來(lái)獲取學(xué)生成績(jī)用于數(shù)據(jù)分析,什么成績(jī)需要“爬”?比如高考成績(jī)公布了,領(lǐng)導(dǎo)安排你做數(shù)據(jù)分析,原來(lái)都是學(xué)生把查到數(shù)據(jù)交給班主任,班主任匯總后交到學(xué)校,最后才做分析,費(fèi)時(shí)不說(shuō)還容易出差錯(cuò),如果用“爬蟲(chóng)”可以省去很多的麻煩,這個(gè)屬于數(shù)據(jù)信息的獲取,后面將提到。

數(shù)據(jù)分析

廢話好像太多了,開(kāi)始今天的話題:用Python做一份成績(jī)分析。

任務(wù)交代:

有三個(gè)學(xué)校(育英中學(xué)、育才中學(xué)、育德中學(xué))的成績(jī),excel表部分?jǐn)?shù)據(jù)如下:

準(zhǔn)考證號(hào)

姓名

學(xué)校

班級(jí)

語(yǔ)文

數(shù)學(xué)

英語(yǔ)

綜合

體育

實(shí)驗(yàn)

信息

總分

名次

20180101002

李子強(qiáng)

育才中學(xué)

1

79

105

88

137

41

18

18

20180101312

尹金杰

育德中學(xué)

3

72

99

26

122

46

20

12

20180101195

李帥

育德中學(xué)

1

89

98

115

140

37

20

11

20180101197

李帥

育德中學(xué)

1

93

98

98

136

44

20

13

20180101252

張夢(mèng)冉

育德中學(xué)

2

81

96

64

133

39

20

7

20180101228

張如霞

育德中學(xué)

1

83

95

72

137

41

20

14

20180101200

段樹(shù)偉

育德中學(xué)

1

94

95

96

131

46

18

12

20180101137

徐曉潭

育英中學(xué)

1

75

94

69

128

48

20

19

20180101004

吳子航

育才中學(xué)

1

90

94

89

125

44

20

13

20180101194

劉帥

育德中學(xué)

1

89

93

111

138

45

20

16

20180101221

韓睿

育德中學(xué)

1

83

93

84

125

46

20

19

20180101198

張帥

育德中學(xué)

1

97

92

103

138

44

20

9

需要計(jì)算各考生的總分、總名次并根據(jù)公布的分?jǐn)?shù)線(一線:430二線:320)統(tǒng)計(jì)各學(xué)校的上線情況。

學(xué)校

考生數(shù)

平均分

一線人數(shù)

一線率

二線人數(shù)

二線率

育才中學(xué)

育英中學(xué)

育德中學(xué)

任務(wù)比較簡(jiǎn)單,主要目的還是熟悉Python的基本用法,獲得存在感,其實(shí)這么簡(jiǎn)單的數(shù)據(jù)分析用excel很容易搞定,但現(xiàn)實(shí)中處理起來(lái)可能不限于以上要求,到時(shí)根據(jù)需要再增加功能即可。

工具選擇:python、 pandas 、openpyxl、matplotlib(考慮后面可能做圖表,也符合教材要求)

Python處理excel有好多的庫(kù)可以選擇,比如:xlwings、openpyxl、pandas、Xlsxwriter、xlutils(結(jié)合x(chóng)lrd/xlwt)等,各有各的特點(diǎn),特別前三種推薦使用,尤其數(shù)據(jù)處理是pandas的強(qiáng)項(xiàng),這里它吧Excel 作為輸入/輸出數(shù)據(jù)的容器。

第一篇筆記中已經(jīng)完成了pandas 、matplotlib的安裝,為了后面的應(yīng)用建議安裝一下openpyxl和numexpr,命令如下:

openpyxl的安裝

numexpr的安裝

今天重點(diǎn)學(xué)習(xí)一下pandas 可能需要的excel操作。

1.導(dǎo)入pandas模塊

import pandas as pd

import pandas as pd

2.導(dǎo)入原始成績(jī)Excel文件“grade.xlsx”,如果不加"Sheet1,默認(rèn)是第一個(gè)sheet頁(yè)。

df = pd.read_excel("grade.xlsx","Sheet1")

df = pd.read_excel("grade.xlsx","Sheet1")

或者(sheetname=0表示第一個(gè)sheet頁(yè),sheetname=1表示第二個(gè)sheet頁(yè),以此類(lèi)推)

df = pd.read_excel(r"grade.xlsx",sheetname=0)

df = pd.read_excel(r"grade.xlsx",sheetname=0)

如果在命令行下可以利用 “df.dtypes”瀏覽一下該數(shù)據(jù)表的數(shù)據(jù)類(lèi)型。

原始表數(shù)據(jù)類(lèi)型

3.數(shù)據(jù)的篩選,如篩選所有“育才中學(xué)”的學(xué)生。如果想要更多復(fù)雜的篩選,可以使用map來(lái)以多重標(biāo)準(zhǔn)進(jìn)行篩選,這里暫且不表。

df[df["學(xué)校"] =='育才中學(xué)'].head()

df[df["學(xué)校"] =='育才中學(xué)'].head()

篩選后顯示

如果安裝了numexpr后還可以用query來(lái)完成,結(jié)果一樣。

df.query('學(xué)校 == ["育才中學(xué)"]').head()

df.query('學(xué)校 == ["育才中學(xué)"]').head()

query篩選

注意:df.head()一般列舉的是前5條

4.數(shù)據(jù)簡(jiǎn)單的計(jì)算,如計(jì)算每個(gè)學(xué)生的總分。

df["總分"] = df["語(yǔ)文"] + df["數(shù)學(xué)"] + df["英語(yǔ)"]+ df["綜合"]+ df["體育"]+ df["實(shí)驗(yàn)"]+ df["信息"]

df["總分"] = df["語(yǔ)文"] + df["數(shù)學(xué)"] + df["英語(yǔ)"]+ df["綜合"]+ df["體育"]+ df["實(shí)驗(yàn)"]+ df["信息"]

計(jì)算總分

5.排序,by為字段,ascending為排序方式,如下面為按總分倒序排序。

df.sort_values(by='總分',ascending=False)

df.sort_values(by='總分',ascending=False)

排序

下面這一條是按學(xué)校正序、總分倒序排序。

df.sort_values(by=['學(xué)校','總分'],ascending=[1,0])

df.sort_values(by=['學(xué)校','總分'],ascending=[1,0])

6.數(shù)據(jù)的統(tǒng)計(jì),利用pandas庫(kù)進(jìn)行數(shù)據(jù)分組分析十分便捷,其中應(yīng)用最多的方法包括:groupby、pivot_table及crosstab。舉個(gè)小栗子,如統(tǒng)計(jì)各個(gè)學(xué)校的學(xué)生人數(shù)。

df.groupby('學(xué)校')['總分'].count()

df.groupby('學(xué)校')['總分'].count()

分類(lèi)統(tǒng)計(jì)

7.文件的保存。只有一個(gè)工作簿的話可以用to_excel()方法創(chuàng)建Excel文件是將DataFrame里的內(nèi)容寫(xiě)入,這里只有DataFrame對(duì)象才可以用to_excel()。多個(gè)DataFrame導(dǎo)入同一個(gè)Excel表格,但是要區(qū)分工作簿時(shí)需要用“ExcelWriter”。

df.to_excel('grade.xlsx',sheet_name='grade')

df.to_excel('grade.xlsx',sheet_name='grade')

基本的知識(shí)先學(xué)到這,下一步嘗試按要求形成demo。

關(guān)注我,帶給您更多有趣有意義的信息~

總結(jié)

以上是生活随笔為你收集整理的python中成绩分析函数_自学Python笔记:用Python做成绩分析(1)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。