版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
存儲(chǔ)數(shù)據(jù)
存儲(chǔ)數(shù)據(jù)——學(xué)生就業(yè)信息數(shù)據(jù)讀寫和數(shù)據(jù)持久化本章學(xué)習(xí)目標(biāo)了解MySQL的基本概念掌握MySQL的安裝和操作方法了解PyMySQL和MySQL的區(qū)別掌握PyMySQL的安裝和基本用法了解CSV和JSON的基礎(chǔ)知識(shí)和數(shù)據(jù)類型轉(zhuǎn)換掌握CSV和JSON數(shù)據(jù)的讀取和寫入操作3.4CSV和JSON 3.4.1CSV的概述
CSV(Comma-SeparatedValues)雖然名為逗號(hào)分隔符值,但也可以稱為字符分隔符值,即可以使用其他符號(hào)作為分隔符。CSV是以字符序列的方式,以純文本形式保存表格數(shù)據(jù),以一行為一條記錄,記錄間以換行符為分隔。類似于EXCEL表格,CSV以字段的形式表示數(shù)據(jù),每行記錄都有多個(gè)字段組成,且所有記錄都相同字段。如果先得到數(shù)據(jù)格式為Excel或者TXT,那么必須要轉(zhuǎn)換格式。1)將TXT文件轉(zhuǎn)換為CSV格式。圖3-14所示為TXT文件,執(zhí)行“文件”→“另存為”菜單命令,修改保存文件格式為“.csv”,在“編碼”下拉列表框中選擇正確的編碼格式后單擊“保存”按鈕,如圖3-15所示。圖3-14TXT文件a)b)圖3-15將TXT文件轉(zhuǎn)換為CSV格式a)執(zhí)行“另存為”菜單命令b)設(shè)置保存文件的后綴名為.csv2)將Excel文件轉(zhuǎn)換為CSV格式。圖3-16所示為Excel文件,執(zhí)行“文件”→“另存為”→“其他格式”菜單命令,文件類型選擇“*.csv”,單擊“保存”按鈕,如圖3-17所示。圖3-16Excel文件b)a)圖3-17將Excel文件轉(zhuǎn)換為CSV格式a)執(zhí)行“另存為”菜單命令b)設(shè)置保存文件的后綴名為.csv3)CSV文件分析
上面的CSV文件的結(jié)構(gòu)主要分為兩個(gè)部分:文件頭和文件內(nèi)容。其中,文件頭是由多個(gè)字段組成(班級(jí),先就業(yè)公司名稱,工作崗位,大學(xué)擔(dān)任職務(wù)),其他部分為文件內(nèi)容。因此,可以通過CSV文件的行和字段獲取特定內(nèi)容。3.4.2輸出CSV文件頭部【實(shí)例3-2】接下來輸出該CSV文件的頭部信息:班級(jí)、現(xiàn)就業(yè)公司名稱、工作崗位、大學(xué)擔(dān)任職務(wù)。1)Python文件中導(dǎo)入CSV庫importcsv2)指定需要輸出的CSV文件名字filetouse='公司名單.csv'3)使用withopen方法打開該文件。其中,filetouse為文件名,‘r’表示該文件為只讀,encoding表示該文件的編碼方式為utf-8。withopen(filetouse,'r',encoding='utf-8')asf:4)使用csv.reader方法創(chuàng)建數(shù)據(jù)讀取對(duì)象r=csv.reader(f)5)使用next方法讀取第一行的頭部數(shù)據(jù),并將焦點(diǎn)轉(zhuǎn)到下一行。file_header=next(r)6)輸出結(jié)果print(file_header)7)顯示結(jié)果[‘班級(jí)','現(xiàn)就業(yè)公司名稱','工作崗位','大學(xué)擔(dān)任職務(wù)']完成代碼如下。importcsvfiletouse='公司名單.csv'withopen(filetouse,'r',encoding='utf-8')asf:r=csv.reader(f)file_header=next(r)print(file_header)3.4.3使用Python讀取CSV文件數(shù)據(jù)【實(shí)例3-3】獲得了該CSV文件的頭部字段信息,但是如何獲取某個(gè)記錄的具體信息呢?例如,我們要獲得“大學(xué)擔(dān)任職務(wù)”字段中值為“團(tuán)支書”的記錄。提取數(shù)據(jù):1)Python文件中導(dǎo)入CSV庫。importcsv2)指定需要輸出的CSV文件名字filetouse='公司名單.csv'3)使用withopen方法打開該文件。其中,filetouse為文件名,‘r’表示該文件為只讀,encoding表示該文件的編碼方式為utf-8。withopen(filetouse,'r',encoding='utf-8')asf:4)使用csv.reader方法創(chuàng)建數(shù)據(jù)讀取對(duì)象r=csv.reader(f)5)使用next方法讀取第一行的頭部數(shù)據(jù),并將焦點(diǎn)轉(zhuǎn)到下一行。file_header=next(r)6)輸出結(jié)果print(file_header)7)通過自定義變量id和file_header_col,以for循環(huán)的方式,使用enumerate方法將file_header的值導(dǎo)出,并打印。其中,enumerate方法將把頭文件中的內(nèi)容以索引號(hào)和文字的形式劃分。forid,file_header_colinenumerate(file_header):print(id,file_header_col)8)輸出結(jié)果。Id為索引號(hào),file_header為公司頭文件字段。由此可知,字段“大學(xué)擔(dān)任職務(wù)”的索引號(hào)為3。0班級(jí)1現(xiàn)就業(yè)公司名稱2工作崗位3大學(xué)擔(dān)任職務(wù)9)使用自定義變量row獲得for循環(huán)中CSV模塊讀取的文件對(duì)象r,并在循環(huán)中使用if條件語句判斷每行中row[3](第四個(gè)元素)的值為“團(tuán)支書”,并打印出結(jié)果。forrowinr:ifrow[3]=='團(tuán)支書':print(row)10)顯示結(jié)果 ['軟件1120','重慶虛擬人生科技有限公司','技術(shù)員','團(tuán)支書']這樣,我們就通過對(duì)CSV模塊的操作,提取了特定的內(nèi)容。3.4.4使用Python寫入CSV文件數(shù)據(jù)【實(shí)例3-3】獲得了該CSV文件的頭部字段信息,但是如何獲取某個(gè)記錄的具體信息呢?例如,我們要獲得“大學(xué)擔(dān)任職務(wù)”字段中值為“團(tuán)支書”的記錄。提取數(shù)據(jù):1)Python文件中導(dǎo)入CSV庫。importcsv2)指定需要輸出的CSV文件名字filetouse='愛國主義精神.csv'3)使用withopen方法打開該文件。其中,filetouse為文件名,‘r’表示該文件為只讀,encoding表示該文件的編碼方式為utf-8。withopen(filetouse,'r',encoding='utf-8')asf:【實(shí)例3-4】本實(shí)例實(shí)現(xiàn)寫入數(shù)據(jù)。1)Python文件導(dǎo)入CSV庫importcsv2)使用withopen方法打開該文件。其中,‘公司名單.csv’為需要寫入的文件名,‘a(chǎn)’表示向文件附加寫入內(nèi)容,encoding表示該文件的編碼方式為utf-8。withopen('愛國主義精神.csv','a',encoding='utf-8')asf:3)使用csv.writer方法創(chuàng)建數(shù)據(jù)寫入對(duì)象wr=csv.writer(f)4)開始寫入數(shù)據(jù),這里有可以使用writerow和writerows兩種方法。第一種方法一次寫入一行記錄,第二種方法一次寫入多行記錄。wr.writerows([['創(chuàng)造精神','奮斗精神'],['團(tuán)結(jié)精神','夢(mèng)想精神']])wr.writerow(['創(chuàng)造精神','奮斗精神'])wr.writerow(['團(tuán)結(jié)精神','夢(mèng)想精神'])5)讀取并顯示寫入后的文件withopen('愛國主義精神.csv','r',encoding='utf-8')asf2:r=csv.reader(f2)forrowinr:print(row)6)顯示結(jié)果['創(chuàng)造精神','奮斗精神']['團(tuán)結(jié)精神','夢(mèng)想精神']3.4.5JSON的概述 JSON(JavaScript對(duì)象表示法)是一種輕量級(jí)的數(shù)據(jù)交換格式。對(duì)人類很容易讀和寫。機(jī)器很容易解析和生成。它是基于JavaScript編程語言的一個(gè)子集。JSON是一種完全獨(dú)立于語言的文本格式,但對(duì)于熟悉C-family語言的程序員,包括C、C++、C#、Java、JavaScript、Perl、Python等其他許多人來說,這些性質(zhì)使JSON成為一種理想的數(shù)據(jù)交換語言。1.JSON是建立在兩種結(jié)構(gòu)1)鍵/值對(duì)的集合。在各種語言中,這是實(shí)現(xiàn)為對(duì)象、記錄、結(jié)構(gòu)、字典、哈希表、鍵列表或關(guān)聯(lián)數(shù)組。2)值的有序列表。在大多數(shù)語言中,是實(shí)現(xiàn)一個(gè)數(shù)組,向量、列表或序列。這些都是通用的數(shù)據(jù)結(jié)構(gòu)。幾乎所有現(xiàn)代編程語言都支持一種或另一種形式。這就使得不同的編程語言之間的數(shù)據(jù)結(jié)構(gòu)互換能夠基于這種JSON結(jié)構(gòu)。2.JSON文件分析下面以一個(gè)JSON格式的數(shù)據(jù)為例。{"people":[{"name":"Simon","age":"22"},{"name":"Tom","age":"24"},{"name":"Jack","age":"26"}]}在這個(gè)實(shí)例中,花括號(hào){}之間為JSON鍵值對(duì)數(shù)據(jù),其中”people”為鍵,方括號(hào)的內(nèi)容為值。同時(shí),在方括號(hào)中,有嵌套了三個(gè)鍵為”name”和”age”,值分別為”Simon”和”22”、”Tom”和”24”、”Jack”和”26”的JSON數(shù)據(jù)。從面向?qū)ο蟮慕嵌葋矸治?,這個(gè)people對(duì)象是包含3個(gè)人物記錄(對(duì)象)的數(shù)組。3.4.6使用Python讀取JSON文件數(shù)據(jù) 【實(shí)例3-5】本實(shí)例實(shí)現(xiàn)JSON文件數(shù)讀取。1)Python文件導(dǎo)入json庫importjson2)使用withopen方法打開一個(gè)名為:JSON文件.json的文件,通過參數(shù)‘r’實(shí)現(xiàn)文件的讀取,并且指定其打開的字符集格式為utf-8-sig,最后將文件操作對(duì)象放入變量f中。withopen('JSON文件.json','r',encoding='utf-8-sig')asf:3)使用read方法讀取文件數(shù)據(jù),并存入變量str中。
str=f.read()4)使用json庫的load方法將數(shù)據(jù)格式轉(zhuǎn)換為json格,將其賦值給變量data,并打印輸出,以便查看。
data=json.loads(str)print(data)5)獲取變量data的鍵為‘people’的值,將其賦值給變量name_age,并打印輸出。name_age=data['people']print(name_age)6)獲取列表name_age的第二個(gè)元素的鍵為‘name’和‘a(chǎn)ge’的值,并打印輸出。target_name=name_age[1]['name']target_age=name_age[1]['age']print(target_name+':'+target_age)輸出結(jié)果:{'people':[{'name':'Simon','age':'22'},{'name':'Tom','age':'24'},{'name':'Jack','age':'26'}]}[{'name':'Simon','age':'22'},{'name':'Tom','age':'24'},{'name':'Jack','age':'26'}]Tom:243.4.7使用Python寫入JSON文件數(shù)據(jù) 【實(shí)例3-6】本實(shí)例實(shí)現(xiàn)JSON文件數(shù)寫入。1)Python文件導(dǎo)入json庫importjson2)聲明及定義一個(gè)字典類型數(shù)據(jù)dict_content={"name":"jack"}3)使用withopen方法打開一個(gè)名為:JSON文件.json的文件,通過參數(shù)‘w’實(shí)現(xiàn)文件的寫入,然后將文件操作對(duì)象放入變量f中,最后使用json的dump方法實(shí)現(xiàn)數(shù)據(jù)的寫入。withopen('JSON文件寫入.json','w')asf: json.dump(dict_content,f)輸出結(jié)果:{"name":"jack"}3.5任務(wù)實(shí)現(xiàn) 【實(shí)例3-5】本實(shí)例逐步實(shí)現(xiàn)使用PyMySQL對(duì)MySQL的增刪改查操作。所有操作均在剛才創(chuàng)建的數(shù)據(jù)庫test中完成。這里先創(chuàng)建一個(gè)數(shù)據(jù)表employee,并對(duì)該表設(shè)置字段id,first_name,last_name,age,sex,income,將id設(shè)為主鍵,然后使用PyMySQL實(shí)現(xiàn)對(duì)數(shù)據(jù)表employee的數(shù)據(jù)操作。1.創(chuàng)建表結(jié)構(gòu)(1)Python中導(dǎo)入PyMySQL庫。importpymysql(2)使用PyMySQL庫建立與MySQL的連接,并返回一個(gè)db對(duì)象。Connect方法中的參數(shù)分別表示:"localhost"主機(jī)名,"root"連接MySQL的用戶名,"密碼"為MySQL的連接密碼,"test"表示操作的MySQL數(shù)據(jù)庫。db=pymysql.connect("localhost","root","密碼","test")(3)使用connector對(duì)象的cursor方法建立對(duì)MySQL的操作游標(biāo)。cursor=db.cursor()(4)使用游標(biāo)cursor執(zhí)行SQL語句。該SQL語句表示如果數(shù)據(jù)庫test存在表employee,則將其先刪除。這一步的目的就是防止有重復(fù)數(shù)據(jù)的出現(xiàn)。cursor.execute("DROPTABLEIFEXISTSemployee")(5)使用字符串編寫完成SQL語句。注意,這里使用的是三引號(hào)表示多行字符串。這里的SQL語句使用CREATETABLE創(chuàng)建一個(gè)名為employee的表,并設(shè)置id,first_name,last_name,age,sex,income的字段和屬性,并將id設(shè)為主鍵,字符集使用utf8mb4sql="""CREATETABLE`employee`(`id`int(10)NOTNULLAUTO_INCREMENT,`first_name`char(20)NOTNULL,`last_name`char(20)DEFAULTNULL,`age`int(11)DEFAULTNULL,`sex`char(1)DEFAULTNULL,`income`floatDEFAULTNULL,PRIMARYKEY(`id`))ENGINE=InnoDBDEFAULTCHARSET=utf8mb4;"""(6)執(zhí)行前面的SQL語句。cursor.execute(sql)(7)打印輸出提示字符串,并關(guān)閉連接。print("CreatedtableSuccessfull.")db.close()(8)運(yùn)行結(jié)果,如圖3-18所示。CreatedtableSuccessful圖3-18創(chuàng)建表employee成功完成代碼如下所示。importpymysql
db=pymysql.connect("localhost","root","密碼","test")
cursor=db.cursor()cursor.execute("DROPTABLEIFEXISTSemployee")sql="""CREATETABLE`employee`(`id`int(10)NOTNULLAUTO_INCREMENT,`first_name`char(20)NOTNULL,`last_name`char(20)DEFAULTNULL,`age`int(11)DEFAULTNULL,`sex`char(1)DEFAULTNULL,`income`floatDEFAULTNULL,PRIMARYKEY(`id`))ENGINE=InnoDBDEFAULTCHARSET=utf8mb4;"""cursor.execute(sql)print("CreatedtableSuccessfull.")db.close()2.插入數(shù)據(jù)【實(shí)例3-6】本實(shí)例通過PyMySQL向表employee的first_name,last_name,age,sex,income字段插入一條新的記錄。如果發(fā)生異常,則實(shí)現(xiàn)事務(wù)性的回滾操作。(1)Python中導(dǎo)入PyMySQL庫。importpymysql(2)使用PyMySQL庫建立與MySQL的連接,并返回一個(gè)db對(duì)象。Connect方法中的參數(shù)分別表示:"localhost"主機(jī)名,"root"連接MySQL的用戶名,"密碼"為MySQL的連接密碼,"test"表示操作的MySQL數(shù)據(jù)庫。db=pymysql.connect("localhost","root","密碼","test")(3)使用connector對(duì)象的cursor方法建立對(duì)MySQL的操作游標(biāo)。cursor=db.cursor()(4)使用字符串編寫完成SQL語句。注意,這里使用的是三引號(hào)表示多行字符串。這里的SQL語句使用INSERTINTO向表EMPLOYEE的字段FIRST_NAME,LAST_NAME,AGE,SEX和INCOME分別插入VALUES為’Mac’,’Su’,20,’M’和5000的值。sql="""INSERTINTOEMPLOYEE(FIRST_NAME,LAST_NAME,AGE,SEX,INCOME)VALUES('Mac','Su',20,'M',5000)"""(5)使用try和except語句執(zhí)行游標(biāo)cursor的sql語句,并使用commit方法提交至MySQL數(shù)據(jù)庫服務(wù)器,rollback方法表示如果在整個(gè)提交過程中出現(xiàn)任何問題,則實(shí)現(xiàn)事務(wù)性的回滾操作。try:cursor.execute(sql)dbmit()except:db.rollback()(6)關(guān)閉數(shù)據(jù)庫連接。db.close()(7)運(yùn)行效果如圖3-19所示。圖3-19使用PyMySQL向MySQL插入數(shù)據(jù)完成代碼如下所示。importpymysqldb=pymysql.connect("localhost","root","密碼","test")cursor=db.cursor()sql="""INSERTINTOEMPLOYEE(FIRST_NAME,LAST_NAME,AGE,SEX,INCOME)VALUES('Mac','Su',20,'M',5000)"""try:cursor.execute(sql)dbmit()except:db.rollback()db.close()3.查詢數(shù)據(jù)【實(shí)例3-7】這里將通過PyMySQL向表employee查詢字段income值大于1000的記錄,并使用for循環(huán)輸出所有記錄。如果出現(xiàn)異常,則拋出異常信息。(1)Python中導(dǎo)入PyMySQL庫importpymysql(2)使用PyMySQL庫建立與MySQL的連接,并返回一個(gè)db對(duì)象。Connect方法中的參數(shù)分別表示:"localhost"主機(jī)名,"root"連接MySQL的用戶名,"密碼"為MySQL的連接密碼,"test"表示操作的MySQL數(shù)據(jù)庫。db=pymysql.connect("localhost","root","密碼","test")(3)使用connector對(duì)象的cursor方法建立對(duì)MySQL的操作游標(biāo)。cursor=db.cursor()(4)使用字符串編寫完成SQL語句。注意,這里使用的是三引號(hào)表示多行字符串。這里的SQL語句使用SELECTFROM用于查詢表EMPLOYEE中條件為INCOME大于1000的記錄。sql="SELECT*FROMEMPLOYEE\WHEREINCOME>%d"%(1000)(5)在try中執(zhí)行游標(biāo)的sqltry:cursor.execute(sql)(6)使用fetchall方法獲取第五步返回的結(jié)果results=cursor.fetchall()(7)使用for循環(huán)將返回的結(jié)果進(jìn)行遍歷,并將每行中的列值通過數(shù)組下標(biāo)獲得,最后使用print方法將其輸出。forrowinresults:fname=row[1]lname=row[2]age=row[3]sex=row[4]income=row[5]print("name=%s%s,age=%s,sex=%s,income=%s"%\(fname,lname,age,sex,income))(8)在except中導(dǎo)入traceback模塊,并使用該模塊的print_exc方法輸出更加詳細(xì)的異常信息。except:importtracebacktraceback.print_exc()print("Error:unabletofetchdata")(9)關(guān)閉服務(wù)器連接db.close()(10)運(yùn)行結(jié)果如圖3-20所示。name=MacSu,age=20,sex=M,income=5000.0圖3-20使用PyMySQL向MySQL查詢數(shù)據(jù)完成代碼如下所示。importpymysql
db=pymysql.connect("localhost","root","密碼","test")
cursor=db.cursor()
sql="SELECT*FROMEMPLOYEE\
WHEREINCOME>%d"%(1000)
try:
cursor.execute(sql)
results=cursor.fetchall()forrowinresults:fname=row[1]lname=row[2]age=row[3]sex=row[4]income=row[5]print("name=%s%s,age=%s,sex=%s,income=%s"%\(fname,lname,age,sex,income))except:importtracebacktraceback.print_exc()print("Error:unabletofetchdata")db.close()4.更新數(shù)據(jù)【實(shí)例3-8】這里將通過PyMySQL向表employee更新字段age,并將其所有的值加1,更新的條件是字段sex的值為M。如果出現(xiàn)異常,則實(shí)現(xiàn)事務(wù)性的回滾操作。(1)Python中導(dǎo)入PyMySQL庫importpymysql(2)使用PyMySQL庫建立與MySQL的連接,并返回一個(gè)db對(duì)象。Connect方法中的參數(shù)分別表示:"localhost"主機(jī)名,"root"連接MySQL的用戶名,"密碼"為MySQL的連接密碼,"test"表示操作的MySQL數(shù)據(jù)庫。db=pymysql.connect("localhost","root","密碼","test")(3)使用connector對(duì)象的cursor方法建立對(duì)MySQL的操作游標(biāo)cursor=db.cursor()(4)使用字符串編寫完成SQL語句。注意,這里使用的是三引號(hào)表示多行字符串。這里的SQL語句使用UPDATESET更新表EMPLOYEE的AGE,更新條件為SEX等于’M’。sql="UPDATEEMPLOYEESETAGE=AGE+1\WHERESEX='%c'"%('M')(5)使用try和except語句執(zhí)行游標(biāo)cursor的sql語句,并使用commit方法提交至MySQL數(shù)據(jù)庫服務(wù)器,rollback方法表示如果在整個(gè)提交過程中出現(xiàn)任何問題,則實(shí)現(xiàn)事務(wù)性的回滾操作。try:cursor.execute(sql)dbmit()except:db.rollback()(6)關(guān)閉服務(wù)器連接db.close()(7)運(yùn)行結(jié)果如圖3-21所示。圖3-21使用PyMySQL向MySQL更新數(shù)據(jù)完成代碼如圖所示。importpymysqldb=pymysql.connect("localhost","root","密碼","test")cursor=db.cursor()sql="UPDATEEMPLOYEESETAGE=AGE+1\WHERESEX='%c'"%('M')try:cursor.execute(sql)dbmit()except:db.rollback()db.close()5.刪除數(shù)據(jù)【實(shí)例3-9】這里將通過PyMySQL向表employee刪除符合條件的記錄,刪除的條件是字段age的值大于40。如果出現(xiàn)異常,則實(shí)現(xiàn)事務(wù)性的回滾操作。(1)Python中導(dǎo)入PyMySQL庫importpymysql(2)使用PyMySQL庫建立與MySQL的連接,并返回一個(gè)db對(duì)象。Connect方法中的參數(shù)分別表示:"localhost"主機(jī)名,"root"連接MySQL的用戶名,"密碼"為MySQL的連接密碼,"test"表示操作的MySQL數(shù)據(jù)庫。db=pymysql.connect("localhost","root","密碼","test")(3)使用connector對(duì)象的cursor方法建立對(duì)MySQL的操作游標(biāo)。cursor=db.cursor()(4)使用字符串編寫完成SQL語句。注意,這里使用的是三引號(hào)表示多行字符串。這里的SQL語句使用DELETEFROM將表EMPLOYEEZ中條件為AGE大于40的記錄刪除。sql="DELETEFROMEMPLOYEEWHEREAGE>'%d'"%(40)(5)使用try和except語句執(zhí)行游標(biāo)cursor的sql語句,并使用commit方法提交至MySQL數(shù)據(jù)庫服務(wù)器,rollback方法表示如果在整個(gè)提交過程中出現(xiàn)任何問題,則實(shí)現(xiàn)事務(wù)性的回滾操作。try:cursor.execute(sql)dbmit()except:db.rollback()(6)關(guān)閉服務(wù)器連接db.close()(7)運(yùn)行結(jié)果如圖3-22所示。圖3-22使用PyMySQL向MySQL刪除數(shù)據(jù)完成代碼如圖所示。importpymysqldb=pymysql.connect("localhost","root","密碼","test")cursor=db.cursor()sql="DELETEFROMEMPLOYEEWHEREAGE>'%d'"%(40)try:cursor.execute(sql)dbmit()except:db.rollback()db.close()到此,我們已經(jīng)實(shí)現(xiàn)了在Python中使用PyMySQL模塊針對(duì)MySQL操作數(shù)據(jù)表格的基本用法。6.數(shù)據(jù)探索【實(shí)例3-10】這里將通過numpy生成學(xué)生模擬數(shù)據(jù),pandas的寫入和讀取指定學(xué)生就業(yè)信息,并對(duì)其進(jìn)行數(shù)據(jù)探索。(1)Python中導(dǎo)入pandas、numpy和randomimportpandasaspdimportnumpyasnpimportrandom(2)設(shè)置隨機(jī)種子以確保結(jié)果的可重復(fù)性np.random.seed(42)random.seed(42)(3)創(chuàng)建模擬數(shù)據(jù)num_students=200data={'學(xué)號(hào)':[f'ST{1000+i}'foriinrange(1,num_students+1)],'姓名':[f'Student{i}'foriinrange(1,num_students+1)],'專業(yè)':[random.choice(['計(jì)算機(jī)科學(xué)','電子工程','人力資源','市場(chǎng)營銷'])for_inrange(num_students)],'畢業(yè)年份':[random.choice([2022,2023,2024])for_inrange(num_students)],'大學(xué)擔(dān)任職務(wù)':[random.choice(['紀(jì)律委員','體育委員','班長','團(tuán)支書','學(xué)習(xí)委員','生活委員'])for_inrange(num_students)],'薪水':[np.random.randint(3000,10000)for_inrange(num_students)],'就業(yè)狀態(tài)':[random.choice(['已就業(yè)','未就業(yè)'])for_inrange(num_students)],}df=pd.DataFrame(data)(4)將數(shù)據(jù)保存為CSV文件df.to_csv('student_employment_data.csv',index=False)(5)加載數(shù)據(jù)data=pd.read_csv('student_employment_data.csv')(6)查看前幾行數(shù)據(jù),運(yùn)行結(jié)果如圖3-23所示。print(data.head())(7)數(shù)據(jù)基本信息,運(yùn)行結(jié)果如圖3-24所示。print(())(8)統(tǒng)計(jì)描述,運(yùn)行結(jié)果如圖3-25所示。print(data.describe())(9)查看列名,運(yùn)行結(jié)果如圖3-26所示。print(data.columns)(10)查看就業(yè)狀態(tài)分布,運(yùn)行結(jié)果如圖3-27所示。print(data['就業(yè)狀態(tài)'].value_counts())(11)查看專業(yè)分布,運(yùn)行結(jié)果如圖3-28所示。print(data['專業(yè)'].value_counts())3.6小結(jié) 本章使用Python操作CSV和JSON文件格式的數(shù)據(jù)實(shí)現(xiàn)對(duì)學(xué)生就業(yè)信息數(shù)據(jù)進(jìn)行讀取和寫入,并使用pymysql實(shí)現(xiàn)和數(shù)據(jù)庫MySql的增加、刪除、查詢和修改的數(shù)據(jù)持久化操作。通過本章的學(xué)習(xí),讀者可以了解MySQL和PyMySQL的基本含義,掌握在Windows的操作系統(tǒng)中安裝MySQL和PyMySQL的環(huán)境和基本用法。同時(shí),學(xué)習(xí)CSV和JSON的基礎(chǔ)知識(shí)和數(shù)據(jù)類型轉(zhuǎn)換,并且實(shí)現(xiàn)CSV和JSON數(shù)據(jù)的讀取和寫入操作。然后,通過MySQL和PyMySQL實(shí)現(xiàn)了創(chuàng)建數(shù)據(jù)庫、數(shù)據(jù)表,并對(duì)該數(shù)據(jù)表的數(shù)據(jù)進(jìn)行增添、刪除、更新和查詢操作。最后,探索學(xué)生的就業(yè)狀態(tài)(數(shù)據(jù)探索)。3.7習(xí)題 1.使用Python讀取和輸出CSV和JSON數(shù)據(jù)。2.使用Python連接MySQL,創(chuàng)建數(shù)據(jù)庫和表,并實(shí)現(xiàn)增刪查改。任務(wù)3存儲(chǔ)數(shù)據(jù)——學(xué)生就業(yè)信息數(shù)據(jù)讀寫和數(shù)據(jù)持久化本章學(xué)習(xí)目標(biāo)了解MySQL的基本概念掌握MySQL的安裝和操作方法了解PyMySQL和MySQL的區(qū)別掌握PyMySQL的安裝和基本用法了解CSV和JSON的基礎(chǔ)知識(shí)和數(shù)據(jù)類型轉(zhuǎn)換掌握CSV和JSON數(shù)據(jù)的讀取和寫入操作存儲(chǔ)數(shù)據(jù)就是將信息以各種不同的形式存儲(chǔ)起來,數(shù)據(jù)以某種格式記錄在計(jì)算機(jī)內(nèi)部或外部存儲(chǔ)介質(zhì)上。數(shù)據(jù)存儲(chǔ)要命名,這種命名要反映信息特征的組成含義。數(shù)據(jù)流反映了系統(tǒng)中流動(dòng)的數(shù)據(jù),表現(xiàn)出動(dòng)態(tài)數(shù)據(jù)的特征;數(shù)據(jù)存儲(chǔ)反映系統(tǒng)中靜止的數(shù)據(jù),表現(xiàn)出靜態(tài)數(shù)據(jù)的特征。3.1 任務(wù)描述本章節(jié)將使用Python操作CSV和JSON文件格式的數(shù)據(jù)實(shí)現(xiàn)對(duì)學(xué)生就業(yè)信息數(shù)據(jù)進(jìn)行讀取和寫入,并使用pymysql實(shí)現(xiàn)和數(shù)據(jù)庫MySql的增加、刪除、查詢和修改的數(shù)據(jù)持久化操作。探索學(xué)生的就業(yè)狀態(tài)(數(shù)據(jù)探索)3.2MYSQL3.2.1MySQL的概述MySQL是一個(gè)關(guān)系型數(shù)據(jù)庫管理系統(tǒng),由瑞典MySQLAB公司開發(fā),目前屬于Oracle公司。MySQL是一種關(guān)聯(lián)數(shù)據(jù)庫管理系統(tǒng),關(guān)聯(lián)數(shù)據(jù)庫將數(shù)據(jù)保存在不同的表中,而不是將所有數(shù)據(jù)放在一個(gè)大倉庫內(nèi),這樣就增加了速度并提高了靈活性。在WEB應(yīng)用方面MySQL是最好的一款輕量級(jí)RDBMS應(yīng)用軟件之一。官方網(wǎng)站:.mysql/注意:在MySQL官方網(wǎng)站中下載之前,需要先注冊(cè),登錄之后才能下載。如圖3-1所示。圖3-1MySQL下載頁面
在下載了MySQL之后,請(qǐng)按照如下步驟安裝即可。1)要安裝MySQL,必須接受OracleSoftware的許可證。這里需要勾選“Iacceptthelicenseterms”復(fù)選框,表示接受許可證,然后單擊“Next”按鈕,如圖3-2所示.3.2.2MySQL的安裝圖3-2接受MySQL許可證2)根據(jù)需求選擇安裝類型。DevelopDefault表示根據(jù)MySQL開發(fā)目的安裝所有需要的產(chǎn)品;Serveronly表示僅安裝MySQL服務(wù)器產(chǎn)品;Clientonly表示僅安裝不帶服務(wù)器功能的MySQL客戶端產(chǎn)品;Full表示安裝MySQL所有產(chǎn)品和特色功能;Custom表示自定義選擇MySQL的產(chǎn)品。這里選擇“DevelopDefault”(開發(fā)者默認(rèn)值)單選按鈕,然后單擊“Next”按鈕,如圖3-3所示。圖3-3MySQL安裝類型選擇3)由于之前選擇的安裝類型為DevelopDefault(開發(fā)者默認(rèn)值),因此已經(jīng)自動(dòng)配置即將的安裝組件內(nèi)容。這里單擊“Execute”按鈕,開始執(zhí)行安裝以下組件,如圖3-4所示。圖3-4MySQL特定組件安裝4)類型和網(wǎng)絡(luò)配置。為MySQL服務(wù)器安裝選擇正確的服務(wù)器配置類型,這里配置MySQL的服務(wù)器配置類型為DevelopmentComputer。Connectivity表示可連接性,這里需要具體選擇具體的鏈接參數(shù)。TCP/IP表示鏈接協(xié)議,Port表示MySQL使用的端口號(hào),XProtocolPort表示其他協(xié)議的端口號(hào),OpenWindowsFirewallportsfornetworkaccess表示打開操作系統(tǒng)防火墻。這里特別需要記住其中的端口號(hào)3306,然后單擊“Next”按鈕,如圖3-5所示。圖3-5MySQL網(wǎng)絡(luò)配置5)賬戶的角色。按照MySQL的安裝流程操作,AccountsandRoles表示需要設(shè)置Root的密碼,MySQLUserAccounts表示為使用者和應(yīng)用程序創(chuàng)建MySQL的用戶賬戶,并指定一個(gè)帶有一定權(quán)限的角色。這里單擊“AddUser”按鈕,自定義用戶信息作為用戶名并輸入密碼。localhost表示本機(jī),DBAdmin表示數(shù)據(jù)庫管理角色。單擊“Next”按鈕,如圖3-6所示。b)a)圖3-6MySQL賬號(hào)和角色設(shè)置a)MySQLroot賬號(hào)密碼和角色設(shè)置b)MySQL角色賬號(hào)和密碼設(shè)置6)連接到服務(wù)器。以下是安裝在這臺(tái)計(jì)算機(jī)上的兼容MySQL服務(wù)器實(shí)例,這里需要根據(jù)前面的安裝需求,選擇將創(chuàng)建的樣例框架和數(shù)據(jù),并打上勾。然后需要在“User”文本框中輸入“root”,在“Password”文本框中輸入設(shè)置的密碼驗(yàn)證root賬號(hào)的登錄信息是否合法,單擊“Check”按鈕檢查。如果通過驗(yàn)證,則顯示“ALLconnectionssucceeded”,,然后單擊“Next”,如圖3-7所示。圖3-7MySQL服務(wù)器連接驗(yàn)證
7)完成安裝,并啟動(dòng)。根據(jù)需要勾選“StartMySQLWorkbenchafterSetup”和“StartMySQLShellafterSetup”復(fù)選框,單擊“Finish”按鈕,如圖3-8所示。圖3-8MySQL安裝成功8)MySQL安裝成功后顯示MySQL初始化界面,在此需要輸入root賬號(hào)的密碼才能連接到本地的MySQL實(shí)例當(dāng)中,如圖3-9所示。到此,就成功地下載并安裝了MySQL。圖3-9MySQL初始化界面3.2.3MySQL的操作本小節(jié)將在MySQLWorkbench的默認(rèn)sys數(shù)據(jù)庫實(shí)例中創(chuàng)建一個(gè)名為test的數(shù)據(jù)表,并對(duì)該表做基本設(shè)置。具體操作方法如下。1)在成功安裝并進(jìn)入MySQLWorkbench之后,在左側(cè)窗格中展開“sys”選項(xiàng),右擊“Tables”選項(xiàng),在彈出的快捷菜單中選擇“CreateTable”命令創(chuàng)建新表,如圖3-
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 北京理工大學(xué)《植物生物學(xué)》2024 - 2025 學(xué)年第一學(xué)期期末試卷
- 軟件項(xiàng)目質(zhì)量管理
- 心理咨詢和輔導(dǎo)
- 2026年劇本殺運(yùn)營公司市場(chǎng)費(fèi)用預(yù)算管理制度
- 2025年智能垃圾桶清潔十年技術(shù)報(bào)告
- 2026年文化娛樂產(chǎn)業(yè)虛擬現(xiàn)實(shí)報(bào)告
- 2026年及未來5年中國車廂底板市場(chǎng)運(yùn)行態(tài)勢(shì)及行業(yè)發(fā)展前景預(yù)測(cè)報(bào)告
- 小學(xué)道德與法治教學(xué)中生命教育的實(shí)施路徑課題報(bào)告教學(xué)研究課題報(bào)告
- 企業(yè)盤點(diǎn)和對(duì)賬制度
- 藝術(shù)研究院試題及答案
- 安全生產(chǎn)責(zé)任保險(xiǎn)培訓(xùn)課件
- 機(jī)械工程的奧秘之旅-揭秘機(jī)械工程的魅力與價(jià)值
- 《益生菌與藥食同源植物成分協(xié)同作用評(píng)價(jià)》-編制說明 征求意見稿
- 送貨單回簽管理辦法
- 魯科版高中化學(xué)必修第一冊(cè)全冊(cè)教案
- 原發(fā)性高血壓患者糖代謝異常:現(xiàn)狀、關(guān)聯(lián)與防治探索
- 2025年存算一體芯片能效比:近內(nèi)存計(jì)算架構(gòu)突破與邊緣AI設(shè)備部署成本
- 國有企業(yè)服務(wù)采購操作規(guī)范TCFLP 0054-2022
- 2025年獸醫(yī)公共衛(wèi)生學(xué)考試試題(附答案)
- 熱電材料研究進(jìn)展匯報(bào)
- 公安部保密管理辦法
評(píng)論
0/150
提交評(píng)論