導航:首頁 > 編程語言 > hdf5數據結構python

hdf5數據結構python

發布時間:2022-05-08 00:37:54

Ⅰ 選股策略回測用 Matlab 好還是用 python

首先十年的日級別數據量的確不大,使用Python來說的話不應該出現memoryerror,應該是在編程方面需要再多留意,我們在Ricequant上使用的分鍾數據大概是200-300個GB左右,也是Python和Java共同合作完成的。

語言只是一個語言,興許會有各種語法的不同,但是在談語言的時候我們需要了解背後的工具箱和社區,以及它為什麼處理一些事情比另外的一些語言要好。


身Python初期用來做金融回測等是應該被放棄的,用來開發策略也應該是被放棄的,因為相比matlab的矩陣運算來做開發,實在是太方便了。只不過後
來Python推出了series、pandas等一系列的強悍library,pandas的語法基本在「無恥」地模仿matlab和R,而
pandas的開發者正是美國大名鼎鼎的對沖AQR,因此使data
crunching和對數據的一些操作大大便利,此外,又包裝了海量的開源社區的數學和科學計算庫,也能處理各種的machin
learning等等的問題。

從科學計算的語言的發展來看,從最初的人們對浮點數計算的需求加入了fortran,再一路進行,讓工具更加的讓科學計算容易再容易(Python也封裝了大量早期的數學家們用fortran寫的數學計算基礎庫,這些經歷了幾十年的考驗、加速等等):

我們來看下python目前的科學技術棧:

numpy: basic array manipulation - 基礎的數組處理
scipy: scientific computing in python, including signal processing and optimization - 科學計算,包括信號處理和優化等
matplotlib: visualization and plotting - 幾行代碼就可以做圖形化顯示了
IPython: write and run python code interactively in a shell or a notebook - 互動式編程環境,這是能將來替代掉matlab的一個必備,即在一行一行代碼的輸入、顯示過程中學習、改進
pandas: data manipulation - 最重要的矩陣運算等
scikit-learn: machine learning - 機器學習


是隨著以後的發展Python的開源屬性就會體現的越來越強大,可以讓更多的人享受到其便利和貢獻進來,包括Quantopian也放出了zipline
的python回測框架,只需要引入yahoo數據即可進行回測,並且Python的速度由於跟C的很好的結合可以達到非常快的速度,而且可以將來和其他
系統很容易整合對接實盤交易介面。

由於歐美已經有很多的投行和對沖在往Python的技術棧靠攏,因此選擇了Python即掌握了一門重要的工具,並且無需跟一家私有化公司進行捆綁。

當然,最後的最後,所有的python回測你都可以來Ricequant - Beta上完成,我們支持海量的市場、財務數據,還有不斷加入的和大數據公司合作的輿情數據等等,同時策略回測完還可以做實時模擬交易,享受到實時數據的計算。在雲平台上已經支持了幾乎所有的Python科學計算庫,無需花時間安裝、測試等等。

Ⅱ python pandas怎麼輸出結果

本文是對pandas官方網站上《10 Minutes to pandas》的一個簡單的翻譯,原文在這里。這篇文章是對pandas的一個簡單的介紹,詳細的介紹請參考:Cookbook 。習慣上,我們會按下面格式引入所需要的包:

一、 創建對象
可以通過 Data Structure Intro Setion 來查看有關該節內容的詳細信息。
1、可以通過傳遞一個list對象來創建一個Series,pandas會默認創建整型索引:

2、通過傳遞一個numpy array,時間索引以及列標簽來創建一個DataFrame:

3、通過傳遞一個能夠被轉換成類似序列結構的字典對象來創建一個DataFrame:

4、查看不同列的數據類型:

5、如果你使用的是IPython,使用Tab自動補全功能會自動識別所有的屬性以及自定義的列,下圖中是所有能夠被自動識別的屬性的一個子集:

二、 查看數據
詳情請參閱:Basics Section

1、 查看frame中頭部和尾部的行:

2、 顯示索引、列和底層的numpy數據:

3、 describe()函數對於數據的快速統計匯總:

4、 對數據的轉置:

5、 按軸進行排序

