欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

Python3-操作excle(xlrd&xlwt&xlutils和

系統 2105 0

一,前言

入職數據分析以后,肯定要涉及到python處理excle,特別是涉及到對excle的一些重復操作時,也許能提升一些效率;因此,有必要對python操作excle進行學習。

現有操作excle的工具包有很多,例如 xlrd&xlwt&xlutils 以及強大的 pandas ,此外還有別的工具包,但受限于平臺或者安裝方式,都沒有以上兩種常用。(其中,pandas不僅是用來操作excle,而是一整套強大的工具包。)

知乎有一篇文章些不同python包操作excle的對比,其中有些內容不太準確,需要自己驗證。(知乎鏈接:https://zhuanlan.zhihu.com/p/23998083)

下面對不同模塊對excle進行操作的基本方法進行解釋和練習,更高級復雜的操作還需要日后繼續深入學習打磨。

二,xlrd,xlwt讀寫excle

下面是一個讀excle的例子:

            
              # -*- coding: utf-8 -*-
"""
Created on Tue Jul 30 17:27:40 2019

@author: chao
"""
import xlrd
import sys
f1 = xlrd.open_workbook(r'C:\Users\chao\Desktop\dataana.xlsx')#打開的這個excel必須存在,否則會報錯
filename = sys.argv[0] #獲取文件全路徑
print('opening the file:'+str(filename)) 
#獲取所有sheet頁的名字
print('all sheets:'+str(f1.sheet_names()))
#按名字查找第二張表單
# sheet=wb.sheet_by_name('abc2')#根據sheet頁的名字獲取sheet頁
sheet = f1.sheet_by_index(0)#根據sheet頁的索引獲取sheet頁
#獲取sheet頁的行數和列數
print('num of rows:'+str(sheet.nrows))
print('num of columns:'+str(sheet.ncols))

for rownum in range(sheet.nrows):  #循環取每行的數據

    print(sheet.row_values(rownum))#取每行的數據

    #按照索引打印對應單元格內容
    #cell_location_value=sheet.cell(0,0).value #獲取指定單元格的值,第一個值是列,第二個值是行
    #print(cell_location_value)
            
          

下面是一個寫excle的例子:

            
              # -*- coding: utf-8 -*-
"""
Created on Tue Jul 30 17:37:55 2019

@author: chao
"""
import xlwt
title = ['姓名','年齡','性別','分數']
stus = [['mary',20,'女',89.9],['rmay',21,'女',89.9],['amry',22,'女',89.9],['yram',23,'女',89.9]]
#新建一個excel對象
f1 = xlwt.Workbook()
#添加一個名為sheet1課程表的sheet頁
sheet = f1.add_sheet('sheet1')
for i in  range(len(title)):#寫入表頭
    sheet.write(0,i,title[i])#寫入每行,第一個值是行,第二個值是列,第三個是寫入的值
for i in range(len(stus)):
    if i !=0:#如果不是表頭的話
        for j in range(4):
            sheet.write(i,j,stus[i][j])#循環寫入每行數據
 #保存‘test1.xls’文件
f1.save(r'C:\Users\chao\Desktop\test1.xls')#保存xlsx后,會顯示文件損壞打不開
            
          

xlwt無法完成對已有文件的追加或修改,因此需要下面的xlutils對已有文件進行操作。

三,xlutils修改excle

xlutils實質上仍然需要xlrd和xlwt來完成操作,例子如下:

            
              # -*- coding: utf-8 -*-
"""
Created on Tue Jul 30 17:37:55 2019

@author: chao
"""
#import xlwt
import xlrd
from xlutils.copy import copy
f1 = xlrd.open_workbook(r'C:\Users\chao\Desktop\dataana.xlsx')
# 復制為新的xlsx
wt_f1 = copy(f1)
# 修改新的xls
wt_sheet = wt_f1.get_sheet(0)
wt_sheet.write(24,1,'追加內容')
# 保存修改
wt_f1.save(r'C:\Users\chao\Desktop\dataana_copy.xls')
            
          

四,pandas創建,讀寫excle

先嘗試創建一個空xlsx:

            
              # -*- coding: utf-8 -*-
"""
Created on Tue Jul 30 19:39:51 2019

@author: chao
"""


import pandas as pd
 
 
# 構建數據
df=pd.DataFrame()#構造原始數據文件

# 保存文件
df.to_excel(r'C:\Users\chao\Desktop\pandas_test1.xlsx')
            
          

代碼運行后能成功保存文件并且可以打開,說明pandas是支持新版本的excle的。

創建指定內容的excle文件:

            
              import pandas as pd
df=pd.DataFrame({'ID':[1,2,3],'Name':['XiaoMing','XiaoHong','XiaoLan']})
df=df.set_index('ID') #指定索引為ID
df.to_excel(r'C:\Users\chao\Desktop\pandas_test1.xlsx')

            
          

注意,如果不指定索引,pandas會在左側自動添加一列索引。

pandas讀取excle:

            
              df=pd.read_excel(r'C:\Users\chao\Desktop\dataana.xlsx',sheet_name='Sheet1')
#sheet_name用來指定讀取的sheet,省略時默認讀取第一個sheet
data=df.head()#默認讀取前5行的數據
print("read lines:\n{0}".format(data))#格式化輸出
#{}效力等同%
            
          

打印出來,會發現,pandas讀取數據時也會自動加上索引:

Python3-操作excle(xlrd&xlwt&xlutils和pandas)_第1張圖片

讀取指定行列:

            
              # -*- coding: utf-8 -*-
"""
Created on Tue Jul 30 19:39:51 2019

@author: chao
"""
import pandas as pd
df=pd.read_excel(r'C:\Users\chao\Desktop\dataana.xlsx',sheet_name='Sheet1')
data=df.loc[1:3]['Age']
print("read lines:\n{0}".format(data))
            
          

注意,網上關于pandas很多教程有點老了,新的pandas已經棄用了ix,現在用iloc和loc。

修改指定行列并保存:

            
              # -*- coding: utf-8 -*-
"""
Created on Tue Jul 30 19:39:51 2019

@author: chao
"""
import pandas as pd
df=pd.read_excel(r'C:\Users\chao\Desktop\dataana.xlsx',sheet_name='Sheet1')
df.loc[22,'Age']=18.888
df=df.set_index('Name')
print("read lines:\n{0}".format(df))
pd.DataFrame(df).to_excel(r'C:\Users\chao\Desktop\pandas_test1.xlsx', sheet_name='Sheet1')
            
          

保存結果:

Python3-操作excle(xlrd&xlwt&xlutils和pandas)_第2張圖片

由上述結果可知,pandas能夠對新版本的excle進行支持,而xlrd&xlwt&xlutils并不支持xlsx。而xlrd&xlwt&xlutils在有些博客的實驗里,讀取速度比pandas更快,而后續需要對數據進行分析的話,還是采用pandas是比較好的。

?


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 久久国内精品 | 欧美日韩精品一区二区三区蜜桃 | 碰超丶在线免费 | 欧美激情视频网 | 久热久操| 国产一区| 亚洲精品久久久久久无码AV | 精品久久一区二区 | 国产精品福利资源在线 | 国产精品国产精品国产专区不卡 | 欧美精品在线视频观看 | 黄免费在线 | 国产精品成人一区二区三区 | 毛片在线免费 | 91精品国产综合久久婷婷香蕉 | 91香蕉人成app| 九九热在线视频免费观看 | 操人视频在线观看 | 97超级碰碰在线看视频免费超 | 日日摸夜夜摸狠狠摸日日碰夜夜做 | 久久中文字幕一区二区三区 | 婷婷97狠狠的狠狠的爱 | 久久综合九色综合国产 | 亚洲精品影院 | 成人午夜免费视频毛片 | 日韩在线精品视频 | 国产亚洲欧美视频 | 日本三级韩国三级欧美三级 | 6080yy精品一区二区三区 | 国产在线观看福利片 | 亚洲国产精品一区 | 成人在线观看国产 | 国产精品高潮呻吟久久aⅴ码 | 色婷婷精品国产一区二区三区 | α片毛片 | 亚洲欧美在线视频免费 | 美女视频黄在线观看 | 四虎影视永久免费观看网址 | 国产成人啪精品视频免费网站软件 | 99久久精品免费观看国产 | 日日骚|