溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

如何利用python對(duì)EXCEL的提取處理

發(fā)布時(shí)間:2021-06-24 11:52:09 來(lái)源:億速云 閱讀:294 作者:chen 欄目:編程語(yǔ)言

本篇內(nèi)容主要講解“如何利用python對(duì)EXCEL的提取處理”,感興趣的朋友不妨來(lái)看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來(lái)帶大家學(xué)習(xí)“如何利用python對(duì)EXCEL的提取處理”吧!

項(xiàng)目場(chǎng)景:

提示:利用python處理兩個(gè)EXCEL表格,表A和表B第一列均為時(shí)間,若時(shí)間相同,就將表A對(duì)應(yīng)時(shí)間的那一行數(shù)據(jù)提取出來(lái) 例如: 如何利用python對(duì)EXCEL的提取處理

方案一:

采用簡(jiǎn)單的for循環(huán),讀入EXCEL數(shù)據(jù),進(jìn)行比較判斷,輸出保存

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("風(fēng)速曲線")
B_sheet = file_B.sheet_by_name("aaa")
# 創(chuàng)建需要保存的寫(xiě)入文件
workbook = xlwt.Workbook(encoding="ascii")
# 創(chuàng)建寫(xiě)入sheet
worksheet = workbook.add_sheet("same_time_date")

# 啦啦啦,第一版程序,比較耗時(shí),并且保存結(jié)果不連續(xù)
for i in range (0,A_sheet.nrows):              # 遍歷表A"風(fēng)速曲線"sheet的每一行
    A_values_row1 = A_sheet.row_values(i)      # 保存第i行的數(shù)據(jù)至A_values_row1
    for j in range (0,B_sheet.nrows):          # 遍歷表B"aaa"sheet的每一行
        B_values_row1 = B_sheet.row_values(j)  # 保存第i行的數(shù)據(jù)至A_values_row1
        if A_values_row1[0]==B_values_row1[0]: # 比較第一列(每一行第一個(gè)值)是否相等
            print(A_values_row1)
            # 保存相同結(jié)果
            for k in range(0,11):              # 若True,將表A第i行的12個(gè)數(shù)據(jù)保存至新建"same_time_date"sheet
                worksheet.write(i, k, A_values_row1[k])
                workbook.save(result_to_name)


# 啦啦啦 ,關(guān)于讀取某行,某列,或某具體數(shù)據(jù)的方法
'''
# 讀取表A第一列數(shù)據(jù)
colA_1_value = A_sheet.col_values(0)
print(colA_1_value)

# 第一行數(shù)據(jù)
rowA_1_value = A_sheet.row_values(0)
print(rowA_1_value)

# 獲取第一行第一列的數(shù)據(jù)
cell_value = A_sheet.cell_value(0, 0)
print(cell_value)

# 獲取表的行數(shù)
nrows = A_sheet.nrows

# 獲取表的列數(shù)
ncols = A_sheet.ncols
print("nrows: %d, ncols: %d" % (nrows, ncols))

# 輸出Excel中表的個(gè)數(shù)
print(file_A.nsheets)

'''

# 啦啦啦  加一個(gè)計(jì)數(shù)器就可以實(shí)現(xiàn)連續(xù)保存啦 如果每次只有兩個(gè)時(shí)間會(huì)對(duì)應(yīng)相等的話,那么找到這個(gè)相等的時(shí)間就無(wú)需再繼續(xù)找啦

'''
m = 0                                          # 記錄相同結(jié)果的次數(shù)
for i in range (0,A_sheet.nrows):              # 遍歷表A"風(fēng)速曲線"sheet的每一行
    A_values_row1 = A_sheet.row_values(i)      # 保存第i行的數(shù)據(jù)至A_values_row1
    for j in range (0,B_sheet.nrows):          # 遍歷表B"aaa"sheet的每一行
        B_values_row1 = B_sheet.row_values(j)  # 保存第i行的數(shù)據(jù)至A_values_row1
        if A_values_row1[0]==B_values_row1[0]: # 比較第一列(每一行第一個(gè)值)是否相等
            i++
            print(A_values_row1)
            # 保存相同結(jié)果  換成m
            for k in range(0,11):              # 若True,將表A第i行的12個(gè)數(shù)據(jù)保存至新建"same_time_date"sheet的第m行
                worksheet.write(m, k, A_values_row1[k])
                workbook.save(result_to_name)
            continue


'''

