pandas玩轉(zhuǎn)Excel及數(shù)據(jù)分析(二) Excel文件讀取

我滴個(gè)媽也,原來(lái)pandas有中文官網(wǎng)https://www.pypandas.cn/

根據(jù)pandas的用戶指南粮揉,https://pandas.pydata.org/docs/user_guide/io.html,我們發(fā)現(xiàn)pandas可不僅僅是操作excel這么簡(jiǎn)單

這里我們著看其針對(duì)excel的API抚笔,包括讀取excel所用的read_excel和寫(xiě)excel所用的to_excel

一. read_excel //讀取excel

pandas.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, keep_default_na=True, 
                  na_filter=True, verbose=False, parse_dates=False, date_parser=None, thousands=None, 
                  comment=None, skipfooter=0, convert_float=True, mangle_dupe_cols=True, storage_options=None)

重點(diǎn)參數(shù):

參數(shù) 說(shuō)明
io 輸入輸出流,可以是:路徑str, URL,bytes, ExcelFile, xlrd.Book, path object, or file-like object
sheet_name 表名,可以是:str, int, list, or None, 默認(rèn)索引0 , 如果是列表, 則返回以列表為key的字典, 如果傳入None則讀所有表
header 列索引(表頭)扶认。可以是int, list of int, default 0
index_col 行索引殊橙。int, list of int, default None
usecols 使用的列辐宾。可以是:int,str, list of int, default None
skiprows 跳過(guò)的行
names 要使用的列名列表,(用列表給表頭賦值)
dtype 設(shè)置列的類(lèi)型
parse_dates 指定解析成日期格式的列
date_parser 解析日期格式的函數(shù)膨蛮,傳入 function
na_values 識(shí)別為缺失值的元素
converters 值轉(zhuǎn)換器 傳入dict,默認(rèn)None
true_values 視為真 傳入list,默認(rèn)None
false_values 視為假 傳入list,默認(rèn)None
squneeze 如果數(shù)據(jù)只有一列是否返回Series類(lèi)型的數(shù)據(jù)叠纹。默認(rèn)是false,返回DataFrame
mangle_dupe_cols 是否重命名重復(fù)的列名敞葛。默認(rèn)是false誉察,不會(huì)重命名,而會(huì)拋出列名重復(fù)的異常
nrows 要解析的行數(shù),int類(lèi)型,默認(rèn)為None
thousands 指定千位分隔符,默認(rèn)為None
convert_float 是否在可能情況下將布爾轉(zhuǎn)為int, 默認(rèn)為true

1. io參數(shù) //輸入輸出對(duì)象

最簡(jiǎn)單用法

df1 = pd.read_excel("goods_base.xls")

可以傳入ExcelFile對(duì)象

excel1 = pd.ExcelFile("goods_base.xls")
df1 = pd.read_excel(excel1)

2. sheet_name參數(shù) //表名

表名,可以是:str, int, list, or None, 默認(rèn)索引0 , 如果是列表, 則返回以列表為key的字典, 如果傳入None則讀所有表
(1). 默認(rèn)讀取索引0

(2). 可以添加索引或表名

(3). 可以添加列表,則返回以列表為鍵,以DataFrame為值的字典

(4). 如果為None, 則讀取全部表,返回字典

3. header 參數(shù) //列索引(表頭)

用于指定"列索引"的行

如果沒(méi)有表頭, 我們應(yīng)指定header列索引為None

如果有表頭, 我們應(yīng)指定header'列索引'所在的行

如果有多重表頭, 這涉及到一個(gè)MultiIndex的概念, 則此時(shí)header設(shè)置為列表

4 .index_col參數(shù) // 行索引

隨便舉例, 上面的例子,如果我們只規(guī)定列索引為列表[0,1], 沒(méi)有規(guī)定行索引 , 則:

真正的行索引會(huì)被當(dāng)做一組數(shù)據(jù)

只是應(yīng)該指定行索引

5. usecols //指定使用哪些列

默認(rèn)為None, 即是導(dǎo)入全部列
可以傳入str惹谐,指定列名持偏,或列名切片
可以傳入索引列表 限定范圍
可以傳入字符串列表 根據(jù)表頭限定范圍

最推薦使用這種方法,因?yàn)檫@種方法可以防止日后插入列發(fā)生意想不到的錯(cuò)誤氨肌,而且可讀性更強(qiáng)

可以傳入lambda函數(shù)鸿秆,返回ture的列就會(huì)被選擇

6. skiprows //跳過(guò)行

7. names // 要使用的列名列表,(用列表給表頭賦值)

如果沒(méi)有表頭, 我們想給他一個(gè)表頭, 則:

注意: 如果沒(méi)有表頭, header一定要顯式聲明為None

8. dtype設(shè)置列的類(lèi)型

具體類(lèi)型解釋, 詳見(jiàn)第二章

9. parse_dates // 需要解析日期的列

(1). 可以傳入True來(lái)嘗試解析index

所謂嘗試就是行就干,不行就不干??,只是試一試不會(huì)報(bào)錯(cuò)

假設(shè)有這樣一張表

我們用其中一行可以解析為日期的列當(dāng)作索引的話, 就可以將其轉(zhuǎn)化為DateTime64格式:

(2). 可以傳入索引列表或列名列表來(lái)指定某列轉(zhuǎn)為日期
(3). 結(jié)合多列解析為日期

如果有這么一張表, 我們想通過(guò)0,1,2行獲得日期

則傳入一個(gè)二維索引列表或者二維列名列表 , 表中規(guī)定好要整合的列

(4). 結(jié)合多列解析為日期(但列名別那么丑??)

和上面一樣, 但我們不再傳入二維數(shù)組, 而是傳入字典,字典的key是列名,值是要整合的列

10. date_parser //日期解析器

date_parser 要配合parse_dates 來(lái)用的, 但parse_dates 不一定需要date_parser ,事實(shí)上大部分英文日期不需要date_parser 就可以自動(dòng)解析


如果自動(dòng)解析不能正確解析(比如中文日期), 我們可以指定date_parser的解析器, date_parser 要傳入一個(gè)function, pandas會(huì)用指這個(gè)function來(lái)解析

11. na_values // 缺失值

在pandas中缺失值被定義為NaN, 記住它是一個(gè)float類(lèi)型的值

默認(rèn)情況下,即使不傳入na_values ,以下情況也會(huì)被自動(dòng)解析為NaN


比如有這樣一張表

直接讀是這樣的:

我們發(fā)現(xiàn)有些是默認(rèn)被解析成NaN的, 比如沒(méi)有空格的那一行讀成了NaN, 而有空格的那一行讀成了空格, 怎么解決這個(gè)問(wèn)題呢? 我們需要na_values屬性

(1). na_values傳入值來(lái)確定把什么解析成NaN
(2). na_values也可以傳入列表
(3). 可以傳入一個(gè)字典, 使得只有某列適用于na_values的NaN規(guī)則

比如下圖: 只有第1列使用na_values的NaN規(guī)則
字典的鍵應(yīng)該是索引或列名

12. converters // 值轉(zhuǎn)換器

傳入一個(gè)字典, 鍵為列名或索引, 值為轉(zhuǎn)換函數(shù)

如有這樣一張表, 我們讀取時(shí)想a列+1,b列*2:

我們可以用這個(gè)方法來(lái)取消格式不好的表中的多余空格/制表符等

13. true_values/false_values //視為真假

將某些特定的字符串視為真假值

注意: 轉(zhuǎn)換是要整列轉(zhuǎn)換的!

如下圖: 列1 全可以判斷真假, 故第一列轉(zhuǎn)化為bool類(lèi)型,第二列無(wú)法完全轉(zhuǎn)換,所以就一個(gè)也不轉(zhuǎn)換

注意: 只有字符串會(huì)被轉(zhuǎn)換, 數(shù)值不會(huì)

如:

如果我們要實(shí)現(xiàn)非0既真, 應(yīng)該:

二. dtype 類(lèi)型

1 . dtype可選類(lèi)型如下:

2. 我們可以透過(guò)DataFrame的dtypes屬性獲取DataFrame的各列屬性

3. str和string的區(qū)別

str和string都是字符串,但python中沒(méi)有str這個(gè)基本數(shù)據(jù)類(lèi)型, 所以str其實(shí)是object

下面的例子看的很清楚:

4. period 時(shí)間周期

5. category 枚舉分類(lèi)

6. datetime[ns] //時(shí)間戳(納秒)

最后編輯于
?著作權(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)離奇詭異,居然都是意外死亡井誉,警方通過(guò)查閱死者的電腦和手機(jī)蕉扮,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,987評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)颗圣,“玉大人喳钟,你說(shuō)我怎么就攤上這事≡谄瘢” “怎么了奔则?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,298評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)蔽午。 經(jīng)常有香客問(wèn)我易茬,道長(zhǎng),這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,586評(píng)論 1 293
  • 正文 為了忘掉前任抽莱,我火速辦了婚禮范抓,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘食铐。我一直安慰自己匕垫,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,633評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布虐呻。 她就那樣靜靜地躺著象泵,像睡著了一般。 火紅的嫁衣襯著肌膚如雪斟叼。 梳的紋絲不亂的頭發(fā)上偶惠,一...
    開(kāi)封第一講書(shū)人閱讀 51,488評(píng)論 1 302
  • 那天,我揣著相機(jī)與錄音朗涩,去河邊找鬼忽孽。 笑死,一個(gè)胖子當(dāng)著我的面吹牛馋缅,可吹牛的內(nèi)容都是我干的扒腕。 我是一名探鬼主播绢淀,決...
    沈念sama閱讀 40,275評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼萤悴,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了皆的?” 一聲冷哼從身側(cè)響起覆履,我...
    開(kāi)封第一講書(shū)人閱讀 39,176評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎费薄,沒(méi)想到半個(gè)月后硝全,有當(dāng)?shù)厝嗽跇?shù)林里發(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
  • 文/蒙蒙 一准脂、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧檬洞,春花似錦意狠、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,871評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至澎灸,卻和暖如春院塞,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背性昭。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,994評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工拦止, 沒(méi)想到剛下飛機(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)容