031—pandas 读取解析实验室数据至DataFrame

前言

某个科研实验室在进行一项物理实现,实验仪器会输出一个 txt 文本的数据,研究人员需要从这个文本中将数据结构化才能进行进行统计分析。
在为个解析和分析过程中,他们选择了 Python 的 pandas 库来完成这些操作。我们今天来完成这这个 txt 数据的结构化解析。

需求:

  • 需要将每条记录为一行数据,同时每行也包括开头的时间。

思路:

  • 首先分析,这不是一个典型的 csv 文件,也是一个每行包含一个时间特殊值及后边紧跟一个半结构化的 json 格式。
  • 我们需要逐行去处理,处理时用空格将每行分隔为两部分,前部分是时间,后部分为 json,这个我们可以用
    pd.json_normalize() 去读取,读取时要先用 eval() 将文本转为 Python 列表对象。
  • 读取成 DataFrame 后再追加前部分的时间列。
  • 将每行产生的 DataFrame 循环拼接起来,就得到了最终想要的 DataFrame 数据。

二、使用步骤

读入数据

代码如下(示例):

# 数据与需求:
# 数据存储在 txt 文件里,可 下载txt ,由于文件非常大,我们这里截取了部分。下载我们来分析一下数据的格式。
# 我们发现一行就是一条完整的数据,针对单行进行排版格式化,分析如下:
# 某行数据排版后(示意)
'''
11:21:07:320 [

{"id":10670,"x":-4.86,"y":53.95,"radian":3.14,"speed":5.9,"kind":0,"position":[1, 2]},
{"id":10718,"x":3.62,"y":64.84,"radian":3.14,"speed":-0.64,"kind":0,"position":[1, 2]},
{"id":10705,"x":1.26,"y":45.85,"radian":3.14,"speed":14.89,"kind":2,"position":[1, 2]},
{"id":10534,"x":2.36,"y":31.43,"radian":3.14,"speed":-0.19,"kind":2,"position":[1, 2]}

]

'''
# 每行的特征有:

#     开始是一个时间,然后用空格与后边的正式数据分隔
#     正式数据是一个大的列表,列表内的每个元素是一条记录
#     每条记录是一个字典,键值分别代码数据意义和数值

import pandas as pd

# 用上下文管理器打开文件
with open('exp-data.txt') as f:
    # 定义一个空 DataFrame 来存放最终的数据
    df = pd.DataFrame()
    # 对每行进行处理,并将数据合并到 df
    for line in f.readlines():
        # 拆分时间和记录数据
        time, data = line.split(' ')
        # 读取每行的记录,统一追加时间列
        df_line = pd.json_normalize(eval(data)).assign(time=time)
        # 将此行的数据与之前合并好的数据再合并
        df = pd.concat([df, df_line])
df
#关于代码逻辑可以看代码的注释。这样我们就得到了所有 DataFrame,可以再对数据进行处理分析。

在这里插入图片描述

#以下为一个性能更好的写法:
import pandas as pd

with open('exp-data.txt') as f:
    data_list, time_list = [], []
    for line in f.readlines():
        t, data = line.split(' ')
        records = eval(data)
        # 将所有记录存入一个列表
        data_list.extend(records)
        # 将所有记录对应的时间构造为一个列表
        time_list.extend([t]*len(records))

    # 读取数据
    df = pd.DataFrame(data_list)
    # 增加列
    df['time'] = time_list
df

在这里插入图片描述

总结

以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/466588.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【MyBatis-Plus】逻辑删除、乐观锁、防全表更新和删除实现 MyBatisX插件 高级扩展

文章目录 一、逻辑删除实现二、乐观锁实现2.1 悲观锁和乐观锁场景和介绍2.2 具体技术和方案:2.3 版本号乐观锁技术的实现流程2.4 使用mybatis-plus数据使用乐观锁 三、防全表更新和删除实现三、代码生成器(MyBatisX插件) 一、逻辑删除实现 物理删除:真实删除&#…

【漏洞复现】F-logic DataCube3 任意文件上传漏洞

免责声明:文章来源互联网收集整理,请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失,均由使用者本人负责,所产生的一切不良后果与文章作者无关。该…

【管理咨询宝藏42】某大型银行风险预警体系规划报告

本报告首发于公号“管理咨询宝藏”,如需阅读完整版报告内容,请查阅公号“管理咨询宝藏”。 【管理咨询宝藏42】某大型银行风险预警体系规划报告 【格式】PDF版本 【关键词】战略规划、预警体系、管理咨询 【文件核心观点】 - 华信银行的风险预警在五个…

任务栏通知区域

在 Windows 操作系统中,任务栏底部右侧的区域被称为 "System Tray" 或者 "Notification Area" Notification Area - Win32 apps | Microsoft Learn The notification area provides notifications and status. Well-designed programs use the …

【Stable Diffusion】入门-03:图生图基本步骤+参数解读

目录 1 图生图原理2 基本步骤2.1 导入图片2.2 书写提示词2.3 参数调整 3 随机种子的含义4 拓展应用 1 图生图原理 当提示词不足以表达你的想法,或者你希望以一个更为简单清晰的方式传递一些要求的时候,可以给AI输入一张图片,此时图片和文字是…