注意事項(xiàng):

提示:這里兩個(gè)表的時(shí)間格式要保持一致,將其改為“數(shù)字轉(zhuǎn)換為文本型數(shù)字”,否則python讀入EXCEl時(shí)間數(shù)據(jù)后為一串float型數(shù)字,并且兩相同時(shí)間數(shù)據(jù)的小數(shù)點(diǎn)并不一致(此處也不知為何) 如何利用python對(duì)EXCEL的提取處理

方案二:

采用pandas庫(kù),這里是小伙伴寫(xiě)的,我直接附上源碼大家自行領(lǐng)會(huì)

下面展示一些 內(nèi)聯(lián)代碼片。

#  編碼必須要,因?yàn)槔锩嬗兄形?,要不然索引不成功,已開(kāi)始索引沒(méi)成功就是因?yàn)榫幋a問(wèn)題;
# coding=utf-8

# 導(dǎo)入pandas庫(kù)
import pandas as pd

# 這兩個(gè)可以忽略,因?yàn)闆](méi)用到;
import numpy as np
# 這個(gè)是數(shù)據(jù)庫(kù)導(dǎo)入的,用來(lái)練手的,你們沒(méi)有本地?cái)?shù)據(jù)庫(kù)也用不用;
import pymysql
# 導(dǎo)入數(shù)據(jù)
Fpath2 = "K:/馬雷/zy.xls";
df1 = pd.read_excel(Fpath2);
Fpath3 = "K:/馬雷/03.xlsx"
df2 = pd.read_excel(Fpath3)
# 因?yàn)閮蓚€(gè)數(shù)據(jù)時(shí)間格式不一樣,需要調(diào)整,然后且切片;
df1.loc[:, "時(shí)間"] = df1["時(shí)間"].str.replace("-", "").str.slice(0, 14);
# 數(shù)據(jù)二的日期不是字符串,進(jìn)行了字符串的轉(zhuǎn)換,這里也栽了大跟頭;
df2.loc[:, "時(shí)間"] = df2.時(shí)間.astype(str).str.replace("-", "").str[0:14]
# 輸出調(diào)整后的兩個(gè)表,看是否樣式一樣;
print(df1)
print(df2)
# 相同時(shí)間的日期匹配,進(jìn)行了內(nèi)聯(lián),數(shù)據(jù)庫(kù)里面用過(guò)的;
s5 = pd.merge(df2, df1, left_on="時(shí)間",right_on="時(shí)間",how="inner")
print(s5)
# 判斷是否有缺失值,很高興,發(fā)現(xiàn)沒(méi)有缺失值,如果有的話會(huì)輸出True
print(s5.時(shí)間.isnull())
# 保存數(shù)據(jù),開(kāi)始愉快的分析數(shù)據(jù)吧,
s5.to_excel("K:/馬雷/zy2015532.xls")
# -----------------------------------------------#
# -----------現(xiàn)在代碼結(jié)束了-----------------------#
# -----------底下是聯(lián)系寫(xiě)的-----------------------#
# ----------------------------------------------#

# df1.to_excel("K:/馬雷/zy1.xls")
# s3 = df.set_index("最大風(fēng)向", inplace=True, drop=False)
# print(s3)
# print(s3.head(5))

# print(s2);
# cloumes=["平均風(fēng)速" ,"zuixiao"];
# s3 = df(cloumes);
# print(df.zuixiao)
# print(df.describe())
# print(df["最小風(fēng)向"].mean)
# print(df.cov())
# print(df.corr())
# s1 = df[1:3];
# s1.to_excel("K:/馬雷/zy1.xls", index=False)
# s3 = df["最大風(fēng)向"].fillna(0);
# s4=df["最大風(fēng)向"].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)
#  導(dǎo)入數(shù)據(jù)庫(kù)數(shù)據(jù)
# 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)

到此結(jié)束,如有錯(cuò)誤,敬請(qǐng)指正。

到此,相信大家對(duì)“如何利用python對(duì)EXCEL的提取處理”有了更深的了解,不妨來(lái)實(shí)際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI