婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > 初學python數學建模之數據導入(小白篇)

初學python數學建模之數據導入(小白篇)

熱門標簽:ai電話機器人哪里好 外呼并發線路 湛江智能外呼系統廠家 宿遷星美防封電銷卡 長沙高頻外呼系統原理是什么 百度地圖標注沒有了 ai電銷機器人源碼 西藏房產智能外呼系統要多少錢 地圖標注審核表

1. 數據導入是所有數模編程的第一步

編程求解一個數模問題,問題總會涉及一些數據。

有些數據是在題目的文字描述中給出的,有些數據是通過題目的附件文件下載或指定網址提供的,還有些數據是需要自己搜集的。不論是哪種方式獲得的數據,也不論哪種類型的問題和算法,首先都是要把這些數據以適當的方式和格式導入到程序中。

  • 如果數據格式有問題

輕則讀取數據時發生錯誤,要浪費時間去查找和解決,在數模競賽中就會讓人非常焦躁。

數據錯誤還是輕的嗎?對,重則讀取數據有錯誤,程序卻在繼續運行,得到了錯誤的結果,這在數模競賽中就更糟糕了。

你可能都不知道發生了錯誤,就算感覺有問題也不會把錯誤直接鎖定到數據導入部分。

結果不停地去修改其它模塊,直到把正確的模塊也搞錯了,最后無可救藥。

因此,確保數模編程第一步“數據導入”的順利完成,遠遠比你想象的更重要。

  • Python 語言中數據導入的方法很多

對于數學建模問題編程來說,選擇什么方法最好呢?答案是:沒有最好的,只有最合適的。

對于不同的問題,不同的算法,以及所調用工具包的不同實現方法,對于數據就會有不同的要求。

另外,賽題所給數據文件中的數據組織方式不同,也需要使用不同的方法來導入數據。

那么好了,既然是要具體問題具體分析,這不跟沒說一樣嗎?這正是本文希望回答的問題,雖然針對不同問題的最佳的數據導入方法也不同,但我們先要學會一種未必最佳,但是通用、安全、簡單、好學的方法。

2. 在程序中直接向變量賦值

直接在程序中向變量賦值,是雖然笨拙但最簡單的方法,也許還是最可靠的方法——如果你沒有敲錯鍵盤的話。

確實,把直接賦值作為數據導入方法來介紹,實在是不好意思說出口。

但是,對于數模競賽這種特殊的需求,直接賦值的方法還是十分常用的,而且完全符合簡單、實用、可靠的要求。

不過,直接賦值也并非我們想的那么簡單,還是值得認真地談一談。

2.1 為什么直接賦值?

絕大部分數學建模教材中的例程,都是使用直接賦值的方法導入數據。
很大比例的博客例程,包括本系列的大多數案例,也都是在程序中直接賦值的。

  • 其原因在于

一是為了保證程序的完整性,復制粘貼回車就能得到運行結果,不需要復制數據文件等操作,就避免了由此引起的各種錯誤;

二是為了把讀者的注意力聚焦在主要的知識點,避免干擾;

三是使例程更加直觀易懂,便于理解例程的算法。

這些原因也都是直接賦值的優點。那么,這些優點不也正是數模競賽編程活動的痛點嗎?

沒錯,這就是直接賦值方法在數學建模培訓和數模競賽編程的實踐中廣泛流行的原因。

2.2 直接賦值的問題與注意事項

但是,即使在數模競賽編程中,直接賦值也會有幾個問題。

  • 一是某些問題不能使用直接賦值方法。這主要是大數據的問題,數據量或數據文件的數量極大,已經不能使用直接賦值實現了。
  • 二是一些問題雖然可以直接賦值,但很容易出錯。這主要是數據量很大,或者數據結構、類型比較復雜的問題。例如,多元分析、時間序列、數據統計類的題目可能都有很大的數據量,在附件中提供數據文件。
    這時如果在使用直接賦值導入數據,不再是敲鍵盤了,而是從文件中把數據復制粘貼到程序中。這時要特別注意的問題是:文件中的數據分隔符是什么,空格還是逗號,與變量賦值的格式要求是否一致?
    即使文件中的數據分隔符看上去是空格,也需要檢查到底是空格還是制表符,是一個空格還是幾個空格?
    文件中的數據有沒有錯漏等異常?
    這在讀取文件中可以通過程序檢查、識別和處理,在復制粘貼時就要人工處理了。
  • 三是數據量不大的問題,完全可以用直接賦值導入數據,但也會由于疏忽大意而出錯。這倒不是說敲錯鍵盤了,而是由于例程不一定是把數據賦值作為獨立模塊處理的,而是分散在算法的過程中進行賦值。
    同學在使用和修改例程時時,就很容易忘記修改算法過程中的變量賦值。
    這種情況屢見不鮮,有時是因為對程序沒有搞明白,忽略了算法步驟中的某個變量;
    更多時候是忙中出錯,在反復調試和更換數據時暈頭轉向,只顧了修改開始的數據而疏忽了后面的數據。

養成數據導入模塊化的習慣,才能避免這一類的疏忽:

  • 將數據導入模塊作為單獨的函數。
  • 如果不愿意使用數據導入函數,則要把數據導入部分集中寫成一段,放在程序的起始部分。
  • 不要把問題本身的數據導入與算法所需的參數賦值混淆,分為兩個獨立的函數或段落。

例程 1:將數據導入作為單獨的函數

# 子程序:定義優化問題的目標函數
def cal_Energy(X, nVar, mk): # m(k):懲罰因子
    p1 = (max(0, 6*X[0]+5*X[1]-320))**2
    p2 = (max(0, 10*X[0]+20*X[1]-7027)**2
    fx = -(10*X[0]+9*X[1])
    return fx+mk*(p1+p2)

# 子程序:模擬退火算法的參數設置
def ParameterSetting():
    tInitial = 100.0            # 設定初始退火溫度(initial temperature)
    tFinal  = 1                 # 設定終止退火溫度(stop temperature)
    alfa    = 0.98              # 設定降溫參數,T(k)=alfa*T(k-1)
    nMarkov = 100            	# Markov鏈長度,也即內循環運行次數
    youcans = 0.5               # 定義搜索步長,可以設為固定值或逐漸縮小
    return tInitial, tFinal, alfa, nMarkov, youcans

例程 2:將數據導入集中寫成一段,放在程序的起始部分

# 主程序
def main():
    # 模型數據導入
    p1 = [6, 5, -320]
    p2 = [10, 20, -7027]
    p3 = [10, 9]
    print(p1,p2,p3)

    # 算法參數設置
    tInitial = 100.0            # 設定初始退火溫度(initial temperature)
    tFinal  = 1                 # 設定終止退火溫度(stop temperature)
    alfa    = 0.98              # 設定降溫參數,T(k)=alfa*T(k-1)
    nMarkov = 100            	# Markov鏈長度,也即內循環運行次數
    youcans = 0.5               # 定義搜索步長,可以設為固定值或逐漸縮小
    print(tInitial, tFinal, alfa, nMarkov, youcans)

3. Pandas 導入數據

雖然很多數模競賽的問題可以通過直接賦值獲取數據,但主流的數據導入方法還是讀取數據文件。

  • 數學建模中常用的數據文件格式有文本文件(.txt)、Excel 文件(.xls, .xlsx)和 csv 文件(.csv)。
  • 在讀取文本文件時,會遇到逗號、空格、制表符等不同的數據分割符。
  • 讀取 Excel 文件時,首先 .xls 與 .xlsx 的格式不同,其次要考慮數據表帶不帶標題行,有時文件中還有多個工作表。
  • 讀取文件時還會遇到數據缺失,非法字符。

對于小白來說,特別在競賽時,處理這些問題時都會心神不寧。

Python 中讀取數據文件的方法也很多。本文非常不推薦使用 Python 自身的文件操作如打開(open)、關閉(close)、讀寫(read、readline)函數,而是推薦使用 Pandas 讀取數據文件。

原因在于:

  • Pandas 提供了多種常用文件格式的讀寫函數,以上各種情況都能一行代碼搞定。
  • Pandas 是基于 NumPy 構建的數據分析工具包,便于進行數據整理與清洗,操作方便靈活。
  • Pandas 提供了與其它各種數據結構的轉換工具,使用簡單靈活。
  • 很多數學建模算法的例程就是使用 Pandas 的 Series、DataFrame 數據結構,無需進行轉換。

3.1 Pandas 讀取 Excel 文件

Pandas 使用 read_excel() 函數讀取 Excel文件。

pd.read_excel(io, sheetname=0,header=0,index_col=None,names=None)

pd.read_excel() 的主要參數:

  • io : 文件路徑(包括文件名)。
  • header :指定作為列名的行。默認為 0,即首行為標題行。設置 header=None,表示無標題行,首行就是數據行。
  • sheetname:指定工作表。默認為 sheetname=0。設置 sheetname=None 返回全表, 設置 sheetname=[0,1] 返回多表 。
  • index_col :指定作為行索引的列編號或列名。
  • names:指定列名, 類型為 list。

pd.read_excel() 使用實例:

# sheetname 表示讀取指定的工作表,header=0 表示首行為標題行,header=None 表示首行為數據行
df = pd.read_excel("data/youcans1.xls", sheetname='Sheet1', header=0)

3.2 Pandas 讀取 csv 文件

Pandas 使用 pandas.read_csv() 函數讀取 Excel文件。

pd.read_csv( filepath ,sep=',', header=‘infer', names=None, index_col=None)

pd.read_csv() 的主要參數:
  • filepath : 文件路徑(包括文件名)。
  • sep:指定分隔符。默認為逗號 ‘,',可根據需要設置其它分隔符。
  • header :指定作為列名的行。**如果文件沒有列名則默認為 0,表示首行就是數據行;設置 header=None,表示無標題行,首行就是數據行。
  • index_col :指定作為行索引的列編號或列名。
  • names:指定列名, 類型為 list。
pd.read_csv() 使用實例:
# sep=','表示間隔符為逗號,header=0表示首行為標題行,header=None 表示首行為數據行
df = pd.read_csv("data/youcans2.csv", header=0, sep=',') 

3.3 Pandas 讀取文本文件

對于文本文件 .txt 和 .dat,可以使用 pandas.read_table() 函數讀取 。

pd.read_table( filepath ,sep='\t', header=‘infer', names=None, index_col=None)

pd.read_table() 的主要參數:
  • filepath : 文件路徑(包括文件名)。
  • sep:指定分隔符。默認為 tab 制表符,可根據需要設置其它分隔符。
  • header :指定作為列名的行。**如果文件沒有列名則默認為 0,表示首行就是數據行;設置 header=None,表示無標題行,首行就是數據行。
  • index_col :指定作為行索引的列編號或列名。
  • names:指定列名, 類型為 list
pd.read_table() 使用實例:
# sep='\t'表示分隔符為制表符,header=None 表示無標題行,第一行是數據
df = pd.read_table("data/youcans3.dat", sep="\t", header=None)

3.4 Pandas 讀取其它文件格式

Pandas 還提供了讀取多種文件格式的函數

使用方法也都類似,都是一行代碼搞定。例如:

  • pandas.read_sql,讀取 SQL 數據庫
  • pandas.read_html,抓取網頁中的表格數據
  • pandas.read_json,讀取 JSON 數據文件
  • pandas.read_clipboard,讀取剪貼板內容

由于這些文件格式中數模競賽中很少用到,本文就不進行詳細介紹了。有需要的同學可以根據函數名通過搜索引擎搜索參考資料,也可以查閱官方文檔:

  • Pandas 輸入輸出函數的說明文檔pandas.pydata.org/pandas-docs/stable/reference/io.html
  • https://pandas.pydata.org/pandas-docs/stable/reference/io.html

此外,對于大數據類的問題,所需處理的數據量可能非常大,必要時需對文件進行拆分或合并,也可以用 pandas 進行處理,這將在后續文章結合具體問題進行講解。

4. 數據導入例程

【重要說明】以上章節的內容雖然介紹了數據導入的基本方法,但恐怕還是難以達到消化吸收,為我所用。
為了解決這個問題,本文將相關內容整合為例程,以便于讀者學習收藏,也便于使用修改。

例程01:讀取數據文件

# mathmodel01_v1.py
# Demo01 of mathematical modeling algorithm
# Read data files into DataFrame.
# Copyright 2021 Youcans, XUPT
# Crated:2021-05-27
import pandas as pd
# 讀取數據文件
def readDataFile(readPath):  # readPath: 數據文件的地址和文件名
    # readPath = "../data/youcansxupt.csv"  # 文件路徑也可以直接在此輸入
    try:
        if (readPath[-4:] == ".csv"):
            dfFile = pd.read_csv(readPath, header=0, sep=",")  # 間隔符為逗號,首行為標題行
            # dfFile = pd.read_csv(filePath, header=None, sep=",")  # sep: 間隔符,無標題行
        elif (readPath[-4:] == ".xls") or (readPath[-5:] == ".xlsx"):  # sheet_name 默認為 0
            dfFile = pd.read_excel(readPath, header=0)  # 首行為標題行
            # dfFile = pd.read_excel(filePath, header=None)  # 無標題行
        elif (readPath[-4:] == ".dat"):  # sep: 間隔符,header:首行是否為標題行
            dfFile = pd.read_table(readPath, sep=" ", header=0)  # 間隔符為空格,首行為標題行
            # dfFile = pd.read_table(filePath,sep=",",header=None) # 間隔符為逗號,無標題行
        else:
            print("不支持的文件格式。")
    except Exception as e:
        print("讀取數據文件失敗:{}".format(str(e)))
        return
    return dfFile

# 主程序
def main():

    # 讀取數據文件 # Youcans, XUPT
    readPath = "../data/toothpaste.csv"  # 數據文件的地址和文件名
    dfFile = readDataFile(readPath)  # 調用讀取文件子程序   
    print(type(dfFile))  # 查看 dfFile 數據類型
    print(dfFile.shape)  # 查看 dfFile 形狀(行數,列數)
    print(dfFile.head())  # 顯示 dfFile 前 5 行數據
    return
if __name__ == '__main__':  # Youcans, XUPT
    main()

例程01 運行結果:

class 'pandas.core.frame.DataFrame'>

(30, 6)

   period  price  average  advertise  difference  sales

0       1   3.85     3.80       5.50       -0.05   7.38

1       2   3.75     4.00       6.75        0.25   8.51

2       3   3.70     4.30       7.25        0.60   9.52

3       4   3.70     3.70       5.50        0.00   7.50

4       5   3.60     3.85       7.00        0.25   9.33

1.本例程需要讀取數據文件 “…/data/toothpaste.csv”,該文件保存在 …/data/ 目錄下。讀者需要修改該數據文件的文件路徑和文件名,以便讀取自己需要的本地文件。

2.本例程可以根據文件名的后綴自動識別文件類型,調用相應的函數讀取文件。

3.本例程中讀取文件模塊使用 try…except 語句進行簡單的異常處理。如果讀取失敗,可以根據拋出的異常類型查找錯誤。

到此這篇關于初學python數學建模之數據導入(小白篇)的文章就介紹到這了,更多相關python數學建模數據導入內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • 淺談Python數學建模之線性規劃
  • Python小白必備的8個最常用的內置函數(推薦)
  • 小白入門篇使用Python搭建點擊率預估模型
  • 深入解析Python小白學習【操作列表】

標簽:海南 普洱 寧夏 林芝 南平 大同 漯河 盤錦

巨人網絡通訊聲明:本文標題《初學python數學建模之數據導入(小白篇)》,本文關鍵詞  初學,python,數學建模,之,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《初學python數學建模之數據導入(小白篇)》相關的同類信息!
  • 本頁收集關于初學python數學建模之數據導入(小白篇)的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    91福利在线免费观看| 国模一区二区三区白浆| 日本乱码高清不卡字幕| 亚洲精品国产a久久久久久| 91麻豆swag| 日日夜夜免费精品视频| 欧美xxx久久| 国产不卡高清在线观看视频| 亚洲六月丁香色婷婷综合久久 | 久久久九九九九| 成人三级在线视频| 一区二区三区电影在线播| 宅男噜噜噜66一区二区66| 国产综合色产在线精品| 亚洲日本青草视频在线怡红院| 欧美日韩精品免费| 精品系列免费在线观看| 最新欧美精品一区二区三区| 欧美疯狂性受xxxxx喷水图片| 国产麻豆成人传媒免费观看| 亚洲精品伦理在线| 精品国产精品一区二区夜夜嗨| 不卡av电影在线播放| 午夜国产不卡在线观看视频| 国产欧美综合在线| 欧美色综合网站| 粉嫩高潮美女一区二区三区| 亚洲成人精品一区二区| 日本一区二区综合亚洲| 欧美精品日韩精品| 成人美女在线视频| 免费观看在线色综合| 亚洲欧洲综合另类| 26uuu国产一区二区三区| 日本电影欧美片| 国产馆精品极品| 日本亚洲免费观看| 亚洲男女一区二区三区| 国产日韩精品一区二区三区在线| 欧美日韩免费一区二区三区视频| 国产福利视频一区二区三区| 日韩高清在线电影| 亚洲精品美腿丝袜| 国产精品伦一区| 久久精品亚洲精品国产欧美 | 欧美成人激情免费网| 97se狠狠狠综合亚洲狠狠| 久久不见久久见免费视频7| 亚洲美女一区二区三区| 久久久高清一区二区三区| 91精品国产色综合久久| 欧美四级电影在线观看| 99精品桃花视频在线观看| 国产成人精品免费| 久久99国产精品尤物| 天堂一区二区在线| 一区二区免费在线播放| 最新国产成人在线观看| 国产婷婷色一区二区三区| 精品久久久久99| 91麻豆精品国产91久久久资源速度| 在线观看亚洲精品视频| 色综合久久88色综合天天| 成人免费视频国产在线观看| 国产精品88av| 国产又粗又猛又爽又黄91精品| 久久99热国产| 蓝色福利精品导航| 精品一区二区三区免费| 国产在线视频一区二区| 国产一区二区精品在线观看| 国内精品视频一区二区三区八戒 | 午夜精品久久一牛影视| 亚洲综合一区二区三区| 亚洲蜜臀av乱码久久精品蜜桃| 亚洲欧美日韩国产一区二区三区 | 国产清纯美女被跳蛋高潮一区二区久久w | 欧美一区二区大片| 欧美夫妻性生活| 777奇米成人网| 日韩精品综合一本久道在线视频| 欧美一区二区三区免费观看视频| 欧美理论电影在线| 日韩一级免费观看| 精品国产1区二区| 欧美激情一区二区在线| 亚洲三级视频在线观看| 亚洲mv在线观看| 美女一区二区三区| 国产精品一区一区| 91丨九色丨尤物| 欧美日本视频在线| 精品国产一区二区三区四区四| 国产丝袜美腿一区二区三区| 亚洲欧美偷拍三级| 天涯成人国产亚洲精品一区av| 久久99精品久久久久久国产越南 | 九九九精品视频| 国产精品资源在线| 色就色 综合激情| 日韩一级片在线观看| 中文字幕免费观看一区| 一区二区三区在线影院| 免费精品视频在线| 成人免费视频视频| 777色狠狠一区二区三区| 国产亚洲一区二区三区四区 | 精品久久久久香蕉网| 国产人久久人人人人爽| 亚洲一区在线观看免费观看电影高清 | 国产精品美女久久久久久2018| 亚洲自拍偷拍综合| 激情综合色播激情啊| 91片黄在线观看| 精品国一区二区三区| 一区二区三区四区高清精品免费观看| 美女视频一区二区| 色老综合老女人久久久| 亚洲精品亚洲人成人网在线播放| 日韩成人av影视| 成人国产精品免费| 日韩精品一区二区三区四区视频 | 狠狠色丁香久久婷婷综| 99热这里都是精品| 精品美女在线观看| 亚洲图片欧美色图| proumb性欧美在线观看| 日韩美女一区二区三区四区| 亚洲一区在线观看视频| 成人一道本在线| 欧美videofree性高清杂交| 亚洲综合色丁香婷婷六月图片| 国产jizzjizz一区二区| 欧美电影免费提供在线观看| 亚洲综合一区二区精品导航| 成人午夜短视频| 精品久久久久久最新网址| 日韩在线a电影| 欧美色手机在线观看| 亚洲色图20p| 国产aⅴ综合色| 精品美女在线观看| 免费成人小视频| 91麻豆精品国产91久久久久| 亚洲自拍偷拍网站| 91国产成人在线| 亚洲激情av在线| 色欲综合视频天天天| 亚洲欧美日韩成人高清在线一区| 成人午夜大片免费观看| 中文字幕不卡三区| 国产69精品久久久久777| 久久综合久久鬼色中文字| 蜜桃视频一区二区| 这里只有精品免费| 男人的j进女人的j一区| 91精品国产综合久久小美女| 日韩电影免费在线观看网站| 欧美精品aⅴ在线视频| 午夜精品久久一牛影视| 91.麻豆视频| 日韩精品一二三区| 欧美一级日韩免费不卡| 久久福利视频一区二区| 精品久久人人做人人爽| 国内外成人在线| 久久久一区二区三区捆绑**| 国产成人免费9x9x人网站视频| 久久久久久黄色| 成人黄色a**站在线观看| 亚洲男人天堂av网| 欧美视频一区在线| 日韩av高清在线观看| 亚洲精品在线免费观看视频| 国产成人精品免费视频网站| 亚洲欧美综合在线精品| 色激情天天射综合网| 日韩中文字幕亚洲一区二区va在线| 日韩一区二区三区四区五区六区| 久久9热精品视频| 国产午夜亚洲精品理论片色戒| 成人高清在线视频| 亚洲国产综合在线| 日韩免费观看高清完整版 | 精品福利在线导航| 成人免费毛片片v| 亚洲一区免费观看| 日韩欧美综合一区| 成人网男人的天堂| 亚洲动漫第一页| 国产亚洲一二三区| 欧美天堂亚洲电影院在线播放| 乱中年女人伦av一区二区| 欧美极品另类videosde| 欧美视频在线观看一区| 狠狠色综合日日| 一区二区三区四区高清精品免费观看 | 成人永久免费视频| 亚洲综合男人的天堂| www欧美成人18+|