使用python进行数学建模系列1 读表格 +简单处理+ 画图简单入门 代码可直接运行
為啥要用python呢?? ? ? ? ? ? ?--沒(méi)人能逃過(guò)真香定律
數(shù)學(xué)建模工具有很多種選擇,有功能及其matlab,R語(yǔ)言,SPSS,Lingo等等,他們?cè)诓煌I(lǐng)域各有擅場(chǎng),但為什么極力推薦用python呢?
其實(shí)很簡(jiǎn)單,上邊每個(gè)軟件能做的,python都能做,而且做出來(lái)效果也不錯(cuò). python有各種各樣的包,可以很容易下載下來(lái),有些包本身說(shuō)是一個(gè)軟件也不過(guò)分.通過(guò)幾乎相同的python語(yǔ)法,可以流暢又高效的使用各種包. 也就是說(shuō),用明白了一個(gè)包,再用其它的包就很輕松了.
判斷一個(gè)編程語(yǔ)言硬不硬核可以從三個(gè)方面看起: 是否容易入門(mén), 是否有很多崗位招聘這個(gè)編程語(yǔ)言, 生態(tài)怎么樣, 是不是有很多金主爸爸在這方面投錢(qián). 很不錯(cuò)的是python這些都占了
與其說(shuō)python是一門(mén)編程語(yǔ)言,不如說(shuō)他是一種大家對(duì)調(diào)用程序的默契加上應(yīng)用市場(chǎng)(硬核免費(fèi)版).
最令人心動(dòng)的是,python幾乎能做所有事,不僅可以用于數(shù)學(xué)建模,也可以用來(lái)寫(xiě)軟件,做網(wǎng)站,甚至是操作單片機(jī). 建模的時(shí)候順手學(xué)一下python,可以給以后的退休生活增添很多樂(lè)趣.
-
肢體識(shí)別,人臉識(shí)別,手勢(shì)識(shí)別(有非常多成熟的API可以調(diào)用,效果蠻好),自己做一個(gè)遠(yuǎn)程手勢(shì)控制刷抖音的應(yīng)用,多是件美事啊~
-
網(wǎng)站開(kāi)發(fā),搭建自己的網(wǎng)站后臺(tái)
-
游戲開(kāi)發(fā)
-
硬件開(kāi)發(fā)
使用python+micropython自己給自己組了一輛車(chē)(藍(lán)牙遠(yuǎn)程遙控+機(jī)械臂+攝像頭識(shí)別)
先挖個(gè)坑,后續(xù)有空會(huì)更新
好了,有這些理由在,數(shù)學(xué)建模的過(guò)程中順便入門(mén)一個(gè)python,絕對(duì)是值了
入門(mén): python怎么用與讀寫(xiě)數(shù)據(jù)
關(guān)于使用python的心態(tài)(可直接跳過(guò))
python這門(mén)語(yǔ)言,一直以接近自然語(yǔ)言易于使用著稱(chēng). 使用python,有點(diǎn)像是使用電腦或者是電腦軟件,比如說(shuō)使用word,一般用的時(shí)候可以自己摸索,遇到不會(huì)的再上網(wǎng)查詢,相比各位老鐵學(xué)習(xí)word的時(shí)候應(yīng)該不會(huì)先買(mǎi)一本word使用大全開(kāi)始從頭來(lái)看吧.
使用python,關(guān)鍵在用,不會(huì)用就查,基本上用個(gè)不到一年半載,就大概悟了.
當(dāng)然,對(duì)于對(duì)編程完全是零基礎(chǔ)的老鐵來(lái)說(shuō),使用python或許并不是那么容易,這個(gè)時(shí)候遇到問(wèn)題如果直接看教程,教程好的話,大概能明白教程里的東西,并且會(huì)做差不多的類(lèi)推. 如果上過(guò)一些程序設(shè)計(jì)課程的老鐵,大概明白整個(gè)程序的流程,看過(guò)一些教程會(huì)融匯貫通,自己總結(jié)出更適合自己的用法.
我個(gè)人推薦是先學(xué)一點(diǎn)程序設(shè)計(jì)基礎(chǔ),然后不斷的去用,用起來(lái)了后邊才更好明白原理之類(lèi)的.
就數(shù)學(xué)建模而言,隊(duì)伍里大概至少有一個(gè)人要會(huì)編程,一般是分為建模,寫(xiě)作,編程,然后各司其職.
對(duì)于編程的同學(xué),大概分為兩個(gè)部分,一個(gè)是畫(huà)圖,一個(gè)是把模型代碼化,求解模型,輸出評(píng)估的參數(shù),畫(huà)圖展示等等.
使用python有個(gè)好處,只要建模的同學(xué)用的模型是學(xué)來(lái)的(不是自己造的),基本上就都能找到相應(yīng)的包來(lái)求解模型的各個(gè)部分. 一般情況下,使用現(xiàn)有的包,盡可能多傳一些參數(shù)進(jìn)去,是能解決目前的問(wèn)題的.
數(shù)學(xué)建模,重點(diǎn)在于找到合適的模型,修改使其適合的求解. 重點(diǎn)在于數(shù)學(xué), 而不是自己手寫(xiě)算法求解. 數(shù)學(xué)建模一共三天,自己很難手寫(xiě)出模型的求解,而且很多庫(kù)底層是C寫(xiě)的,調(diào)用起來(lái)相當(dāng)快,自己拿python寫(xiě)一遍,速度慢不說(shuō),還容易出錯(cuò)要調(diào)試.
環(huán)境準(zhǔn)備
-
python3.9+
都2022年了,python版本最新的到3.10,很老很老的python真的沒(méi)必要堅(jiān)持用了
-
pycharm專(zhuān)業(yè)版
python和它大部分的包都免費(fèi),但是編輯器有收費(fèi)的也有免費(fèi)的,pycharm專(zhuān)業(yè)版就是收費(fèi)的,但它對(duì)學(xué)生老師免費(fèi)(需要去官網(wǎng)用學(xué)信網(wǎng)或者是學(xué)校給的個(gè)人郵箱認(rèn)證).
對(duì)于第一次用的人,有三十天的免費(fèi)體驗(yàn),過(guò)期后收費(fèi).
其實(shí)隨便一個(gè)帶python代碼提示功能的編輯器都行,用pycharm主要是因?yàn)樗镞叺膉upyter note book有代碼提示,創(chuàng)建虛擬環(huán)境方便,安裝包也很方便,還是很舒服的.一個(gè)很小的bug可能會(huì)讓一個(gè)新手卡一天(比如說(shuō)我),所以,我極力推薦用一個(gè)功能強(qiáng)大穩(wěn)定的運(yùn)行環(huán)境.
-
把python所在的目錄加入到環(huán)境變量里
如果已經(jīng)有了pycharm專(zhuān)業(yè)版的環(huán)境,可以暫時(shí)忽略這條
下載好pycharm專(zhuān)業(yè)版第一次進(jìn)去后會(huì)提示是否要把pycharm本地化,點(diǎn)擊switch and localized 后等待重啟即可. 重啟后看到的pycharm就是經(jīng)過(guò)漢化的pycharm了.
1. 使用pycharm新建一個(gè)工程
新建一個(gè)jupyter notebook文件,名字隨便起
文件新建好了之后會(huì)看到這么個(gè)提示: jupyter沒(méi)安裝, 接下來(lái),我們將要安裝數(shù)學(xué)建模中常用的一些軟件.
新建一個(gè)requirements.txt 文件,在requirements.txt 文件里,我們把需要用到的包名稱(chēng)寫(xiě)進(jìn)去,這樣, 后續(xù)分享給別人安裝這個(gè)包就要快很多.
里邊的內(nèi)容如下(復(fù)制粘貼保存即可).
jupyter numpy scipy sklearn openpyxl pandas matplotlib seaborn xlrd ? ?這里注意,打開(kāi)終端之后如果沒(méi)有這個(gè)(venv)的提示,說(shuō)明目前用的不是虛擬環(huán)境, 換句話說(shuō)就是沒(méi)完全按照前邊的步驟來(lái), 后邊會(huì)有可能因?yàn)榄h(huán)境不一樣出現(xiàn)各種奇奇怪怪的bug.
這里強(qiáng)烈推薦按照我前邊推薦的來(lái). 我在剛?cè)腴T(mén)的時(shí)候還有入門(mén)的過(guò)程中踩過(guò)非常多的坑.每一個(gè)坑都讓我花費(fèi)了很多時(shí)間解決,在做這篇教程的時(shí)候,專(zhuān)門(mén)想了下如何避開(kāi)這些坑. 我會(huì)盡量保證安裝我的操作來(lái)可以流暢運(yùn)行并看到預(yù)期的演示效果,而不是因?yàn)檠b環(huán)境卡住如何后邊動(dòng)不了.當(dāng)時(shí)真的是痛苦極了,多希望有個(gè)人能在我旁邊幫我一把,而不是卡住一個(gè)個(gè)搜一個(gè)個(gè)試.
按照我推薦的來(lái)可以幫您節(jié)省相當(dāng)多的時(shí)間,并且基本屬于比較快且方便的方式
打開(kāi)終端,輸入以下內(nèi)容即可安裝所需要的主流的python的包
pip install -r requirements.txt虛擬環(huán)境中建立requirements文件是很好的習(xí)慣,他會(huì)讓用了那些包更加清晰,后續(xù)再次復(fù)現(xiàn)這個(gè)環(huán)境只需pip install -r requirements.txt一行就能實(shí)現(xiàn), 可用性高.
如果您實(shí)在懶得建文件,您也可以一條條復(fù)制粘貼這些去安裝.(及其不推薦)
pip install jupyter pip install numpy pip install scipy pip install sklearn pip install openpyxl pip install pandas ? pip install matplotlib pip install seaborn pip install xlrd ? ?從下載到安裝好這些包大概花費(fèi)三分鐘時(shí)間左右.
入門(mén)第一節(jié):讀寫(xiě)數(shù)據(jù)并簡(jiǎn)單畫(huà)圖
想當(dāng)年,我最初接觸數(shù)學(xué)建模比賽的時(shí)候還是校賽.當(dāng)時(shí)是大一,由于學(xué)過(guò)C語(yǔ)言,對(duì)數(shù)據(jù)處理感覺(jué)信心十足.
然而,很難受的是當(dāng)時(shí)只用devc++這類(lèi)軟件編程,平時(shí)指針都不明白,更別提讀文件,把文件里的內(nèi)容轉(zhuǎn)為數(shù)組來(lái)操作了.
我們當(dāng)時(shí)比賽就做了個(gè)第一問(wèn)(也不算完全做出來(lái)),然后寫(xiě)了個(gè)論文交上,當(dāng)時(shí)還拿了個(gè)學(xué)校的三等獎(jiǎng),非常的開(kāi)心.
如果你們也是這樣,那我估計(jì)你看完我這個(gè)前幾個(gè)教程基本上大一參加建?;靷€(gè),啊呸,至少能斬獲一個(gè)三等獎(jiǎng).
當(dāng)時(shí)困擾我最久的就是讀文件, 對(duì)數(shù)據(jù)的操作有很多辦法,但是讀不出來(lái)數(shù)據(jù)就很難受,有種有力無(wú)處使的感覺(jué).
所以,入門(mén)第一節(jié),先讀數(shù)據(jù).
俗話說(shuō)得好,手里有劍才能用劍.這數(shù)據(jù)在表格里就好像劍在商店里,我們不直接去造一把劍,我們從商店里免費(fèi)買(mǎi)一把回來(lái).
程序讀出來(lái)數(shù)據(jù)就像是劍拿在手里,就方便進(jìn)行后續(xù)的操作,劍不在手里,學(xué)劍譜多半對(duì)著空氣比劃,很難受的.
創(chuàng)建演示所需的表格,并簡(jiǎn)單展示一些功能
這一節(jié)的主要目的是為了生成我們后邊演示需要的excel表格,由于是第一次接觸,您無(wú)需理解程序的具體含義,只是復(fù)制粘貼后運(yùn)行即可.
關(guān)于波士頓數(shù)據(jù)集的簡(jiǎn)介可以看這篇文章,本文中的對(duì)表頭的翻譯取自這篇文章.
(49條消息) Dataset之Boston:Boston波士頓房?jī)r(jià)數(shù)據(jù)集的簡(jiǎn)介、下載、使用方法之詳細(xì)攻略一個(gè)處女座的程序猿的博客-CSDN博客boston數(shù)據(jù)集
通過(guò)以下簡(jiǎn)短幾行代碼,我們不僅加載了數(shù)據(jù)集,而且把它保存成了文本文件和表格,并且簡(jiǎn)單花了兩張圖,保存了一張圖.
from sklearn import datasets import pandas as pd ? boston=datasets.load_boston() #讀到的數(shù)據(jù)集保存到文件里,您可以在文件中查看數(shù)據(jù)集一開(kāi)始的樣子,您也可以從后邊輸出的表格中看到數(shù)據(jù)集的樣子 with open('boston.txt','w',encoding='utf-8') as f:f.write(boston.__str__())f.close() #為了方便看懂,表頭替換為翻譯好的中文 header=[ "城鎮(zhèn)人均犯罪率", "住宅用地所占比例", "城鎮(zhèn)中非商業(yè)用地占比例", "查爾斯河虛擬變量,用于回歸分析", "環(huán)保指標(biāo)", "每棟住宅房間數(shù)", "1940年以前建造的自住單位比例 ", "與波士頓的五個(gè)就業(yè)中心加權(quán)距離", "距離高速公路的便利指數(shù)", "每一萬(wàn)美元的不動(dòng)產(chǎn)稅率", "城鎮(zhèn)中教師學(xué)生比例", "城鎮(zhèn)中黑人比例", "房東屬于低等收入階層比例", # "自住房屋房?jī)r(jià)中位數(shù)", ] ? #將波士頓數(shù)據(jù)集轉(zhuǎn)化成易于操作的pandas.DataFrame類(lèi)型 boston=pd.DataFrame(data=boston.data,columns=boston.feature_names) #為了直觀的看一下效果,將列的索引(表頭)換成中文的 boston.columns=header ''' 雖然很多編輯器帶代碼提示,但是輸入在中英文直接頻繁切換也不太舒服, 而且有時(shí)候中文太長(zhǎng)了,這里可以用列表來(lái)代替 ''' print(f"列表中的第 0 個(gè)元素是: '{header[0]}'") boston[header[0]] ? boston.to_excel('boston.xlsx',index=False) ? import matplotlib from matplotlib import pyplot as plt #配置matplotlib使其支持中文顯示 matplotlib.rcParams['font.sans-serif'] = ['SimHei'] matplotlib.rcParams['axes.unicode_minus']=False ? #把第一列單獨(dú)拿出來(lái)畫(huà)個(gè)圖 h0=pd.DataFrame(boston[header[0]]) h0.plot() #保存圖片到當(dāng)前目錄下 plt.savefig('./犯罪率.png') #展示圖片 plt.show() ? boston.plot() plt.show() ''' '''運(yùn)行上述的代碼之后,我們得到了一個(gè)表格的數(shù)據(jù),還順手畫(huà)了兩個(gè)圖并且保存了一個(gè)圖.
畫(huà)圖的代碼也是非常簡(jiǎn)單,只有下邊的幾行,您就可以簡(jiǎn)單的繪圖和保存圖片了.
怎么樣,比起找個(gè)漫長(zhǎng)的課程第一次先打印helloworld, 這第一次給的體驗(yàn)是不是爽的飛起~
如果您只是想看看python適不適合做數(shù)學(xué)建模,想必到了這里您應(yīng)該已經(jīng)有了自己的答案.
從表格中讀取數(shù)據(jù)
我們對(duì)數(shù)據(jù)的操作用到一個(gè)非常舒服的庫(kù):pandas
在使用之前,我們需要對(duì)pandas的數(shù)據(jù)類(lèi)型有個(gè)大致了了解,以方便后續(xù)對(duì)數(shù)據(jù)進(jìn)行操作.
換句話說(shuō),這里有一套絕世劍法,只有三招就有程咬金三板斧的威力,會(huì)了這三招,可以融會(huì)貫通演變出更多招式.
所以說(shuō)我們先快速看一下會(huì)哪些基本操作和概念之后才能融會(huì)貫通.
基本概念(有基礎(chǔ)的老鐵可以自行跳過(guò))
-
jupyter notebook
不同于py腳本, 一般python腳本是一下順序執(zhí)行完了,然后就沒(méi)了.
這個(gè)時(shí)候,比如說(shuō)我有一個(gè)變量,我想看看它,結(jié)果執(zhí)行完了,程序結(jié)束了,我需要加一個(gè)打印這個(gè)對(duì)象的代碼,或者是點(diǎn)開(kāi)調(diào)試去看,很不方便.
如果這是一個(gè)很耗時(shí)的操作,執(zhí)行一次需要30分鐘,而我一開(kāi)始不能保證我能一下子執(zhí)行出我想要的效果. 這時(shí),如果有個(gè)什么東西,可以把我執(zhí)行過(guò)的變量啥的,都保存起來(lái),我每次不需要在重新執(zhí)行,只需要輸入變量就能查看了就好了.
jupyter就是干這個(gè)的,所有執(zhí)行過(guò)的代碼塊的變量,都會(huì)保存起來(lái),后邊可以不再次執(zhí)行,而是直接查看變量,同時(shí),它還支持插入markdown模塊,支持查看函數(shù)幫助等等,在數(shù)據(jù)科學(xué)領(lǐng)域,jupyter可以看作是python plus .
當(dāng)然,受限于作者的水平,描述可能不太準(zhǔn)確詳細(xì),感興趣的老鐵可以自行搜索.
-
面向?qū)ο?/p>
關(guān)于面向?qū)ο笥泻芏嘟坛?去看那些可能會(huì)花費(fèi)很多時(shí)間,但使用起來(lái)大致體現(xiàn)為這樣:
舉個(gè)簡(jiǎn)易的例子:
你有一個(gè)grilfried,你可以把她看成一個(gè)對(duì)象,她有身高,體重,三圍等等,這些你可以把他們看成對(duì)象的屬性.
grilfriend會(huì)吃飯,會(huì)打游戲,會(huì)撒嬌,這些可以看作是對(duì)象的方法,或者是函數(shù).
同理,這里有一個(gè)'String'對(duì)象,我們叫他a,給他賦值為"666",(String是字符串的意思),它有一個(gè)'___len__()'方法,我們使用 a.__len__()方法,得到它的長(zhǎng)度是3.
對(duì)象.屬性 對(duì)象.函數(shù)()使用起來(lái)主要是.這個(gè)操作主要是用來(lái)調(diào)用各種包,一般包里邊會(huì)預(yù)先封裝一些方法,我們調(diào)用的時(shí)候可以直接拿來(lái)使用.
這一點(diǎn)對(duì)于使用英文多的人很舒服,因?yàn)楹瘮?shù)名稱(chēng)都是英文的,一般一看就知道是干啥的.
-
列表
-
函數(shù)(方法)
-
參數(shù)
說(shuō)實(shí)話,這些基礎(chǔ)的東西至少是需要一些程序設(shè)計(jì)基礎(chǔ)的,受限于作者水平,很難用很短的時(shí)間講明白,于是我假設(shè)大家正在或者至少上過(guò)一些程序設(shè)計(jì)基礎(chǔ)的課程.
pandas的數(shù)據(jù)類(lèi)型
什么是數(shù)據(jù)類(lèi)型
我們可以通過(guò)type函數(shù)來(lái)查看對(duì)象的數(shù)據(jù)類(lèi)型.
一整個(gè)表的數(shù)據(jù)就是一個(gè)dataframe類(lèi)型(至少有一列),單獨(dú)一列的是一個(gè)Series類(lèi)型.
這些數(shù)據(jù)類(lèi)型和C語(yǔ)言中的數(shù)組有一定的相似,但是在python中,他們都是一些經(jīng)過(guò)層層封裝的對(duì)象. 換言之,使用他們會(huì)比使用java或者C語(yǔ)言或者是matlab語(yǔ)言中的對(duì)象或者數(shù)組要簡(jiǎn)單的多. 這就像是造車(chē)和開(kāi)車(chē)還有玩賽車(chē)游戲, C語(yǔ)言在造車(chē)的層面, java上可造車(chē)下可開(kāi)車(chē), 而python一般在玩賽車(chē)游戲的層面, 但是實(shí)際上賽車(chē)游戲中的操作,經(jīng)過(guò)映射最后還是反映到實(shí)際的車(chē)上去. 在玩賽車(chē)游戲的時(shí)候,我們不需要糾結(jié)太多,只需要看著說(shuō)明讓車(chē)動(dòng)起來(lái)就好了. 所有的操作以游戲廠商提供的為準(zhǔn). 使用pandas的dataframe對(duì)象就是這個(gè)道理, 我們不需要過(guò)多糾結(jié)底層是怎么實(shí)現(xiàn)的, 基本上常用的功能pandas官方都進(jìn)行了封裝, 絕大部分的操作只要搜索一下就能找到對(duì)應(yīng)的用法,非常方便上手.
Series是序列的意思,大致可以理解為索引更加方便的一維數(shù)組(列表).
DataFrame的索引方式
對(duì)于一個(gè)DataFrame對(duì)象,就是如果調(diào)用pandas讀表格的函數(shù),得到的結(jié)果,就是一個(gè)DataFrame對(duì)象.
既然是從一個(gè)表格里得出來(lái)的,就會(huì)有行索引和列索引.
在表格中比如excel,可以通過(guò)行號(hào)和列號(hào)來(lái)定位到一個(gè)元素;
該元素在表格中的位置正是A17;
也可也通過(guò)選定一個(gè)列來(lái)定位到一整列元素:
DataFrame也具有這種思想,它提供一個(gè)行索引和列索引
通過(guò)列索引可以獲得一整個(gè)列的數(shù)據(jù),通過(guò)行索引和列索引可以定位到具體一個(gè)的數(shù)據(jù).
怎么用,這個(gè)和在excel中選擇一整列數(shù)據(jù)是不是很相似.
我們使用行列所以獲得單獨(dú)的數(shù)據(jù)
?得到想得到的數(shù)據(jù)
通過(guò)以下調(diào)用方法就可以得到上邊說(shuō)的DataFrame對(duì)象,
boston=pd.read_excel('boston.xlsx',header=0,sheet_name='Sheet1')調(diào)用這個(gè)函數(shù),第一個(gè)一般放文件的位置,如果是在同一級(jí)目錄下,可以只寫(xiě)文件名
指定表頭為第0行,指定表格為Sheet1(一般只有這一張表可以不指定,但我猜如果您正在看這里說(shuō)不定此時(shí)您的表格恰好有很多張表,為了節(jié)省您再次搜索閱讀的時(shí)間,這里多加一句)
拿到數(shù)據(jù)后我們可以看一下數(shù)據(jù)量的大小,這里發(fā)現(xiàn)是506行*13列大小
boston=boston.dropna()可以使用上述方法刪除空值.這里有一點(diǎn)要注意,刪除空值后,行的索引一般不會(huì)跟著變,比如說(shuō)行號(hào)原來(lái)為30的行,第29行刪除了,我們默認(rèn)為行號(hào)為30開(kāi)始的行都會(huì)向前平移一位,其實(shí)不是這樣的,如果您希望行的索引也隨之變化,您需要手動(dòng)修改它.
這里因?yàn)閿?shù)據(jù)集是經(jīng)過(guò)篩選校對(duì)的數(shù)據(jù)集,里邊一般不會(huì)有空值.
還可以指定條件刪除行,方法也很簡(jiǎn)單,這里刪除了所有城鎮(zhèn)人均犯罪率大于0.2的行,看到,刪除完了之后確實(shí)少了很多行.
boston=boston.drop(index=boston[boston['城鎮(zhèn)人均犯罪率']>0.2].index) boston.shape下邊三個(gè)例子分別為刪除空值,刪除行,刪除列的方式.
我是怎么知道這些的呢? 其實(shí)很簡(jiǎn)單,按住ctrl,點(diǎn)擊函數(shù)名稱(chēng),就能查看源碼了,在源碼中有一部分的示例和介紹. 一般把介紹翻譯一下,看看示例就差不多.也可也去官網(wǎng)查看詳細(xì)的介紹.也可也直接上網(wǎng)搜,也很快.這里搜索推薦用國(guó)內(nèi)版的必應(yīng)或者谷歌,用duckduckgo搜索也不錯(cuò).某度某狗適合搜一些明星緋聞,搜技術(shù)問(wèn)題基本上是不太妙.
畫(huà)圖初探(畫(huà)些很簡(jiǎn)單的圖)
接上回,畫(huà)圖其實(shí)最最簡(jiǎn)單的方法就是使用DataFrame對(duì)象自帶的畫(huà)圖,它會(huì)把整個(gè)DataFrame畫(huà)出來(lái).
也可也單獨(dú)提取出一列來(lái),像這樣:
cr=pd.DataFrame(boston['城鎮(zhèn)人均犯罪率']) cr.plot()jupyter的騷操作
jupyter可以直接在框框內(nèi)輸入變量,然后打印出來(lái)
當(dāng)一個(gè)函數(shù)忘了咋用,或者是不知道是啥,可以輸入函數(shù)名然后后邊跟兩個(gè)問(wèn)號(hào),這里一般會(huì)返回一個(gè)幫助文檔(這個(gè)功能直接運(yùn)行.py腳本是不太好操作的)
有一點(diǎn)難受的是翻譯出來(lái)的是英文, 英語(yǔ)不是很6的老鐵可以下載一個(gè)DEEPL, 按兩下Ctrl+c+c翻譯, 這個(gè)翻譯親測(cè)靠譜,目前還是免費(fèi)免登錄,就是國(guó)內(nèi)網(wǎng)速可能比較慢.
畫(huà)圖必備的兩個(gè)包
matplotlib
matplotlib官方提供一些快速開(kāi)始的教程,原理上很簡(jiǎn)單, 就是給一個(gè)x,y坐標(biāo),就能畫(huà)一張圖
Getting started — Matplotlib 3.5.3 documentation
seaborn
seaborn基于matplotlib做了更加上層的封裝,通常它提供一些非常漂亮的主題,使用它可以少些很多代碼畫(huà)出看起來(lái)很漂亮的圖, 作為我這樣的懶人,我簡(jiǎn)直是愛(ài)死seaborn了.
seaborn基本上完全兼容matplotlib的語(yǔ)法. 一般入門(mén)學(xué)matplotlib,畫(huà)圖用seaborn,然后可以用matplotlib的接口對(duì)畫(huà)出來(lái)的圖進(jìn)行修改.
User guide and tutorial — seaborn 0.11.2 documentation (pydata.org)
第一張圖
OK,廢話不多說(shuō),我們通過(guò)之前加載的波士頓數(shù)據(jù)集感受一下:
再次之前,請(qǐng)確保您已經(jīng)運(yùn)行過(guò)第一段代碼,因?yàn)樗鼤?huì)在同級(jí)目錄下生產(chǎn)一個(gè)表格文件,用來(lái)作為我們讀表格和畫(huà)圖的數(shù)據(jù)來(lái)源. 基于這個(gè)代碼片段,您可以稍作修改畫(huà)出自己想要的同類(lèi)型的圖.
第一段是引入需要的包, 在引入matplotlib時(shí)候要配置一下字體,要不然中文放不出來(lái).
第二段是讀表格,提取出第1列和默認(rèn)的索引來(lái)畫(huà)圖,
最后一段是畫(huà)圖,然后簡(jiǎn)單保存了一下.
import matplotlib from matplotlib import pyplot as plt #配置matplotlib使其支持中文顯示 matplotlib.rcParams['font.sans-serif'] = ['SimHei'] matplotlib.rcParams['axes.unicode_minus']=False import pandas as pd # import numpy as np ? boston_dataframe=pd.read_excel('boston.xlsx') columns=boston.columns x=boston_dataframe.index print(f'索引默認(rèn)是0到最后一行的長(zhǎng)度,這里是 : {x}') print(f'這里取第一列畫(huà)一個(gè)圖,這里是 : {x}') y=boston_dataframe[columns[0]] ? plt.plot(x,y) plt.legend((columns[0],)) plt.ylabel(columns[0]) plt.savefig('第一張圖.png') plt.show()沒(méi)錯(cuò),就這么簡(jiǎn)單就完成了讀數(shù)據(jù)畫(huà)圖,多用兩次之后會(huì)發(fā)現(xiàn)其實(shí)這個(gè)比用軟件用鼠標(biāo)點(diǎn)畫(huà)圖要快的.
當(dāng)然,同類(lèi)型的圖也可也一個(gè)循環(huán)搞完,如果您有這方面的需要的話
for i in range(len(columns)):plt.plot(x,boston_dataframe[columns[i]])plt.legend((columns[i],))plt.ylabel(columns[i])# plt.savefig('第一張圖.png')plt.show() ?這5行代碼實(shí)際上畫(huà)了13張圖,篇幅原因,這就不放在這里了(懶得復(fù)制)
到這里我們直觀的感受了一下畫(huà)圖,并親手體驗(yàn)了畫(huà)圖的基本操作,相比各位老鐵對(duì)畫(huà)圖也有了一定的了解. 這個(gè)時(shí)候,再想要畫(huà)出更好的圖或者是其它類(lèi)型的圖,相比稍作搜索就能找得到了.
這里再次推薦一下搜索引擎的使用: 如果不是看病或者搜明星緋聞啥的, 咱技術(shù)問(wèn)題一般用必應(yīng),或者Google.
隨緣更新下一張,各位老鐵有緣再見(jiàn)
后續(xù)可以根據(jù)大家的意見(jiàn)修正一下這篇教程的問(wèn)題,有緣更新下一章啦~
?
總結(jié)
以上是生活随笔為你收集整理的使用python进行数学建模系列1 读表格 +简单处理+ 画图简单入门 代码可直接运行的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: java从数据库映射实体类的代码
- 下一篇: 计算机没有显示光盘图标,电脑光驱图标不见