你可能不知道的pandas的5個基本技巧

2021-02-20 書圈

點擊上方圖片,查看教學大綱

如何用pandas處理大數據學習「between」、「reindex」等功能。這5個pandas的功能是非常有用的,但有時候卻被人忽略

between 函數

多年來我一直在SQL中使用「between」函數,但直到最近才在pandas中發現它。

假設我們有一個帶有價格的DataFrame,我們想要過濾2到4之間的價格。

 df = pd.DataFrame({'price': [1.99, 3, 5, 0.5, 3.5, 5.5, 3.9]})

使用between功能,您可以減少此過濾器:

 df[(df.price >= 2) & (df.price <= 4)]

使用between

 df[df.price.between(2, 4)]

它看起來可能不多,但是當編寫許多過濾器時,這些括號很煩人。帶有between函數的過濾器也更具可讀性。

函數集合都是有等號的:左<=series<=右

用reindex函數修正行順序

重索引函數為一個序列或一個數據文件生成一個新索引。在生成具有預定義順序的列的報告時,我使用reindex函數。

讓我們把t恤的尺寸添加到我們的資料庫裡。分析的目的是計算每種尺寸的平均價格:

 df = pd.DataFrame({'price': [1.99, 3, 5], 'size': ['medium', 'large', 'small']})df_avg = df.groupby('size').price.mean()
 df_avg

在上表中,大小的順序是隨機的。應該訂小杯、中杯、大杯。由於大小是字符串,我們不能使用sort_values函數。這裡有一個重新索引函數:

 df_avg.reindex(['small', 'medium', 'large'])

通過在reindex函數中指定大小的順序,使得結果更容易解釋。

Describe函數

描述函數是進行探索性數據分析時必不可少的工具。它顯示了DataFrame中所有列的基本匯總統計信息。

 df.price.describe()

如果我們想計算10個分位數而不是3個呢?

 df.price.describe(percentiles=np.arange(0, 1, 0.1))

描述函數接受百分比參數。我們可以使用NumPy的arange函數指定百分比數,以避免手工輸入每個百分比。

當與group by功能結合時,這個功能變得非常有用:

 df.groupby('size').describe(percentiles=np.arange(0, 1, 0.1))

使用正則表達式進行文本搜索

我們的t恤數據集有3種尺寸。假設我們想要過濾小的和中號的。一種繁瑣的過濾方式是:

 df[(df['size'] == 'small') | (df['size'] == 'medium')]

這很糟糕,因為我們通常將其與其他過濾器結合在一起,這使得表達式不可讀。有更好的方法嗎?

pandas字符串列有一個「str」訪問器,它實現了許多簡化字符串操作的函數。其中之一是「contains」函數,它支持使用正則表達式進行搜索。

 df[df['size'].str.contains('small|medium')]

帶有「contains」函數的過濾器可讀性更強,更容易擴展和與其他過濾器組合。

大內存數據集

pandas甚至不能讀取比主內存數據集更大的數據。它拋出MemoryError或內核崩潰。但是要處理一個大數據集,你不需要Dask或Vaex這樣的包,只需要一些小技巧。

 iter_csv = pd.read_csv('dataset.csv', iterator=True, chunksize=1000)
 df = pd.concat([chunk[chunk['field'] > constant] for chunk in iter_csv])

分塊讀取數據集比一次全部讀取要慢。我建議只在大於內存數據集的情況下使用這種方法。

在這種情況下,你不需要所有的列,你可以指定需要的列「usecols」參數時,讀取數據集:

 df = pd.read_csv('file.csv', usecols=['col1', 'col2'])

這兩種方法的好處是可以將它們組合在一起。


作者:Roman Orac

deephub翻譯組

