Pandas筆記3-導(dǎo)入excel文件

1 本文適合讀者

剛開始學(xué)習(xí)Pandas的新手

2 read_excel()方法和主要參數(shù)

read_excel方法通過調(diào)用xlrd模塊可以讀取Excel 2003 (.xls) and Excel 2007+ (.xlsx) 文件厢呵。

df = pd.read_excel(io, sheet_name=0, header=0, names=None, index_col=None, usecols=None, squeeze=False, dtype=None, engine=None, converters=None, true_values=None, false_values=None, skiprows=None, nrows=None, na_values=None, parse_dates=False, date_parser=None, thousands=None, comment=None, skipfooter=0, convert_float=True, **kwds)

參數(shù)說明

io :Excel文件路徑或URL

df = pd.read_excel('Excel_file.xlsx')  #讀入Excel文件

sheet_name :Excel文件的sheet表可以用shee_name(字符串形式)來表示殿衰,也可以用索引號(hào)(從0開始)表示,默認(rèn)是0捏悬,也就是第一張sheet表
參數(shù)設(shè)為None,表示打開所有 sheet
如果用sheet表名稱或者索引號(hào)打開會(huì)返回一個(gè)DataFrame對(duì)象;
如果用list或者None打開會(huì)返回一個(gè)包含DataFrame對(duì)象的字典速挑。

df = pd.read_excel('Excel_file.xlsx', sheet_name=0)    #打開第一張sheet
df = pd.read_excel('Excel_file.xlsx', sheet_name="Sheet2")    #打開“Sheet2”這張表,注意名稱大小寫不要寫錯(cuò)

header :使用哪一行(或幾行)作列名副硅,默認(rèn)是0
header = 0 表示使用第一行作DataFrame的列名
header = None 表示沒有列名

df = pd.read_excel('Excel_file.xlsx', sheet_name="Sheet2", header = 0)    #一般情況下都是使用第一行作列名

names :列名姥宝,如果excel數(shù)據(jù)沒有列名,可以設(shè)成header = None恐疲,并通過傳入列名列表來規(guī)定列名
如果excel數(shù)據(jù)有列名腊满,但是你想用新的列名替換,則可以設(shè)成header=0

df = pd.read_excel('Excel_file.xlsx',sheet_name="Sheet2", header = None, names=['month','fruit','count','price','amount'])    #傳入列名

index_col :指定哪一列作為行標(biāo)簽培己,第1列為0碳蛋,默認(rèn)為None

df = pd.read_excel('Excel_file.xlsx',sheet_name="Sheet2",index_col=0)    #把第1列作為行標(biāo)簽

usecols :導(dǎo)入哪些列
默認(rèn)是None,即導(dǎo)入所有列
設(shè)為數(shù)字n省咨,表示導(dǎo)入從第1列到第n+1列肃弟,0表示導(dǎo)入第1列,1表示第1列和第2列,以此類推
設(shè)為數(shù)字列表笤受,則導(dǎo)入指定的列
還可以用字母來表示要導(dǎo)入的列

df = pd.read_excel('Excel_file.xlsx',sheet_name="Sheet2", usecols=3)    #導(dǎo)入第1-4列
df = pd.read_excel('Excel_file.xlsx',sheet_name="Sheet2", usecols=[0,2,4])     #導(dǎo)入第1列穷缤、第3列和第5列
df = pd.read_excel('Excel_file.xlsx',sheet_name="Sheet2", usecols="A:C")    #導(dǎo)入第1-3列
df = pd.read_excel('Excel_file.xlsx',sheet_name="Sheet2", usecols="A,C")    #導(dǎo)入第1列和第3列

dtype :列的數(shù)據(jù)類型,默認(rèn)為None
整型用int表示箩兽,浮點(diǎn)型用float表示津肛,不要寫成int64和float64
這里dtype={'金額':str}也可以寫成dtype={'金額':object}

