热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Python修改xls文件示例

具体想法这段时间通过是使用Windows的番茄盒子,效果不错,但是发现其中有些反面还是有些不足。数据展示阶段太丑,用的库不好导出的数组为分为三个时间段,原本相连的内容就分开了,让人

具体想法

这段时间通过是使用Windows的番茄盒子,效果不错,但是发现其中有些反面还是有些不足。



  • 数据展示阶段太丑,用的库不好

  • 导出的数组为分为三个时间段,原本相连的内容就分开了,让人不舒服。

为了以后自己能够对这些记录的数据做更好的数据展示优化,我决定自己先对数据进行处理,然后导入数据库库。

遇到两个问题



  • xls文件无法直接通过open函数打开,需要使用xlwt库进行转换。学习成本有点高

具体思路如下



  • 使用panda库直接将原xls文件0转化为csv文件1

  • 对文件1的内容格式化输出到文件2

  • 打开文件2合并之前由系统产生的散乱的记录,并输入到文件3

很浪费存储空间,也浪费时间,但是鉴于这是个人的一个数据量处理,这些内容,忽略不计。反正只是为了满足个人需要。


详细代码

# 目的为了xsl文档到csv文档的转换
import pandas as pd
import csv
def xlsx_to_csv_pd(sourceFile, targetFile):
"""对xls文档进行转化,并且结构进行优化
:param sourceFile: 原文件名
:param targetFile: 目的文件名
:return: 无
"""
# 初步格式化
data_xls = pd.read_excel(sourceFile, index_col=0)
tempFile = "tempFile.csv"
data_xls.to_csv(tempFile, encoding='utf-8')
# 格式优化
lines = open(tempFile, "r", encoding='utf-8').readlines()
lines = [line.strip() for line in lines]
total_lines = len(lines)
line_num = 1
header = ["data", "startTime", "endTime", "totalTime", "category", "target", "task"]
data = []
data.append(header)
while line_num curValues = lines[line_num].split(",")
curValues[1] = curValues[1][0:10]
curValues[2] = curValues[2][11:16]
curValues[3] = curValues[3][11:16]
del curValues[0]
data.append(curValues)
line_num += 1
# 写入文件存储
with open(targetFile, 'w', newline='', encoding='utf-8') as csvfile:
writer = csv.writer(csvfile)
for each_line in data:
writer.writerow(each_line)
csvfile.close()
def merge(input_file, output_file):
""" 将原本的散乱记录进行一定程度的合并
:param input_file: 输入文件
:param output_file: 输出文件
:return:
"""
lines = open(input_file, "r", encoding='utf-8').readlines()
lines = [line.strip() for line in lines]
total_lines = len(lines)
line_num = 1
data = []
# 判断是否记录散乱
dictNum = {"07:59": "08:00", "12:59": "13:00", "18:59": "19:00"}
data.append(lines[0].split(","))
while line_num curValues = lines[line_num].split(",")
nextNum = line_num + 1
if nextNum nextValues = lines[nextNum].split(",")
if curValues[4] == nextValues[4] and dictNum.get(curValues[2]) == nextValues[1]:
curValues[3] = str(int(curValues[3]) + int(nextValues[3]))
del lines[line_num + 1]
total_lines = total_lines - 1
data.append(curValues)
line_num += 1
with open(output_file, 'w', newline='', encoding='utf-8') as csvfile:
writer = csv.writer(csvfile)
for each_line in data:
writer.writerow(each_line)
csvfile.close()
if __name__ == '__main__':
xlsx_to_csv_pd("box1.xls", "box1_temp.csv")
merge("box1_temp.csv", "box1.csv")

经验教训

list



  • 可以通过类似java方式进行数组的读取。比如一维数组可以采用 list1[0],二维数组可以采用list1[0][0]的方式进行获取

  • list.strip(),如果strip()的参数为空,那么会默认删除字符串头和尾的空白字符(包括\n,\r,\t这些)。所以可以对原二维数组除去空格字符

