<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
數學建模的介紹與作用
全國大學生數學建模競賽:
全國大學生數學建模競賽創辦於1992年,每年一屆,已成為全國高校規模最大的基礎性學科競賽,也是世界上規模最大的數學建模競賽。2018年,來自全國34個省/市/區(包括香港、澳門和臺灣)及美國和新加坡的1449所院校/校區、42128個隊(本科38573隊、專科3555隊)、超過12萬名大學生報名參加本項競賽。
競賽宗旨:創新意識 團隊精神 重在參與 公平競爭
指導原則:擴大受益面,保證公平性,推動教學改革,提高競賽質量,擴大國際交流,促進科學研究。
數學建模競賽的意義:
培養科學研究的能力培養通過研究學習新認識的能力培養團隊合作能力培養創新意識和創造能力訓練快速獲取資訊和資料的能力鍛鍊快速瞭解和掌握新知識的技能培養團隊合作意識和團隊合作精神增強寫作技能和排版技術更重要的是訓練人的邏輯思維和開放性思考方式
就業:培養動手實踐經驗
發展:科研潛力的最好證明
運用數學、計算機技術和問題背景學科等知識,解決極富挑戰性的實際問題。
http://dxs.moe.gov.cn/zx/qkt/sxjm/
https://www.comap.com/
預測模型:神經網路預測、灰色預測、擬合插值預測(線性迴歸)、時間序列預測、馬爾科夫鏈預測、微分方程預測、Logistic 模型等等。應用領域:人口預測、水資源汙染增長預測、病毒蔓延預測、競賽獲勝概率
預測、月收入預測、銷量預測、經濟發展情況預測等在工業、農業、商業等經濟領域,以及環境、社會和軍事等領域中都有廣泛的應用。
優化模型:規劃模型(目標規劃、線性規劃、非線性規劃、整數規劃、動態 規劃)、圖論模型、排隊論模型、神經網路模型、現代優化演演算法(遺傳演演算法、模擬退火演演算法、蟻群演演算法、禁忌搜尋演演算法)等等。應用領域:快遞員派送快遞的最短路徑問題、水資源排程優化問題、高速路
口收費站問題、軍事行動避空偵察的時機和路線選擇、物流選址問題、商區佈局規劃等各個領域。
評價模型:模糊綜合評價法、層次分析法、聚類分析法、主成分分析評價法、
灰色綜合評價法、人工神經網路評價法等等。應用領域:某區域水資源評價、水利工程專案風險評價、城市發展程度評價、足球教練評價、籃球隊評價、水生態評價、大壩安全評價、邊坡穩定性評價
一個開源的Python類庫:用於資料分析、資料處理、資料視覺化
很方便和其他類庫一起使用:
''' 當使用Pandas做資料分析時,需要讀取事先準備好的資料集,這是做資料分析的第一步。 Pandas提供了多種讀取資料的方法: read_csv() 用於讀取文字檔案 read_excel() 用於讀取文字檔案 read_json() 用於讀取json檔案 read_sql_query()讀取sql語句的 通用流程: 1-匯入庫import pandas as pd 2-找到檔案所在位置(絕對路徑=全稱)(相對路徑=和程式在同一個資料夾中的路徑的簡稱) 3-變數名=pd.讀寫操作方法(檔案路徑,具體的篩選條件,...) ./ 當前路徑 ../ 上一級 將csv中的資料轉換為DataFrame物件是非常便捷。和一般檔案讀寫不一樣,它不需要你做開啟檔案、 讀取檔案、關閉檔案等操作。相反,您只需要一行程式碼就可以完成上述所有步驟,並將資料儲存在 DataFrame中。 ''' import pandas as pd # 輸入引數:資料輸入的路徑【可以是檔案路徑,可以是URL,也可以是實現read方法的任意物件。】 df = pd.read_csv('s') print(df, type(df)) # Pandas預設使用utf-8讀取檔案 print() import pandas as pd lxw = open(r"t.csv", encoding='utf-8') print(pd.read_csv(lxw)) print() import os # 列印當前目錄 print(os.getcwd())
Pandas需要先讀取表格型別的資料,然後進行分析
詳細版學習:
# 1: import pandas as pd df = pd.read_csv('nba.csv') print(df) # 2: import pandas as pd df = pd.read_csv('nba.csv') # to_string() 用於返回 DataFrame 型別的資料,如果不使用該函數,則輸出結果為資料的前面 5 行和末尾 5 行,中間部分以 ... 代替(如上) print(df.to_string()) # 3: import pandas as pd # 三個欄位 name, site, age nme = ["Google", "Runoob", "Taobao", "Wiki"] st = ["www.google.com", "www.runoob.com", "www.taobao.com", "www.wikipedia.org"] ag = [90, 40, 80, 98] # 字典 dict = {'name': nme, 'site': st, 'age': ag} df = pd.DataFrame(dict) # 儲存 dataframe print(df.to_csv('site.csv')) # 4: import pandas as pd df = pd.read_csv('正解1.csv') # head( n ) 方法用於讀取前面的 n 行,如果不填引數 n ,預設返回 5 行 # print(df.head()) # df.head(50).to_csv('site4.csv') df.tail(10).to_csv('site4.csv') print("over!") # 5: import pandas as pd df = pd.read_csv('nba.csv') # 讀取前面 10 行 print(df.head(10)) # 6: import pandas as pd df = pd.read_csv('nba.csv') # tail( n ) 方法用於讀取尾部的 n 行,如果不填引數 n ,預設返回 5 行,空行各個欄位的值返回 NaN print(df.tail()) # 7: import pandas as pd df = pd.read_csv('nba.csv') # 讀取末尾 10 行 print(df.tail(10)) # 8: import pandas as pd df = pd.read_csv('正解1.csv') # info() 方法返回表格的一些基本資訊 print(df.info()) # non-null 為非空資料,我們可以看到上面的資訊中,總共 458 行,College 欄位的空值最多
import pandas as pd lxw = pd.read_csv('nba.csv') # 檢視前幾行資料 print(lxw.head()) # 檢視索引列 print(lxw.index) # 檢視列名列表 print(lxw.columns) # 檢視資料的形狀(返回行、列數) print(lxw.shape) # 檢視每列的資料型別 print(lxw.dtypes) print() # 讀取txt檔案,自己指定分隔符、列名 fpath = 'D:PyCharm數學建模大賽資料分析-上-2Python成績.csv' lxw = pd.read_csv( fpath, sep=',', header=None, names=['name', 'Python-score'] ) # print(lxw) lxw.to_csv('Python成績2.csv') # 讀取excel檔案: import pandas as pd lxw = pd.read_excel('暑假培訓學習計劃.xls') print(lxw)
注:如果最後這裡【讀取excel檔案]執行出錯,那就在終端安裝
pip install xlrd
。
''' 1-Series: 一維資料,一行或一列 【Series是一種類似於一維陣列的物件,它由一組資料(不同資料型別)以 及一組與之相關的資料標籤(即索引)組成】 2-DataFrame:二維資料,整個表格,多行多列 ''' import pandas as pd # 1-1僅用資料列表即可產生最簡單的Series lxw = pd.Series([1, 'a', 5.2, 6]) print(lxw) # 執行結果解說:左邊為索引,右邊為資料 # 獲取索引 print(lxw.index) # 獲取資料 print(lxw.values) print() # 1-2 建立一個具有索引標籤的Series lxw2 = pd.Series([5, '程式人生6', 666, 5.2], index=['sz', 'gzh', 'jy', 'xy']) print(lxw2) print(lxw2.index) # 寫入檔案當中 lxw2.to_csv('gzh.csv') print() # 1-3 使用過Python字典建立Series lxw_ej = {'python': 390, 'java': 90, 'mysql': 90} lxw3 = pd.Series(lxw_ej) print(lxw3) # 1-4 根據標籤索引查詢資料 print(lxw3['java']) print(lxw2['gzh']) print(lxw2[['gzh', 'jy']]) print(type(lxw2[['gzh', 'jy']])) print(lxw[2]) print(type(lxw[2])) print() # 2 根據多個字典序列建立dataframe lxw_cj = { 'ps': [86, 92, 88, 82, 80], 'windows作業系統': [84, 82, 88, 80, 92], '網頁設計與製作': [92, 88, 97, 98, 83] } df = pd.DataFrame(lxw_cj) # print(df) # df.to_excel('lxw_cj.xlsx') # 須提前安裝好openxlsx,即pip install openpyxl[可在終端安裝] print("over!") print(df.dtypes) print(df.columns) print(df.index) print() # 3-從DataFrame中查詢Series ''' ·如果只查詢一行、一列的話,那麼返回的就是pd.Series ·如果查詢多行、多列時,返回的就是pd.DataFrame ''' # 一列: print(df['ps']) print(type(df['ps'])) # 多列: print(df[['ps', 'windows作業系統']]) print(type(df[['ps', 'windows作業系統']])) print() # 一行: print(df.loc[1]) print(type(df.loc[1])) # 多行: print(df.loc[1:3]) print(type(df.loc[1:3]))
DataFrame 加強
# DataFrame資料型別 ''' DataFrame是Pandas的重要資料結構之一,也是在使用資料分析過程中最常用的結構之一, 可以這麼說,掌握了Dataframe的用法,你就 擁有了學習資料分析的基本能力。 ''' # 認識Dataframe結構: ''' Dataframe是一個表格型的資料結構,既有行標籤,又有列標籤,她也被稱異構資料表,所謂 異構,指的是表格中每列的資料型別可以不同,比如可以是字串、整型或者浮點型等。 Dataframe的每一列資料都可以看成一個Series結構,只不過,Dataframe為每列資料值增加了 一個標籤。因此Dataframe其實是從Series的基礎上演變而來,並且他們有相同的標籤,在資料分析 任務中Dataframe的應用非常廣泛,因此描述資料的更為清晰、直觀。 同Series一樣,Dataframe自帶行標籤索引,預設為「隱式索引」。 當然,你也可以用「顯式索引」的方式來設定行標籤。 ''' # 特點: ''' Dataframe 每一列的標籤值允許使用不同的資料型別; Dataframe 是表格型的資料結構,具有行和列; Dataframe 中的每個資料都可以被修改 Dataframe 結構的行數、列數允許增加或者刪除 Dataframe 有兩個方向的標籤軸,分別是行標籤和列標籤 Dataframe 可以對行和列執行算術運算 ''' # DataFrame 構造方法如下: # pandas.DataFrame( data, index, columns, dtype, copy) ''' data:輸入的資料,可以是ndarray, series, list, dict, 標量以及一個Dataframe; index:行標籤,如果沒有傳遞index值,則預設行標籤是RangeIndex(0, 1, 2, ..., n)代表data的元素個數; columns:列標籤,如果沒有傳遞columns值,則預設列標籤是RangIndex(0, 1, 2, ..., n); dtype:要強制的資料型別,只允許使用一種資料型別,如果沒有,自行推斷; copy:從輸入複製資料。對於dict資料, copy=True, 重新複製一份。對於Dataframe或者ndarray輸入,類似於copy=False,它用的是試圖。 ''' # 1: 使用普通列表建立 import pandas as pd lxw = [5, 2, 1, 3, 1, 4] df = pd.DataFrame(lxw) df2 = pd.Series(lxw) print(df) print(df2) print() # 2:使用巢狀列表建立 import pandas as pd lxw = [['lxw', 21], ['cw', 23], ['tzs', 22]] df3 = pd.DataFrame(lxw, columns=['Name', 'Age']) print(df3) # 指定數值元素的資料型別為float # 注:dtype只能設定一個,設定多個列的資料型別,需要使用其他公式 print() # 分配列標籤注意點 import pandas as pd # 分配列標籤 lxw2 = [['lxw', '男', 21, 6666], ['cw', '女', 22, 6520], ['ky', '女', 20, 5200], ['tzs', '男', 22, 6523]] # int滿足某列特徵,會自動使用,不滿足,則會自動識別 df = pd.DataFrame(lxw2, columns=['Name', 'xb', 'age', 'gz'], dtype=int) print(df) print(df['Name'].dtype) print() # ~字典建立: import pandas as pd lxw3 = [{'a': 1, 'b': 2}, {'a': 5, 'b': 8, 'c': 9}] df = pd.DataFrame(lxw3, index=['first', 'second']) print(df) # 注:如果其中某些元素缺失,也就是字典的key無法找到對應的value將使用NaN代替 print() # 使用列表巢狀字典建立一個DataFrame物件 import pandas as pd # lxw3 df1 = pd.DataFrame(lxw3, index=['first', 'second'], columns=['a', 'b']) df2 = pd.DataFrame(lxw3, index=['first', 'second'], columns=['a', 'b2']) print(df1) print("============================================") print(df2)
import pandas as pd data = [['lxw', 10], ['wink', 12], ['程式人生6', 13]] df = pd.DataFrame(data, columns=['Site', 'Age'], dtype=float) print(df) # 1:使用 ndarrays 建立 import pandas as pd data = {'Site': ['lxw', '程式人生6', 'wink'], 'Age': [10, 12, 13]} df = pd.DataFrame(data) print(df) # 2:還可以使用字典(key/value),其中字典的 key 為列名: import pandas as pd data = [{'a': 1, 'b': 2}, {'a': 5, 'b': 10, 'c': 20}] df = pd.DataFrame(data) print(df) # 沒有對應的部分資料為 NaN # 3:Pandas 可以使用 loc 屬性返回指定行的資料,如果沒有設定索引,第一行索引為 0,第二行索引為 1,以此類推: import pandas as pd data = { "calories": [420, 380, 390], "duration": [50, 40, 45] } # 資料載入到 DataFrame 物件 df = pd.DataFrame(data) # 返回第一行 print(df.loc[0]) # 返回第二行 print(df.loc[1]) print(df.loc[2]) # 注意:返回結果其實就是一個 Pandas Series 資料。 # 也可以返回多行資料,使用 [[ ... ]] 格式,... 為各行的索引,以逗號隔開:
# Pandas Series 類似表格中的一個列(column),類似於一維陣列,可以儲存任何資料型別。 ''' Series 由索引(index)和列組成,函數如下: pandas.Series( data, index, dtype, name, copy) 引數說明: data:一組資料(ndarray 型別)。 index:資料索引標籤,如果不指定,預設從 0 開始。 dtype:資料型別,預設會自己判斷。 name:設定名稱。 copy:拷貝資料,預設為 False。 ''' import pandas as pd lxw = [1, 2, 3] myvar = pd.Series(lxw) print(myvar) print() # 如果沒有指定索引,索引值就從 0 開始,我們可以根據索引值讀取資料 print(myvar[1]) print() import pandas as pd lxw = ["Google", "Runoob", "Wiki"] myvar2 = pd.Series(lxw, index=['x', 'y', 'z']) print(myvar2) print() # 根據索引值讀取資料: print(myvar2['y']) print() # 也可以使用 key/value 物件,類似字典來建立 Series import pandas as pd lxw = {1: "Google", 2: "Runoob", 3: "Wiki"} myvar3 = pd.Series(lxw) print(myvar3) print() # 只需要字典中的一部分資料,只需要指定需要資料的索引即可 myvar3 = pd.Series(lxw, index=[1, 2]) print(myvar3) print() # 設定 Series 名稱引數 import pandas as pd lxw = {1: "Google", 2: "Runoob", 3: "Wiki"} myvar4 = pd.Series(lxw, index=[1, 3], name="lxw-pro") print(myvar4)
# Pandas查詢資料的四種方法: ''' 1-df.loc方法,根據行、列的標籤值查詢 2-df.iloc方法,根據行、列的數位位置查詢 3-df.where方法 4-df.query方法 建議:.loc既能查詢,又能覆蓋寫入,強烈推薦! ''' # Pandas使用df.loc查詢資料的方法: ''' 1-使用單個label值查詢資料 2-使用值列表批次查詢 3-使用數值區間進行範圍查詢 4-使用條件表示式查詢 5-呼叫函數查詢 ''' # 注:以上方法,即適用於行,也使用於列 import pandas as pd df = pd.read_csv('sites.csv') # print(df.head(10)) df.set_index('create_dt', inplace=True) # print(df.index) a = df.index # 去重->轉為列表->排順序 qc = sorted(list(set(a))) # print(qc)
# 替換掉利潤率當中的字尾% df.loc[:, 'lrl'] = df['lrl'].str.replace("%", "").astype('int32') # astype() 對資料型別進行轉換
astype()相關知識闡述:
''' Python中與資料型別相關函數及屬性有如下三個:type/dtype/astype type() 返回引數的資料型別 dtype 返回陣列中元素的資料型別 astype() 對資料型別進行轉換 你可以使用 .astype() 方法在不同的數值型別之間相互轉換。a.astype(int).dtype # 將 a 的數值型別從 float64 轉換為 int '''
這裡執行的話,就會報錯:
後面上網查詢解決類似的問題,一番查詢之後,終於解決問題
# 替換掉利潤率當中的字尾% df['lrl'] = df['lrl'].map(lambda x: x.rstrip('%')) print(df)
執行效果如下:
# 查詢資料型別 print(df.dtypes) # 列印檔案前幾行 print(df.head())
print(df.loc['2016-12-02', 'yye']) # 得到指定時間裡相對應的的單個值
執行結果如下:
# 得到指定時間內相對應的的一個Series print(df.loc['2016-11-30', ['sku_cost_prc', 'sku_sale_prc']])
執行結果如下:
# 得到Series print(df.loc[['2016-12-05', '2016-12-31'], 'sku_sale_prc'])
執行結果如下:
提示:圖有點長,故只擷取了部分
# 得到DataFrame print(df.loc[['2016-12-08', '2016-12-12'], ['sku_cnt', 'sku_sale_prc']])
執行部分結果如下:
# 行index按區間: print(df.loc['2016-12-02': '2016-12-08'], ['yye'])
執行部分結果如下:
# 列index按區間: print(df.loc['2016-12-12', 'yye': 'lrl'])
執行部分結果如下:
# 行和列都按區間查詢: print(df.loc['2016-11-30': '2016-12-02', 'sku_cnt': 'lrl'])
執行部分結果如下:
# 簡單條件查詢,營業額低於3的列表 print(df.loc[df['yye'] < 3, :]) # 可觀察營業額的boolean條件 print(df['yye'] < 3)
# 複雜條件查詢: print(df.loc[(df['yye'] < 5) & (df['yye'] > 2) & (df['sku_cnt'] > 1), :])
執行部分結果如下:
# 再次觀察這裡的boolean條件 print((df['yye'] < 5) & (df['yye'] > 2) & (df['sku_cnt'] > 1))
執行部分結果如下:
# 直接寫lambda表示式 print(df.loc[lambda df: (df['yye'] < 4) & (df['yye'] > 2), :])
執行部分如果如下:
# 函數語言程式設計的本質: # 函數本身可以像變數一樣傳遞 def my_query(df): return df.index.str.startswith('2016-12-08') print(df.loc[my_query, :])
遇到的問題:
到此這篇關於python數學建模之三大模型與十大常用演演算法詳情的文章就介紹到這了,更多相關python三大模型與十大演演算法內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45