Excel文件處理之pandas


pandas可以用來處理多種存儲類型的數據,比如excel、csv、html、sql......查看pandas.read_XX方法可以看出。本文主要總結對excel的處理。pandas依賴處理Excel的xlrd等模塊,這些模塊安裝即可,不需要import。
 
1讀取
 
1.1多個sheet
import  pandas as pd
a=pd.read_excel("3.xlsx",sheet_name=[1,2]) #獲取第2個和第3個sheet
c=a.values #獲取上述sheets所有數據,注意多個sheets時不能用head()方法
 
1.2單個sheet
import  pandas as pd
a=pd.read_excel("3.xlsx",sheet_name="Top10") #或者寫成sheet_name=1,1表示index
b=a.head() #默認讀取上述sheet前5行的數據
c=a.values #獲取上述sheet所有數據,單個sheet也能用values方法
 
 
1.3獲取行列值、單元格值( 所有索引都不包含表頭)
import  pandas as pd
a=pd.read_excel("3.xlsx",sheet_name=1)
 
#以下都秉承格式 a.ix[行,列] 
cellvalue=a.ix[0,0] #表示單元格 第1行第1列的值
cellvalue=a.ix[0,'name']  #表示單元格 第1行列'name'的值
 
rowvalues=a.ix[0] #表示第1行的所有值,注意是表頭下面的第1行!a.ix[0] 等價 a.ix[0,:]
rowsvalues=a.ix[[0,1,3]]#表示第1、2、4行的所有值,注意嵌套列表!a.ix[[0,1,3]] 等價 a.ix[[0,1,3],:]
 
colvalues=a.ix[:,0] #表示第1列的所有值
colsvalues=a.ix[:,['name','score']] #表示列'name'和'score'的所有值
 
rangevalues=a.ix[[0,1,4],['name','score']] #表示 第1、2、5行~列'name'列'score'  區域的所有值
 
1.4 a.ix[0]和a.ix[0].values的返回格式不同
b=a.ix[1].values
print type(b)  
輸出:《type 'numpy.ndarray'》
print b 
輸出:[u'a2' u'N1' 99]
 
c=a.ix[1]
print type(c) 
輸出:《class 'pandas.core.series.Series'》 
print c 
輸出:
name    a2
grade    N1
score    99
Name: 1, dtype: object
 
 
 
2寫存
 
import  pandas as pd
a=pd.read_excel("3.xlsx",sheet_name=1) #讀取第2個sheet
a.ix[1,1]='123456' #賦值
a.to_excel('3-2.xlsx', sheet_name='num', index=False, header=True) #保存,sheet命名
 
上述代碼有2大弊端:
原sheet的range(3,2)區域內必須有值,否則報錯:cannot set by positional indexing with enlargement;
保存時僅生成被處理sheet,不需處理的sheet不會復制過來。excel同名會覆蓋原文件,極易造成sheet丟失。
 
如此看來,不如openpyxl庫好用。
 
 
 
3 相對路徑

train = pd.read_csv("data/train.csv")
注意不要寫成("/data/train.csv")或者其它。

 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM