亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Pandas怎么計算元素的數量和頻率

發布時間:2023-02-22 16:31:11 來源:億速云 閱讀:108 作者:iii 欄目:開發技術

本篇內容介紹了“Pandas怎么計算元素的數量和頻率”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

在pandas.Series的pandas.DataFrame列中,將描述獲取唯一元素數(不包括重復項的案例數)和每個元素的出現頻率(出現數)的方法。

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

在這里:

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

  • pandas.Series.value_counts():返回唯一元素的值及其在出現的次數。

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

在解釋了基本用法之后,對一下內容進行介紹。

  • 唯一元素的數量(不包括重復項的)

  • 唯一元素值列表

  • 唯一元素的頻率(出現次數)

  • 獨特元素及其出現的字典

  • 模式及其頻率

  • 歸一化頻率

以下面的數據為例。

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數組ndarray中唯一元素值的列表

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

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

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

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

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'>

默認情況下,它按出現次數的降序排序,但是如果參數ascending = True,則以升序排序,如果參數sort = False,則不進行排序。

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

默認情況下,NaN被排除,但如果參數dropna = False,則也計入NaN。

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

如果指定了參數normalize = True,則將值歸一化,以使總數變為1。

請注意,如果包含缺失值NaN,則該值將根據參數dropna的設置而有所不同。

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中唯一元素的數量。

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

默認情況下,不包含NaN,并且如果指定了參數dropna = False,則結果還將包含NaN。

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

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

pandas.DataFrame.nunique()計算每列的唯一元素數。返回pandas.Series類型。

默認情況下,不包含NaN,并且如果指定了參數dropna = False,則結果還將包含NaN。

默認情況下,該值為每列,但是如果參數axis = 1或axis =&lsquo;columns&rsquo;,則返回每行的值。

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

唯一元素的數量(不包括重復項的)

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

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

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

唯一元素值列表

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

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

可以將tolist()方法應用于通過value_counts()獲得的pandas.Series的索引。也可以作為NumPy數組ndarray類型的值來獲取。

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()可以指定參數dropna是否包含NaN。

唯一元素的頻率(出現次數)

要獲取每個唯一元素的頻率(出現次數),請訪問通過value_counts()獲得的pandas.Series的值。

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

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

使用iteritems()方法檢索for循環中的元素值和頻率(出現次數)。

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

獨特元素及其出現的字典

也可以將to_dict()方法應用于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循環中檢索元素值和頻率(出現次數)。

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

模式及其頻率

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

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的索引。當數值為索引時,無法使用[Number]指定該值(這會導致錯誤),因此嚴格使用iat [Number]進行指定。 (由于示例是字符串,因此[Number]無關緊要)

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

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

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()列出此結果,則可以將模式值作為列表獲取。請注意,即使只有一種模式,也將是一個列表。

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()應用于每列將產生具有列表類型元素的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。由于各列的模式數不同,所以空缺部分成為缺失值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()方法獲得每列中的模式數,該方法對不缺少值NaN的元素數進行計數。

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

describe()

同樣,正如我在開始時所寫的那樣,describe()方法可用于共同計算每一列的唯一元素的數量,模式值及其頻率(出現的次數)。每個項目都可以使用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計算出的項是不同的,因此使用astype()進行類型轉換(轉換)。

歸一化頻率

如上所述,當將value_counts()的參數歸一化設置為True時,將歸一化以使總數變為1的值被返回。

請注意,如果包含缺失值NaN,則該值將根據參數dropna的設置而有所不同。

比較多個數據的頻率分布時,很方便。

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怎么計算元素的數量和頻率”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

贵定县| 兴隆县| 静海县| 青铜峡市| 通化市| 册亨县| 交城县| 田林县| 新密市| 余江县| 射阳县| 沁水县| 崇文区| 阿克陶县| 正宁县| 临沂市| 吴桥县| 平南县| 东台市| 理塘县| 鄂伦春自治旗| 恩平市| 应用必备| 全州县| 囊谦县| 于都县| 靖西县| 巴青县| 华池县| 彝良县| 永兴县| 宣威市| 紫阳县| 尉犁县| 宾川县| 伊吾县| 石棉县| 大竹县| 双辽市| 岢岚县| 年辖:市辖区|