您好,登录后才能下订单哦!
密码登录
登录注册
点击 登录注册 即表示同意《亿速云用户服务条款》
本篇内容主要讲解“如何利用python对EXCEL的提取处理”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何利用python对EXCEL的提取处理”吧!
提示:利用python处理两个EXCEL表格,表A和表B第一列均为时间,若时间相同,就将表A对应时间的那一行数据提取出来 例如:
采用简单的for循环,读入EXCEL数据,进行比较判断,输出保存
import xlrd import xlwt # 读取文件 file_A_name = "I:\\EXLA.xls" file_B_name = "I:\\EXLB.xls" result_to_name = "I:\\Result.xlsx" file_A = xlrd.open_workbook(file_A_name) file_B = xlrd.open_workbook(file_B_name) # 读取文件中的某张表 A_sheet = file_A.sheet_by_name("风速曲线") B_sheet = file_B.sheet_by_name("aaa") # 创建需要保存的写入文件 workbook = xlwt.Workbook(encoding="ascii") # 创建写入sheet worksheet = workbook.add_sheet("same_time_date") # 啦啦啦,第一版程序,比较耗时,并且保存结果不连续 for i in range (0,A_sheet.nrows): # 遍历表A"风速曲线"sheet的每一行 A_values_row1 = A_sheet.row_values(i) # 保存第i行的数据至A_values_row1 for j in range (0,B_sheet.nrows): # 遍历表B"aaa"sheet的每一行 B_values_row1 = B_sheet.row_values(j) # 保存第i行的数据至A_values_row1 if A_values_row1[0]==B_values_row1[0]: # 比较第一列(每一行第一个值)是否相等 print(A_values_row1) # 保存相同结果 for k in range(0,11): # 若True,将表A第i行的12个数据保存至新建"same_time_date"sheet worksheet.write(i, k, A_values_row1[k]) workbook.save(result_to_name) # 啦啦啦 ,关于读取某行,某列,或某具体数据的方法 ''' # 读取表A第一列数据 colA_1_value = A_sheet.col_values(0) print(colA_1_value) # 第一行数据 rowA_1_value = A_sheet.row_values(0) print(rowA_1_value) # 获取第一行第一列的数据 cell_value = A_sheet.cell_value(0, 0) print(cell_value) # 获取表的行数 nrows = A_sheet.nrows # 获取表的列数 ncols = A_sheet.ncols print("nrows: %d, ncols: %d" % (nrows, ncols)) # 输出Excel中表的个数 print(file_A.nsheets) ''' # 啦啦啦 加一个计数器就可以实现连续保存啦 如果每次只有两个时间会对应相等的话,那么找到这个相等的时间就无需再继续找啦 ''' m = 0 # 记录相同结果的次数 for i in range (0,A_sheet.nrows): # 遍历表A"风速曲线"sheet的每一行 A_values_row1 = A_sheet.row_values(i) # 保存第i行的数据至A_values_row1 for j in range (0,B_sheet.nrows): # 遍历表B"aaa"sheet的每一行 B_values_row1 = B_sheet.row_values(j) # 保存第i行的数据至A_values_row1 if A_values_row1[0]==B_values_row1[0]: # 比较第一列(每一行第一个值)是否相等 i++ print(A_values_row1) # 保存相同结果 换成m for k in range(0,11): # 若True,将表A第i行的12个数据保存至新建"same_time_date"sheet的第m行 worksheet.write(m, k, A_values_row1[k]) workbook.save(result_to_name) continue '''
提示:这里两个表的时间格式要保持一致,将其改为“数字转换为文本型数字”,否则python读入EXCEl时间数据后为一串float型数字,并且两相同时间数据的小数点并不一致(此处也不知为何)
采用pandas库,这里是小伙伴写的,我直接附上源码大家自行领会
下面展示一些 内联代码片。
# 编码必须要,因为里面有中文,要不然索引不成功,已开始索引没成功就是因为编码问题; # coding=utf-8 # 导入pandas库 import pandas as pd # 这两个可以忽略,因为没用到; import numpy as np # 这个是数据库导入的,用来练手的,你们没有本地数据库也用不用; import pymysql # 导入数据 Fpath2 = "K:/马雷/zy.xls"; df1 = pd.read_excel(Fpath2); Fpath3 = "K:/马雷/03.xlsx" df2 = pd.read_excel(Fpath3) # 因为两个数据时间格式不一样,需要调整,然后且切片; df1.loc[:, "时间"] = df1["时间"].str.replace("-", "").str.slice(0, 14); # 数据二的日期不是字符串,进行了字符串的转换,这里也栽了大跟头; df2.loc[:, "时间"] = df2.时间.astype(str).str.replace("-", "").str[0:14] # 输出调整后的两个表,看是否样式一样; print(df1) print(df2) # 相同时间的日期匹配,进行了内联,数据库里面用过的; s5 = pd.merge(df2, df1, left_on="时间",right_on="时间",how="inner") print(s5) # 判断是否有缺失值,很高兴,发现没有缺失值,如果有的话会输出True print(s5.时间.isnull()) # 保存数据,开始愉快的分析数据吧, s5.to_excel("K:/马雷/zy2015532.xls") # -----------------------------------------------# # -----------现在代码结束了-----------------------# # -----------底下是联系写的-----------------------# # ----------------------------------------------# # df1.to_excel("K:/马雷/zy1.xls") # s3 = df.set_index("最大风向", inplace=True, drop=False) # print(s3) # print(s3.head(5)) # print(s2); # cloumes=["平均风速" ,"zuixiao"]; # s3 = df(cloumes); # print(df.zuixiao) # print(df.describe()) # print(df["最小风向"].mean) # print(df.cov()) # print(df.corr()) # s1 = df[1:3]; # s1.to_excel("K:/马雷/zy1.xls", index=False) # s3 = df["最大风向"].fillna(0); # s4=df["最大风向"].notnull() # print(s4) # print(s3) # print(df["zuixiao"].df["zuida"]) # print(df[1:3]) # print(s3) # print(s1.index) # s1=pd.Series(re # ads.head(2)) # print(reads.reindex) # print(reads.dtypes) # 导入数据库数据 # conn = pymysql.connect( # host="127.0.0.1", # user="root", # password="zy2015532", # database="myemployees", # charset="utf8" # ) # mysql_page = pd.read_sql("select * from employees where salary>10000", con=conn) # print(mysql_page)
到此结束,如有错误,敬请指正。
到此,相信大家对“如何利用python对EXCEL的提取处理”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。