python_读取txt文件绘制多条曲线III

先把文件中指定列,去重提取出来,然后根据指定列去匹配数据,最后完成多条数据的绘图;

import matplotlib.pyplot as plt
import re
from datetime import datetime
from pylab import mpl

mpl.rcParams["font.sans-serif"] = ["SimHei"]  # 设置显示中文字体
mpl.rcParams["axes.unicode_minus"] = False  # 设置正常显示符号

"""
out_los_GDHZ.txt文件内容
2024/03/05 05:50:01  sys:  1,prn:  8, f :  0, rr :  22776258.520521, cdts :  9499.326017, dtrpr :  0.000000, ionxr :  16.994414, dantr :  0.000000, dantrr[findex] :  0.000000, scb :  0.000000, 
2024/03/05 05:50:01  sys:  1,prn:  8, f :  0, rr :  22776258.520521, cdts :  9499.326017, dtrpr :  0.000000, ionxr :  16.994414, dantr :  0.000000, dantrr[findex] :  0.000000, scb :  0.000000, 
2024/03/05 05:50:01  sys:  1,prn:  8, f :  1, rr :  22776258.520521, cdts :  9499.326017, dtrpr :  0.000000, ionxr :  30.475578, dantr :  0.000000, dantrr[findex] :  0.000000, scb :  0.000000, 
2024/03/05 05:50:01  sys:  1,prn:  8, f :  1, rr :  22776258.520521, cdts :  9499.326017, dtrpr :  0.000000, ionxr :  30.475578, dantr :  0.000000, dantrr[findex] :  0.000000, scb :  0.000000, 
2024/03/05 05:50:01  sys:  1,prn:  14, f :  0, rr :  23343648.060891, cdts :  102648.741372, dtrpr :  0.000000, ionxr :  19.831918, dantr :  0.000000, dantrr[findex] :  0.000000, scb :  0.000000, 
2024/03/05 05:50:01  sys:  1,prn:  14, f :  0, rr :  23343648.060891, cdts :  102648.741372, dtrpr :  0.000000, ionxr :  19.831918, dantr :  0.000000, dantrr[findex] :  0.000000, scb :  0.000000, 
2024/03/05 05:50:01  sys:  1,prn:  14, f :  1, rr :  23343648.060891, cdts :  102648.741372, dtrpr :  0.000000, ionxr :  35.563990, dantr :  0.000000, dantrr[findex] :  0.000000, scb :  0.000000, 
2024/03/05 05:50:01  sys:  1,prn:  14, f :  1, rr :  23343648.060891, cdts :  102648.741372, dtrpr :  0.000000, ionxr :  35.563990, dantr :  0.000000, dantrr[findex] :  0.000000, scb :  0.000000, 
2024/03/05 05:50:01  sys:  1,prn:  30, f :  0, rr :  21635324.825727, cdts : -127128.592610, dtrpr :  0.000000, ionxr :  14.159144, dantr :  0.000000, dantrr[findex] :  0.000000, scb :  0.000000, 
2024/03/05 05:50:01  sys:  1,prn:  30, f :  0, rr :  21635324.825727, cdts : -127128.592610, dtrpr :  0.000000, ionxr :  14.159144, dantr :  0.000000, dantrr[findex] :  0.000000, scb :  0.000000, 
"""

# 第一步,去重提取出指定列的数据
def get_sys():
    # 用于存储去重后的数据
    unique_data = set()
    with open('out_los_GDHZ_1.txt', 'r') as file:
        lines = file.readlines()
        # 因数据重复,隔行读取数据
        for line in lines[::2]:
            # 多个分隔符来分割
            temp = re.split("[,| ]+", line)
            # 提取指定的多列
            selected_columns = [temp[3], temp[5], temp[8]]
            # 将选定的列转换为元组,以便用于集合中的去重
            selected_columns_tuple = tuple(selected_columns)
            # 将元组添加到集合中
            unique_data.add(selected_columns_tuple)

    # 将集合转换回列表
    unique_data_list = list(unique_data)
    # print(unique_data_list)
    return unique_data_list

