因工作原因,一些获取的行业数据以已知的结构体存储在.mat文件中,

现需要将其存储在数据库中并且能够灵活调用至python dataframe里进行操作

原数据的一个例子如下

目标如上:

然后是转化代码:

import scipy.io
data = scipy.io.loadmat(r'C:\Users\wenzhe.tian\Desktop\PTSimA\Doing\MC.mat')
import pandas as pd data.pop('__header__')
data.pop('__version__')
data.pop('__globals__')
vehicle_name=data.keys()
vehicle_name=list(vehicle_name) for i in vehicle_name:
df = pd.DataFrame(data[i][0])
try:
df=df.astype(float)
except:
for j in list(df):
try:
df[j]=df[j].astype(float)
except:
continue
# df[j]=df[j].astype(str)
if i==vehicle_name[0]:
df1=df;
else:
df1=pd.concat([df,df1],axis=0) df1['MC_name']=vehicle_name
df1['Tips']=df1['Tips'].map(str)+df1['tips'].map(str)
df1['Tips']=df1['Tips'].str.replace('nan','')
df1=df1.drop(['tips'],axis=1)
df1=df1.reset_index(); import numpy as np
# ndarray需转化为 字符
list_transfer=['Speed','Torque','eff','eff_current']
for i in list_transfer:
for j in range(len(df1)):
try:
df1[i][j]=df1[i][j].tostring();
except:
continue;

结果如下(df1):

然后用to_sql的方式将该dataframe 保存至本地sql数据库即可

一个难点是遇到struct结构体中包含mat的矩阵格式时,如下图:

所有参数为一个struct,但是data与acc作为结构体的一个单位,其数据是一个矩阵而非单个数值。因此需要继续处理:

data = scipy.io.loadmat(r'C:\Users\ext.wenzhe.tian\Desktop\PTSimA\Doing\CYCLE.mat',
mat_dtype=True,struct_as_record=True)#variable_names='CATC'
data.pop('__header__')
data.pop('__version__')
data.pop('__globals__') name=data.keys()
name=list(name)
ans_name={} for i in name:
df = pd.DataFrame(data[i][0])
try:
df=df.astype(float)
except:
for j in list(df):
try:
df[j]=df[j].astype(float)
df[j]=df[j].apply(lambda x:x[0][0])
except:
continue if i==name[0]:
df1=df;
else:
df1=pd.concat([df,df1],axis=0) ans_name[i]=pd.DataFrame(columns=['time[s]','veh_spd[km/h]','acc[m/s]'],
data={'time[s]':list(data[i][0,0]['data'][:,0]),
'veh_spd[km/h]':list(data[i][0,0]['data'][:,1]),
'acc[m/s]':list(data[i][0,0]['acc'][:,1])})

ans_name即针对其中的矩阵单独定义一个dataframe,再从导入的data数据中提取写入。结果除以上的dataframe外,还有另一个dataframe:

Matlab数据转化至python端,并写入数据库的更多相关文章

  1. Python操作pymysql写入数据库时的错误

    错误一 InternalError: (pymysql.err.InternalError) (1366, "Incorrect string value: '\\xE6\\xAD\\xA3 ...

  2. php之将用户信息写入数据库

    session高级应用将用户信息写入到数据库中 首先建立数据库表 在实验数据库sqldb中建立session表,用于存储数据 在根文件夹下建立须要用到的文件(重点是session,class.php这 ...

  3. python将excel数据写入数据库,或从库中读取出来

    首先介绍一下SQL数据库的一些基本操作: 1创建 2删除 3写入 4更新(修改) 5条件选择 有了以上基本操作,就可以建立并存储一个简单的数据库了. 放出python调用的代码: 此处是调用dos 操 ...

  4. python——读取MATLAB数据文件 *.mat

    鉴于以后的目标主要是利用现有的Matlab数据(.mat或者.txt),主要考虑python导入Matlab数据的问题.以下代码可以解决python读取.mat文件的问题.主要使用sicpy.io即可 ...

  5. python保存二维列表到txt文件,读取txt文件里面的数据转化为二维列表

    源码: # 读文件里面的数据转化为二维列表 def Read_list(filename): file1 = open(filename+".txt", "r" ...

  6. Maya 与 Matlab 数据互联插件使用教程

    实验室做网格处理方面的算法,写界面很麻烦,所以有了利用maya和matlab进行数据连通的念头,于是有了这个插件. 这个插件可以把maya的网格数据导入matlab之中,完成计算之后重新返回maya. ...

  7. 做量化模型Matlab、R、Python、F#和C++到底选择哪一个?

    MATLAB是matrix&laboratory两个词的组合,意为矩阵工厂(矩阵实验室).是由美国mathworks公司发布的主要面对科学计算.可视化以及交互式程序设计的高科技计算环境.它将数 ...

  8. python操作三大主流数据库(14)python操作redis之新闻项目实战②新闻数据的展示及修改、删除操作

    python操作三大主流数据库(14)python操作redis之新闻项目实战②新闻数据的展示及修改.删除操作 项目目录: ├── flask_redis_news.py ├── forms.py ├ ...

  9. python读取与写入csv,txt格式文件

    python读取与写入csv,txt格式文件 在数据分析中经常需要从csv格式的文件中存取数据以及将数据写书到csv文件中.将csv文件中的数据直接读取为dict类型和DataFrame是非常方便也很 ...

随机推荐

  1. (转)CentOS(5.8/6.4)linux生产环境若干优化实战

    CentOS(5.8/6.4)linux生产环境若干优化实战 原文:http://blog.51cto.com/oldboy/1336488 特别说明:本文来自老男孩linux培训VIP学生学习笔记. ...

  2. (转)centos7优化内核参数详解

    centos7优化内核参数详解 原文:http://blog.csdn.net/xiegh2014/article/details/52132863 cat /etc/sysctl.conf #CTC ...

  3. Hadoop实战:明星搜索指数统计,找出人气王

    项目介绍 本项目我们使用明星搜索指数数据,分别统计出搜索指数最高的男明星和女明星. 数据集 明星搜索指数数据集,如下图所示.猛戳此链接下载数据集 思路分析 基于项目的需求,我们通过以下几步完成: 1. ...

  4. 每天学一点ubuntu指令

    2017-03-06apt-get | dpkg -i | apt-cache | add-apt-repository ppa源 | dpkg -S一.apt 给Ubuntu安装软件的一种命令方式a ...

  5. JSONP 回调给全局变量赋值失败解决

    ;//回调结束标志位var 临时全局变量;var 需要接收的全局变量: function getDate(){ flag = 0; //回调 inviteService.getActivityDeta ...

  6. 安卓adb调试命令常见的问题

    首先本人使用的是ubuntu系统,在Eclipse下开发的时候使用无线调试,在终端直接输入adb connect 114.114.114.114没有问题,给手机安装软件用adb install  ** ...

  7. JAVA爬虫---验证码识别技术(一)

    Python中有专门的图像处理技术比如说PIL,可以对验证码一类的图片进行二值化处理,然后对图片进行分割,进行像素点比较得到图片中的数字.这种方案对验证码的处理相对较少,运用相对普遍,很多验证码图片可 ...

  8. hibernate课程 初探单表映射1-5 hibernate第一个demo

    hibernate 开发步骤:(hibernate4.2+mysql6.0) 1 hibernate配置文件(hibernate.cfg.xml) 2 持久化类 3 对象-关系映射文件 4 hiber ...

  9. 事件(Application Event)

    Spring的事件(Appllcation Event)为Bean与Bean之间的消息通信提供了支持.当一个Bean处理完一个任务后,希望另一个Bean知道并能做相应的处理,这种情况可以让另一个Bea ...

  10. LeetCode Nim Game (简单nim)

    题意: 有一堆石子,里面有n个石头,每次可以从中取出1~3个,两人轮流取,最后一个石子被谁取走即为赢家.你先取,问最后谁赢? 思路: n%4>0则先手赢,因为每次总是可以给对方留4个石子的倍数, ...