1. 程式人生 > >pandas筆記1 --pandas處理mat表格檔案

pandas筆記1 --pandas處理mat表格檔案

關於Python處理.mat表格檔案

參考:
讀入mat:
http://www.cnblogs.com/cymwill/p/8331002.html
dataframe常見操作:
https://blog.csdn.net/xtfge0915/article/details/52938740

我們做實驗時,生成的資料可能是matlab生成的mat表格檔案,而我們用Python做機器學習處理時候,往往需要的是DataFrame檔案,因為這樣方便做特徵標記與區分。

方法1:將mat轉為csv,再做處理

其實最簡單的就是直接在電腦上新建一個csv檔案,把mat表格的全選複製貼上過來,再人為加上一行標籤就可以了。那樣就得到了一個我們想要的csv檔案。
有了csv檔案,那樣我們只需要:

import pandas as pd
data = pd.read_csv(r'xxx.csv')#生成的就是DataFrame檔案
print("資料的前5行:",data.head())#前五行
print("資料的形狀大小:",data.shape)
X = data[[
         "td","newtd"
         ]]
print("X相關:",X.head(),X.shape)
y = data[['y']]#y是第一行的標籤,你自己新增的
print("y相關:",y.head(),y.shape)
X_train, X_test, y_train, y_test =
train_test_split(X, y, random_state=0,test_size=0.2)#隨機劃分訓練集,測試集 print(X_train.shape,y_train.shape,X_test.shape,y_test.shape)

輸出:

資料的前5行:    load1  load2  load3    ...       new2_1        new1_2    new1_1
0      5      3      1    ...     4.609870  3.480000e-19  0.000024
1      5      1      5    ...     4.632195
2.300000e-19 0.000022 2 1 1 5 ... 4.644054 1.850000e-19 0.000021 3 5 3 3 ... 4.649179 1.680000e-19 0.000020 4 3 5 3 ... 4.629969 2.400000e-19 0.000022 [5 rows x 56 columns] 資料的形狀大小: (2998, 56) X相關: td newtd 0 2.570000e-09 -19.779360 1 2.090000e-09 -19.986102 2 2.230000e-09 -19.921264 3 2.320000e-09 -19.881699 4 2.230000e-09 -19.921264 (2998, 2) y相關: y 0 3.160000e-09 1 2.570000e-09 2 2.660000e-09 3 2.730000e-09 4 2.720000e-09 (2998, 1) (2398, 2) (2398, 1) (600, 2) (600, 1)

接下來我們愉快的運用模型預測就好了!

方法2:將mat直接轉為dataframe,在上面直接新增標籤(推薦)

由於這些程式碼都是在實驗室伺服器上執行的,就不貼出來結果了。

from scipy.io import loadmat#用於載入mat檔案
data_m= loadmat("xxx.mat")#mat-->dict字典。
print(data_m.keys())#其中有很多key,注意找自己資料所在的那個
data_load = data_m["ML_load"]#我需要的是這個,這是一個2998*10的矩陣
data_load = pd.DataFrame(data_load,columns=("load1","load2","load3","load4","load5","load6","load7","load8","load9","load10",))#給每列加上一個名字或者叫特徵名,此時data_load就是一個dataframe型別了。
print(data_load.head())#列印該df的前五行
print(data_load.shape)

後面會更新dataframe合併的文章,因為我們可能特徵是在多個mat表格裡的。