matlab和python同時處理一批資料,matlab可以生成很實用的mat檔案,python可以進一步處理分析,並畫出漂亮的資料圖。
本人用matlab生成多個mat檔案,每個mat檔案中又包含struct欄位,
需要讀取每個struct中的每乙個資料,並分別在不同的資料夾下儲存為csv,資料如下圖
生成的csv分別儲存在不同的資料夾下
**如下(示例):
import pandas as pd
import scipy.io as sio
import os
import re
import numpy as np
if __name__ ==
'__main__'
: filenames_in =
'e://...//mat//num_day' # 輸入檔案的檔案位址(自行調整)
# filenames_out = 'e://program
//mat//num_day1' # 新檔案的位址(如果在這裡讀取儲存位址,會只有乙個位址,只顯示最後一次處理的資料,親測)
pathdir = os.
listdir
(filenames_in)
for alldir in pathdir:
child = re.
findall
(r"(.+?).mat"
, alldir) # 正則的方式讀取檔名,去副檔名
iflen(child)
>=
0: # 去掉沒用的系統檔案
newfile =
'' needdate = child #### 這個就是所要的檔名
domain1 = os.path.
abspath
(filenames_in) # 待處理檔案位置
info = os.path.
join
(domain1, alldir) # 拼接出待處理檔案名字
out = needdate # 獲取迴圈儲存的新資料夾名,這裡是讀到的是第乙個mat檔名,也就是希望儲存的資料夾名
filenames_out =
'e://...//mat//'
+ out[
0] #新資料夾位址=主目錄+最後乙個新資料夾名(e://
...//mat//num_day1)
mat = sio.
loadmat
(info) # 讀取第乙個mat檔案
num = mat[
'num'
] # 讀取struct
for i in range(24
):print
(info,
"開始處理"
) name =
'hour'
+str
(i+1
) domain2 = os.path.
abspath
(filenames_out) # 處理完檔案儲存位址
outfo = os.path.
join
(domain2, name +
'.csv'
) # 拼接出新檔案名字
# 在此先拼接出新的檔名,否則下條語句會重置name值
name = num[
0, i]
# result = pd.dataframe(name["result"], index=none, header=none)
# result = pd.dataframe(name["result"], index=false)
# result = pd.dataframe(name["result"], index=0)
# result = pd.dataframe(name["result"], index_col=0)
# 以上四條是想在讀取結果的時候就儲存成沒有行列索引的dataframe,均失敗
result = pd.
dataframe
(name[
"result"
]) # 「result」matlab中的結果字段,請自行根據mat檔案更改
# domain2 = os.path.abspath(filenames_out) # 處理完檔案儲存位址
# outfo = os.path.join(domain2, name+'.csv') # 拼接出新檔案名字
# 不能在此出現儲存位址
result.
to_csv
(outfo, header=none, index=none, encoding=
'utf-8'
) # 儲存檔案時沒有行列索引(注:不能存在同名檔案,最好空資料夾可執行)
# result.to_csv(outfo, header=false, index=false, encoding='utf-8')
# result.to_csv(outfo, index_col='unnamed: 0', encoding='utf-8')
# result.to_csv(outfo, index_col=0, encoding='utf-8')
# result.to_csv(outfo, encoding='utf-8') # 如無索引需求,可執行此句
print
(info,
"處理完"
)print
('*****'
) # 第乙個mat處理完成,跳出本迴圈,處理第二個mat檔案
本篇是在上篇 python批量處理csv檔案(篩選列)基礎上的改良,不僅可以迴圈處理檔案,還迴圈儲存在新的不同的資料夾。
本文的資料夾均是提前建立好的,並沒有檢測和自動建立功能,生成的csv也沒有檢測和覆蓋功能,故需新的空資料夾(可以包含非同名csv檔案)。
簡單的**解決簡單問題。
每天進步一點點!!!
python 批量檔案名字漢字轉拼音
coding utf8 import os import pypinyin from pypinyin import pinyin,lazy pinyin def rename path u c users er desktop hanzi2pinyin filelist os.listdir pa...
Python為文件批量注音(生僻字歌詞為例)
抖音配樂 生僻字 python的拼音模組 python的模組庫api,每次進去習慣第一動作,就是右鍵翻譯為中文。好羞愧,個人太愛國了,所以一直排斥學英語,好不要臉的藉口.可python的拼音模組不需要這麼做,因為涉及拼音等模組肯定和中文有關係,文件自然是中文的嘍。那麼python的拼音模組是什麼?p...
如何用python按照txt序列號批量轉移檔案?
組隊參加乙個深度學習比賽,隊友把資料已經隨機分好,為了與隊友保持資料上的一致,我需要寫乙個python指令碼,將20g的雷射點雲資料的訓練集按要求劃分。三個資料夾,分別是標定 標籤 點雲,均有6000個,每個檔名稱就是編號。提取為驗證集的編號,是乙個txt檔案,每一行存放乙個編號 shutil.mo...