小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

用Python導入數(shù)據(jù)方法匯總

 靜幻堂 2018-09-14
原創(chuàng) 不靠譜的貓 2018-09-13 16:20:00
用Python導入數(shù)據(jù)方法匯總

Python可以使用各種各樣的文件作為數(shù)據(jù)源:

  • 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數(shù)據(jù)。返回的數(shù)組是一個記錄數(shù)組(如果usemask = False)或masked記錄數(shù)組(如果usemask = True)。Python示例代碼:

data = np.recfromcsv(file)

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

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

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

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

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

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

Pickle

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

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

Excel

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

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

SAS和Stata

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

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

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

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

HDF5

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

  • Datasets,是同構(gòu)類型的多維數(shù)組
  • Groups,它是可以容納數(shù)據(jù)集和其他組的容器結(jié)構(gòu)

這就產(chǎn)生了一種真正的層次化、文件系統(tǒng)式的數(shù)據(jù)格式。實際上,HDF5文件中的資源甚至可以使用類似/ path / to / resource訪問HDF5文件中的資源。元數(shù)據(jù)以用戶定義的、附加到Groups和Datasets的命名屬性的形式存儲。然后,可以使用數(shù)據(jù)集、組和屬性構(gòu)建表示圖像和表的更復雜的存儲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并將數(shù)據(jù)存儲在.mat文件中。那些文件是什么?這些文件包含在MATLAB工作空間中分配給它們的變量和對象列表。將它作為字典導入Python并不奇怪,其中鍵是MATLAB變量和值 - 分配給這些變量的對象。要編寫和讀取MATLAB文件,請使用scipy.io包。

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

關(guān)系數(shù)據(jù)庫

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

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的數(shù)據(jù)

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

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

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

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

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

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)是一組子例程定義,通信協(xié)議和用于構(gòu)建軟件的工具。一般而言,它是一組明確定義的各種組件之間的通信方法。有許多不同的API,首先必須做的是檢查文檔,但事實是幾乎所有API都以JSON格式返回數(shù)據(jù)。requests 包將再次幫助我們。(我們必須發(fā)送HTTP GET請求以從API獲取數(shù)據(jù))。

import requests 
r = requests.get('https://www./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])

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

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多