# 第二步,根据指定的数据再统计、绘图
def static():
    with open('out_los_GDHZ_1.txt', 'r') as file:
        lines = file.readlines()

        sys = get_sys()
        ls = len(sys)
        # 使用字典推导式生成对应数量的空列表和0,并为它们重新命名
        time_lists = {f'time_list_{i}': [] for i in range(ls)}
        ionxr_lists = {f'ionxr_list_{i}': [] for i in range(ls)}
        # count_lists = {f'count_list_{i}': 0 for i in range(ls)}

        # 因数据重复,隔行读取数据
        for line in lines[::2]:
            # 多个分隔符来分割
            temp = re.split("[,| ]+", line)
            for j in range(0, len(sys)):
                if (temp[3] == str(sys[j][0])) & (temp[5] == str(sys[j][1])) & (temp[8] == str(sys[j][2])):
                    datee = temp[0]
                    timee = temp[1]
                    ionxr = temp[20]
                    dt = datee + " " + timee
                    time_list = datetime.strptime(dt, "%Y/%m/%d %H:%M:%S")
                    time_lists['time_list_' + str(j)].append(time_list)
                    ionxr_lists['ionxr_list_' + str(j)].append(ionxr)
                    # count_lists['count_list_' + str(j)] += 1
                    # print(time_lists['time_list_'+str(j)],ionxr_lists['ionxr_list_'+str(j)])

        # 绘制线形图
        plt.title(u'电离层活跃状况')
        for j in range(0, len(sys)):
            plt.plot(time_lists['time_list_' + str(j)], ionxr_lists['ionxr_list_' + str(j)])
            # print(count_lists['count_list_' + str(j)])

        # 设置x轴标签和y轴标签
        plt.xlabel(u"日期")
        plt.ylabel(u"电离层系数")

        # 显示图表
        plt.show()


if __name__ == '__main__':
    static()

因数据量达到三百多万条,16G内存的笔记本运行时报MemoryError,内存干爆了,消耗了98%,重新截取出二十多万条数据跑出来的结果,有40个线条;

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

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

相关文章

Rust入门:GCC或VS2019中的c或c++程序如何调用Rust静态库

首先创建一个rust的库,这里我假设命名为c-to-rust1 cargo new --lib c-to-rust1 其中,src/lib.rs的内容如下, #[no_mangle] pub extern "C" fn get_string() -> *const u8 {b"Hello C World\0".as_ptr() }注解 …

解决微信好友添加频繁问题

今天我们来聊一聊微信好友添加频繁的问题。在日常使用中,有时候我们会遇到一些添加好友受限的情况,那么究竟是什么原因导致了这一问题呢?接下来,让我们逐一来看一看。 1. 添加好友的频率太高 首先,如果我们在短时间内…

中小企业如何降低网络攻击和数据泄露的风险?

德迅云安全收集了Bleeping Computer 网站消息, Arctic Wolf 表示 Akira 勒索软件组织的攻击目标瞄准了中小型企业,自 2023 年 3 月以来,该团伙成功入侵了多家组织,索要的赎金从 20 万美元到 400 多万美元不等,如果受害…

猴子吃桃:玩转二分思维

前言 在计算机编程领域,算法是解决问题的有效途径之一。而算法题则是考察程序员解决问题能力的重要手段之一。在这篇文章中,我们将通过一个经典的算法题目——猴子吃桃,来探讨算法思维的重要性以及解题的方法。 题目描述 孙悟空喜欢吃蟠桃…

企业计算机服务器中了devos勒索病毒怎么解密,devos勒索病毒解密流程

现在,很多企业都依赖网络计算机的力量开展各项工作业务,为企业的生产运营提供了极大便利,但网络也会搜集存储各个用户的信息便于统计分析,从而导致了企业的数据安全也会受到很大影响。近日,云天数据恢复中心接到多家企…

【阅读笔记】最通俗易懂的 transformer 笔记

