用python实现读取csv数据,并每50行保存第三、四、五、六、七列为一个mat文件
时间: 2024-01-26 19:04:31 浏览: 35
import pandas as pd
import numpy as np
import scipy.io as sio
# 读取csv文件
df = pd.read_csv('data.csv')
# 每50行保存为一个mat文件
for i in range(0, len(df), 50):
data = df.iloc[i:i+50, 2:7].values
filename = 'data_'+str(i//50)+'.mat'
sio.savemat(filename, {'data': data})
相关问题
用python实现读取csv数,并每50行保存为一个mat文件
下面是一个实现读取csv并每50行保存为一个mat文件的Python脚本:
```python
import csv
import numpy as np
from scipy.io import savemat
# 读取csv文件
with open('data.csv', 'r') as f:
reader = csv.reader(f)
# 跳过表头
next(reader)
# 初始化mat文件计数器
mat_count = 0
# 初始化mat文件数据
mat_data = []
for i, row in enumerate(reader):
# 将csv行数据转换为numpy数组
row_data = np.array(row, dtype=np.float32)
# 添加到mat文件数据中
mat_data.append(row_data)
# 每50行保存一次mat文件
if (i+1) % 50 == 0:
# 构造mat文件名
mat_name = 'data_{}.mat'.format(mat_count)
# 保存mat文件
savemat(mat_name, {'data': np.array(mat_data)})
# 清空mat文件数据
mat_data = []
# 更新mat文件计数器
mat_count += 1
# 保存最后一个mat文件
if len(mat_data) > 0:
mat_name = 'data_{}.mat'.format(mat_count)
savemat(mat_name, {'data': np.array(mat_data)})
```
其中,`data.csv`为要读取的csv文件名,每50行数据将保存为一个名为`data_0.mat`、`data_1.mat`、`data_2.mat`等的mat文件。`savemat`函数用于将numpy数组保存为mat文件,保存的变量名为`data`。
python批量读取mat文件,处理后保存为csv
可以使用Python内置的`os`和`scipy`库来批量读取mat文件,处理后保存为csv。具体步骤如下:
1. 导入所需的库
```python
import os
import scipy.io as sio
import pandas as pd
```
2. 定义读取mat文件的函数
```python
def read_mat_file(file_path):
data = sio.loadmat(file_path)
# 处理数据
return data_processed
```
3. 定义读取目录下所有mat文件的函数,并将数据保存为csv文件
```python
def read_all_mat_files(mat_dir, csv_dir):
for file_name in os.listdir(mat_dir):
if file_name.endswith('.mat'):
file_path = os.path.join(mat_dir, file_name)
data_processed = read_mat_file(file_path)
csv_path = os.path.join(csv_dir, file_name[:-4] + '.csv')
pd.DataFrame(data_processed).to_csv(csv_path, index=False)
```
其中,`mat_dir`为mat文件所在目录,`csv_dir`为保存csv文件的目录。`file_name[:-4]`表示去除文件名后缀`.mat`。
4. 调用函数进行批量处理
```python
mat_dir = '/path/to/mat/files'
csv_dir = '/path/to/csv/files'
read_all_mat_files(mat_dir, csv_dir)
```
这样就可以批量读取mat文件,处理后保存为csv文件了。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)