动态规划:4种遍历方向图解+Python实现

前言 动态规划类题型在遍历过程中,根据状态转移函数的不同,代码实现时遍历的方向也会有所差异。总的来说,一共可以总结为下图四种模式: 红色五角星表示当前要计算的状态值;白底箭头代表哪些状态要提前算出来&#xf…

opengl程序错误,无法定位程序输入点 glewGetErrorString@4 于动态链接库

使用mingw编译器编译运行opengl程序,编译通过运行时崩溃 怀疑是之前的mingw版本编译的glew库版本不对,又重新编译一遍,还是这个错误 之后检查环境变量配置,发现有两个glew的路径,一个是msvc版的,另一个是m…

【python】flask框架的生命周期,多种查询参数的获取方式

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,…

裸金属租赁的意义

裸金属,这个名词听起来好“硬核”,如果对于一个新手来讲,怎么也不会将这个概念和IT行业、计算机、服务器等内容进行关联,它可能更应该是工业领域的一种产品或者物质,可真正关联到其实际概念恰恰与当前的主流行业如&…

【数据挖掘】练习2:数据管理1

课后作业2&#xff1a;数据管理1 一&#xff1a;上机实验1 # 读入数据 data("CO2") # 查看数据集CO2中的变量名称&#xff0c;并将变量Treatment的名称更改为Treat names(CO2) names(CO2)[names(CO2) "Treatment"] <- "Treat" names(CO2)…

锦意绵长,丽彩婚典

锦江丽笙酒店亮相婚博会 演绎沪上多彩浪漫情怀 &#xff08;中国上海&#xff0c;2024年3月18日&#xff09;3月16日至17日&#xff0c;2024年上海春季婚博会在上海世博展览馆举办。此次婚庆行业盛会上&#xff0c;锦江丽笙酒店旗下8家酒店联袂登场&#xff0c;凭借深厚的品牌…

软考-计算机组成系统

1.1计算机系统基础知识 1.1.1计算机系统硬件基本组成 计算机系统是由硬件和软件组成的&#xff0c;它们协同工作来运行程序。计算机的基本硬件系统由运算器、控制器、存储器、输入设备和输出设备5大部件组成。运算器、控制器等部件被集成在一起统称为中央处理单元(Central Pr…

监控微信的软件,什么软件可以监控微信聊天记录

有的老板会在后台发文&#xff1a; “能监控聊天记录么&#xff1f;” “聊天记录删除了能找回么” “监控聊天记录的安装包有吗” ...... 可见很多老板对员工的工作时的工作状态都不太放心。 针对监控微信这个事情&#xff0c;我们应该理性分析看待。 首先&#xff0c;需…

vue项目跳转html页面

1. 把html页面以及相关文件放到public文件夹下&#xff08;目的和index.html同级&#xff09; 2.在vue项目中正常写跳转事件&#xff0c;只是路径写法需要注意

在AI创业热潮下,如何抓住AI赚钱机会,实现人生逆袭

随着人工智能技术的迅猛发展,AI创业热潮正席卷全球。这不仅为科技领域的专业人士提供了无限的商机,也为普通人开辟了全新的赚钱途径。本文将为您揭示在AI创业热潮下,普通人如何抓住AI赚钱机会,实现人生逆袭,同时探讨哪些行业适合应用AI技术。 一、普通人如何抓住AI赚钱机…

【新手】win10安装nodejs V16.9.0详细教程

&#x1f468;‍&#x1f393;博主简介 &#x1f3c5;云计算领域优质创作者   &#x1f3c5;华为云开发者社区专家博主   &#x1f3c5;阿里云开发者社区专家博主 &#x1f48a;交流社区&#xff1a;运维交流社区 欢迎大家的加入&#xff01; &#x1f40b; 希望大家多多支…

软件工程-第3章 软件需求与软件需求规约

3.1 需求与需求的获取 需求发现技术&#xff1a;自悟、交谈、观察、小组会、提炼。 3.2 需求规约SRS及其格式 3.3 本章小结

杉德支付配合调查 - 数字藏品服务

最近&#xff0c;数字收藏品平台淘派发布了一则公告&#xff0c;宣布支付通道杉德已暂停接口服务&#xff0c;以配合调查。 近期发现多个异常账户&#xff0c;涉嫌盗取他人信息和银行卡&#xff0c;利用平台从事非法交易。淘派已第一时间报警&#xff0c;协助警方追回资金(回执…

arcgis 点连接到面(以地级市图层为例)

地级市图层进行“点到面”的连接&#xff0c;并输出 在点击地级市图层&#xff0c;右击——连接和关联——连接 选择基于空间位置的另一图层数据&#xff0c;文件选择上面输出并添加的图层文件&#xff0c;进行“点到面”的连接&#xff0c;可依据新需求选择平均值&#xff0c…

状压dp·

定义&#xff1a; 状压 dp 又叫集合动态规划。是以结合信息为状态的特殊的动态规划的问题。主要有传统集合动态规划和基于连通性状态压缩的动态规划 状压dp 设计一个整型可变参数status&#xff0c;利用status的位信息&#xff0c;来表示&#xff1a; 某个样本是否还能使用…