欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Pandas計(jì)算元素的數(shù)量和頻率的方法(出現(xiàn)的次數(shù))

 更新時(shí)間:2023年02月22日 15:07:22   作者:餃子大人  
本文主要介紹了Pandas計(jì)算元素的數(shù)量和頻率的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

在pandas.Series的pandas.DataFrame列中,將描述獲取唯一元素?cái)?shù)(不包括重復(fù)項(xiàng)的案例數(shù))和每個(gè)元素的出現(xiàn)頻率(出現(xiàn)數(shù))的方法。

使用pandas.Series方法的unique(),value_counts()和nunique()。還提供了nunique()作為pandas.DataFrame的方法。

在這里:

  • pandas.Series.unique():返回NumPy數(shù)組ndarray中唯一元素值的列表
  • pandas.Series.value_counts():返回唯一元素的值及其在出現(xiàn)的次數(shù)。
  • pandas.Series.nunique(), pandas.DataFrame.nunique():返回int,pandas.Series中唯一元素的數(shù)量。

在解釋了基本用法之后,對(duì)一下內(nèi)容進(jìn)行介紹。

  • 唯一元素的數(shù)量(不包括重復(fù)項(xiàng)的)
  • 唯一元素值列表
  • 唯一元素的頻率(出現(xiàn)次數(shù))
  • 獨(dú)特元素及其出現(xiàn)的字典
  • 模式及其頻率
  • 歸一化頻率

以下面的數(shù)據(jù)為例。

import pandas as pd
import numpy as np

df = pd.read_csv('./data/15/sample_pandas_normal.csv')
df.iloc[1] = np.nan
print(df)
# ? ? ? name ? age state ?point
# 0 ? ?Alice ?24.0 ? ?NY ? 64.0
# 1 ? ? ?NaN ? NaN ? NaN ? ?NaN
# 2 ?Charlie ?18.0 ? ?CA ? 70.0
# 3 ? ? Dave ?68.0 ? ?TX ? 70.0
# 4 ? ?Ellen ?24.0 ? ?CA ? 88.0
# 5 ? ?Frank ?30.0 ? ?NY ? 57.0

pandas.Series.unique():返回NumPy數(shù)組ndarray中唯一元素值的列表

unique()返回唯一元素值的列表。一維NumPy數(shù)組ndarray類型而不是列表類型(Python內(nèi)置類型)。還包括缺失值NaN。

u = df['state'].unique()
print(u)
print(type(u))
# ['NY' nan 'CA' 'TX']
# <class 'numpy.ndarray'>

pandas.Series.value_counts():返回唯一元素的值及其在出現(xiàn)的次數(shù)。

value_counts()返回pandas.Series,其中唯一元素的值是index,出現(xiàn)的次數(shù)是data。當(dāng)需要元素的頻率(出現(xiàn)次數(shù))時(shí)使用此選項(xiàng)。

vc = df['state'].value_counts()
print(vc)
print(type(vc))
# NY    2
# CA    2
# TX    1
# Name: state, dtype: int64
# <class 'pandas.core.series.Series'>

默認(rèn)情況下,它按出現(xiàn)次數(shù)的降序排序,但是如果參數(shù)ascending = True,則以升序排序,如果參數(shù)sort = False,則不進(jìn)行排序。

print(df['state'].value_counts(ascending=True))
# TX ? ?1
# CA ? ?2
# NY ? ?2
# Name: state, dtype: int64

print(df['state'].value_counts(sort=False))
# CA ? ?2
# NY ? ?2
# TX ? ?1
# Name: state, dtype: int64

默認(rèn)情況下,NaN被排除,但如果參數(shù)dropna = False,則也計(jì)入NaN。

print(df['state'].value_counts(dropna=False))
# NY     2
# CA     2
# TX     1
# NaN    1
# Name: state, dtype: int64

如果指定了參數(shù)normalize = True,則將值歸一化,以使總數(shù)變?yōu)?。

請(qǐng)注意,如果包含缺失值NaN,則該值將根據(jù)參數(shù)dropna的設(shè)置而有所不同。

print(df['state'].value_counts(dropna=False, normalize=True))
# NY     0.333333
# CA     0.333333
# TX     0.166667
# NaN    0.166667
# Name: state, dtype: float64

