【python学习】-读入xlsx文件,将datetime.time转为minute的格式,并将新数据存入csv文件

news2024/10/6 8:30:00

读入xlsx文件,将datetime.time转为minute的格式,并将新数据存入csv文件

接到一个需求,师兄在做稳定性测试时,时间显示格式为<class ‘datetime.time’>,数据用来画图显示很奇怪,不符合常规的科学形式,希望能将这个时间转为minute显示。

任务概要

在这里插入图片描述

思路设计

【思路设计】

  • 首先读入xlsx文件(df=pd.read_excel()),读取某列数据,将数据转为列表形式(df.values);
  • 接着遍历列表中的数据(for循环),调用函数将datetime转换为min,存入新列表;
  • 将列表数据整合,重新写入csc文件保存。

代码实现

导入相关库

import os
import csv
import pandas as pd

时间转换函数

def time_convert(datetime):
    '''
    本函数实现将12:29:37<class 'datetime.time'>转为显示min的格式;
    思路:实际就是将时、分、秒、微秒均转换为min格式
    datetime:输入一个datetime数据,如12:29:37<class 'datetime.time'>
    输出:以分钟表示的数值
    '''
    hour=datetime.hour
    minute=datetime.minute
    second=datetime.second
    microsecond=datetime.microsecond
    total_time=hour*60+minute+second/60+microsecond/1000000/60
    return total_time

算法内核

def read_and_rewrite_data(file_dir,file_name,data_first_row=8):
    '''
    本函数实现读入一份xlsx文件,将某列的datatime数据转为显示为分的格式,并将新数据写入csv文件
    思路设计:
    首先读入xlsx文件,读取某列数据,将数据转为列表形式;
    接着遍历列表中的数据,调用函数将datetime转换为min,存入新列表;
    将列表数据整合,重新写入csc文件保存。
    file_dir:文件所处文件夹路径,如:r'D:\some files of others'
    file_name:xlsx文件名字,包括后缀,如:'test.xlsx'
    data_first_row:第一行数据对应的序号-2
    '''
    #文件路径
    #file_dir=r'D:\some files of others'
    #file_name='test.xlsx'
    file_path=os.path.join(file_dir,file_name)
    #读入第1,2,3,4,5列数据
    df = pd.read_excel(file_path,usecols=[0,1,2,3,4])#读入前五列数据
    data=df.values#将数据转为np.array
    #创建新列表存储前五列数据
    data_time=[]
    data_convert_time=[]
    column2=[]
    column3=[]
    column4=[]
    column5=[]
    data_list=data.tolist()#将数据转为list
    data_final_row=len(data_list)-3 #最后一行数据对应序号
    print('data_final_row',data_final_row)
    print(data_list[data_final_row][0],type(data_list[data_final_row][0]))
    #获取数据的标题
    header_name=data_list[data_first_row-1]
    print('header_name',header_name)
    for i in data_list:
        if data_list.index(i)>=data_first_row and data_list.index(i)<=data_final_row:#从第九行开始读入数据,进行转化
            #print(i)
            #print(i[0].minute)
            data_time.append(i[0])#第一列数据
            total_time=time_convert(i[0])
            data_convert_time.append(total_time)##将数据中的时间转为min显示
            column2.append(i[1])#第二列数据
            column3.append(i[2])#第三列数据
            column4.append(i[3])#第四列数据
            column5.append(i[4])#第五列数据
    #将转化好的数据重新写入新的文件
    rows = zip(data_time,data_convert_time,column2,column3,column4,column5)
    with open(os.path.join(file_dir,file_name+'_convert_time'+'.csv'), "w", newline='') as f:
        writer = csv.writer(f)
        # 标题行写入
        header = [header_name[0],header_name[0]+'_convert(min)', header_name[1],header_name[2],header_name[3],header_name[4]]
        # 数据写入
        csvrow1 = []
        csvrow2 = []
        csvrow3 = []
        csvrow4 = []
        csvrow5 = []
        csvrow6 = []
        csvrow1.extend(header_name[0])
        csvrow2.extend(header_name[0]+'_convert(min)')
        csvrow3.extend(header_name[1])
        csvrow4.extend(header_name[2])
        csvrow5.extend(header_name[3])
        csvrow6.extend(header_name[4])
        writer.writerow(header)
        writer.writerows(rows)
    print('文件已转换完毕')