这里写目录标题 前言第 1 节 N 元文法语言模型1.2、平滑(Smoothing)1.2.1、加 1 平滑 / 拉普拉斯平滑(Add-One Smoothing / Laplace Smoothing)1.2.2、 δ \delta δ 平滑(Add-K Smoothing / Delta Smoothing&#xf…

Xilinx高级调试方法--远程调试

Xilinx高级调试方法--远程调试 1 虚拟电缆调试2 FPGA设计2.1 扩展配置接口 3 PCIe-XVC驱动3.1 PCIe-XVC驱动3.2 XVC-Server 4 Vivado Design Suite4.1 同一台主机4.2 不同主机 本文主要介绍Xilinx的一些高级调试方法,以及如何使用Xilinx的相关IP。 1 虚拟电缆调试 …

CAN通信篇 - CanSM模块配置(五)

文章目录 CanSMConfigurationCanSMManagerNetworkCanSMGeneralCanSMGeneration总结Can State Manager (CanSM)模块,是CAN网络的状态管理模块,所有对CAN网络状态的请求都是通过CanSM实现。这里我们介绍一下在Davinci Configurator中CanSM模块的配置。 在CanSM模块的总线管理…

游泳耳机哪个牌子好?四大热卖游泳耳机汇总,年度首选

在当今日益注重健康生活方式的时代,游泳作为一项全身性的有氧运动备受青睐。然而,对于许多游泳爱好者来说,水下世界的孤独可能会让他们感到无聊。而游泳耳机的出现不仅为游泳者带来了音乐的陪伴,还让他们能够在水下畅享各种声音&a…

【译】WordPress Bricks主题安全漏洞曝光,25,000个安装受影响

WordPress的Bricks主题存在一个严重的安全漏洞,恶意威胁行为者正在积极利用该漏洞在易受攻击的安装上运行任意PHP代码。 该漏洞被跟踪为CVE-2024-25600(CVSS评分:9.8),使未经身份验证的攻击者能够实现远程代码执行。它…

【MySQL】事务?隔离级别?锁?详解MySQL并发控制机制

目录 1.先理清一下概念 2.锁 2.1.分类 2.2.表锁 2.3.行锁(MVCC) 2.4.间隙锁 2.5.行锁变表锁 2.6.强制锁行 1.先理清一下概念 所谓并发控制指的是在对数据库进行并发操作时如何保证数据的一致性和正确性。在数据库中与并发控制相关的概念有如下几…

【企业动态】欢迎法国客户来访东胜物联,深入探讨智能化合作

本周,来自法国的客户莅临我司工厂进行实地参观考察。客户是一家历史悠久的设备供应商,其产品涵盖冷链、餐饮、农业等多个行业应用领域,正致力于从传统设备向智能设备转型,希望将设备接入物联网。在此次访问中,他们参观…

geoserver+mapbox-gl 离线部署矢量切片地图服务学习笔记

geoserver安装 geoserver的安装包可以在官网下载Download - GeoServer,想要选择版本点击Archived找到指定版本进行下载http://geoserver.org/download/ (如果网络不稳定,也可以直接使用下面的下载地址) geoserver-2.15.0.rar资…

从新手到专家:一探究竟,最佳的Excel学习网站推荐!

介绍:Excel是一款由微软公司开发的电子表格软件,是Microsoft Office套件的一部分。它通过网格形式的工作表提供数据存储、分析和可视化等功能,适用于个人计算机数据处理。具体介绍如下: 数据存储:Excel能够存储大量数据…

大语言模型(LLM):每个专业人士的完美助手

「大语言模型(LLM)革命」:ChatGPT如何引领工作效率新篇章 在不断发展的技术领域,像 ChatGPT 这样的大型语言模型 (LLM) 已成为各行业专业人士不可或缺的工具。 这篇博文探讨了大语言模型(LLM)在专业环境中的…

Linux第69步_依据“旧字符设备的一般模板”编写LED驱动

在编写LED驱动之前,先要了解和硬件有关的一些知识。 1、了解“MMU内存管理单元”以及相关函数 MMU是Memory Manage Unit的缩写,意思是“内存管理单元”。 老版本的Linux内核要求处理器必须有“MMU内存管理单元”,而现在的Linux内核已经支持…

车牌定位识别企业版

车牌定位识别企业版,只需要OPENCV,采用YOLOV8NANO检测车牌区域,然后使用PADDLE OCR检测车牌,能识别各国车牌,支持C,PYTHON开发 车牌定位识别企业版,只需要OPENCV,支持C,python

什么是云游戏?云游戏平台可以运行3A游戏吗?

对于不熟悉游戏行业的人来说,面对云游戏可能会有一个疑问——除了单机游戏,现在所有游戏不都是联网玩吗?云游戏和网络游戏有什么区别? 实际上,云游戏和传统网络游戏有着本质的不同。 传统网络游戏需要玩家先下载并在本…

【HTML】HTML基础7.1(无序列表)

目录 标签 属性 效果 注意 标签 <ul> <li>列表里要装的东西</li> <li>列表里要装的东西</li> <li>列表里要装的东西</li> </ul> 属性 type&#xff1a; circle空心圆disc实心圆square方框 效果 circle空心圆效果…

Positional Encoding 位置编码

Positional Encoding 位置编码 flyfish Transformer模型没有使用循环神经网络&#xff0c;无法从序列中学习到位置信息&#xff0c;并且它是并行结构&#xff0c;不是按位置来处理序列的&#xff0c;所以为输入序列加入了位置编码&#xff0c;将每个词的位置加入到了词向量中…