pandas.Series.nunique(), pandas.DataFrame.nunique():返回int,pandas.Series中唯一元素的數(shù)量。

pandas.Series.nunique()以整數(shù)int形式返回唯一元素的數(shù)量。

默認(rèn)情況下,不包含NaN,并且如果指定了參數(shù)dropna = False,則結(jié)果還將包含NaN。

nu = df['state'].nunique()
print(nu)
print(type(nu))
# 3
# <class 'int'>

print(df['state'].nunique(dropna=False))
# 4

pandas.DataFrame.nunique()計(jì)算每列的唯一元素?cái)?shù)。返回pandas.Series類型。

默認(rèn)情況下,不包含NaN,并且如果指定了參數(shù)dropna = False,則結(jié)果還將包含NaN。

默認(rèn)情況下,該值為每列,但是如果參數(shù)axis = 1或axis =‘columns’,則返回每行的值。

nu_col = df.nunique()
print(nu_col)
print(type(nu_col))
# name ? ? 5
# age ? ? ?4
# state ? ?3
# point ? ?4
# dtype: int64
# <class 'pandas.core.series.Series'>

print(df.nunique(dropna=False))
# name ? ? 6
# age ? ? ?5
# state ? ?4
# point ? ?5
# dtype: int64

print(df.nunique(dropna=False, axis='columns'))
# 0 ? ?4
# 1 ? ?1
# 2 ? ?4
# 3 ? ?4
# 4 ? ?4
# 5 ? ?4
# dtype: int64

唯一元素的數(shù)量(不包括重復(fù)項(xiàng)的)

如上所述,pandas.Series.nunique()和pandas.DataFrame.nunique()可以計(jì)算唯一元素的數(shù)量(唯一元素的數(shù)量)。

print(df['state'].nunique())
# 3

print(df.nunique())
# name ? ? 5
# age ? ? ?4
# state ? ?3
# point ? ?4
# dtype: int64

唯一元素值列表

使用unique(),您可以獲取NumPy數(shù)組ndarray類型的唯一元素值的列表。如果要使用列表類型(Python內(nèi)置類型),則可以使用tolist()方法將其轉(zhuǎn)換。

print(df['state'].unique().tolist())
print(type(df['state'].unique().tolist()))
# ['NY', nan, 'CA', 'TX']
# <class 'list'>

可以將tolist()方法應(yīng)用于通過(guò)value_counts()獲得的pandas.Series的索引。也可以作為NumPy數(shù)組ndarray類型的值來(lái)獲取。

print(df['state'].value_counts().index.tolist())
print(type(df['state'].value_counts().index.tolist()))
# ['NY', 'CA', 'TX']
# <class 'list'>

print(df['state'].value_counts(dropna=False).index.values)
print(type(df['state'].value_counts().index.values))
# ['NY' 'CA' 'TX' nan]
# <class 'numpy.ndarray'>

如上所述,在unique()的情況下,始終包含NaN,但是value_counts()可以指定參數(shù)dropna是否包含NaN。

唯一元素的頻率(出現(xiàn)次數(shù))

要獲取每個(gè)唯一元素的頻率(出現(xiàn)次數(shù)),請(qǐng)?jiān)L問(wèn)通過(guò)value_counts()獲得的pandas.Series的值。

print(df['state'].value_counts()['NY'])
# 2

print(df['state'].value_counts().NY)
# 2

使用iteritems()方法檢索for循環(huán)中的元素值和頻率(出現(xiàn)次數(shù))。

for index, value in df['state'].value_counts().iteritems():
    print(index, ': ', value)
# NY :  2
# CA :  2
# TX :  1

獨(dú)特元素及其出現(xiàn)的字典

也可以將to_dict()方法應(yīng)用于value_counts()獲得的pandas.Series使其成為字典。

d = df['state'].value_counts().to_dict()
print(d)
print(type(d))
# {'NY': 2, 'CA': 2, 'TX': 1}
# <class 'dict'>

print(d['NY'])
# 2

使用items()方法在for循環(huán)中檢索元素值和頻率(出現(xiàn)次數(shù))。

for key, value in d.items():
    print(key, ': ', value)
# NY :  2
# CA :  2
# TX :  1

模式及其頻率

默認(rèn)情況下,value_counts()返回pandas.Series,它以出現(xiàn)次數(shù)的降序排列,因此頂部是最頻繁出現(xiàn)的值及其頻率。

print(df['state'].value_counts())
# NY ? ?2
# CA ? ?2
# TX ? ?1
# Name: state, dtype: int64

print(df['state'].value_counts().index[0])
# NY

print(df['state'].value_counts().iat[0])
# 2

原始pandas.Series的元素成為所得pandas.Series的索引。當(dāng)數(shù)值為索引時(shí),無(wú)法使用[Number]指定該值(這會(huì)導(dǎo)致錯(cuò)誤),因此嚴(yán)格使用iat [Number]進(jìn)行指定。 (由于示例是字符串,因此[Number]無(wú)關(guān)緊要)

使用apply()方法將其應(yīng)用于pandas.DataFrame的每一列。

Pandas中map(),applymap(),apply()函數(shù)的使用方法

print(df.apply(lambda x: x.value_counts().index[0]))
# name ? ? Frank
# age ? ? ? ? 24
# state ? ? ? NY
# point ? ? ? 70
# dtype: object

print(df.apply(lambda x: x.value_counts().iat[0]))
# name ? ? 1
# age ? ? ?2
# state ? ?2
# point ? ?2
# dtype: int64

如果存在多種模式,則上述方法只能獲得一種模式。

mode()

pandas.Series的mode()方法將模式值返回為pandas.Series。如果使用tolist()列出此結(jié)果,則可以將模式值作為列表獲取。請(qǐng)注意,即使只有一種模式,也將是一個(gè)列表。

print(df['state'].mode())
# 0 ? ?CA
# 1 ? ?NY
# dtype: object

print(df['state'].mode().tolist())
# ['CA', 'NY']

print(df['age'].mode().tolist())
# [24.0]

使用apply()方法將mode()應(yīng)用于每列將產(chǎn)生具有列表類型元素的pandas.Series()。

s_mode = df.apply(lambda x: x.mode().tolist())
print(s_mode)
# name ? ? [Alice, Charlie, Dave, Ellen, Frank]
# age ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?[24.0]
# state ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?[CA, NY]
# point ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?[70.0]
# dtype: object

print(type(s_mode))
# <class 'pandas.core.series.Series'>

print(s_mode['name'])
# ['Alice', 'Charlie', 'Dave', 'Ellen', 'Frank']

print(type(s_mode['name']))
# <class 'list'>

mode()也作為pandas.DataFrame的方法提供。返回pandas.DataFrame。由于各列的模式數(shù)不同,所以空缺部分成為缺失值NaN。

print(df.mode())
#       name   age state  point
# 0    Alice  24.0    CA   70.0
# 1  Charlie   NaN    NY    NaN
# 2     Dave   NaN   NaN    NaN
# 3    Ellen   NaN   NaN    NaN
# 4    Frank   NaN   NaN    NaN

可以使用count()方法獲得每列中的模式數(shù),該方法對(duì)不缺少值NaN的元素?cái)?shù)進(jìn)行計(jì)數(shù)。

print(df.mode().count())
# name     5
# age      1
# state    2
# point    1
# dtype: int64

describe()

同樣,正如我在開(kāi)始時(shí)所寫(xiě)的那樣,describe()方法可用于共同計(jì)算每一列的唯一元素的數(shù)量,模式值及其頻率(出現(xiàn)的次數(shù))。每個(gè)項(xiàng)目都可以使用loc []獲得。

print(df.astype('str').describe())
# ? ? ? ? ?name ? age state point
# count ? ? ? 6 ? ? 6 ? ? 6 ? ? 6
# unique ? ? ?6 ? ? 5 ? ? 4 ? ? 5
# top ? ? Frank ?24.0 ? ?CA ?70.0
# freq ? ? ? ?1 ? ? 2 ? ? 2 ? ? 2

print(df.astype('str').describe().loc['top'])
# name ? ? Frank
# age ? ? ? 24.0
# state ? ? ? CA
# point ? ? 70.0
# Name: top, dtype: object

在describe()中,由列類型dtype計(jì)算出的項(xiàng)是不同的,因此使用astype()進(jìn)行類型轉(zhuǎn)換(轉(zhuǎn)換)。

歸一化頻率

如上所述,當(dāng)將value_counts()的參數(shù)歸一化設(shè)置為True時(shí),將歸一化以使總數(shù)變?yōu)?的值被返回。

