Pandas | 5 種技巧高效利用value-counts

2021-03-02 Python那些事


(點擊上方快速關注並設置為星標,一起學Python)

選自towardsdatascience   作者:Parul Pandey

機器之心編譯    參與:王子嘉

數據挖掘是機器學習領域的一個重要組成部分。在確定訓練哪種模型以及訓練多少模型之前,我們必須對數據包含的內容有所了解。Pandas 庫為此提供了許多有用的函數,value_counts 就是其中之一。此函數返回 pandas 數據框中各個項的數量。但在使用 value-counts 函數的大多數時候用到的是默認參數。因此,在這篇短文中,作者介紹了如何通過自定義參數來實現更多的功能。



value_counts()

value_counts() 方法返回一個序列 Series,該序列包含每個值的數量。也就是說,對於數據框中的任何列,value-counts () 方法會返回該列每個項的計數。

圖源:https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.value_counts.html作者通過以下數據集來觀察 value-count () 函數的基本用法,其中 Demo 中使用了 Titanic 數據集。她還在 Kaggle 上發布了一個配套的 notebook。代碼連結:https://www.kaggle.com/parulpandey/five-ways-to-use values -counts首先導入必要的庫和數據集,這是每個數據分析流程的基本步驟。

# Importing necessary librariesimport pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
%matplotlib inline# Reading in the data
train = pd.read_csv( ../input/titanic/train.csv )

由上圖可見,Age、Cabin 和 Embarked 列都有無效值。通過這些分析,我們就對數據集有了初步的了解。現在就讓我們來看一下 value_counts() 是如何對這個數據集進行進一步探索的,那 5 個高效方法又是什麼呢?首先在數據集的 Embarked 列上使用 value_counts (),這樣會對該列中出現的每個值進行計數。

train[ Embarked ].value_counts()
--
S 644
C 168
Q 77

這個函數會對給定列裡面的每個值進行計數並進行降序排序,無效值也會被排除。我們很容易就能看出,Southampton 出發的人最多,其次是 Cherbourg 和 Queenstown。如何用 value_counts() 求各個值的相對頻率有時候,百分比比單純計數更能體現數量的相對關係。當 normalize = True 時,返回的對象將包含各個值的相對頻率。默認情況下,normalize 參數被設為 False。

train[ Embarked ].value_counts(normalize=True)
--
S 0.724409
C 0.188976
Q 0.086614

因此,知道有 72% 的人從 Southampton 出發比單純知道 644 個人從 Southampton 出發要直觀得多。默認情況下,value_counts () 返回的序列是降序的。我們只需要把參數 ascending 設置為 True,就可以把順序變成升序。

train[ Embarked ].value_counts(ascending=True)
--
Q 77
C 168
S 644

如何用 value_counts() 展示 NaN 值的計數默認情況下,無效值(NaN)是不會被包含在結果中的。但是跟之前一樣的,只需要把 dropna 參數設置成 False,你也就可以對無效值進行計數。

train[ Embarked ].value_counts(dropna=False)
--
S 644
C 168
Q 77
NaN 2

如何用 value_counts() 將連續數據放進離散區間這是 value_counts() 所有功能中作者最喜歡的,也是利用最充分的。改變參數 bin 的值,value_counts 就可以將連續數據放進離散區間。這個選項只有當數據是數字型時才會有用。它跟 pd.cut 函數很像,讓我們來看一下它是如何在 Fare 這一列大顯身手的吧!

這個結果並不能告訴我們什麼信息,因為類別太多了。所以讓我們把它集合到 7 個區間裡。

train[ Fare ].value_counts(bins=7)

區間化(Binning)之後的結果更容易理解。我們可以很容易地看到,大多數人支付的票款低於 73.19。此外,我們還可以發現,有五個區間是我們需要的,並且沒有乘客的最後兩個區間是沒用的。因此,我們可以看到,value_counts() 函數是一個非常方便的工具,我們可以使用這一行代碼進行一些有趣的分析。https://towardsdatascience.com/getting-more-value-from-the-pandas-value-counts-aa17230907a6

