国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
Python中xlwings和openpyxl的常用方法_xlwings和openpyxl哪個好用

一、前言

實(shí)習(xí)干了幾個項(xiàng)目都涉及Python數(shù)據(jù)處理,好久沒寫筆記就寫這篇來總結(jié)一下,常用的Python處理Excel數(shù)據(jù)方法吧!主要內(nèi)容涉及到pandas、xlwings、openpyxl。

二、pandas的一些操作

1、pandas排序

data.sort_values(by='字段名',ascending=False) #數(shù)據(jù)按“字段名”倒序排列
#ascending=False,倒序排列;True則升序排列
import pandas as pd
data = pd.read_excel(r'C:\Users\86188\Desktop\Python數(shù)據(jù)挖掘與數(shù)據(jù)分析\test.xls')
data.sort_values(by='總分',ascending=False)


data.sort_values(by='總分',ascending=True)

2、pandas截取行、列的常用操作

1)我個人常用的方法:

切去行
data[0:2]


截取列,或者列的第幾行,前幾行數(shù)據(jù)
data['姓名'][-1:]

#截取某列或某些列
data[['姓名','總分']]

2)loc切片的使用

切去行,前三行,因?yàn)镻ython編號是從0開始的
data.loc[0:2]#或data.loc[:2]

截取列,列的第幾行數(shù)據(jù)
data.loc[0:1,('姓名','總分')]

3)iloc的使用

#切去第n``列,用.iloc[:,n]
#切去前n列,用.iloc[:,:n]不包括第n列
data.iloc[:,-1]

data.iloc[:,:-1]

data.iloc[0:1,:-1]

4)按條件篩選

篩選符合條件的數(shù)據(jù)

用apply和函數(shù)的方法,篩選語文大于數(shù)學(xué)的數(shù)據(jù)
data[['語文', '數(shù)學(xué)']].apply(lambdax: x['語文'] > x['數(shù)學(xué)'], axis=1)

data[data[['語文', '數(shù)學(xué)']].apply(lambdax: x['語文'] > x['數(shù)學(xué)'], axis=1)]

5)小結(jié)

1、我習(xí)慣用的方法更多是利用字段名(列名)進(jìn)行切片,在代碼維護(hù)上不算好,中文字段多的時候顯得代碼累贅,盡量是中文字段名轉(zhuǎn)為英文字段名,或使用iloc切片。
2、主要對行切片用loc方法(對行下標(biāo)和列名的切片)
3、主要對列切片可以用iloc方法(更多的是列、行下標(biāo)的切片)

3、pandas的數(shù)據(jù)拼接操作、交集和差集

data2 = pd.read_excel(r'C:\Users\86188\Desktop\Python數(shù)據(jù)挖掘與數(shù)據(jù)分析\test.xls',sheet_name='Sheet2')

1)merge的內(nèi)連接、外連接,以及按字段合并

#ineer內(nèi)連接,可以求交集
pd.merge(data,data2,how='inner')
#outer外連接,進(jìn)行兩個數(shù)據(jù)拼接
pd.merge(data,data2,how='outer')

#按某個字段鏈接
data和data2中語文成績相同的兩個人的名字和其他科目數(shù)據(jù)
pd.merge(data,data2,on='語文')

pd.concat([data,data2])

添加一行數(shù)據(jù)
data2 = data2.append({'姓名':'嬴政','語文':'99','數(shù)學(xué)':'100','英語':'0','總分':'199'}, ignore_index=True)

刪除交集,得到差集
#先增加一條重復(fù)的數(shù)據(jù)

然后得到交集
drop_duplicates(keep=False)重復(fù)的不保存,如果keep='first’保留第一個,last則保留最后一個
pd.concat([data,data2]).drop_duplicates(keep=False)

三、xlwings對Excel的操作

xlwings的強(qiáng)大不用我多說吧,xls和xlsx操作都支持,app調(diào)用能支持wps、Excel,就是調(diào)用wps不容易。支持xls和xlsx,能讀能寫,對單元格操作、按行寫入,按列寫入,最主要的是xlwings的api接口較多,能對Excel做很多操作。我主要講一些我用到的簡單操作:

