pandas數據處理:常用卻不甚了解的函數,pd.read_excel()

2021-01-07 CDA數據分析師

人們經常用pandas處理表格型數據,時常需要讀入excel表格數據,很多人一般都是直接這麼用:pd.read_excel(「文件路徑文件名」),再多一點的設置可能是轉義一下路徑中的斜槓,一旦原始的excel表不是很規整,這樣簡單讀入勢必報錯!

其實這個函數有很多參數可以設置,為了應對各式excel表滿足各種讀入的需求,我們來詳細了解下pd.excel()中的主要參數。

首先,認識一下pd.read_excel(),函數的官方文檔是這麼說的:將Excel文件讀取到pandas DataFrame中,支持本地文件系統或URL的』xls』和』xlsx』文件擴展名,帶有這兩種擴展名的文件,函數都可以處理;

然後它的函數完整版長這個樣子:

沒想到吧,它它它…它居然有二十多個參數,是不是有點出乎意料,接下來認識下這些參數都是做什麼用的吧!

io參數

io參數可以接受的有:str,Excel文件,xlrd.Book,路徑對象或類似文件的對象,其中最常用的是str,一般是文件路徑+文件名,需要注意的是文件名字不要漏掉後綴,即文件擴展名,表明文件類型的那個!有時候需要對路徑中的」\」進行轉義,io參數沒有默認值,必須傳入。

舉個例子:

輸出結果:

sheet_name參數

sheet_name參數可以接收的有:str,int,list或None,默認0

其中,字符串用於工作表名稱。 整數用於零索引工作表位置。 字符串/整數列表用於請求多個工作表。設置None獲取所有工作表。

有時候一個excel工作簿中包含有很多個sheet工作表,如果不指定默認為0,數據讀入的時候默認讀入的是第一個位置的sheet。

常用的是指定sheet位置或者名字,還是來個例子:

輸出結果和不指定sheet時的結果是一樣的,因為默認的就是第0個sheet:

指定另一個位置的sheet:

輸出結果:

輸出結果,能夠看到結果和sheet_name=1的結果是一樣的:

可以看一下原表中sheet的名字就能理解名字為data2的sheet正好在第1個位置(名字為data1的sheet在第0個位置)

通過名字讀取另一個sheet就不在這裡贅述了,我們看看這個參數還有兩種可以接收的對象,挨個看下是什麼樣的效果吧。

sheet_name參數的其他設置

輸出結果:

輸出結果:

能夠看到比上邊只讀入兩個sheet工作表的命令相比,這裡多了data3這個工作表!

綜上,sheet_name空值既可以通過sheet位置也可以通過sheet名字來指定讀入哪個sheet的數據。

header參數

這個參數是用來指定哪一行作為列名的,默認是第0行,接收的參數可以是整數(指定第幾行作為列名),可以是有整數組成的列表(指定哪幾行作為列名,是的,列名可以有多行,是不是有點突破認知?),也可以是None(沒有列名)。

比如這種數據就需要在讀入數據的時候指定哪一行作為列名:

開頭有空行,直接讀取試一下:

是這種效果(截取部分數據圖像):

header參數可以有效的解決這個問題,可以看到行標籤為1的數據才是我們需要的列名,所以在讀取數據的時候進行設置就可以了:

輸出結果:

這樣就符合要求了!

對header參數的其他設置

為了滿足好奇心,我們也實驗一下其他的參數,比如整數組成的列表,提前預告,讀出來不一定符合業務邏輯要求哦。

輸出結果:

能看到的確有兩行列名!

如果不要列名是什麼樣子呢?

輸出結果:

不指定列名後的效果就是這樣的了!

names參數

官方文檔說這個參數接收 array-like, 默認 None,表示要使用的列名列表,如果不需要列名,請設置header = None,如果header = None和names參數都設置的話,依然會顯示names指定的列名。

還是通過實例來感受下參數的作用吧,為了節省篇幅,代碼放入截圖中:

如果原始表格中的列名不符合需求,比如上圖中很明顯是進行聚合後系統生成的列名,在讀入數據的時候可以根據需求自定義列名,需要注意的是指定的列名和原數據中的列名是依據位置一一對應的,順序不要亂了!

index_col參數

官方文檔說這個參數接收整數,或者由整數組成的列表,默認是None。

這個參數的作用是指定用哪一列做為行索引。如果傳給參數的是整數n,則表示指定第n列作為行索引,如果傳入的是列表,則表示需要指定多列作為行索引。上一篇文章中介紹了header參數,是指定由哪一行作為列名,也是傳入整數或者整數組成的列表,可以對比記憶。

來個例子感受一下:

上邊的例子分別採用了默認值None,整數0和列表[0,1]對index_col進行了設置,用法和效果一目了然。

usecols參數

看下官方文檔是怎麼說的:該參數接收整數,字符或者類似列表的序列,默認值是None,返回的是列的子集,直白點解釋就是在讀入表格的時候不是所有的列都會被讀入,可以通過usecols參數來設置要把哪些列讀取進來。

如果是None,表示所有的列都會被讀取如果是整數,表示被讀取進來的最後一列,比如說傳整數n給usecols,那麼最終讀取進來的是第0到第n列,注意不是只把第n列讀進來。如果像要只讀某一列怎麼辦呢?別急,接著往下看。如果是列表,表示選取指定的列讀取,比如像要只讀入第n列,這樣就可以usecols=[n],如果是多列,就把多個整數放入一個列表中傳遞給參數。需要留心的是,列表中不止可以傳入整數,也可以是欄位名組成的列表。

溫馨提示:如果設置了names參數,注意設置的列名個數要和讀取的列數一致

來個直觀的例子感受下:

結合對參數的文字說明看例子,還是蠻清楚明白的。

squeeze參數

來自官方文檔的解釋:接收布爾值,當取值為True的時候,如果解析的數據僅包含一列,則返回Series。默認值是False,即只有一列也返回Dataframe。

舉例說明:

如果需要讀進來一個Series,可以通過squeeze參數實現。

dtype參數

慣例還是官方文檔的解釋:輸入表示數據類型的名稱字符或者字典,如果輸入的是字符表示整個表格的數據都轉換成指定的數據類型,如果輸入的是字典,那麼每個欄位可以指定不同的數據類型。

來個例子幫助理解:

由於整個表格中既有文本又有數值,如果要設置成統一的數據類型只能設置成字符型了;針對每一列設置不同的數據類型,效果還是很明顯的。

篇幅限制,對pd.read_excel()函數參數的介紹先到這裡,剩下的參數在後續的文章中接續介紹哦。

相關焦點

  • 使用pandas和openpyxl處理複雜Excel數據
    關於Excel數據處理,很多同學可能使用過Pyhton的pandas模塊,用它可以輕鬆地讀取和轉換Excel數據。但是實際中Excel表格結構可能比較雜亂,數據會分散不同的工作表中,而且在表格中分布很亂,這種情況下啊直接使用pandas就會非常吃力。本文蟲蟲給大家介紹使用pandas和openpyxl讀取這樣的數據的方法。
  • Python數據分析:pandas讀取和寫入數據
    我的公眾號是關於自己在數據分析/挖掘學習過程中的一些技術和總結分享,文章會持續更新......繼續深入學習pandas相關操作,數據讀取寫入、分組、合併,轉換等等。前面一篇文章裡已經寫了關於描述性統計以及常用的基本操作。接下來的一段時間裡,我將陸續地去掌握並輸出。這篇文章是關於數據讀取與寫入的知識點。
  • 懂Excel輕鬆入門Python數據分析包pandas(二十七):IF函數代替者
    此系列文章收錄在:數據大宇宙 > 數據處理 > E-pd轉發本文並私信我"python",即可獲得Python資料以及更多系列文章(持續更新的)經常聽別人說 Python 在數據領域有多厲害,結果學了很長時間,連數據處理都麻煩得要死。
  • 想成為高效數據科學家?不會Pandas怎麼行
    pandas 相當於 python 中 excel:它使用表(也就是 dataframe),能在數據上做各種變換,但還有其他很多功能。如果你早已熟知 python 的使用,可以直接跳到第三段。讓我們開始吧:import pandas as pd別問為什麼是「pd」而不是「p」,就是這樣。
  • 如果你也基於pandas做數據分析,分享這幾個提高效率的小知識點
    本文基於數據分析庫pandas,分享我在工作中常常需要使用的幾個關於數據定位的常用語法以及幾個小知識點。01loc和iloc目前pandas的版本已經取消了ix和at等語法,推薦使用的是loc和iloc這兩種語法定位數據loc是location的縮寫,iloc是index_location的縮寫,前者是基於標籤(標籤是指通過列名或者索引名定位數據),後者是基於索引
  • PANDAS: 新手教程 一
    讓我們開始,我試圖保持數據分析的一般流程,比如從讀取數據開始,然後在數據分析過程中經歷不同的步驟。1.使用read_csv或read_excel讀取數據任何數據分析的起點都是獲取數據集。pandas提供不同的函數來讀取不同格式的數據。最常用的是read_csv( )這允許你讀取CSV文件。
  • python數據分析——pandas導入數據合集
    導入pandas庫import pandas as pd1.導入csv\txt文件數據pd.read_csv()常用參數:filepath_or_buffer:文件路徑(必填,其他參數按需求填寫)sep:指定分隔符,默認逗號','。header:指定第幾行作為表頭。
  • PANDAS: 新手教程 一 - 人工智慧遇見磐創
    讓我們開始,我試圖保持數據分析的一般流程,比如從讀取數據開始,然後在數據分析過程中經歷不同的步驟。1.使用read_csv或read_excel讀取數據任何數據分析的起點都是獲取數據集。pandas提供不同的函數來讀取不同格式的數據。最常用的是read_csv( )這允許你讀取CSV文件。
  • 6個提升效率的pandas小技巧
    pandas是python中常用的數據分析庫,出現頻率非常高,而且pandas功能之多讓人咋舌,即使pandas老手也沒法保證能高效使用pandas做數據分析。這篇文章目的梳理幾個高效實用的pandas小技巧,供大家參考。1.
  • Python數據分析常用函數及參數詳解,可以留著以備不時之需
    》一文中我們介紹了Python進行數據分析全流程的幾個主要函數。但由於實際中的分析需求可能比較複雜,就要求對數據做更加複雜的處理。所以,我們有必要提前準備一些常用的函數,這些函數不用全部會,知道有這些函數,並做到在我們要實現數據處理邏輯時,知道有什麼函數可用就夠了。
  • 提高數據處理效率,一行代碼開啟Pandas四倍速!
    圖源:Unsplash雖然Pandas是Python中處理數據的庫,但其速度優勢並不明顯。如何讓Pandas更快更省心呢?快來了解新庫Modin,可以分割pandas的計算量,提高數據處理效率,一行代碼即刻開啟Pandas四倍速。首先了解一些基礎知識:Pandas作為Python中用於處理數據的庫,能簡單且靈活地處理不同種類、大小的數據。除此之外,Pandas還有許多函數有助於輕鬆處理不同數據。
  • 懂Excel就能輕鬆入門Python數據分析包pandas(十六):合併數據
    此系列文章收錄在公眾號中:數據大宇宙 > 數據處理 >E-pd經常聽別人說 Python 在數據領域有多厲害,結果學了很長時間,連數據處理都麻煩得要死。後來才發現,原來不是 Python 數據處理厲害,而是他有數據分析神器—— pandas前言本系列上一節說了拆分數據的案例,這次自然是說下怎麼合併數據。
  • 快速介紹Python數據分析庫pandas的基礎知識和代碼示例
    我創建了這個pandas函數的備忘單。這不是一個全面的列表,但包含了我在構建機器學習模型中最常用的函數。讓我們開始吧!本附註的結構:導入數據導出數據創建測試對象查看/檢查數據選擇查詢數據清理篩選、排序和分組統計數據首先,我們需要導入pandas開始:import pandas as pd導入數據使用函數pd.read_csv直接將CSV轉換為數據格式。注意:還有另一個類似的函數pd。read_excel用於excel文件。
  • 使用Pandas的resample函數處理時間序列數據的技巧
    時間序列數據在數據科學項目中很常見。 通常,可能會對將時序數據重新採樣到要分析數據的頻率或從數據中汲取更多見解的頻率感興趣。在本文中,我們將介紹一些使用Pandas resample()函數對時間序列數據進行重採樣的示例。 我們將介紹以下常見問題,並應幫助您開始使用時序數據操作。
  • pandas指南:做更高效的數據科學家
    今天我要告訴你們的是:在數據科學中,有一個軟體包是你們絕對需要學習的,那就是pandas。而pandas真正有趣的地方是,很多其他的包也在裡面。pandas是一個核心包,因此它具有來自其他各種包的特性。pandas類似於Python中的Excel:它使用表(即DataFrame)並對數據進行轉換,但它還能做更多。
  • 用Pandas演示tips的小技巧,學到了嗎?
    還可以在pandas分析伺服器上製作API,這樣就可以在網頁瀏覽器的數據幀中追蹤最新數值。注意,這需要用到lxml軟體包,可以用pip安裝lxml。df_html =df.to_html()with open('analysis.html', 'w') as f:f.write(df_html)read_html函數甚至可以將HTML解析為pandas數據幀。筆者還沒有使用過通用HTML進行嘗試,但無疑會很有用。
  • python數據分析——pandas導出數據合集
    導入pandas庫:import pandas as pd導入基礎數據:df=pd.read_excel('數據.xlsx')1.將DataFrame寫入csv\txt文件DataFrame.to_csv()常用參數:path_or_buf=None:輸出文件路徑,默認None
  • 不容錯過的Pandas小技巧:萬能轉格式、輕鬆合併、壓縮數據,讓數據...
    DataFrame 轉 HTML如果你需要用 HTML 發送自動報告,那麼 to_html 函數了解一下。當然是——df.to_excel(『analysis.xlsx』)需要注意的是,如果你沒有安裝過 xlwt 和 openpyxl 這兩個工具包,需要先安裝一下。另外,跟 HTML 一樣,這裡也有一個配套函數:read_excel,用來將excel數據導入pandas DataFrame。
  • Pandas還能這麼玩?花式導數據、合併、壓縮,數據分析更高效
    作者:Roman Orac魚羊 編譯整理量子位 報導 | 公眾號 QbitAI數據分析,如何能錯過 Pandas。現在,數據科學家 Roman Orac 分享了他在工作中相見恨晚的 Pandas 使用技巧。了解了這些技巧,能讓你在學習、使用 Pandas 的時候更加高效。
  • 加速數據分析,這12種高效Numpy和Pandas函數為你保駕護航
    接下來看一看 Pandas 數據分析庫的 6 種函數。Pandas 數據統計包的 6 種高效函數Pandas 也是一個 Python 包,它提供了快速、靈活以及具有顯著表達能力的數據結構,旨在使處理結構化 (表格化、多維、異構) 和時間序列數據變得既簡單又直觀。