網(wǎng)站首頁(yè) 編程語(yǔ)言 正文
在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類(lèi)型而不是列表類(lèi)型(Python內(nèi)置類(lè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類(lèi)型。
默認(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類(lèi)型的唯一元素值的列表。如果要使用列表類(lèi)型(Python內(nèi)置類(lè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)型的值來(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)生具有列表類(lèi)型元素的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()中,由列類(lèi)型dtype計(jì)算出的項(xiàng)是不同的,因此使用astype()進(jìn)行類(lèi)型轉(zhuǎn)換(轉(zhuǎn)換)。
歸一化頻率
如上所述,當(dāng)將value_counts()的參數(shù)歸一化設(shè)置為T(mén)rue時(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
原文鏈接:https://blog.csdn.net/qq_18351157/article/details/105993752
- 上一篇:沒(méi)有了
- 下一篇:沒(méi)有了
相關(guān)推薦
- 2025-02-10 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(cuda11.8+torch2.2)
- 2022-12-11 教你使用MongoDB導(dǎo)入導(dǎo)出備份數(shù)據(jù)_MongoDB
- 2023-03-23 python調(diào)用excel_vba的兩種實(shí)現(xiàn)方式_python
- 2022-11-05 Android?View轉(zhuǎn)換為Bitmap實(shí)現(xiàn)應(yīng)用內(nèi)截屏功能_Android
- 2022-04-25 C#使用NPOI導(dǎo)出Excel類(lèi)封裝_C#教程
- 2022-06-01 c++?深入理解歸并排序的用法_C 語(yǔ)言
- 2022-08-02 Go語(yǔ)言kylin任務(wù)自動(dòng)化實(shí)例詳解_Golang
- 2022-10-29 python實(shí)現(xiàn)k均值聚類(lèi)(kMeans)基于numpy
- 欄目分類(lèi)
-
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲(chǔ)小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過(guò)濾器
- Spring Security概述快速入門(mén)
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯(cuò)誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡(jiǎn)單動(dòng)態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對(duì)象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支