請(qǐng)注意,如果包含缺失值NaN,則該值將根據(jù)參數(shù)dropna的設(shè)置而有所不同。

比較多個(gè)數(shù)據(jù)的頻率分布時(shí),很方便。

print(df['state'].value_counts(dropna=False, normalize=True))
# NY     0.333333
# CA     0.333333
# TX     0.166667
# NaN    0.166667
# Name: state, dtype: float64

到此這篇關(guān)于Pandas計(jì)算元素的數(shù)量和頻率(出現(xiàn)的次數(shù))的文章就介紹到這了,更多相關(guān)Pandas計(jì)算元素?cái)?shù)量和頻率內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python實(shí)現(xiàn)簡(jiǎn)單的文件傳輸與MySQL備份的腳本分享

    Python實(shí)現(xiàn)簡(jiǎn)單的文件傳輸與MySQL備份的腳本分享

    這篇文章主要介紹了Python實(shí)現(xiàn)簡(jiǎn)單的文件傳輸與MySQL備份的腳本分享,用到了socket與tarfile模塊,需要的朋友可以參考下
    2016-01-01
  • Pycharm中安裝pywin32報(bào)錯(cuò)問(wèn)題及解決

    Pycharm中安裝pywin32報(bào)錯(cuò)問(wèn)題及解決

    這篇文章主要介紹了Pycharm中安裝pywin32報(bào)錯(cuò)問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-04-04
  • python3讀取csv文件任意行列代碼實(shí)例

    python3讀取csv文件任意行列代碼實(shí)例

    這篇文章主要介紹了python3讀取csv文件任意行列代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-01-01
  • Python映射類型之dict詳解

    Python映射類型之dict詳解

    這篇文章主要為大家詳細(xì)介紹了Python映射類型之dict,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2022-03-03
  • python調(diào)用java的jar包方法

    python調(diào)用java的jar包方法

    今天小編就為大家分享一篇python調(diào)用java的jar包方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-12-12
  • 使用Python實(shí)現(xiàn)廣告點(diǎn)擊率預(yù)測(cè)

    使用Python實(shí)現(xiàn)廣告點(diǎn)擊率預(yù)測(cè)

    廣告點(diǎn)擊率是指有多少用戶點(diǎn)擊了您的廣告與有多少用戶查看了您的廣告的比率,本文主要為大家介紹了如何使用Python實(shí)現(xiàn)廣告點(diǎn)擊率預(yù)測(cè),感興趣的小伙伴可以了解下
    2023-10-10
  • Python利用遞歸和walk()遍歷目錄文件的方法示例

    Python利用遞歸和walk()遍歷目錄文件的方法示例

    在日常開(kāi)發(fā)中經(jīng)常需要檢查一個(gè)“目錄或文件夾”內(nèi)部有沒(méi)有我們想要的文件或者文件夾,下面這篇文章主要給大家介紹了關(guān)于Python利用遞歸和walk()遍歷目錄文件的相關(guān)資料,需要的朋友可以參考借鑒,下面來(lái)一起看看吧。
    2017-07-07
  • 使用Python創(chuàng)建快捷方式管理應(yīng)用

    使用Python創(chuàng)建快捷方式管理應(yīng)用

    在Windows系統(tǒng)中,快速訪問(wèn)常用程序通常通過(guò)“開(kāi)始菜單”中的“應(yīng)用熱門”功能實(shí)現(xiàn),在這篇博客中,我將向你展示如何使用Python和wxPython創(chuàng)建一個(gè)GUI應(yīng)用,幫助用戶輕松將桌面上的快捷方式添加到Windows“開(kāi)始菜單”的“應(yīng)用熱門”中,需要的朋友可以參考下
    2024-08-08
  • 基于Python的圖像閾值化分割(迭代法)

    基于Python的圖像閾值化分割(迭代法)

    這篇文章主要介紹了基于Python的圖像閾值化分割(迭代法),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • 解決python刪除文件的權(quán)限錯(cuò)誤問(wèn)題

    解決python刪除文件的權(quán)限錯(cuò)誤問(wèn)題

    下面小編就為大家分享一篇解決python刪除文件的權(quán)限錯(cuò)誤問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-04-04

最新評(píng)論