运行部分:

file_dir=r'D:\some files of others' #文件所处文件夹路径
file_name='test.xlsx' #xlsx文件名字
data_first_row=8 #第一行数据对应的序号-2,比如在excel文件中,第一行数据对应的序号是10,那么这里就写8
read_and_rewrite_data(file_dir,file_name,data_first_row=8)

输出结果:

data_final_row 89962
12:29:37 <class 'datetime.time'>
header_name ['Time', 'TProc', 'TInt', 'TBox', 'TAvg']
文件已转换完毕

csv文件结果

在这里插入图片描述
如果需要批量转换文件,在算法内核外部加一个for循环即可。

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

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

相关文章

深入剖析 Python 函数参数传递机制及高级应用

前言 在本篇文章中&#xff0c;笔者将带你深入探讨 Python 函数传参的进阶主题。 通过阅读本篇文章&#xff0c;你可以深入了解 Python 函数传参的进阶主题&#xff0c;掌握更多高级的函数技巧&#xff0c;提升你的 Python 编程能力。 前面分享了Python 函数传参基础篇&#xf…

图像生成--对抗生成模型

生成模型概述 对抗生成模型 机器学习中的两大主要问题&#xff1a; 判别生成 判别模型的典型代表即为图像分类任务&#xff0c;即给定一个数据&#xff0c;判定他是哪一类。 判别模型学习到的是一个概率&#xff08;贝叶斯过程&#xff09; 而生成模型的区别在于&#xf…

【Elacticsearch】 原理/数据结构/面试经典问题整理

对Elacticsearch 原理/数据结构/面试经典问题整理的文章&#xff1b; 映射 | Elasticsearch: 权威指南 | Elastic Elacticsearch介绍 Elasticsearch,这里简称ES。ES是一个开源的高可用高扩展的分布式全文搜索与分析引擎&#xff0c;可以提供PB级近实时的数据存储和检索能力&am…

SpringBoot自定义starter入门

一、创建一个普通的Maven项目 pom.xml文件修改 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation&quo…

你知道如何将音频转文字吗?

我跟你们说&#xff0c;我认识一名盲人音乐人&#xff0c;他很热爱音乐创作&#xff0c;但是因为听力的限制&#xff0c;无法像其他人那样从录音中获取音乐素材。然而&#xff0c;有一天他听说了一个神奇的功能——音频转文字&#xff0c;这个功能可以将音频文件转换成文字文本…

从技术谈到管理,把系统优化的技术用到企业管理

很多技术人员在职业上对自己要求高&#xff0c;工作勤奋&#xff0c;承担越来越大的责任&#xff0c;最终得到信任&#xff0c;被提拔到管理岗位。但是往往缺乏专业的管理知识&#xff0c;在工作中不能从整体范围优化工作流程&#xff0c;仍然是“个人贡献者”的工作方式&#…

低功耗晶振电路设计

晶振电路设计 晶振中负性阻抗的原理 晶振的回路主要由两部分组成&#xff0c; 一部分是激活分支&#xff0c; 用于提供能量给晶振启动直至达到稳定的相位&#xff0c;另一部分是被动分支&#xff0c; 主要由电阻&#xff0c; 两个外部负载电容以及所有的寄生电容&#xff0c;…

手写RPC总结篇

协议制定&#xff1a;client到server做交互的通信协议&#xff0c;比如request response 网络端点peer 难点1 : Jetty嵌入 ◆jetty Server ◆ServletContextHandler ◆ServletHolder jetty server 起到网络监听的作用ServletContextHandler注册到jetty server中ServletHolde…

测试开发之Python自动化 Pytest 之 fixture

Pytest 之 fixture unittest 和 nose 都支持 fixture 的,但是 fixture 在 pytest 里使用更灵活。也算是 pytest 的一个闪光点吧可以理解为一个跟 setup 和 teardown 这种前后置类似的东西。但是比它们要强大、灵活很多 fixtur 当做参数传入 # -*- coding: utf-8 -*-import p…

图像处理实战02-yolov5目标检测

yolov5 YOLOv5 是一种目标检测算法&#xff0c;它是 YOLO (You Only Look Once) 系列算法的最新版本。YOLOv5 采用了一种新的架构&#xff0c;它包括一个基于 CSPNet (Cross Stage Partial Network) 的主干网络以及一系列改进的技巧&#xff0c;如多尺度训练、数据增强、网络混…

