目錄
- 1.read_excel函數原型
- 2.參數使用舉例
- 2.1. io和sheet_name參數
- 2.2. header參數
- 2.3. skipfooter參數
- 2.5. parse_dates參數
- 2.6. converters參數
- 2.7. na_values參數
- 2.8. usecols參數
- 總結
Pandas read_excel()參數使用詳解
1.read_excel函數原型
def read_excel(io, sheet_name=0, header=0, names=None, index_col=None, parse_cols=None, usecols=None, squeeze=False, dtype=None, engine=None, converters=None, true_values=None, false_values=None, skiprows=None, nrows=None, na_values=None, keep_default_na=True, na_filter=True, verbose=False, parse_dates=False, date_parser=None, thousands=None, comment=None, skip_footer=0, skipfooter=0, convert_float=True, mangle_dupe_cols=True, **kwds)
參數說明:
2.參數使用舉例
2.1. io和sheet_name參數
【例1】通過io和sheet_name讀取Excel表
records.xlsx內容:
date val percent2014/3/1 0.947014982 10%2014/6/1 0.746103818 11%2014/9/1 0.736764841 12%2014/12/1 0.724937624 13%2015/3/1 0.85043738 14%2015/6/1 0.332503212 15%2015/9/1 0.75289366 16%2015/12/1 0.358275104 17%2016/3/1 0.077250716 18%2016/6/1 0.436182277 19%2016/9/1 0.424714671 20%2016/12/1 0.842471104 21%2017/3/1 0.740035625 22%2017/6/1 0.183588529 23%2017/9/1 0.143363207 24%
Code:
In [166]: import pandas as pd ...: df = pd.read_excel(io="records.xlsx", sheet_name="Sheet1") ...: df ...:Out[166]: date val percent0 2014/3/1 0.947015 10%1 2014/6/1 0.746104 11%2 2014/9/1 0.736765 12%3 2014/12/1 0.724938 13%4 2015/3/1 0.850437 14%5 2015/6/1 0.332503 15%6 2015/9/1 0.752894 16%7 2015/12/1 0.358275 17%8 2016/3/1 0.077251 18%9 2016/6/1 0.436182 19%10 2016/9/1 0.424715 20%11 2016/12/1 0.842471 21%12 2017/3/1 0.740036 22%13 2017/6/1 0.183589 23%14 2017/9/1 0.143363 24%
說明:此處io和sheet_name參數都可以不明確指定,直接使用:
df = pd.read_excel("records.xlsx", "Sheet1")
如果records.xlsx文件只有一張表,或者要讀取得數據表為第一張表,sheet_name參數可以省略:
df = pd.read_excel("records.xlsx")
2.2. header參數
【例2】通過header參數指定表頭位置
records.xlsx內容:
2020年XXX表date val percent2014/3/1 0.947014982 10%2014/6/1 0.746103818 11%2014/9/1 0.736764841 12%2014/12/1 0.724937624 13%2015/3/1 0.85043738 14%2015/6/1 0.332503212 15%2015/9/1 0.75289366 16%2015/12/1 0.358275104 17%2016/3/1 0.077250716 18%2016/6/1 0.436182277 19%2016/9/1 0.424714671 20%2016/12/1 0.842471104 21%2017/3/1 0.740035625 22%2017/6/1 0.183588529 23%2017/9/1 0.143363207 24%
我們在【例1】得基礎上為records.xlsx得“Sheet1”表增加了一行表頭說明,如果繼續使用【例1】得代碼,得到得結果是這樣得:
In [169]: import pandas as pd ...: df = pd.read_excel("records.xlsx", "Sheet1") ...: df ...:Out[169]: 2020年XXX表 Unnamed: 1 Unnamed: 20 date val percent1 2014/3/1 0.947015 10%2 2014/6/1 0.746104 11%3 2014/9/1 0.736765 12%4 2014/12/1 0.724938 13%5 2015/3/1 0.850437 14%6 2015/6/1 0.332503 15%7 2015/9/1 0.752894 16%8 2015/12/1 0.358275 17%9 2016/3/1 0.077251 18%10 2016/6/1 0.436182 19%11 2016/9/1 0.424715 20%12 2016/12/1 0.842471 21%13 2017/3/1 0.740036 22%14 2017/6/1 0.183589 23%15 2017/9/1 0.143363 24%
這樣得到得列標及數據都不是我們想要得,這種情況下就需要通過header參數來指定表頭了,注意到表頭是在第2行,根據header參數得說明可知,行號是從0開始計算得,所以header參數應該為1.
Code:
In [170]: import pandas as pd ...: df = pd.read_excel("records.xlsx", "Sheet1", header=1) ...: df ...:Out[170]: date val percent0 2014/3/1 0.947015 10%1 2014/6/1 0.746104 11%2 2014/9/1 0.736765 12%3 2014/12/1 0.724938 13%4 2015/3/1 0.850437 14%5 2015/6/1 0.332503 15%6 2015/9/1 0.752894 16%7 2015/12/1 0.358275 17%8 2016/3/1 0.077251 18%9 2016/6/1 0.436182 19%10 2016/9/1 0.424715 20%11 2016/12/1 0.842471 21%12 2017/3/1 0.740036 22%
2.3. skipfooter參數
【例3】通過skipfooter參數忽略表尾數據
有時我們得數據是從第3方獲取到得,往往會在表得末尾添加一行“數據來源:xxx”.如:
2020年XXX表date val percent2014/3/1 0.947014982 10%2014/6/1 0.746103818 11%2014/9/1 0.736764841 12%2014/12/1 0.724937624 13%2015/3/1 0.85043738 14%2015/6/1 0.332503212 15%2015/9/1 0.75289366 16%2015/12/1 0.358275104 17%2016/3/1 0.077250716 18%2016/6/1 0.436182277 19%2016/9/1 0.424714671 20%2016/12/1 0.842471104 21%2017/3/1 0.740035625 22%2017/6/1 0.183588529 23%2017/9/1 0.143363207 24%數據來源: XXX
這種情況下,可以通過skipfooter參數來忽略該數據。
Code:
In [173]: import pandas as pd ...: df = pd.read_excel("records.xlsx", "Sheet1", header=1, skipfooter=1) ...: df ...:Out[173]: date val percent0 2014/3/1 0.947015 10%1 2014/6/1 0.746104 11%2 2014/9/1 0.736765 12%3 2014/12/1 0.724938 13%4 2015/3/1 0.850437 14%5 2015/6/1 0.332503 15%6 2015/9/1 0.752894 16%7 2015/12/1 0.358275 17%8 2016/3/1 0.077251 18%9 2016/6/1 0.436182 19%10 2016/9/1 0.424715 20%11 2016/12/1 0.842471 21%12 2017/3/1 0.740036 22%13 2017/6/1 0.183589 23%14 2017/9/1 0.143363 24%2.4. index_col參數
【例4】通過index_col參數指定DataFrame index
在【例3】中,查看我們讀取得到得DataFrame得索引:
In [174]: df.indexOut[174]: RangeIndex(start=0, stop=15, step=1)
它是一個自動添加得整型索引,但如果現在我想要使用“date”列作為索引,可以通過index_col參數指定:
In [175]: import pandas as pd ...: df = pd.read_excel("records.xlsx", "Sheet1", header=1, skipfooter=1,index_col=0) ...: df ...:Out[175]: val percentdate2014/3/1 0.947015 10%2014/6/1 0.746104 11%2014/9/1 0.736765 12%2014/12/1 0.724938 13%2015/3/1 0.850437 14%2015/6/1 0.332503 15%2015/9/1 0.752894 16%2015/12/1 0.358275 17%2016/3/1 0.077251 18%2016/6/1 0.436182 19%2016/9/1 0.424715 20%2016/12/1 0.842471 21%2017/3/1 0.740036 22%2017/6/1 0.183589 23%2017/9/1 0.143363 24%In [176]: df.indexOut[176]:Index(['2014/3/1', '2014/6/1', '2014/9/1', '2014/12/1', '2015/3/1', '2015/6/1', '2015/9/1', '2015/12/1', '2016/3/1', '2016/6/1', '2016/9/1', '2016/12/1', '2017/3/1', '2017/6/1', '2017/9/1'], dtype='object', name='date')
或者改成這樣:
df = pd.read_excel("records.xlsx", "Sheet1", header=1, skipfooter=1, index_col=“date”)
2.5. parse_dates參數
查看【例4】index得參數類型:
In [183]: type(df.index[0])Out[183]: str
發現并不是我們想要得日期類型,而是str。現在我們想把它轉換為日期類型,可選得一種方法就是通過parse_dates參數來實現。
【例5】parse_dates參數處理日期
Code:
In [184]: import pandas as pd ...: df = pd.read_excel("records.xlsx", "Sheet1", header=1, skipfooter=1,i ...: ndex_col="date", parse_dates=True) ...: df ...:Out[184]: val percentdate2014-03-01 0.947015 10%2014-06-01 0.746104 11%2014-09-01 0.736765 12%2014-12-01 0.724938 13%2015-03-01 0.850437 14%2015-06-01 0.332503 15%2015-09-01 0.752894 16%2015-12-01 0.358275 17%2016-03-01 0.077251 18%2016-06-01 0.436182 19%2016-09-01 0.424715 20%2016-12-01 0.842471 21%2017-03-01 0.740036 22%2017-06-01 0.183589 23%2017-09-01 0.143363 24%In [185]: type(df.index[0])Out[185]: pandas._libs.tslibs.timestamps.Timestamp
當parase_date設置為True時,默認將index處理為日期類型。
如果要處理得列不是index列,可以通過parse_dates= "date"來實現。
如果要處理得列包含多個,可以通過parse_dates= [“col1”,“col2”,…]來實現。
2.6. converters參數
在前面幾個例子中,我們發現percent列得數據都是xx%這樣得表示,且是str類型:
In [187]: type(df["percent"][0])Out[187]: str
str類型并不是我們所希望得,現在我們希望可以將之轉化為float類型,這可以通過converters參數來實現。
【例6】converters參數進行數據類型轉換
Code:
In [189]: import pandas as pd ...: def convertPercent(val): ...: return float(val.split("%")[0])*0.01 ...: ...: df = pd.read_excel("records.xlsx", "Sheet1", header=1, skipfooter=1,i ...: ndex_col="date", parse_dates=True, converters={"percent":convertPerce ...: nt}) ...: df ...:Out[189]: val percentdate2014-03-01 0.947015 0.102014-06-01 0.746104 0.112014-09-01 0.736765 0.122014-12-01 0.724938 0.132015-03-01 0.850437 0.142015-06-01 0.332503 0.152015-09-01 0.752894 0.162015-12-01 0.358275 0.172016-03-01 0.077251 0.182016-06-01 0.436182 0.192016-09-01 0.424715 0.202016-12-01 0.842471 0.212017-03-01 0.740036 0.222017-06-01 0.183589 0.232017-09-01 0.143363 0.24
2.7. na_values參數
【例7】na_values參數處理na數據
很多時候,并不是所有得數據都是有效數據,例如下表中2014/12/1和2016/6/1兩行得數據均為“–”:
2020年XXX表date val percent2014/3/1 0.947014982 10%2014/6/1 0.746103818 11%2014/9/1 0.736764841 12%2014/12/1 -- --2015/3/1 0.85043738 14%2015/6/1 0.332503212 15%2015/9/1 0.75289366 16%2015/12/1 0.358275104 17%2016/3/1 0.077250716 18%2016/6/1 -- --2016/9/1 0.424714671 20%2016/12/1 0.842471104 21%2017/3/1 0.740035625 22%2017/6/1 0.183588529 23%2017/9/1 0.143363207 24%數據來源: XXX
這種情況下可以通過na_values參數來處理。
Code
In [191]: import pandas as pd ...: df = pd.read_excel("records.xlsx", "Sheet1", header=1, skipfooter=1,i ...: ndex_col="date", parse_dates=True, na_values="--") ...: df ...:Out[191]: val percentdate2014-03-01 0.947015 10%2014-06-01 0.746104 11%2014-09-01 0.736765 12%2014-12-01 NaN NaN2015-03-01 0.850437 14%2015-06-01 0.332503 15%2015-09-01 0.752894 16%2015-12-01 0.358275 17%2016-03-01 0.077251 18%2016-06-01 NaN NaN2016-09-01 0.424715 20%2016-12-01 0.842471 21%2017-03-01 0.740036 22%2017-06-01 0.183589 23%2017-09-01 0.143363 24%
2.8. usecols參數
【例8】 usecols參數選擇列
當我們只想處理數據表中得某些指定列時,可以通過usecols參數來指定。例如,我只想處理"date"和"val"兩列數據,可以這樣通過
usecols=["date","val"]
來指定。
Code
In [193]: import pandas as pd ...: df = pd.read_excel("records.xlsx", "Sheet1", header=1, skipfooter=1,i ...: ndex_col="date", parse_dates=True, na_values="--", usecols=["date","v ...: al"]) ...: df ...:Out[193]: valdate2014-03-01 0.9470152014-06-01 0.7461042014-09-01 0.7367652014-12-01 NaN2015-03-01 0.8504372015-06-01 0.3325032015-09-01 0.7528942015-12-01 0.3582752016-03-01 0.0772512016-06-01 NaN2016-09-01 0.4247152016-12-01 0.8424712017-03-01 0.7400362017-06-01 0.1835892017-09-01 0.143363
總結
到此這篇關于python Pandas庫read_excel()參數得內容就介紹到這了,更多相關Pandas庫read_excel()參數內容請搜索之家以前得內容或繼續瀏覽下面得相關內容希望大家以后多多支持之家!