Pandas讀取并修改excel的示例代碼
一、前言
最近總是和excel打交道,由于數(shù)據(jù)量較大,人工來(lái)修改某些數(shù)據(jù)可能會(huì)有點(diǎn)浪費(fèi)時(shí)間,這時(shí)候就使用到了Python數(shù)據(jù)處理的神器—–Pandas庫(kù),話不多說(shuō),直接上Pandas。
二、安裝
這次使用的python版本是python2.7,安裝python可以去python的官網(wǎng)進(jìn)行下載,這里不多說(shuō)了。
安裝完成后使用Python自帶的包管理工具pip可以很快的安裝pandas。
pip install pandas
如果使用的是Anaconda安裝的Python,會(huì)自帶pandas。
三、read_excel()介紹
首先可以先創(chuàng)建一個(gè)excel文件當(dāng)作實(shí)驗(yàn)數(shù)據(jù),名稱為example.xlsx,內(nèi)容如下:
| name | age | gender |
|---|---|---|
| John | 30 | male |
| Mary | 22 | female |
| Smith | 32 | male |
這里是很簡(jiǎn)單的幾行數(shù)據(jù),我們來(lái)用pandas實(shí)際操作一下這個(gè)excel表。
# coding:utf-8
import pandas as pd
data = pd.read_excel('example.xlsx', sheet_name='Sheet1')
print data
結(jié)果如下:

這里使用了read_excel()方法來(lái)讀取excel,來(lái)看一個(gè)read_excel()這個(gè)方法的API,這里只截選一部分經(jīng)常使用的參數(shù):
pd.read_excel(io, sheet_name=0, header=0, names=None, index_col=None, usecols=None)
這里主要參數(shù)為io,sheet_name,header,usecols和names
- io:excel文件,如果命名為中文,在python2.7中,需要使用decode()來(lái)解碼成unicode字符串,例如: pd.read_excel('示例'.decode('utf-8))
- sheet_name:返回指定的sheet,如果將sheet_name指定為None,則返回全表,如果需要返回多個(gè)表,可以將sheet_name指定為一個(gè)列表,例如['sheet1', 'sheet2']
- header:指定數(shù)據(jù)表的表頭,默認(rèn)值為0,即將第一行作為表頭。
- usecols:讀取指定的列,例如想要讀取第一列和第二列數(shù)據(jù):
pd.read_excel("example.xlsx", sheet_name=None, usecols=[0, 1])
四、使用
這里先來(lái)一個(gè)在機(jī)器學(xué)習(xí)中經(jīng)常使用的:將所有g(shù)ender為male的值改為0,female改為1。
# coding:utf-8
import pandas as pd
from pandas import DataFrame
# 讀取文件
data = pd.read_excel("example.xlsx", sheet_name="Sheet1")
# 找到gender這一列,再在這一列中進(jìn)行比較
data['gender'][data['gender'] == 'male'] = 0
data['gender'][data['gender'] == 'female'] = 1
print data
結(jié)果如下:

需要注意的是,這里的data為excel數(shù)據(jù)的一份拷貝,對(duì)data進(jìn)行修改并不會(huì)直接影響到我們?cè)瓉?lái)的excel,必須在修改后保存才能夠修改excel。保存的代碼如下:
DataFrame(data).to_excel('example.xlsx', sheet_name='Sheet1', index=False, header=True)
這時(shí)候我們?cè)俅蜷_(kāi)example.xlsx文件看看是否更改了:
如果我們想要新增加一列或者一行數(shù)據(jù)怎么辦呢?這里給出參考:
新增列數(shù)據(jù):
data['列名稱'] = None
新增行數(shù)據(jù),這里行的num為excel中自動(dòng)給行加的id數(shù)值
data.loc[行的num] = [值1, 值2, ...]
以上面的數(shù)據(jù)為例:
# coding:utf-8
import pandas as pd
from pandas import DataFrame
data = pd.read_excel("example.xlsx", sheet_name='Sheet1')
# 增加行數(shù)據(jù),在第5行新增
data.loc[5] = ['James', 32, 'male']
# 增加列數(shù)據(jù),給定默認(rèn)值None
data['profession'] = None
# 保存數(shù)據(jù)
DataFrame(data).to_excel('example.xlsx', sheet_name='Sheet1', index=False, header=True)
打開(kāi)excel看到的結(jié)果如下:

說(shuō)完了增加一行或一列,那怎樣刪除一行或一列呢?
import pandas as pd
from pandas import DataFrame
data = pd.read_excel("example.xlsx", sheet_name='Sheet1')
# 刪除gender列,需要指定axis為1,當(dāng)刪除行時(shí),axis為0
data = data.drop('gender', axis=1)
# 刪除第3,4行,這里下表以0開(kāi)始,并且標(biāo)題行不算在類
data = data.drop([2, 3], axis=0)
# 保存
DataFrame(data).to_excel('example.xlsx', sheet_name='Sheet1', index=False, header=True)
這時(shí)候打開(kāi)excel可以看見(jiàn)gender列和除標(biāo)題行的第3,4行被刪除了。

總結(jié)
pandas除了上述的基本功能以外,還有其它更高級(jí)的操作,想要進(jìn)一步學(xué)習(xí)的小伙伴們可以去pandas網(wǎng)站進(jìn)行學(xué)習(xí)。
相關(guān)文章
Python基礎(chǔ)學(xué)習(xí)之條件控制語(yǔ)句小結(jié)
如果我需要設(shè)置一個(gè)死循環(huán),然后靠條件來(lái)終止,怎么辦?一個(gè)很簡(jiǎn)單的問(wèn)題,但是我卻沒(méi)有說(shuō),這一篇本應(yīng)該在分支控制語(yǔ)句里面的,現(xiàn)在只能拿出來(lái)水文再寫一篇了,需要的朋友可以參考下2021-05-05
python 循環(huán)結(jié)構(gòu)練習(xí)題
這篇文章主要給大家分享的是python 循環(huán)結(jié)構(gòu)練習(xí)題,求兩個(gè)數(shù)最大公約數(shù)、整數(shù)反轉(zhuǎn):如12345,輸出54321等多個(gè)練習(xí)題,需要的朋友可以參考一下2021-11-11
10個(gè)Python Excel自動(dòng)化腳本分享
django創(chuàng)建最簡(jiǎn)單HTML頁(yè)面跳轉(zhuǎn)方法
Python unittest 自動(dòng)識(shí)別并執(zhí)行測(cè)試用例方式