互联网行业-镭速文件传输系统方案

互联网行业是一个快速变化和高度竞争的行业&#xff0c;这一行业需要传输大量的数据、代码和文件。在互联网企业的生产和运营过程中&#xff0c;需要传输各种敏感和大型的文件&#xff0c;例如业务报告、数据分析、软件代码等。这些文件需要在不同的部门、不同的地点之间高效地…

微服务springcloud 07 hystrix + turbine 集群聚合监控

01.hystrix dashboard 一次只能监控一个服务实例&#xff0c;使用 turbine 可以汇集监控信息&#xff0c;将聚合后的信息提供给 hystrix dashboard 来集中展示和监控 02.新建 sp10-turbine 项目 03.pom.xml <?xml version"1.0" encoding"UTF-8"?&…

C语言---malloc(0)会产生什么结果,真的是空指针吗?

前言 &#xff08;1&#xff09;几天前在一个交流群中看到有人说&#xff0c;面试问malloc(0)会怎么样是真的恶心。 &#xff08;2&#xff09;这个突然激起了我的好奇心。居然还可以malloc(0)&#xff1f;&#xff01; &#xff08;3&#xff09;经过测试最后&#xff0c;发现…

基于Java学生课外知识学习网站设计实现(源码+lw+部署文档+讲解等)

博主介绍&#xff1a; ✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战 ✌ &#x1f345; 文末获取源码联系 &#x1f345; &#x1f447;&#x1f3fb; 精…

PulsarMQ系列入门篇

文章目录 介绍&#xff1a;部署安装讲解:安装单机版本测试&#xff08;Linux下&#xff09;&#xff1a; 介绍&#xff1a; PulsarMQ 现托管于apache Apache 软件基金会顶级项目&#xff0c;2016年由雅虎公司开源的分布式多租户消息中间件 &#xff0c;是下一代云原生分布式消息…

PaddleOCR #hello paddle: 从普通程序走向机器学习程序 - 初识机器学习

这篇示例向你介绍普通程序跟机器学习程序的区别&#xff0c;并带着你用百度飞桨框架&#xff0c;实现第一个机器学习程序&#xff0c;并初步认识机器学习。 作为一名开发者&#xff0c;你最熟悉的开始学习一门编程语言&#xff0c;或者一个深度学习框架的方式&#xff0c;可能是…

万字长文:大模型训练避坑指南

自 2022 年 11 月底 ChatGPT 发布以来&#xff0c;大模型的热度持续发酵&#xff0c;相信高屋建瓴的讨论大家已经看了很多了。今天我们选择从实用角度&#xff0c;分别就算力、算法、工程、数据和团队等方向讨论了训练一个千亿参数量级的大语言模型和 ChatGPT 需要些什么&#…

4.17 TCP三次握手 4.18滑动窗口 4.19TCP四次挥手

4.17 TCP三次握手 TCP 是一种面向连接的单播协议&#xff0c;在发送数据前&#xff0c;通信双方必须在彼此间建立一条连接。所谓的“连接”&#xff0c;其实是客户端和服务器的内存里保存的一份关于对方的信息&#xff0c;如 IP 地址、端口号等。 TCP 可以看成是一种字节流&a…

i.MX 91x推出,飞凌嵌入式携手NXP打造更强大、更经济、更安全的解决方案

NXP在COMPUTEX 2023上发布了i.MX 91应用处理器系列&#xff0c;作为i.MX 9系列的入门级产品&#xff0c;i.MX 91x简化了高性价比边缘设备的开发过程&#xff0c;助力构建需要安全性、高性能表现以及Linux支持的可扩展、高可靠性的平台&#xff0c;可满足下一代基于Linux的物联网…

【数据库三】MySQL索引

MySQL索引、事务与存储引擎 1.MySQL索引1.1 索引的概念1.2 索引的作用​1.3 索引的副作用​1.4 创建索引的原则依据​ 2.索引的分类和创建2.1 普通索引2.2 唯一索引2.3 主键索引2.4 组合索引2.5 全文索引 3. 查看索引4.删除索引5. 知识点总结 1.MySQL索引 1.1 索引的概念 索引…