相關焦點

  • Pandas:Value_counts的5種高效技巧.
    也就是說,對於數據框中的任何列,value-counts () 方法會返回該列每個項的計數。# Importing necessary librariesimport pandas as pdimport numpy as npimport matplotlib.pyplot as pltimport seaborn as sns%matplotlib inline# Reading in the datatrain = pd.read_csv
  • 5種高效利用value-counts函數的方法,一鍵提升數據挖掘姿勢水平
    Pandas 庫為此提供了許多有用的函數,value_counts 就是其中之一。此函數返回 pandas 數據框中各個項的數量。但在使用 value-counts 函數的大多數時候用到的是默認參數。因此,在這篇短文中,作者介紹了如何通過自定義參數來實現更多的功能。
  • 這是 Pandas 最詳細教程了
    pandas 最有趣的地方在於裡面隱藏了很多包。它是一個核心包,裡面有很多其他包的功能。這點很棒,因為你只需要使用 pandas 就可以完成工作。pandas 相當於 python 中 excel:它使用表(也就是 dataframe),能在數據上做各種變換,但還有其他很多功能。
  • Pandas 必知必會的18個實用技巧,值得收藏!!
    df[『c].value_counts().reset_index(): 將這個統計錶轉換成pandas的dataframe並且進行處理。八、lsin () ,依據指定ID來選取行lsin () 用於過濾數據幀。Isin () 有助於選擇特定列中具有特定(或多個)值的行。
  • 史上最全Pandas 教程!
    pandas 最有趣的地方在於裡面隱藏了很多包。它是一個核心包,裡面有很多其他包的功能。這點很棒,因為你只需要使用 pandas 就可以完成工作。pandas 相當於 python 中 excel:它使用表(也就是 dataframe),能在數據上做各種變換,但還有其他很多功能。如果你早已熟知 python 的使用,可以直接跳到第三段。
  • 別找了,這是 Pandas 最詳細教程了
    pandas 最有趣的地方在於裡面隱藏了很多包。它是一個核心包,裡面有很多其他包的功能。這點很棒,因為你只需要使用 pandas 就可以完成工作。pandas 相當於 python 中 excel:它使用表(也就是 dataframe),能在數據上做各種變換,但還有其他很多功能。如果你早已熟知 python 的使用,可以直接跳到第三段。
  • 盤點Pandas 的100個常用函數
    import pandas as pdimport numpy as npx = pd.Series(np.random.normal(2,3,1000))y = 3*x + 10 + pd.Series(np.random.normal(1,2,1000))# 計算x與y的相關係數print(x.corr(y))# 計算y的偏度print(y.skew())
  • 5個Pandas技巧
    作者 | RAM DEWANI 編譯 | VK 來源 | Analytics Vidhya概述Pandas提供了許多技術,使Python中的數據分析更容易我們將討論一些技巧,幫助你成為一個更好、更高效的分析師介紹
  • 100 個 pandas 數據分析函數總結
    import pandas as pdimport numpy as npx = pd.Series(np.random.normal(2,3,1000))y = 3*x + 10 + pd.Series(np.random.normal(1,2,1000))# 計算x與y的相關係數print(x.corr(y))#
  • 【pandas 基礎】
    構建的含有更高級數據結構和工具的數據分析包類似於 Numpy 的核心是 ndarray,pandas 也是圍繞著 Series 和 DataFrame 兩個核心數據結構展開的 。pandas 約定俗成的導入方法如下:lang:pythonfrom pandas import Series,DataFrameimport pandas as pd<br />SeriesSeries 可以看做一個定長的有序字典。
  • 想成為高效數據科學家?不會Pandas怎麼行
    pandas 最有趣的地方在於裡面隱藏了很多包。它是一個核心包,裡面有很多其他包的功能。這點很棒,因為你只需要使用 pandas 就可以完成工作。skiprows=[2,5] 表示你在讀取文件的時候會移除第 2 行和第 5 行。
  • Pandas 必知必會的使用技巧,值得收藏!
    本期的主題是關於python的一個數據分析工具pandas的,歸納整理了一些工作中常用到的pandas使用技巧,方便更高效地實現數據分析。 df = pd.DataFrame({'Sp':['a','b','c','d','e','f'], 'Mt':['s1', 's1', 's2','s2','s2','s3'], 'Value':[1,2,3,4,5,6], 'Count':[3,2,5,10,10,6]}) df df.iloc
  • 使用Pandas qcut 和cut分箱數據
    現在,對於第二列:在大多數情況下,僅僅將q定義為一個整數會更簡單一些:三分位點: q=[0, 1/3, 2/3, 1] 或 q=3五分位點: q=[0, .2, .4, .6, .8, 1] 或 q=5六分位點: q=[0, 1/6, 1/3, .5, 2/3, 5/6, 1] 或 q=6您可能會有一個疑問,我怎麼知道用什麼範圍來識別不同的箱呢?
  • 一日二技:Pandas 與 Docker 的使用技巧
    pandas 讀取無頭 CSV我們知道,CSV 一般是長這樣的:
  • Pandas as pd基礎知識一
    = pd.Series([1, 'a', 5.2, 7]) print(s1) print(s1.index) print(s1.values)    """================方法二======================="""s2 = pd.Series([1, 'a', 5.2, 7], index=['a', 'b', 'c', 'd'])print(s2
  • 總結了 67 個 pandas 函數,完美解決數據處理!
    # 在使用之前,需要導入pandas庫import pandas as pd導⼊數據pd.DataFrame() # 自己創建數據框,用於練習pd.read_csv(filename) # 從CSV⽂件導⼊數據
  • 12 種高效 Numpy 和 Pandas 函數為你加速分析
    二者在日常的數據分析中都發揮著重要作用,如果沒有 Numpy 和 Pandas 的支持,數據分析將變得異常困難。但有時我們需要加快數據分析的速度,有什麼辦法可以幫助到我們嗎?在本文中,數據和分析工程師 Kunal Dhariwal 為我們介紹了 12 種 Numpy 和 Pandas 函數,這些高效的函數會令數據分析更為容易、便捷。
  • Python中 Pandas 50題衝關
    參考資料 | 100-pandas-puzzles - GitHub | Pandas 百題大衝關基本操作導入 Pandas 庫並簡寫為 pd,並輸出版本號import pandas as pdpd.3, 0.5, np.nan, 5, 2, 4.5, np.nan, 7, 3], 'visits': [1, 3, 2, 3, 2, 3, 1, 1, 2, 1], 'priority': ['yes', 'yes', 'no', 'yes', 'no', 'no', 'no', 'yes', 'no', 'no']}labels =
  • 讓數據分析更簡單的Panda技巧:萬能轉格式、輕鬆合併、數據壓縮...
    現在,數據科學家 Roman Orac 分享了他在工作中相見恨晚的 Pandas 使用技巧。了解了這些技巧,能讓你在學習、使用 Pandas 的時候更加高效。話不多說,一起學習一下~Pandas實用技巧用 Pandas 做數據分析,最大的亮點當屬 DataFrame。不過,在展示成果的時候,常常需要把 DataFrame 轉成另一種格式。
  • 10個Python Pandas技巧,使您的工作更有效率!
    value counts這是檢查值分布的命令。例如,如果您想檢查「c」列中每個值的可能值和頻率,您可以執行此操作:df['c'].value_counts()還有就是它的一些有用的技巧/參數: A. normalize = True:如果您想檢查頻率而不是計數。 B. dropna = False:如果您還想在統計中包含缺失的值。