df = pd.read_excel('Excel_file.xlsx', sheet_name="Sheet2", dtype={'銷量':float})    #原本銷量是整數(shù),現(xiàn)在按浮點(diǎn)數(shù)導(dǎo)入
df = pd.read_excel('Excel_file.xlsx', sheet_name="Sheet2", dtype={'金額':int})    #原本金額是浮點(diǎn)數(shù)汗贫,現(xiàn)在按整數(shù)導(dǎo)入
df = pd.read_excel('Excel_file.xlsx', sheet_name="Sheet2", dtype={'金額':str})    #金額按字符串導(dǎo)入身坐,類型變成了object

converters :這是一個(gè)數(shù)據(jù)類型轉(zhuǎn)換器,可以在導(dǎo)入原始文件時(shí)將多個(gè)指定列的數(shù)據(jù)類型轉(zhuǎn)換成其他類型落包,默認(rèn)是None
該參數(shù)在設(shè)置時(shí)形式上是一個(gè)字典部蛇,“健”可以是代表列的整數(shù)值或者列標(biāo)簽名稱,“值”是一個(gè)函數(shù)咐蝇,用來轉(zhuǎn)換數(shù)據(jù)類型

skiprows :在導(dǎo)入時(shí)要跳過的開頭行數(shù)涯鲁,索引從0開始

skiprows=1  #跳過第1行,從第2行開始導(dǎo)入
skiprows=2  #跳過第1-2行嘹害,從第3行開始導(dǎo)入
skiprows=[1,3]    #跳過第2行和第4行撮竿,第3行保留

nrows : 指定要導(dǎo)入的行數(shù)吮便,傳入一個(gè)整數(shù)值笔呀,默認(rèn)是None

na_values :除了下面默認(rèn)的字符串以外,還要將哪些字符串作為空值來導(dǎo)入

例如excel文件內(nèi)容:

     fruit  code
0    apple   100
1   banana   101
2   orange   102
3  coconut   103
df = pd.read_excel('fruit.xlsx',sheet_name="Sheet1",na_values=['apple','banana'])
結(jié)果
     fruit  code
0      NaN   100
1      NaN   101
2   orange   102
3  coconut   103

默認(rèn)情況下髓需,以下值(字符串)會(huì)被解析成NaN:
‘’, ‘#N/A’, ‘#N/A N/A’, ‘#NA’, ‘-1.#IND’, ‘-1.#QNAN’, ‘-NaN’, ‘-nan’, ‘1.#IND’, ‘1.#QNAN’, ‘N/A’, ‘NA’, ‘NULL’, ‘NaN’, ‘n/a’, ‘nan’, ‘null’.

設(shè)置了na_values之后就會(huì)額外再增加會(huì)被解析成NaN的字符串

parse_dates :如果日期在Excel文件中是以字符串形式儲(chǔ)存的许师,可以用parse_dates轉(zhuǎn)換成datetime格式

keep_default_na :如果指定了na_values參數(shù)且keep_default_na=False,則默認(rèn)的NaN值會(huì)被覆蓋

verbose :布爾型僚匆,默認(rèn)為False
指出非數(shù)值列的空值替換數(shù)量

thousands :千位分隔符微渠,默認(rèn)為None
千位分隔符用來將字符串類型的列轉(zhuǎn)換成數(shù)值型
該參數(shù)僅用于讀取Excel文件時(shí)那些以文本格式存儲(chǔ)的列

skipfooter :要跳過的結(jié)尾行數(shù),默認(rèn)為0

convert_float :布爾型咧擂,默認(rèn)為True
是否把整數(shù)型的浮點(diǎn)數(shù)轉(zhuǎn)換成整數(shù)(即1.0 -> 1)
Excel在儲(chǔ)存數(shù)值時(shí)都是按浮點(diǎn)數(shù)儲(chǔ)存的逞盆,如果該參數(shù)為False,所有的數(shù)值都會(huì)按浮點(diǎn)型導(dǎo)入松申。

3 導(dǎo)入excel文件的常見問題

3.1 導(dǎo)入數(shù)字字符串變整數(shù)

