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

news2024/11/18 15:40:06

前言

某个科研实验室在进行一项物理实现,实验仪器会输出一个 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提供了大量能使我们快速便捷地处理数据的函数和方法。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

一口气看完明朝276年历史

明朝是中国历史上最后一个由汉人建立的大一统封建王朝,建立于公元1368年,亡于公元1644年,国祚276年,传12世16帝。 太祖建国 太祖(1368~1398) 公元1368年,朱元璋在南京应天府建元称帝&#xff…

Linux 中搭建 主从dns域名解析服务器

CSDN 成就一亿技术人! 作者主页:点击! Linux专栏:点击! CSDN 成就一亿技术人! ————前言———— 主从(Master-Slave)DNS架构是一种用于提高DNS系统可靠性和性能的配置方式。…

兼顾稳定和性价比的跨国企业SD-WAN组网

随着全球业务不断扩张,跨国企业面临着跨域网络的复杂性和不稳定性带来的挑战。不同地区分支机构的数据互通和协作常常受到制约,而在网络问题出现后,排查多方问题导致高昂的部署和运维成本。尽管直连方案在表面上看似省钱,但由于不…

爱恩斯坦棋小游戏使用C语言+ege/easyx实现

目录 1、游戏介绍和规则 2、需要用到的头文件 3、这里我也配上一个ege和easyx的下载链接吧,应该下一个就可以 4、运行结果部分展示 5、需要用到的图片要放在代码同一文件夹下 6、代码地址(里面有需要用到的图片) 1、游戏介绍和规则 规则如…

few shot vid2vid(Few-shot Video-to-Video Synthesis)论文理解

代码:https://github.com/NVlabs/few-shot-vid2vid 论文:https://arxiv.org/abs/1910.12713

centos虚拟机设置静态IP地址

vim编辑文件 /etc/sysconfig/network-scripts/ifcfg-ens33 重启即可。

kkFileView漏洞总结

0x01 kkFileview存在任意文件读取漏洞 漏洞描述 Keking KkFileview是中国凯京科技(Keking)公司的一个 Spring-Boot 打造文件文档在线预览项目。Keking kkFileview 存在安全漏洞,该漏洞源于存在通过目录遍历漏洞读取任意文件,可能…

TCP:三次握手四次挥手及相关问题:

连接—三次握手: 流程图: 过程详解: 客户端(connect)连接服务器(listen) Client将标志位SYN置为1,随机产生一个值seqx, 并将该数据包发送给Server, Client进入SYN_ SENT状态,等待Server确认。Server收到数据包后由标…

提权,提个damn

阅读须知: 探索者安全团队技术文章仅供参考,未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作,由于传播、利用本公众号所提供的技术和信息而造成的任何直接或者间接的后果及损失,均由使用者 本人负责,作者不为此承担任何责任,如…

2024蓝桥杯每日一题(递归)

备战2024年蓝桥杯 -- 每日一题 Python大学A组 试题一:有序分数 试题二:正则问题 试题三:带分数 试题四:约数之和 试题五:分形之城 试题一:有序分数 【题目描述】 【输入格…

【sequence进阶 config_db message_2024.03.14】

sequence进阶 sequence的仲裁 多个sequence发送给一个sequencer的情况,使用的两种方式: class virtual_seqence extends uvm_sequence;virtual task body();sub_sequene seq_0;sub_sequene seq_1;//第一种方式p_sequencer.apb_mst_sqr.set_arbitratio…

计算机一级word 文字处理理论+实操试题

计算机一级word 文字处理理论实操试题 单选题: 1、在Word编辑状态下,要将另一文档的内容全部添加在当前文档的当前光标处,应选择的操作是依次单击______。 A.“文件”选项卡和“打开”项 B.“文件”选项卡和“新建”项 C.“插入”选项卡…

智能硬件 | XR头显市场只有少数玩家,AI是扭转局面的关键?

苹果头显设备Vision Pro突出2项技术,即“空间计算”和手部、眼部跟踪。“空间计算”使设备能够学习并与物理环境进行交互;手部和眼部跟踪功能通过从设备侧面、前置和底部安装的摄像头收集手部和眼球的感应数据,使用户能够操作虚拟环境并与之交…

QT插件简单使用2

目录 1 总的目录结构 2 主程序 3 插件程序 4 运行结果 相比原来的QT插件简单使用-CSDN博客增加了 QObject *create(const QString &name, const QString &spec) override; 函数的使用和Plugin.json的使用 1 总的目录结构 编译器mingw-64 2 主程序 1 新建一个其他…

和解费用3362万美元,谁来守护跨境卖家的“钱包”

公司向原告支付3362万美元(包括原告方主张的损害赔偿金2500万美元及原告方支付的律师费用862万美元); 公司不得通过任何方式访问或使用原告的产品或数据; 公司不得向最终用户提供维修帮助服务(属于公司汽车诊断产品中的辅助维 修功能,不影响…

【代码】提取图像轮廓坐标并保存为YOLOv8所需的txt格式

该段代码的应用场景为对图像标注过后,想要对图像进行裁切,但是标签不能裁切,所以将原图像按照标签进行二值化后,将二值化后的图像进行裁切,然后使用opencv对裁切后的图像进行处理,识别出白色区域轮廓&#…

从零开始学习数据结构与算法:Python实现【第139篇—Python实现】

👽发现宝藏 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。【点击进入巨牛的人工智能学习网站】。 从零开始学习数据结构与算法:Python实现 数据结构与算法是计算机科学中至关重要…

FDA: 用于语义分割的傅里叶域自适应

论文链接:https://arxiv.org/abs/2004.05498 代码链接:GitHub - YanchaoYang/FDA: Fourier Domain Adaptation for Semantic Segmentation 机构:UCLA 发表于2020CVPR 这篇文章别的地方略读了,主要看看方法,感兴趣自…

基于Spring Boot的四川火锅文化网站的设计与实现

摘 要 四川火锅文化网站的目的是让使用者可以更方便的将人、设备和场景更立体的连接在一起。能让用户以更科幻的方式使用产品,体验高科技时代带给人们的方便,同时也能让用户体会到与以往常规产品不同的体验风格。 与安卓,iOS相比较起来&…

基于SpringBoot+MYSQL的课程作业管理系统

目录 1、前言介绍 2、主要技术 3、系统流程分析 3.1、操作流程 3.2、添加信息流程 3.3、删除信息流程 4、系统设计 5、数据库设计 6、数据表 6、运行截图(部分) 6.1、管理员功能模块 6.2、教师功能模块 7、源码获取 基于springboot的课程作业管理系统 1、前言介绍 …