1)xlwings打開并寫入的框架

import xlwings as xw
#visible=False也就是不顯示Excel的操作,add_book=False就是不增加新的工作簿
app = xw.App(visible=False,add_book=False)
#打開表格test.xls
wb = app.books.open('test.xls')
#增加新建一個工作簿
wb = app.books.add('test.xls')
#增加一個sheet
sheet = wb.sheets.add('123')
#不增加直接讀?。?/code>
sheet = wb.sheets['Sheet']
#記得保存寫入內(nèi)容,不然白給
wb.save()
#這個關(guān)不關(guān)閉影響不大,因?yàn)樽詈骯pp退出就好像我們平常直接關(guān)閉關(guān)閉瀏覽器,同時關(guān)閉所有頁面一樣,不一定需要先關(guān)閉一個個頁面再關(guān)閉瀏覽器
wb.close()
app.quit()
#當(dāng)excel正常退出不容易的時候可以用kill()直接殺死進(jìn)程 app.kill()

2)寫入單元格、寫入列、寫入行

#pandas讀取后的數(shù)據(jù)怎么用xlwings寫入
#其實(shí)沒有很復(fù)雜,很簡單和單元格寫入一樣
sheet.range('A1').value = data``#代表著從A1單元格開始寫入data的數(shù)據(jù)
因?yàn)橐话銇碚f,一個單元格就寫入一個數(shù)據(jù),并不會寫入一個列表
#當(dāng)你需要寫入一個數(shù)據(jù)時也是用這個方法
sheet.range('A1').value = 'lision'
寫入一行數(shù)據(jù):
sheet.range('A1').options(transpose=False).value = ['姓名','語文','數(shù)學(xué)','英語','總分']
寫入一列數(shù)據(jù):(注意你寫入的數(shù)據(jù)需要是一個列表,然后開始格是A2,一直默認(rèn)寫到結(jié)束)
sheet.range('A2').options(transpose=True).value = data['姓名'].tolist()
#或者
sheet.range('A2').value = data['姓名'].tolist()
如果你想在一個范圍內(nèi)寫,則
sheet.range('A2:A15').options(transpose=True).value = data['姓名'].tolist()

3)其他參考學(xué)習(xí)鏈接:

xlwings創(chuàng)建工作表
xlwings的操作
xlwings改樣式

4)小結(jié):

1、xlwings功能強(qiáng)大,操作方便可以使用
2、xlwings按行寫入、按列寫入不需要循環(huán),執(zhí)行速度是比較快的
3、xlwings支持挺多api的接口,讀者們可以自行搜索研究一下
4、xlwings寫入后記得保存和關(guān)閉app,不然再跑的時候跑出bug
5、再寫入一個文件的時候記得先把文件關(guān)閉,不要打開著。

四、openpyxl對Excel的操作

openpyxl只支持對xlsx文件的操作,不支持xls,也是很好用的。

1)打開Excel文件、寫入pandas的數(shù)據(jù)

方法一(適用于新建文件(工作簿),新建表格寫入):
#導(dǎo)入openpyxl庫的Workbook函數(shù)
from openpyxl import Workbook
fromopenpyxl.utils.dataframeimportdataframe_to_rows
book = Workbook()
sheet = book.active
#這種寫入行的方法適合pandas讀取的數(shù)據(jù)data
for row in dataframe_to_rows(data,index=False,header=True):
sheet.append(row)
sheet.title = '終極8班'
book.save('.\test\班級成績情況.xlsx')
方法二(適用于知道表格,追加寫入、修改):
import openpyxl
wb = openpyxl.load_workbook('test.xlsx')
sheet1 = wb.get_sheet_by_name("Sheet1")
#獲取最大行數(shù):
rows = sheet1.max_row
#獲取最大列數(shù)
cols = sheet1.max_column
#寫入行的方法
for row in range(1,10):
for col in range(1,4):
sheet1.cell(row,col).value = f'{row},{col}'
#寫入單元格
sheet1.cell(rows+1, 1).value = '周瑜'
wb.save('.\test\班級成績情況.xlsx')
方法二還有一個方式寫入pands的數(shù)據(jù),是直接用pandas處理后的數(shù)據(jù)寫入的
import openpyxl
import pandas as pd
book = openpxl.load_workbook('test.xlsx')
writer = pd.ExcelWriter('test.xlsx', engine='openpyxl')
writer.book = book
#寫入數(shù)據(jù)
data.to_excel(writer,sheet_name="終極8班",index=False)
writer.save()

2)設(shè)置單元格樣式

#導(dǎo)入庫的函數(shù)
fromopenpyxl.stylesimportAlignment
#居中樣式
align=Alignment(horizontal='center',vertical='center')
#設(shè)置高度,設(shè)置寬度就是把height換成weight就好啦,單位是磅哦
sheet_name.row_dimensions[rows+1].height = 50.15
#(1,1)這個單元格調(diào)用上面居中的align
sheet_name.cell(1,1).alignment = align
sheet_name.cell(1,1).value = "亞索"

3)其他參考學(xué)習(xí)鏈接:

openpyxl單元格內(nèi)容居中
openxl設(shè)置行高、行寬

4)小結(jié):

1、openpyxl對于xlsx文件的操作是很舒服的,簡單方便,但是缺點(diǎn)就是只能xlsx格式,所以在調(diào)用openpyxl的時候,記得檢查一下你的文件格式
2、openpyxl對表格操作完畢后記得save,保存一下

五、os對文件夾的常用操作

1)查看該路徑下的文件

import os
filePath = r'D:\Python數(shù)據(jù)挖掘與數(shù)據(jù)分析'
#這個時候取出來的是一個文件名列表,對于單獨(dú)的文件(文本文件、表格、壓縮包這些)是有后綴的,文件夾是沒有后綴的
fileNames = os.listdir(filePath)
#需要遍歷列表輸出才有
for filename in fileNames:
print(filename)

1、找目標(biāo)文件怎么找
#可以用re正則庫的正則表達(dá)式尋找
import re #導(dǎo)入re正則庫
obj = re.compile('(.*?).csv')
for filename in fileNames:
#match是判斷該文本是否與模板obj匹配,不匹配則為false
if obj.match(filename):
print(filename)

2、提取某后綴文件的文件名(.csv)
#和上面的基本一樣,做個細(xì)微的字符串提取就好啦
import re #導(dǎo)入re正則庫
obj = re.compile('(.*?).csv')
for filename in fileNames:
#match是判斷該文本是否與模板obj匹配,不匹配則為false
if obj.match(filename):
#str.split('.')按"."分割字符串,原來的字符串變成了列表,列表第一個元素就是文件名
print(filename.split('.')[0])

3、判斷該路徑是否存在某文件
if os.path.exists('D:\Python數(shù)據(jù)挖掘與數(shù)據(jù)分析\wenshi.csv'):
print("文件存在")
在這里插入圖片描述

2)重命名

#rename不僅可以重命名還可以更改文件的格式,從csv該到xlsx
os.rename('D:\Python數(shù)據(jù)挖掘與數(shù)據(jù)分析\wenshi.csv','D:\Python數(shù)據(jù)挖掘與數(shù)據(jù)分析\wenshi.xlsx')

3)刪除文件

用remove函數(shù)
os.remove('D:\Python數(shù)據(jù)挖掘與數(shù)據(jù)分析\del.xls')

4)復(fù)制文件

本人也是用shutil復(fù)制文件的
import shutil
#也是可以改變文件格式和名字的,注意權(quán)限問題,就是他不能簡單地寫入c盤(一般受限制)
shutil.copy('D:\Python數(shù)據(jù)挖掘與數(shù)據(jù)分析\wenshi.xlsx','C:\Users\86188\Desktop\wenshi.csv')

os、shutil移動、復(fù)制文件

5)其他參考鏈接:

os的文件操作

6)插一個解壓zip文件的方法在這吧

import zipfile
zipname = 'wenshi.zip'
with zipfile.ZipFile(filePath+'/'+zipname) as zf:
#讀取zip里面文件的文件名,生成一個列表,列表內(nèi)的文件名包括文件后綴哦
sname = zf.namelist()
#extractall是解壓到filePath路徑的方法
zf.extractall(path=filePath)

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服