Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 开心网五月色综合亚洲,国产成人精品一区二三区 ,亚洲精品高清国产麻豆专区

          整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          用Python導入數據方法匯總

          用Python導入數據方法匯總

          ython可以使用各種各樣的文件作為數據源:

          • flat files?—?csv, txt, tsv etc.
          • pickled files
          • excel spreadsheets
          • SAS and Stata files
          • HDF5
          • MATLAB
          • SQL databases
          • web pages
          • API

          Flat files

          平面文件--txt,csv - 很簡單,可以使用numpy或pandas導入。

          numpy.recfromcsv - 加載存儲在逗號分隔文件中的ASCII數據。返回的數組是一個記錄數組(如果usemask=False)或masked記錄數組(如果usemask=True)。Python示例代碼:

          data=np.recfromcsv(file)
          

          numpy.loadtxt - 此函數旨在成為簡單格式化文件的快速閱讀器。該genfromtxt函數提供了更復雜的處理,例如,缺失值的行。

          data=np.loadtxt('file.csv', delimiter=',', skiprows=1, usecols=[0,2])
          

          numpy.genfromtxt - 從文本文件加載數據,并按指定處理缺失值。是更復雜的函數,有很多參數來控制你的導入。

          data=np.genfromtxt('titanic.csv', delimiter=',', names=True, dtype=None)
          

          使用pandas更容易 - 一行,你準備好DataFrame中的文件。還支持可選地將文件迭代或分解為塊。

          data=pd.read_csv(file, nrows=5, header=None, sep='\t', comment='#', na_values='Nothing')
          

          Pickle

          它用于序列化和反序列化Python對象結構。可以對python中的任何對象進行pickle,以便將其保存在磁盤上。pickle的作用是在將對象寫入文件之前先將其“序列化”。Pickling是一種將python對象(list,dict等)轉換為字符流的方法。這個想法是這個字符流包含在另一個python腳本中重建對象所需的所有信息。下面的代碼將打印一個在某處創建并存儲在文件中的字典 - 非常酷,不是嗎?

          import pickle 
          with open('data.pkl', 'rb') as file: 
           d=pickle.load(file)
          print(d)
          

          Excel

          與pandas.read_excel將Excel表讀入panda DataFrame中,并進行了大量的自定義導入數據,這個函數的文檔很清楚,你可以用Excel文件做任何你想做的事情。

          df=pd.read_excel('file.xlsx', sheet_name='sheet1')
          

          SAS和Stata

          SAS代表統計分析軟件。SAS數據集包含組織為觀察(行)和變量(列)表的數據值。要打開此類文件并從中導入數據,請看下面的Python代碼示例:

          from sas7bdat import SAS7BDAT
          with SAS7BDAT('some_data.sas7bdat') as file: 
           df_sas=file.to_data_frame()
          

          Stata是一款強大的統計軟件,可以讓用戶分析、管理和生成數據的圖形化可視化。它主要被經濟學、生物醫學和政治學領域的研究人員用于研究數據模式。存儲在.dta文件中的數據,導入它的最好方法是pandas.read_stata

          df=pd.read_stata('file.dta')
          

          HDF5

          分層數據格式(HDF)是一組文件格式(HDF4, HDF5),用于存儲和組織大量數據。HDF5是一個獨特的技術套件,可以管理非常大和復雜的數據集合。HDF5簡化了文件結構,只包含兩種主要類型的對象:

          • Datasets,是同構類型的多維數組
          • Groups,它是可以容納數據集和其他組的容器結構

          這就產生了一種真正的層次化、文件系統式的數據格式。實際上,HDF5文件中的資源甚至可以使用類似/ path / to / resource訪問HDF5文件中的資源。元數據以用戶定義的、附加到Groups和Datasets的命名屬性的形式存儲。然后,可以使用數據集、組和屬性構建表示圖像和表的更復雜的存儲api。

          要導入HDF5文件,我們需要h5py庫。下面的Python代碼示例使我更輕松,完全可以理解。

          import h5py 
          # Load file: 
          data=h5py.File('file.hdf5', 'r') 
          # Print the keys of the file 
          for key in data.keys(): 
           print(key)
          # Now when we know the keys we can get the HDF5 group
          group=data['group_name'] 
          # Going one level deeper, check out keys of group 
          for key in group.keys(): 
           print(key)
          # And so on and so on
          

          MATLAB

          很多人使用MATLAB并將數據存儲在.mat文件中。那些文件是什么?這些文件包含在MATLAB工作空間中分配給它們的變量和對象列表。將它作為字典導入Python并不奇怪,其中鍵是MATLAB變量和值 - 分配給這些變量的對象。要編寫和讀取MATLAB文件,請使用scipy.io包。

          import scipy.io 
          mat=scipy.io.loadmat('some_project.mat')
          print(mat.keys())
          

          關系數據庫

          使用驅動程序連接到數據庫,我們可以直接從那里獲取數據。通常它意味著:創建連接,連接,運行查詢,獲取數據,關閉連接。它可以一步一步地完成,但在pandas 中只需要sqlalchemy包創建的連接。下面是連接到sqlite數據庫引擎并從中獲取數據的示例:

          from sqlalchemy import create_engine 
          import pandas as pd 
          # Create engine 
          engine=create_engine('sqlite:///localdb.sqlite')
          # Execute query and store records in DataFrame 
          df=pd.read_sql_query("select * from table", engine)
          

          來自Web的數據

          首先,如果我們有一個文件的URL,我們可以使用標準的pandas.read_csv / pandas.read_excel函數在參數“file=”中指定它

          df=pd.read_csv('https://www.example.com/data.csv', sep=';')
          

          除此之外,要從Web獲取數據,我們需要使用HTTP協議,特別是GET方法。并且requests 包做了這個令人難以置信的工作。要從requests.get收到的響應中訪問文本,我們只需要使用方法.text。

          import requests 
          r=requests.get('http://www.example.com/some_html_page') 
          print(r.text)
          

          r.text將為我們提供一個包含所有html標簽的網頁 - 不是很有用,不是嗎?我們有一個BeautifulSoup包,可以解析HTML并提取我們需要的信息,在本例中是所有超鏈接(繼續前面的例子):

          from bs4 import BeautifulSoup
          html_doc=r.text 
          # Create a BeautifulSoup object from the HTML 
          soup=BeautifulSoup(html_doc)
          # Find all 'a' tags (which define hyperlinks) 
          a_tags=soup.find_all('a') 
          # Print the URLs to the shell 
          for link in a_tags: 
           print(link.get('href'))
          

          API

          在計算機編程中,應用程序編程接口(API)是一組子例程定義,通信協議和用于構建軟件的工具。一般而言,它是一組明確定義的各種組件之間的通信方法。有許多不同的API,首先必須做的是檢查文檔,但事實是幾乎所有API都以JSON格式返回數據。requests 包將再次幫助我們。(我們必須發送HTTP GET請求以從API獲取數據)。

          import requests 
          r=requests.get('https://www.example.com/some_endpoint') 
          # Decode the JSON data into a dictionary: 
          json_data=r.json()
          # Print each key-value pair in json_data 
          for k in json_data.keys(): 
           print(k + ': ', json_data[k])
          

          我們可以看到,數據無處不在,我們必須知道獲取它的所有方法

          件介紹

          Matlab(矩陣實驗室)是全球領先的數學計算軟件開發商美國 MathWorks 公司研發的一款面向科學與工程計算的高級語言的商業數學軟件,集算法開發、數據分析、可視化和數值計算于一體的編程環境,其核心是仿真交互式矩陣計算,廣泛應用于科學計算、數據分析、算法開發和繪圖設計等科研領域應用環境。

          MATLAB 是一種面向科學與工程計算的高級語言,允許以數學形式的語言編寫程序,比BASIC、FORTRAN 和 C語言都要更加接近于我們書寫數學計算公式的思維方式。可以說,用MATLAB 編寫程序,就像是在草稿紙上排列公式和求解問題,因此對于理科生和科研人員來說,它編寫簡單,編程效率高,而且通俗易懂。

          MATLAB 是對代碼、文件和數據進行管理的開發環境;是按迭代的方式探查、設計及求解問題的交互式工具;可用于包括線性代數、統計、傅里葉分析、篩選、優化以及數值積分等的數學函數;可用于可視化數據的二維和三維圖形函數構建和設計;可用于基于MATLAB 的算法與外部應用程序和語言集成的各種函數。

          MATLAB核心競爭力之一的Simulink模塊化建模環境,是面向多域和嵌入式工程系統的仿真和基于模型的設計,可以用傻瓜式的拖動進行很多問題的建模,廣泛用于汽車、航空航天、通訊、電子、信號處理、工業自動化、視頻處理和圖像處理系統等領域的創新和開發。如果沒有Simulink,通信、控制、信號、車輛等專業的研究效率都會受到影響。哪怕不用Simulink,很多這方面的仿真軟件也只提供MATLAB接口。

          軟件截圖

          更新日志

          MATLAB幫助文檔 - MathWorks 中國

          https://ww2.mathworks.cn/help/releases/R2021a/matlab/getting-started-with-matlab.html

          MATLAB發行說明 - MathWorks 中國

          https://ww2.mathworks.cn/help/releases/R2021a/matlab/release-notes.html

          運行要求

          Windows 7 SP1 x64、Windows 10 1803 x64 或更高版

          硬件要求:16G內存 + 獨顯 + Inter酷睿(適合)、AMD銳龍

          2021年可以流暢跑Matlab的生產力兼游戲筆記本型號推薦:

          R/Y9000P,X ROG幻15/14, ThinkPad P17, X1 Carbon 美版

          其次:聯想小新Pro/Air Plus(辦公和生產力需求買帶獨顯版)

          效驗信息

          # 初始完整安裝包

          鏡像大小:19.2GB

          創建時間:Fri Sep 17 15:46:28 2021

          初始版本:R2021b v9.11.0.1769968

          鏡像名稱:Matlab911R2021b_Win64.iso

          SHA1: E28A6EEED0ED7918D32BDC0297E4932256DFDD36

          # 更新補丁安裝包

          鏡像大小:6.76GB

          創建時間:2022年2月8日, 17:00:00

          詳細版本:R2021b Update 3 v9.11.0.1873467

          鏡像名稱:Matlab911_R2021b_Update3Win.iso

          SHA1: 6078C9C554EC9D9128F5D0AA8009A9FAA3EB7875

          網盤:MATLAB R2021b Update3 - 清風小站 (qfwl.ltd)

          ATLAB的工作區有:基礎工作區( 'base' )和函數工作區('caller')。

          基礎工作區:用于存儲在命令行中創建的變量,或者存儲當前命令行或編輯器運行m腳本時腳本創建的變量。

          函數工作區:為保護數據的完整性,每個函數都有其自己的工作區,該工作區與基礎工作區和所有其他工作區分開。例如,假設 funA 調用 funB。funB 的調用方工作區就是 funA。

          如何在工作區之間共享變量或如何使它們在函數執行之間持久保留。

          大多數情況下,在函數內創建的變量是僅可在該函數內識別的局部變量。局部變量不能用在命令行中,也不適用于任何其他函數。但是,可以通過多種方式在函數或工作區之間共享數據。


          1.最佳做法:傳遞參量

          擴大函數變量作用域的最安全的方式是使用函數輸入和輸出參量,這樣可以傳遞變量的值。

          例如,創建兩個函數 update1 和 update2,它們共享和修改輸入值。update2 可以是文件 update1.m 中的局部函數,也可以是它自己的文件 update2.m 中的函數。

          示例程序1

          clc;%清除命令行窗口命令
          clear all;%清除工作區變量
          close all;%關閉圖形窗口
          X=[1:500];
          Y=update1(X);
          figure;
          scatter(X,Y,'filled');
          
          
          
          
          function y1=update1(x1)
             y1=1 + update2(x1);
          end
          function y2=update2(x2)
             y2=2 * cos(x2)+5*sin(x2);
          end

          運行結果


          2.嵌套函數

          嵌套函數可以訪問其所在的所有函數的工作區。所以,例如嵌套函數可以使用在其父函數中定義的變量(在本例中為 x):

          示例程序2

          function primaryFx
             x=1;
             fprintf("x1=%d\n",x);
             nestedFx;
             fprintf("x2=%d\n",x);
             function nestedFx
                x=x + 1;
                fprintf("x3=%d\n",x);
             end
          end

          運行結果

          >> primaryFx
          x1=1
          x3=2
          x2=2

          如果父函數不使用指定變量,變量保持為嵌套函數的局部變量。例如,在該版本的 primaryFx 中,以下兩個嵌套函數擁有它們自己的不能彼此交互的 x 版本。

          示例程序3

          function primaryFx1
          nestedFx1
          nestedFx2
              function nestedFx1
                  x=1;
                  fprintf("x1=%d\n",x);
              end
          
          
              function nestedFx2
                  x=2;
                  fprintf("x1=%d\n",x);
              end
          end

          運行結果

          >> primaryFx1
          x1=1
          x1=2
          >>

          3.持久變量

          如果將函數內的變量聲明為持久變量,則從一個函數調用轉到下個函數調用時變量會保留其值。其他局部變量僅在當前函數執行期間保留它們的值。持久變量等效于其他編程語言中的靜態變量。

          要使用 persistent 關鍵字聲明變量之后再使用它們。MATLAB將持久變量初始化為空矩陣[]。

          例如,在名為 findSum.m 的文件中定義一個函數,先將總和值初始化為 0,然后在每次迭代時與該值相加。

          示例程序4

          clc;%清除命令行窗口命令
          clear all;%清除工作區變量
          close all;%關閉圖形窗口
          for inputvalue=1:10
              findSum(inputvalue);
          end
          
          
          function findSum(inputvalue)
          persistent SUM_X
          if isempty(SUM_X)
             SUM_X=0;
          end
          SUM_X=SUM_X + inputvalue;
          SUM_X
          end

          運行結果

          
          
          SUM_X=55
          
          
          >>

          調用該函數時,SUM_X 的值在后續執行之間持久保留。

          以下操作可清除函數的持久變量:

          clear all
          clear functionname
          編輯函數文件

          要避免清除持久變量,請使用 mlock 鎖定函數文件。


          4.全局變量

          全局變量是可以從函數或命令行中訪問的變量。它們擁有自己的工作區,這些工作區與基礎和函數工作區分開。

          但是,全局變量具有顯著風險。例如:

          • 任何函數都可以訪問和更新全局變量。使用此類變量的其他函數可能返回意外結果。
          • 如果無意間提供與現有全局變量同名的“新”全局變量,一個函數可能覆蓋另一個函數預期的值。此類錯誤很難診斷。
          • 請盡可能謹慎使用全局變量。

          如果使用全局變量,請使用 global 關鍵字聲明它們,然后從任何特定位置(函數或命令行)訪問它們。例如,在名為 falling.m 的文件中創建一個函數。

          示例程序5

          clc;%清除命令行窗口命令
          clear all;%清除工作區變量
          global GRAVITY
          GRAVITY=32;
          y=falling((0:.1:5)')'
          
          
          function h=falling(t)
             global GRAVITY
             h=1/2*GRAVITY*t.^2;
          end

          運行結果

          
          
          y=列 1 至 11
          
          
                   0    0.1600    0.6400    1.4400    2.5600    4.0000    5.7600    7.8400   10.2400   12.9600   16.0000
          
          
            列 12 至 22
          
          
             19.3600   23.0400   27.0400   31.3600   36.0000   40.9600   46.2400   51.8400   57.7600   64.0000   70.5600
          
          
            列 23 至 33
          
          
             77.4400   84.6400   92.1600  100.0000  108.1600  116.6400  125.4400  134.5600  144.0000  153.7600  163.8400
          
          
            列 34 至 44
          
          
            174.2400  184.9600  196.0000  207.3600  219.0400  231.0400  243.3600  256.0000  268.9600  282.2400  295.8400
          
          
            列 45 至 51
          
          
            309.7600  324.0000  338.5600  353.4400  368.6400  384.1600  400.0000
          
          
          >>

          通過上述兩條全局語句,可以在函數內使用在命令提示符下賦值給 GRAVITY 的值。但是,更為穩健的做法是,重新定義函數以接該值作為輸入。


          5.在另一工作區中計算

          通過 evalin 和 assignin 函數,可以計算字符向量中的命令或變量名稱并指定是否使用當前或基礎工作區。和全局變量一樣,這些函數存在覆蓋現有數據的風險。

          assignin函數作用為指定工作區中的變量賦值
          evalin函數作用在指定的工作區中計算 MATLAB 表達式

          參考內容

          [1]https://ww2.mathworks.cn/help/matlab/scope-variables-and-generate-names.html?s_tid=CRUX_lftnav

          [2] https://ww2.mathworks.cn/help/matlab/matlab_prog/share-data-between-workspaces.html

          [3] https://ww2.mathworks.cn/help/matlab/ref/evalin.html

          [4]https://ww2.mathworks.cn/help/matlab/ref/assignin.html?searchHighlight=assignin&s_tid=srchtitle_support_results_1_assignin

          本文內容來源于網絡,僅供參考學習,如內容、圖片有任何版權問題,請聯系處理,24小時內刪除。


          作 者 | 郭志龍

          編 輯 | 郭志龍
          校 對 | 郭志龍


          主站蜘蛛池模板: 精品无码中出一区二区| 99精品国产一区二区三区| 久久人妻无码一区二区 | 亚洲一区无码中文字幕| 无码人妻一区二区三区一| 亚洲一区二区三区夜色| 国产精品一区二区不卡| 精品一区二区三区在线视频| 日韩一区二区免费视频| 不卡无码人妻一区三区音频| 亚洲Av永久无码精品一区二区| 少妇人妻精品一区二区三区| 国产剧情国产精品一区| 精品不卡一区中文字幕| 国内精品一区二区三区在线观看 | 无码日韩人妻AV一区二区三区| 亚洲日本一区二区三区在线不卡| 国产亚洲日韩一区二区三区| 精品无码一区二区三区爱欲 | eeuss鲁片一区二区三区| 国产视频一区二区在线观看| 国产爆乳无码一区二区麻豆| 性色AV一区二区三区无码| 国产精品无码AV一区二区三区| 中文精品一区二区三区四区| 精品亚洲综合在线第一区| 国产一区二区精品尤物| 狠狠做深爱婷婷久久综合一区| 少妇无码AV无码一区| 五十路熟女人妻一区二区| 亚洲日韩AV一区二区三区四区| 久久久久久一区国产精品| 亚洲一区二区三区在线观看网站| 一区二区三区国产| 一区二区免费在线观看| 成人精品一区二区三区电影| 国产精品高清一区二区三区| 亚洲国产视频一区| 无码av免费一区二区三区| 一区二区三区四区精品| 美女视频一区二区三区|