相關焦點

  • 你不知道的pandas的5個基本技巧
    這5個pandas的功能是非常有用的,但有時候卻被人忽略它看起來可能不多,但是當編寫許多過濾器時,這些括號很煩人。它顯示了DataFrame中所有列的基本匯總統計信息。大內存數據集pandas甚至不能讀取比主內存數據集更大的數據。它拋出MemoryError或內核崩潰。但是要處理一個大數據集,你不需要Dask或Vaex這樣的包,只需要一些小技巧。
  • 5個Pandas技巧
    一個人不應該花超過合理的時間去完成事情。尤其是當任務涉及基本編碼時。使用Pandas庫能節省你的時間。Pandas是一個開源包。它有助於用Python語言執行數據分析和數據操作。此外,它還為我們提供了靈活的數據結構。
  • 關於Pandas數據處理你不知道的技巧!
    旗下高端量化雲平臺當我們參加一些比賽時,我們可能要花費大量時間來處理數據。本文將由淺到深,為大家講解關於Pandas在數據清理和處理的一些技巧!這與 pandas.Datafram.isnull() 完全相同。相關文檔:https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.isna.html
  • 整理了9個Pandas實用技巧
    __version__Out[7]: 0.24.2如果你還想知道pandas所依賴的模塊的版本,你可以使用show_versions()函數:In [9]:pd.show_versions()INSTALLED VERSIONS --- commit: None python: 3.7.3
  • 5個鮮為人知的Pandas技巧
    本篇文章將會講解5個我最近學到的,並且極大提升了工作效率的Pandas技巧。對於pandas新手而言,Pandas為Python程式語言營造了一個高水平的操作環境,還提供了便於操作的數據結構和分析工具。Pandas這個名字是由「面板數據」(panel data)衍生而來,這是一個計量經濟學中的術語,它是一個數據集,由同一個個體在多個時間段內所觀察的結果組成。
  • 這些pandas技巧你還不會嗎 | Pandas實用手冊(PART II)
    這一系列一共三部分,裡面的一些技巧可能暫時用不上,但是相信總有一天你會接觸到,建議收藏 每一小節對應代碼大家可以在我共享的colab上把玩, 📌 https://colab.research.google.com/drive/1WhKCNkx6VnX1TS8uarTICIK2ViPzNDjw或者老規矩,訂閱號後臺回復 "pd
  • 整理了25個Pandas數據分析的實用技巧
    本文一共為大家分享25個pandas技巧。輸入下面的命令查詢pandas版本:In [7]:pd.In [16]:df.columns = df.columns.str.replace(' ', '_')上述三個函數的結果都一樣,可以更改列名使得列名中不含有空格:
  • Python+pandas你可能不知道的排序技巧
    下面的代碼演示了這個方法的用法:有時候,我們可能需要對不同的列使用不同的順序進行排序,比如某一列升序而另一列降序,這時就需要用到參數ascending的另一種用法了,官方文檔對sort_values()方法的參數解釋如下:
  • 6個提升效率的pandas小技巧
    pandas是python中常用的數據分析庫,出現頻率非常高,而且pandas功能之多讓人咋舌,即使pandas老手也沒法保證能高效使用pandas做數據分析。這篇文章目的梳理幾個高效實用的pandas小技巧,供大家參考。1.
  • Pandas:Value_counts的5種高效技巧.
    /pandas-docs/stable/reference/api/pandas.Series.value_counts.html基本用法作者通過以下數據集來觀察 value-count () 函數的基本用法,其中 Demo 中使用了 Titanic 數據集。
  • 那些可以提升pandas的使用小技巧、你知道了嗎
    ❝已識乾坤大、猶憐草木青❞pandas是Python中常用的數據分析庫、出現頻率非常高;而且極其功能非常多,即使是pandas使用老手也無法保證可以高效使用pandas進行數據分析、以下梳理幾個實用的高效實用pandas小技巧。
  • Python學習指南| 快速入門Pandas數據分析技巧
    首先,你不應該真的只想著去學習pandas。 雖然知道如何在資料庫中執行操作會很有用,但它不會像在數據分析過程中實際使用它的方式那樣。 你可以將你的學習分為兩個不同的類別:1.學習獨立於數據分析的pandas library2.
  • 快速提升效率的6個pandas使用小技巧
    pandas是python中常用的數據分析庫,出現頻率非常高,而且pandas功能之多讓人咋舌,即使pandas老手也沒法保證能高效使用pandas做數據分析。這篇文章目的梳理幾個高效實用的pandas小技巧,供大家參考。1.
  • 11個Python Pandas小技巧讓你的工作更高效(附代碼實例)
    本文為你介紹Pandas隱藏的炫酷小技巧,我相信這些會對你有所幫助。或許本文中的某些命令你早已知曉,只是沒意識到它還有這種打開方式。Pandas是一個在Python中廣泛應用的數據分析包。市面上有很多關於Pandas的經典教程,但本文介紹幾個隱藏的炫酷小技巧,我相信這些會對你有所幫助。
  • Pandas的介紹與基本使用
    如果說沒有pandas的出現,目前的金融數據分析領域還應該是R語言的天下。以上就是pandas能完成的一些基礎操作,當然並不完全,下面就來看看pandas到底是怎麼用的。1.5 # 四分之一均值50% 2.0 2.0 # 二分之一均值75% 2.5 2.5 # 四分之三均值max 3.0 3.0 # 最大值3.2.3、索引和切片DataFrame有行索引和列索引。
  • 10個Python Pandas技巧,使您的工作更有效率!
    本文將介紹一些讀者可能以前不知道的很實用的技巧。read_csv每個人都知道這個命令。但是讀取的數據很大,可以嘗試添加這個參數: nrows = 5 以便在實際加載整個表之前讀取表的一小部分。然後你可以通過選擇錯誤的分隔符來避免錯誤(它可能不總是以逗號分隔)。
  • 獨家 | 11個Python Pandas小技巧讓你的工作更高效(附代碼實例)
    市面上有很多關於Pandas的經典教程,但本文介紹幾個隱藏的炫酷小技巧,我相信這些會對你有所幫助。 1. read_csv這是讀取數據的入門級命令。當要你所讀取的數據量特別大時,試著加上這個參數 nrows = 5,就可以在載入全部數據前先讀取一小部分數據。
  • Pandas實用手冊(PART I)
    這一系列一共三部分,裡面的一些技巧可能暫時用不上,但是相信總有一天你會接觸到,建議收藏 或者老規矩,訂閱號後臺回復 "pd" 獲取 在這篇文章裡頭,我們將接近40個實用的pandas技巧由淺入深地分成6大類別:通過有系統地呈現這些pandas技巧,我們希望能讓更多想要利用Python做數據分析或是想成為data scientist的你,能用最有效率的方式掌握核心pandas能力;同時也希望你能將自己認為實用但本文沒有提到的技巧與我們分享。
  • 高效的5個pandas函數,你都用過嗎?
    之前為大家介紹過10個高效的pandas函數,頗受歡迎,裡面的每一個函數都能幫我們在數據分析過程中節省時間。高效的10個Pandas函數,你都用過嗎?pandas還有很多讓人舒適的用法,這次再為大家介紹5個pandas函數,作為這個系列的第二篇。
  • pandas100個騷操作:再見 for 循環!速度提升315倍!
    但如果從運算時間性能上考慮可能不是特別好的選擇。本次東哥介紹幾個常見的提速方法,一個比一個快,了解pandas本質,才能知道如何提速。因此,如果你不知道如何提速,那正常第一想法可能就是用apply方法寫一個函數,函數裡面寫好時間條件的邏輯代碼。