str



  • 字符串可以通过 == 号进行判断是否相等,无论这个字符串的位置位于何处,即使是在数组中

  • 字符串可以通过s[x:y]的方式返回字符串s在x到y - 1的所有字符的字符串

  • 字符串可以通过int(s)方式转化成字符串,整数类型也可以通过str()方式进行转换成字符类型

dict



  • 字典可以通过d[key]的方式获取值,也可以通过d.get(key)方式获取值

字符



  • python 不使用&& || 等方式进行条件的判断

  • \n 是转义字符,表示换行



推荐阅读
  • 本文介绍了使用Java实现大数乘法的分治算法,包括输入数据的处理、普通大数乘法的结果和Karatsuba大数乘法的结果。通过改变long类型可以适应不同范围的大数乘法计算。 ... [详细]
  • 猜字母游戏
    猜字母游戏猜字母游戏——设计数据结构猜字母游戏——设计程序结构猜字母游戏——实现字母生成方法猜字母游戏——实现字母检测方法猜字母游戏——实现主方法1猜字母游戏——设计数据结构1.1 ... [详细]
  • EPPlus绘制刻度线的方法及示例代码
    本文介绍了使用EPPlus绘制刻度线的方法,并提供了示例代码。通过ExcelPackage类和List对象,可以实现在Excel中绘制刻度线的功能。具体的方法和示例代码在文章中进行了详细的介绍和演示。 ... [详细]
  • 本文介绍了一个Python函数same_set,用于判断两个相等长度的数组是否包含相同的元素。函数会忽略元素的顺序和重复次数,如果两个数组包含相同的元素,则返回1,否则返回0。文章还提供了函数的具体实现代码和样例输入输出。 ... [详细]
  • 颜色迁移(reinhard VS welsh)
    不要谈什么天分,运气,你需要的是一个截稿日,以及一个不交稿就能打爆你狗头的人,然后你就会被自己的才华吓到。------ ... [详细]
  • 在工作中,遇到需要将excel表中的特定数据提取出来,并将数据以键值对的形式存储到map集合中。因为我用的是maven管理的jar包,所 ... [详细]
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
  • java drools5_Java Drools5.1 规则流基础【示例】(中)
    五、规则文件及规则流EduInfoRule.drl:packagemyrules;importsample.Employ;ruleBachelorruleflow-group ... [详细]
  • HashMap的扩容知识详解
    本文详细介绍了HashMap的扩容知识,包括扩容的概述、扩容条件以及1.7版本中的扩容方法。通过学习本文,读者可以全面了解HashMap的扩容机制,提升对HashMap的理解和应用能力。 ... [详细]
  • Parity game(poj1733)题解及思路分析
    本文是对题目"Parity game(poj1733)"的解题思路进行分析。题目要求判断每次给出的区间内1的个数是否和之前的询问相冲突,如果冲突则结束。本文首先介绍了离线算法的思路,然后详细解释了带权并查集的基本操作。同时,本文还对异或运算进行了学习,并给出了具体的操作步骤。最后,本文给出了完整的代码实现,并进行了测试。 ... [详细]
  • 浙江大学2005–2006学年秋冬季学期《大学计算机基础》课程期末考试试卷开课学院:计算中心,考试形式:闭卷,允许带入场考试 ... [详细]
  • 获取时间的函数js代码,js获取时区代码
    本文目录一览:1、js获取服务器时间(动态)2 ... [详细]
  • 数学建模入门python绘制频率直方图
    文章目录例题数据处理绘图操作调用演示例题数据处理将以下的数据保存到磁盘上17275169551696417165167471716216867165521696216865 ... [详细]
  • mapreduce源码分析总结
    这篇文章总结的非常到位,故而转之一MapReduce概述MapReduce是一个用于大规模数据处理的分布式计算模型,它最初是由Google工程师设计并实现的ÿ ... [详细]
  • 基于词向量计算文本相似度1.测试数据:链接:https:pan.baidu.coms1fXJjcujAmAwTfsuTg2CbWA提取码:f4vx2.实验代码:imp ... [详细]
author-avatar
dotagod12
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有