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

2020-12-12 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()函數參數的介紹先到這裡,剩下的參數在後續的文章中接續介紹哦。

相關焦點

  • Python數據分析:pandas讀取和寫入數據
    我的公眾號是關於自己在數據分析/挖掘學習過程中的一些技術和總結分享,文章會持續更新......繼續深入學習pandas相關操作,數據讀取寫入、分組、合併,轉換等等。前面一篇文章裡已經寫了關於描述性統計以及常用的基本操作。接下來的一段時間裡,我將陸續地去掌握並輸出。這篇文章是關於數據讀取與寫入的知識點。
  • 一個參數一張Excel表,玩轉Pandas的read_excel()表格讀取
    作者 | 黃偉呢來源 | 數據分析與統計學之美我覺得很有必要講述這個文章,進行數據處理的第一步就是Python數據讀取。但是你可能沒想到,在進行數據讀取的同時,我們其實可以配合相關參數做很多事兒,這對於後續的數據處理都是極其有幫助。
  • 十分鐘學習pandas!pandas常用操作總結!
    學習Python, 當然少不了pandas,pandas是python數據科學中的必備工具,熟練使用pandas是從sql boy/girl 跨越到一名優秀的數據分析師傅的必備技能。這篇pandas常用操作總結幫大家回顧下pandas的常用語法,尤其是我們分析數據時常用的方法。
  • Python數據分析常用函數及參數詳解,可以留著以備不時之需
    所以,我們有必要提前準備一些常用的函數,這些函數不用全部會,知道有這些函數,並做到在我們要實現數據處理邏輯時,知道有什麼函數可用就夠了。為了便於學習這些函數,本文按照各自類型進行了分門別類。例如,當i=0時,就是說行維度值進行變化,其它維度不變,這就表明是按列進行處理。02常用函數為了便於我們掌握,我們結合數據分析的流程和其內部函數的作用,將其分為以下幾類,具體見下圖。
  • PANDAS: 新手教程 一 - 人工智慧遇見磐創
    讓我們開始,我試圖保持數據分析的一般流程,比如從讀取數據開始,然後在數據分析過程中經歷不同的步驟。1.使用read_csv或read_excel讀取數據任何數據分析的起點都是獲取數據集。pandas提供不同的函數來讀取不同格式的數據。最常用的是read_csv( )這允許你讀取CSV文件。
  • 快速介紹Python數據分析庫pandas的基礎知識和代碼示例
    我創建了這個pandas函數的備忘單。這不是一個全面的列表,但包含了我在構建機器學習模型中最常用的函數。讓我們開始吧!使用函數pd.read_csv直接將CSV轉換為數據格式。注意:還有另一個類似的函數pd。read_excel用於excel文件。
  • 數據科學家和軟體工程師都在用的pandas函數有哪些?
    import pandas as pdimport numpy as npanime =pd.read_csv('anime-recommendations-database/anime.csv')rating = pd.read_csv('anime-recommendations-database
  • 如果你也用「pandas.read_csv」處理文本,這幾個參數你應該掌握
    我相信使用pandas的同學們,基本都會用到這個方法:read_csv()。這個方法確實簡單易用,但是內置參數特別多,所以今天就分享下這個方法的一些使用技巧。注意,如果設置了skip_blank_lines=True,此參數將忽略空行和注釋行, 因此 header=0 表示第一行數據而非文件的第一行。header=None,則代表著首行不作為列名使用。
  • python項目實踐分享:使用pandas處理大型CSV文件
    如資料庫數據的導入導出、數據分析中記錄的存儲等。因此很多語言都提供了對CSV文件處理的模塊。Python也不例外,其模塊csv提供了一系列與CSV處理相關的 API。如果傳 入字典的時候同時重新指定了 index參數.當index與字典中的鍵不匹配的時候,會 出現時數據丟失的情況,標記為NaN。在pandas中用函數isnull()和notnull()來檢測數據是否丟失。
  • 加速數據分析,這12種高效Numpy和Pandas函數為你保駕護航
    接下來看一看 Pandas 數據分析庫的 6 種函數。Pandas 數據統計包的 6 種高效函數Pandas 也是一個 Python 包,它提供了快速、靈活以及具有顯著表達能力的數據結構,旨在使處理結構化 (表格化、多維、異構) 和時間序列數據變得既簡單又直觀。
  • 超全的pandas數據分析常用函數總結(下篇)
    上篇文章中,小編給大家總結了數據分析中pandas這一模塊裡面常用函數的四個部分的內容,分別為導入模塊、創建數據集並讀取、數據查看與數據清洗,現在給大家介紹下篇的內容。來源 | 凹凸數據5.數據預處理先創建一個data2數據集data2=pd.DataFrame({ "id":np.arange(102,105), "profit":[1,10,2]})data2輸出結果:再創建一個data3數據集data3=pd.DataFrame({ "id":np.arange(111,113), "money
  • 127、使用pandas讀取文本文件
    pandas提供了一些用於將表格型數據讀取為DataFrame對象的函數,其中常用read_csv和read_table讀取文件。0.png下面出現的例子中需要讀取的文件都存放在我自己的電腦 D:Pytho\notebookpydata-book-masterch06 中。
  • Pandas的介紹與基本使用
    以上就是pandas能完成的一些基礎操作,當然並不完全,下面就來看看pandas到底是怎麼用的。在數據分析的過程中非常常用。({'one':pd.Series([1,2,3],index=['a','b','c']),'two':pd.Series([1,2,3],index=['b','a','c'])})運行結果: one twoa 1 2b 2 1c 3 3以上創建方法簡單了解就可以,因為在實際應用當中更多是讀數據,不需要自己手動創建3.2.2、
  • Pandas還能這麼玩?花式導數據、合併、壓縮,數據分析更高效
    現在,數據科學家 Roman Orac 分享了他在工作中相見恨晚的 Pandas 使用技巧。了解了這些技巧,能讓你在學習、使用 Pandas 的時候更加高效。DataFrame 轉 HTML如果你需要用 HTML 發送自動報告,那麼 to_html函數了解一下。
  • python時間序列分析之_用pandas中的rolling函數計算時間窗口數據
    上篇文章中,我們講解了如何對時間數據進行重採樣及重採樣中降採樣和升採樣的概覽和使用方法,通過重採樣我們可以得到任何想要頻率的數據,但是這些數據也是一個時點的數據,那麼就存在這樣一個問題:時點的數據波動較大,某一點的數據不能很好的表現它本身的特性,於是我們就想,能否用一個區間的的數據去表現呢,這樣數據的準確性是不是更好一些呢?
  • 別再用Pandas處理大數據了!現在你擁有更好的選擇
    Pandas並不具備多處理器,並且處理較大的數據集速度很慢。筆者消耗在等待Pandas讀取一堆文件或對其進行匯總計算上的時間太多太多了。最近,筆者發現了一個更好的工具可以更新數據處理管道,使這些CPU內核正常工作!筆者使用該工具進行繁重的數據處理,例如讀取包含10 G數據的多個文件,對其進行過濾並匯總。
  • 數據分析太麻煩?12個Pandas和NumPy函數助你一臂之力!
    PandasPandas是一個Python軟體包,提供快速、靈活和富有表現力的數據結構,旨在使處理結構化(表格,多維,潛在異構)的數據和時間序列數據既簡單又直觀。實際上,數據根本不需要標記,即可放入Pandas數據結構。
  • 第5章 精通pandas合併操作(使用pandas進行數據分析,)
    >df = pd.read_csv('data/table.csv')df.head()一、append與assign1. append方法(a)利用序列添加行(必須指定name)', 'X1'], name='X')pd.concat([df1,s],axis=1)key參數用於對不同的數據框增加一個標號,便於索引:pd.concat([df1,df2], keys=['x', 'y'])pd.concat
  • 20個Pandas函數詳解
    Pandas是一個python數據分析庫。它提供了許多函數和方法來加快數據分析過程。pandas之所以如此普遍,是因為它具有強大的功能,以及他簡單的語法和靈活性。在這篇文章中,我將舉例來解釋20個常用的pandas函數。有些是很常見的,我敢肯定你以前用過。有些對你來說可能是新的。所有函數都將為你的數據分析過程增加價值。
  • 不常見的Pandas小竅門:我打賭一定有你不知道的
    圖源:unsplash作為一名數據分析師或數據科學家,不了解Python中的Pandas庫是無論如何說不過去的,它已經成為Python中用來整理、清理數據的標準工具了。· 在Python中,使用pd.read_csv('path/to/csv/file')將文件讀入一個Pandas數據框架。當然,其實有種更簡單的方法——pd.read_clipboard()。