通過Pandas庫可以從多種格式的數(shù)據(jù)文件中讀取數(shù)據(jù)似嗤,也可以將處理后的數(shù)據(jù)寫入到這些文件中。pandas庫中的pd.read_excel()相較之前的xlrd庫的讀表操作更加簡單湘换,針對(duì)一般批量的數(shù)據(jù)處理選擇pandas庫操作是不錯(cuò)的選擇骂铁。
一暮现、讀取Excel文件的函數(shù)
- 讀取函數(shù)為:pd.read_excel()嘹承,函數(shù)的一些參數(shù)為:
pd.read_excel(io, sheet_name=0,header=0,skiprows=None,index_col=None,names=None,
arse_cols=None,date_parser=None,na_values=None,thousands=None,
convert_float=True,has_index_names=None,converters=None,dtype=None,
true_values=None,false_values=None,engine=None,squeeze=False,**kwds)
二、讀取函數(shù)的相關(guān)參數(shù)
io
- io指的是要讀取的excel 文件存儲(chǔ)路徑.
- 可以是絕對(duì)路徑捌刮,也可以是相對(duì)路徑碰煌。
sheet_name
- sheet_name:sheet_name默認(rèn)為0,即返回第一個(gè)工作表糊啡,返回多表使用sheet_name=[0,1]或sheet_name=["工作表1","工作表2"]拄查,若sheet_name= None是返回所有工作表 吁津。
- 注意:int/string返回的是DataFrame棚蓄,而None和list返回的是dict of DataFrame堕扶。
- 案例:
import pandas as pd
pd.read_excel("要打開的EXCEL文件.xlsx",
sheet_name = 1) # 讀取EXCEL工作簿中的第二個(gè)工作表
pd.read_excel("要打開的EXCEL文件.xlsx",
sheet_name = “二月”) # 讀取EXCEL工作簿中的工作表名為‘二月’的工作表
pd.read_excel("要打開的EXCEL文件.xlsx",
sheet_name =None ) # 讀取EXCEL工作簿中的所有工作表,是一個(gè)表格的字典梭依。
df_dict = pd.read_excel("要打開的EXCEL文件.xlsx",
sheet_name = [1,“二月”]) #讀取EXCEL工作簿中的第二個(gè)工作表和表名為‘二月’的工作表
print(df_dict[1])
print(df_dict["二月"])
header
- header :指定作為列索引的行(即通常說的標(biāo)題行)稍算,默認(rèn)0,即取第一行役拴,數(shù)據(jù)為列名行以下的數(shù)據(jù)糊探;若數(shù)據(jù)不含標(biāo)題行,則設(shè)定 header = None河闰;
index_col
- index_col:指定作為行索引的列科平。
usecols
- usecols:指定只使用哪些列
-- None:全部(默認(rèn))
-- str:如:usecols = 'A,C:F' # 這里的A,C,F指的是EXCEL表中的A列等。
-- int-list:如:usecols = [0,2]
-- str-list:如:usecols = ['姓名','成績']
-- lambda函數(shù):如:lambda x: x == "姓名" - 建議使用str-list 方法姜性。因?yàn)楫?dāng)EXCEL表結(jié)構(gòu)發(fā)生變化時(shí)瞪慧,易于代碼維護(hù)。
skiprows
-
skiprows:省略指定行數(shù)的數(shù)據(jù)
示例圖片
import pandas as pd
pd.read_excel("要打開的EXCEL文件.xlsx",
skiprows = [0,2] ) # 跳過索引為0和2的兩行部念,用列表形式表達(dá)弃酌。
names
names:指定使用的標(biāo)題行列名列表,如果表格不包含標(biāo)題行儡炼,則應(yīng)顯式傳遞header = None
dtype
dtype:是一個(gè)字典妓湘,表示方法{‘列名’:'類型'},用來設(shè)置列的數(shù)據(jù)類型乌询。
- int8/int16/int32/int64(默認(rèn)): 整型
- float16/float32/float64(默認(rèn)):浮點(diǎn)型
- str/string: 字符串
- bool: 布爾型
- categort: 分類
- datetime64[ns]: 時(shí)間戳(納秒)
- period[Y/M/D]: 時(shí)間周期(年/月/日)
- object: python對(duì)象混合類型
# 類型的查看
import pandas as pd
df = pd.read_excel("要打開的EXCEL文件.xlsx")
df.dtypes # 查看讀出數(shù)據(jù)的數(shù)據(jù)類型
在這里會(huì)發(fā)現(xiàn)榜贴,字符型數(shù)據(jù)被識(shí)別為 object 類型。需要注意的是不能把int64類型直接轉(zhuǎn)化為str類型妹田,這時(shí)可用下列代碼進(jìn)行轉(zhuǎn)換:
df['列名'] = df['列名'].astype('string')
parse_dates
parse_dates:將表中的日期數(shù)據(jù)轉(zhuǎn)化為日期類型竣灌,例如:
在這里就用到了一個(gè)轉(zhuǎn)換,代碼如下:
parse_dates = [0,1,2,3,4,5,6] # 將列索引為0秆麸,1初嘹,2,3沮趣,4屯烦,5,6列中的數(shù)據(jù)轉(zhuǎn)換為日期類型
將多列數(shù)據(jù)拼接成一個(gè)日期格式類型房铭,例如:
轉(zhuǎn)換代碼:
import pandas as pd
df = pd.read_excel("要打開的EXCEL文件.xlsx",parse_dates = [[0, 1, 2]])
以上代碼中驻龟,不使用索引,使用列名也是可以的缸匪,即:
import pandas as pd
df = pd.read_excel("要打開的EXCEL文件.xlsx",parse_dates = [['年', '月', '日']])
還可以使用字典的形式翁狐,指定合并后列名,即:
import pandas as pd
df = pd.read_excel("要打開的EXCEL文件.xlsx",parse_dates = {'日期': ['年', '月', '日']})
date_parser
date_parse須與parse_dates配合使用凌蔬,可將形如以下格式的數(shù)據(jù)轉(zhuǎn)換為日期格式:
轉(zhuǎn)換代碼如下:
import pandas as pd
df = pd.read_excel(
"要打開的EXCEL文件.xlsx",
parse_dates = [0],
date_parser = lambda x: pd.to_datetime(
x,format = '%Y年%m月%d日'
)
) # 這里的 parse_dates = [0]露懒,用來指定要轉(zhuǎn)換的列
na_values
na_values:識(shí)別為NaN(缺失值)的其他字符串闯冷。
- NaN意為 Not a Number <float>
- na_values基本用法:
-- na_values = 0
-- na_values = '空值'
-- na_values = ['空值',0]
-- na_values = {'列名': ['空值',0] }
小坑:如果單元格里有空格,讀取后不會(huì)顯示 NaN懈词。
將單元格中的0替換為NaN
import pandas as pd
df = pd.read_excel(
"要打開的EXCEL文件.xlsx",
na_values = 0
)
將單元格中的字符串 ‘a(chǎn)' 替換為NaN
import pandas as pd
df = pd.read_excel(
"要打開的EXCEL文件.xlsx",
na_values = 'a'
)
用列表形式傳入蛇耀,將單元格中的指定值替換為NaN ,如:將單元格中的字符串’a‘,0和空格替換為 NaN
import pandas as pd
df = pd.read_excel(
"要打開的EXCEL文件.xlsx",
na_values = [ 'a',0,' ']
)
用字典形式傳入坎弯,將指定列單元格中的指定值替換為NaN纺涤,如:
import pandas as pd
df = pd.read_excel(
"要打開的EXCEL文件.xlsx",
na_values = {'列名',[ 'a',0,' ']}
converters
converters:是一個(gè)值轉(zhuǎn)換函數(shù),默認(rèn)為None抠忘,傳入值為一個(gè)字典撩炊。如:
要去掉這些空格符號(hào),就可使用converters進(jìn)行轉(zhuǎn)換:
import pandas as pd
df = pd.read_excel(
"要打開的EXCEL文件.xlsx",
converters ={
'貨號(hào)': lambda x: x.strip()
}
)
# 也可不用lambda函數(shù):
import pandas as pd
df = pd.read_excel(
"要打開的EXCEL文件.xlsx",
converters ={
'貨號(hào)': str.strip
}
)
也可以用它來進(jìn)行一些簡單的計(jì)算崎脉,如:將所有的銷量值都加上5
import pandas as pd
df = pd.read_excel(
"要打開的EXCEL文件.xlsx",
converters ={
'銷量': lambda x: x + 5
}
)
今天就整理到這里衰抑,還有些參數(shù)比較簡單。不筆記了荧嵌。