6、 按值進行排序

三、 選擇
雖然標準的Python/Numpy的選擇和設置表達式都能夠直接派上用場,但是作為工程使用的代碼,我們推薦使用經過優化的pandas數據訪問方式: .at, .iat, .loc, .iloc 和 .ix詳情請參閱Indexing and Selecing Data 和 MultiIndex / Advanced Indexing。
l 獲取
1、 選擇一個單獨的列,這將會返回一個Series,等同於df.A:

2、 通過[]進行選擇,這將會對行進行切片

l 通過標簽選擇
1、 使用標簽來獲取一個交叉的區域

2、 通過標簽來在多個軸上進行選擇

3、 標簽切片

4、 對於返回的對象進行維度縮減

5、 獲取一個標量

6、 快速訪問一個標量(與上一個方法等價)

l 通過位置選擇
1、 通過傳遞數值進行位置選擇(選擇的是行)

2、 通過數值進行切片,與numpy/python中的情況類似

3、 通過指定一個位置的列表,與numpy/python中的情況類似

4、 對行進行切片

5、 對列進行切片

6、 獲取特定的值

l 布爾索引
1、 使用一個單獨列的值來選擇數據:

2、 使用where操作來選擇數據:

3、 使用isin()方法來過濾:

l 設置
1、 設置一個新的列:

2、 通過標簽設置新的值:

3、 通過位置設置新的值:

4、 通過一個numpy數組設置一組新值:

上述操作結果如下:

5、 通過where操作來設置新的值:

四、 缺失值處理
在pandas中,使用np.nan來代替缺失值,這些值將默認不會包含在計算中,詳情請參閱:Missing Data Section。
1、 reindex()方法可以對指定軸上的索引進行改變/增加/刪除操作,這將返回原始數據的一個拷貝:、

2、 去掉包含缺失值的行:

3、 對缺失值進行填充:

4、 對數據進行布爾填充:

五、 相關操作
詳情請參與 Basic Section On Binary Ops
統計(相關操作通常情況下不包括缺失值)
1、 執行描述性統計:

2、 在其他軸上進行相同的操作:

3、 對於擁有不同維度,需要對齊的對象進行操作。Pandas會自動的沿著指定的維度進行廣播:

Apply
1、 對數據應用函數:

直方圖
具體請參照:Histogramming and Discretization

字元串方法
Series對象在其str屬性中配備了一組字元串處理方法,可以很容易的應用到數組中的每個元素,如下段代碼所示。更多詳情請參考:Vectorized String Methods.

六、 合並
Pandas提供了大量的方法能夠輕松的對Series,DataFrame和Panel對象進行各種符合各種邏輯關系的合並操作。具體請參閱:Merging section
Concat

Join 類似於SQL類型的合並,具體請參閱:Database style joining

Append 將一行連接到一個DataFrame上,具體請參閱Appending:

七、 分組
對於」group by」操作,我們通常是指以下一個或多個操作步驟:
(Splitting)按照一些規則將數據分為不同的組;
(Applying)對於每組數據分別執行一個函數;
(Combining)將結果組合到一個數據結構中;
詳情請參閱:Grouping section

1、 分組並對每個分組執行sum函數:

2、 通過多個列進行分組形成一個層次索引,然後執行函數:

八、 Reshaping
詳情請參閱 Hierarchical Indexing 和 Reshaping。
Stack

數據透視表,詳情請參閱:Pivot Tables.

可以從這個數據中輕松的生成數據透視表:

九、 時間序列
Pandas在對頻率轉換進行重新采樣時擁有簡單、強大且高效的功能(如將按秒采樣的數據轉換為按5分鍾為單位進行采樣的數據)。這種操作在金融領域非常常見。具體參考:Time Series section。

1、 時區表示:

2、 時區轉換:

3、 時間跨度轉換:

4、 時期和時間戳之間的轉換使得可以使用一些方便的算術函數。

十、 Categorical
從0.15版本開始,pandas可以在DataFrame中支持Categorical類型的數據,詳細 介紹參看:categorical introction和API documentation。

1、 將原始的grade轉換為Categorical數據類型:

2、 將Categorical類型數據重命名為更有意義的名稱:

3、 對類別進行重新排序,增加缺失的類別:

4、 排序是按照Categorical的順序進行的而不是按照字典順序進行:

5、 對Categorical列進行排序時存在空的類別:

十一、 畫圖
具體文檔參看:Plotting docs

對於DataFrame來說,plot是一種將所有列及其標簽進行繪制的簡便方法:

十二、 導入和保存數據
CSV,參考:Writing to a csv file
1、 寫入csv文件:

2、 從csv文件中讀取:

HDF5,參考:HDFStores
1、 寫入HDF5存儲:

2、 從HDF5存儲中讀取:

Excel,參考:MS Excel
1、 寫入excel文件:

2、 從excel文件中讀取:

來自為知筆記(Wiz)

Ⅲ python怎樣讀取hdf5文件

http://www.open-open.com/doc/view/

linux caffe支持的cuda capability 最小是多少

由於最近安裝了Ubuntu16.04,苦於之前配置Caffe的教程都在版本14.04左右,無奈只能自己摸索,最終配置成功。本文教程的特點是不需要降級gcc的版本,畢竟cuda7.5不支持gcc5以上(默認不支持,實際支持),避免出現一系列亂七八糟的問題,反正之前我是碰到了。
本文是在參考caffe官網教程(http://caffe.berkeleyvision.org/installation.html)結合自己總結經驗而來,對此表示感謝。

1.所需文件下載
1.1.Ubuntu16.04在官網下載(http://www.ubuntu.org.cn/download/desktop),然後在windows下用UltraISO製作,相關文章搜索有一大片,此處不再贅述。
1.2.cuda7.5下載,下載的版本是ubuntu15.04的run文件,個人感覺比較方便。
1.3.cudnn4.0下載(https://developer.nvidia.com/cudnn),進去之後如果有注冊過nvidia的賬戶直接點擊download,否則需要注冊一個賬戶,注冊完之後有一個調查,隨便選幾個鉤就可以,然後下一步是接受條款開始就可以下載了。
1.4.caffe下載(https://github.com/BVLC/caffe)就在官方的github下載就可以了。

2.顯卡驅動安裝
2.1.第一種方法是直接在ubuntu系統設置,軟體和更新裡面,選擇中國的伺服器源刷新之後,點擊附加驅動選項,在Nvidia Corporation選擇361.42(強迫症必須安裝最新的),然後點擊應用更改,下載安裝完之後重啟。
2.2.第二種方法是去官方下載(http://www.geforce.cn/drivers)好驅動的run文件,選擇對應顯卡型號下載。然後關機把顯示器插到集成顯卡介面上,或者終端下
sudo gedit /etc/modprobe.d/blacklist.conf
輸入密碼後在最後一行編輯上
blacklist nouveau
Ctrl +C保存後終端輸入
sudo update-initramfs -u
重啟之後在界面按Ctrl+Alt+F2,輸入root以及密碼,然後
service lightdm stop
sh 你自己的驅動文件的完整路徑,默認選項就可以安裝了,安裝後重啟

3.Cuda7.5安裝
3.1.以文件名為cuda.run為例,終端下輸入
sh cuda.run --override 啟動安裝程序,此處有大量的條款,一路空格到最後 輸入accept,依次輸入y回車,然後n(不安裝顯卡驅動),然後一路y回車,有一個地方需要輸入密碼,還有兩個地方確認安裝路徑,直接回車即可,完成安裝,默認安裝路徑是/usr/local
將下載下來的cudnn-7.0-linux-x64-v4.0-prod.tgz 解壓之後,解壓後的cuda文件夾先打開裡面的include文件夾,空白右鍵在終端打開輸入:
sudo cp cudnn.h /usr/local/cuda/include/
cd ~/cuda/lib64
sudo cp lib* /usr/local/cuda/lib64/
繼續更新文件鏈接
cd /usr/local/cuda/lib64/
sudo rm -rf libcudnn.so libcudnn.so.4
sudo ln -s libcudnn.so.4.0.7 libcudnn.so.4
sudo ln -s libcudnn.so.4 libcudnn.so
然後設置環境變數
sudo gedit /etc/profile
在末尾加入
PATH=/usr/local/cuda/bin:$PATH
export PATH
保存之後創建鏈接文件
sudo vim /etc/ld.so.conf.d/cuda.conf
鍵盤按i進入編輯狀態,添加文字
/usr/local/cuda/lib64
然後按esc,輸入:wq保存退出。
終端下接著輸入
sudo ldconfig 使鏈接生效

4.生成Cuda Sample測試
首先在此之前先把需要的依賴包都安裝好,為接下來make caffe做准備
sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compiler
sudo apt-get install --no-install-recommends libboost-all-dev
sudo apt-get install libatlas-base-dev
sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev
然後開始make samples ,終端下
cd /home/gomee/NVIDIA_CUDA-7.5_Samples
sudo make all -j4
我是4核電腦所以用了j4,正常情況下肯定會報錯「unsupported GNU version! gcc versions later than 4.9 are not supported!」,原因就是這個cuda不支持gcc5.0以上,終端運行
cd /usr/local/cuda-7.5/include
cp host_config.h host_config.h.bak
sudo gedit host_config.h
Ctrl+F尋找有」4.9」的地方,應該是只有一處,在其上方的
#if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ > 9)將兩個4改成5,保存退出,繼續
cd /home/gomee/NVIDIA_CUDA-7.5_Samples
sudo make all -j4
這就應該開始make了,此處大約有5、6分鍾。完成之後
cd /home/gomee/NVIDIA_CUDA-7.5_Samples/bin/x86_64/linux
./deviceQuery
會出現類似以下的信息
CUDA Device Query (Runtime API) version (CUDART static linking)
Detected 1 CUDA Capable device(s)
Device 0: "GeForce GTX 750 Ti"
CUDA Driver Version / Runtime Version 8.0 / 7.5
CUDA Capability Major/Minor version number: 5.0
Total amount of global memory: 2047 MBytes (2146762752 bytes)
( 5) Multiprocessors, (128) CUDA Cores/MP: 640 CUDA Cores
GPU Max Clock rate: 1228 MHz (1.23 GHz)
Memory Clock rate: 3004 Mhz
Memory Bus Width: 128-bit
L2 Cache Size: 2097152 bytes
Maximum Texture Dimension Size (x,y,z) 1D=(65536), 2D=(65536, 65536), 3D=(4096, 4096, 4096)
Maximum Layered 1D Texture Size, (num) layers 1D=(16384), 2048 layers
Maximum Layered 2D Texture Size, (num) layers 2D=(16384, 16384), 2048 layers
Total amount of constant memory: 65536 bytes
Total amount of shared memory per block: 49152 bytes
Total number of registers available per block: 65536
Warp size: 32
Maximum number of threads per multiprocessor: 2048
Maximum number of threads per block: 1024
Max dimension size of a thread block (x,y,z): (1024, 1024, 64)
Max dimension size of a grid size (x,y,z): (2147483647, 65535, 65535)
Maximum memory pitch: 2147483647 bytes
Texture alignment: 512 bytes
Concurrent and kernel execution: Yes with 1 engine(s)
Run time limit on kernels: Yes
Integrated GPU sharing Host Memory: No
Support host page-locked memory mapping: Yes
Alignment requirement for Surfaces: Yes
Device has ECC support: Disabled
Device supports Unified Addressing (UVA): Yes
Device PCI Domain ID / Bus ID / location ID: 0 / 1 / 0
Compute Mode:
< Default (multiple host threads can use ::cudaSetDevice() with device simultaneously) >
deviceQuery, CUDA Driver = CUDART, CUDA Driver Version = 8.0, CUDA Runtime Version = 7.5, NumDevs = 1, Device0 = GeForce GTX 750 Ti
Result = PASS
這就說明成功了。

5.Python配置
將之前github下載的caffe壓縮文件解壓縮到任一目錄,然後安裝python
python的版本安裝有兩種方式:
第一是直接安裝anaconda,去官網下載 ,選擇linux 64bit 2.7版本下載安裝,anaconda安裝方便但是需要在最後的make配置文件中更改python包含路徑。
第二種方法就是使用原生的python2.7版本,終端下
sudo apt-get install python-pip 安裝pip
這里我們用pip安裝一些python需要的依賴包,不過為了避免各種問題,也可以通過apt-get安裝,反正我這兩種方式都安裝了一遍(-.-)
sudo apt-get install python-numpy python-scipy python-matplotlib ipython ipython-notebook python-pandas python-sympy python-nose
以caffe默認解壓到/home/user(你的用戶名)/ ,文件夾名名稱caffe為例
cd /home/user/caffe/python
sudo su
for req in $(cat requirements.txt); do pip install $req; done
這里用pip安裝可能速度很慢,很可能下載好幾個小時,推薦用清華大學的pip源臨時安裝,所以命令改為如下:
for req in $(cat requirements.txt); do pip install -i https://pypi.tuna.tsinghua.e.cn/simple $req; done
這里如果第一次有很多紅字錯誤,建議再運行幾遍指導安裝成功,對於黃字提示無需理會,可能是pip版本需要更新。

6.Caffe編譯過程
接下來要進入最後的步驟了,終端中
cd /home/user/caffe
cp Makefile.config.example Makefile.config
gedit Makefile.config
將USE_CUDNN := 1 取消注釋,在
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include後面打上一個空格 然後添加/usr/include/hdf5/serial 如果沒有這一句可能會報一個找不到hdf5.h的錯誤
PYTHON_INCLUDE := /usr/include/python2.7 \
/usr/lib/python2.7/dist-packages/numpy/core/include先不做更改。
如果是需要生成matlab的caffe wrapper 請取消注釋MATLAB_DIR然後替換為自己的目錄
說一下提前會出現的問題:
第一,make過程中出現比如 string.h 『memcy』 was not declared in this scope的錯誤是由於gcc編譯器版本太新,解決方法是打開makefile搜索並替換
NVCCFLAGS += -ccbin=$(CXX) -Xcompiler -fPIC $(COMMON_FLAGS)

NVCCFLAGS += -D_FORCE_INLINES -ccbin=$(CXX) -Xcompiler -fPIC $(COMMON_FLAGS)
保存退出
第二,在make過程中還會報一個ld找不到libhdf5 和libhdf5_hl的鏈接問題,這個原因可能也是因為hdf5的問題,首先看/usr/lib/x86_64-linux-gnu 目錄下有沒有libhdf5.so和libhdf5_hl.so,如果有的話,查看屬性是否有正確的鏈接(正常情況下應該是沒有這兩個文件),然後右鍵在終端中打開
sudo ln libhdf5_serial.so.10.1.0 libhdf5.so
sudo ln libhdf5_serial_hl.so.10.0.2 libhdf5_hl.so
注意,10.1.0和10.0.2可能不同電腦安裝版本不同,注意看當前目錄下存在的文件然後
sudo ldconfig 生效
接下來就是直接編譯的過程
cd /home/user/caffe
make all -j4
make test -j4
make runtest
make pycaffe
make matcaffe
如果編譯沒報錯正常的話,基本就沒問題了。測試python打開
cd /home/user/caffe/python
python
import caffe
如果不報錯就說明編譯成功
測試matlab打開./caffe/matlab/+caffe/private,看有沒有生成一個caffe的mex文件,可以運行+test文件夾裡面的程序測試。
小問題:
在使用python介面的時候,可能會報一個什麼錯誤(我給忘記了–!),對了是』Mean shape incompatible with input shape.』的錯誤,處理方法是python/caffe文件夾,編輯io.py文件,將
if ms != self.inputs[in_][1:]:
raise ValueError('Mean shape incompatible with input shape.')
替換為
if ms != self.inputs[in_][1:]:
print(self.inputs[in_])
in_shape = self.inputs[in_][1:]
m_min, m_max = mean.min(), mean.max()
normal_mean = (mean - m_min) / (m_max - m_min)
mean = resize_image(normal_mean.transpose((1,2,0)),in_shape[1:]).transpose((2,0,1)) * (m_max - m_min) + m_min
然後make clean再重新make

7.總結
至此,Ubuntu16.04下編譯Caffe的教程就結束了,作者歷時三天,裝了好幾遍系統,剛開始用Ubuntu14.04,結果系統出現問題,強迫症實在受不了,就嘗試著裝16.04繼續折騰,最終折騰成功。以後可能會更新python3下的編譯教程,需要自己編譯boost版本,總之也很麻煩。

Ⅳ Quant 應該學習哪些 Python 知識

1. 如果還需要Deep Learning方面的東西的話,可以考慮Theano或者Keras。這兩個東西可能會用在分析新聞數據方面。不過不是很推薦使用這類方法去做量化模型,因為計算量實在是太大,成本很高。
2. 交易框架方面,除了vn.py,還推薦PyAlgoTrade框架,github上可以搜到。私以為這個框架比vn.py牛逼太多了,畢竟是一個在金融IT領域混跡近20年的老妖的作品,架構設計不是一般的優秀。
3. 國內的話,ricequant是個不錯的選擇,雖然使用的是Java,但是團隊我見過,都是做金融IT出身的,基本上都有7、8年以上經驗,底層功底非常扎實,做事情都很靠譜。現在他們也在考慮把SDK擴展到Python這邊。
4. 國內的行情和交易介面,使用的是自己的協議(比如CTP介面使用的是FTD協議),而不是國際上廣泛使用的FIX協議,並且都不開源。如果需要連接行情,還需要考慮將介面SDK為python封裝一下。(修改:評論中有人提到很多券商也開放了FIX介面,不過似乎是在內網使用)
5. 有人談到資料庫了,這里我也說一下,對於高頻tick級別的數據,其量級可以達到每天TB級別,普通的關系資料庫是扛不住的。如果試圖使用傳統的關系資料庫,比如Oracle之類的可以省省了。對付這種級別的數據,採用文件系統+內存索引會更好。不過這種場景,一般也就是機構裡面能碰到了,個人quant可以不用考慮。

Ⅵ hdf5 python 怎麼壓縮節省硬碟

python安裝第三方模塊有多種方法: 直接下載安裝包安裝,解壓後,進入目錄,直接python setup.py install 使用包管理器pip安裝, 直接pip install 包名 如果解決了您的問題請採納! 如果未解決請繼續追問!

Ⅶ 如何用numpy提取HDF5數據

我覺得你盡量分解開來:
1 hdf5文件的讀取,這個當然是用python的hdf庫比如ls說的h5py ,讀成你需要的格式或類型,比如numpy的矩陣類型;

2 從numpy的角度考慮將矩陣數據繪制出圖!

Ⅷ 第1章 為什麼將Python用於金融

python是一門高級的編程語言,廣泛應用在各種領域之中,同時也是人工智慧領域首選的語言。
為什麼將python用於金融?因為Python的語法很容易實現金融演算法和數學計算,可以將數學語句轉化成python代碼,沒有任何語言能像Python這樣適用於數學。

閱讀全文

與hdf5數據結構python相關的資料

熱點內容
安卓機內存刪除怎麼恢復 瀏覽:329
Qt環境的編譯軟體放到linux 瀏覽:212
聯創列印系統怎麼連接伺服器 瀏覽:935
杭州行政命令 瀏覽:160
如何查找伺服器日誌 瀏覽:801
加密的鑰匙扣怎麼寫 瀏覽:579
文件夾更新不了怎麼辦 瀏覽:475
壓縮機指示燈亮是什麼原因 瀏覽:956
什麼app訂酒店半價 瀏覽:765
中老年解壓神器 瀏覽:243
訊飛語音ttsandroid 瀏覽:468
腰椎壓縮性骨折術後能坐車嗎 瀏覽:507
python類裝飾器參數 瀏覽:347
均線pdf微盤 瀏覽:791
女生喜歡玩的解壓游戲 瀏覽:442
支付寶暗號加密操作 瀏覽:134
柯潔在哪個app下圍棋 瀏覽:751
平板用什麼app看內在美 瀏覽:609
cad計算機命令 瀏覽:173
郵箱設置域名伺服器錯誤什麼意思 瀏覽:671