有時(shí)候我們必須保留excel文件中的數(shù)字字符串云芦,比如有前導(dǎo)0的電話區(qū)號(hào)、特殊編碼等贸桶,pandas默認(rèn)會(huì)把數(shù)字字符串直接按整數(shù)導(dǎo)入舅逸。

比如原始excel中的數(shù)據(jù):

100123456789,beijing,010
200123456789,shanghai,021
300123456789,shenzhen,022
400123456789,guangzhou,023
500123456789,hangzhou,024
600123456789,nanjing,025

按默認(rèn)方式導(dǎo)入,df1 = pd.read_excel('numeric.xlsx')皇筛,在pandas中可以看到琉历,區(qū)號(hào)被自動(dòng)識(shí)別為整數(shù),數(shù)字前面的0被去掉了:

             id       city  code
0  100123456789    beijing    10
1  200123456789   shanghai    21
2  300123456789   shenzhen    22
3  400123456789  guangzhou    23
4  500123456789   hangzhou    24
5  600123456789    nanjing    25

df1.dtypes
id       int64
city     object
code     int64

為了保留原始的數(shù)字字符串的格式,我們可以指定dtype=str旗笔,來將原始數(shù)據(jù)按字符串格式導(dǎo)入:df2 = pd.read_excel('numeric.xlsx',dtype=str)

             id       city code
0  100123456789    beijing  010
1  200123456789   shanghai  021
2  300123456789   shenzhen  022
3  400123456789  guangzhou  023
4  500123456789   hangzhou  024
5  600123456789    nanjing  025

df2.dtypes
id      object
city    object
code    object
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末彪置,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子换团,更是在濱河造成了極大的恐慌悉稠,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,907評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件艘包,死亡現(xiàn)場(chǎng)離奇詭異的猛,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)想虎,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,987評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門卦尊,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人舌厨,你說我怎么就攤上這事岂却。” “怎么了裙椭?”我有些...
    開封第一講書人閱讀 164,298評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵躏哩,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我揉燃,道長(zhǎng)扫尺,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,586評(píng)論 1 293
  • 正文 為了忘掉前任炊汤,我火速辦了婚禮正驻,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘抢腐。我一直安慰自己姑曙,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,633評(píng)論 6 392
  • 文/花漫 我一把揭開白布迈倍。 她就那樣靜靜地躺著伤靠,像睡著了一般。 火紅的嫁衣襯著肌膚如雪啼染。 梳的紋絲不亂的頭發(fā)上宴合,一...
    開封第一講書人閱讀 51,488評(píng)論 1 302
  • 那天,我揣著相機(jī)與錄音提完,去河邊找鬼形纺。 笑死,一個(gè)胖子當(dāng)著我的面吹牛徒欣,可吹牛的內(nèi)容都是我干的逐样。 我是一名探鬼主播,決...
    沈念sama閱讀 40,275評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼脂新!你這毒婦竟也來了挪捕?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,176評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤争便,失蹤者是張志新(化名)和其女友劉穎级零,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體滞乙,經(jīng)...
    沈念sama閱讀 45,619評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡奏纪,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,819評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了斩启。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片序调。...
    茶點(diǎn)故事閱讀 39,932評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖兔簇,靈堂內(nèi)的尸體忽然破棺而出发绢,到底是詐尸還是另有隱情,我是刑警寧澤垄琐,帶...
    沈念sama閱讀 35,655評(píng)論 5 346
  • 正文 年R本政府宣布边酒,位于F島的核電站,受9級(jí)特大地震影響狸窘,放射性物質(zhì)發(fā)生泄漏墩朦。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,265評(píng)論 3 329
  • 文/蒙蒙 一朦前、第九天 我趴在偏房一處隱蔽的房頂上張望介杆。 院中可真熱鬧鹃操,春花似錦韭寸、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,871評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至椰拒,卻和暖如春晶渠,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背燃观。 一陣腳步聲響...
    開封第一講書人閱讀 32,994評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工褒脯, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人缆毁。 一個(gè)月前我還...
    沈念sama閱讀 48,095評(píng)論 3 370
  • 正文 我出身青樓番川,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子颁督,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,884評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容