数据科学家通常将大部分时间花在探索和预处理数据上。 当谈到数据分析和理解数据结构时,Pandas value_counts() 是最受欢迎的函数之一。 该函数返回一个包含唯一值计数的系列。 生成的Series可以按降序或升序排序,通过参数控制包括或排除NA。

在本文中,我们将探讨 Pandas value_counts() 的不同用例。 您将学习如何使用它来处理以下常见任务。

  1. 默认参数
  2. 按升序对结果进行排序
  3. 按字母顺序排列结果
  4. 结果中包含空值
  5. 以百分比计数显示结果
  6. 将连续数据分入离散区间
  7. 分组并调用 value_counts()
  8. 将结果系列转换为 DataFrame
  9. 应用于DataFrame

1、默认参数

Pandas value_counts() 函数返回一个包含唯一值计数的系列。 默认情况下,结果系列按降序排列,不包含任何 NA 值。 例如,让我们从 Titanic 数据集中获取“Embarked”列的计数。

>>> df['Embarked'].value_counts()S    644
C    168
Q     77
Name: Embarked, dtype: int64

2、按升序对结果进行排序

value_count() 返回的系列默认按降序排列。 对于升序结果,我们可以将参数升序设置为 True。

>>> df['Embarked'].value_counts(ascending=True)Q     77
C    168
S    644
Name: Embarked, dtype: int64

3、按字母顺序排列结果

我们已经学习了参数升序以获得按值计数 ASC 或 DESC 排序的结果。 在某些情况下,最好按字母顺序显示我们的结果。 这可以通过在 value_counts() 之后调用 sort_index(ascending=True) 来完成,例如

>>> df['Embarked'].value_counts(ascending=True).sort_index(ascending=True)C    168
Q     77
S    644
Name: Embarked, dtype: int64

4、包括结果中的 NA

默认情况下,结果中会忽略包含任何 NA 值的行。 有一个参数 dropna 来配置它。 我们可以将该值设置为 False 以包含 NA 的行数。

df['Embarked'].value_counts(dropna=False)
S      644
C      168
Q       77
NaN      2
Name: Embarked, dtype: int64

5、以百分比计数显示结果

在进行探索性数据分析时,有时查看唯一值的百分比计数会更有用。 这可以通过将参数 normalize 设置为 True 来完成,例如:

df['Embarked'].value_counts(normalize=True)S    0.724409
C    0.188976
Q    0.086614
Name: Embarked, dtype: float64

如果我们更喜欢用百分号 (%) 格式化结果,我们可以设置 Pandas 显示选项如下:

>>> pd.set_option('display.float_format', '{:.2f}%'.format)
>>> df['Embarked'].value_counts(normalize = True)S   0.72%
C   0.19%
Q   0.09%
Name: Embarked, dtype: float64

6、将连续数据分入离散区间

Pandas value_counts() 可用于使用 bin 参数将连续数据分入离散区间。 与 Pandas cut() 函数类似,我们可以将整数或列表传递给 bin 参数。

当整数传递给 bin 时,该函数会将连续值离散化为大小相等的 bin,例如:

>>> df['Fare'].value_counts(bins=3)
(-0.513, 170.776]     871
(170.776, 341.553]     17
(341.553, 512.329]      3
Name: Fare, dtype: int64

当列表传递给 bin 时,该函数会将连续值划分为自定义组,例如:

>>> df['Fare'].value_counts(bins=[-1, 20, 100, 550])
(-1.001, 20.0]    515
(20.0, 100.0]     323
(100.0, 550.0]     53
Name: Fare, dtype: int64

7、分组并执行 value_counts()

Pandas groupby() 允许我们将数据分成不同的组来执行计算以进行更好的分析。 一个常见的用例是按某个列分组,然后获取另一列的唯一值的计数。 例如,让我们按“Embarked”列分组并获取不同“Sex”值的计数。

>>> df.groupby('Embarked')['Sex'].value_counts()Embarked  Sex
C         male       95female     73
Q         male       41female     36
S         male      441female    203
Name: Sex, dtype: int64

8、将结果系列转换为 DataFrame

Pandas value_counts() 返回一个Series,包括前面带有 MultiIndex 的示例。 如果我们希望我们的结果显示为 DataFrame,我们可以在 value_count() 之后调用 to_frame()。

>>> df.groupby('Embarked')['Sex'].value_counts().to_frame()

9、应用于DataFrame

到目前为止,我们一直将 value_counts() 应用于 Pandas Series,在 Pandas DataFrame 中有一个等效的方法。 Pandas DataFrame.value_counts() 返回一个包含 DataFrame 中唯一行计数的系列。

让我们看一个例子来更好地理解它:

df = pd.DataFrame({'num_legs': [2, 4, 4, 6],'num_wings': [2, 0, 0, 0]},index=['falcon', 'dog', 'cat', 'ant']
)
>>> df.value_counts()num_legs  num_wings
4         0            2
6         0            1
2         2            1
dtype: int64

通过在 df 上调用 value_counts(),它返回一个以 num_legs 和 num_wings 作为索引的 MultiIndex 系列。 从结果中,我们可以发现有 2 条记录的 num_legs=4 和 num_wing=0。

同样,我们可以调用 to_frame() 将结果转换为 DataFrame

>>> df.value_counts().to_frame()

总结

在本文中,我们探讨了 Pandas value_counts() 的不同用例。 我希望这篇文章能帮助你节省学习 Pandas 的时间。 我建议您查看 value_counts() API 的文档并了解您可以做的其他事情。

谢谢阅读。 本文代码在这里:https://github.com/BindiChen/machine-learning/blob/master/data-analysis/046-pandas-value_counts/pandas-value_counts.ipynb

作者:B. Chen

9个value_counts()的小技巧,提高Pandas 改进数据分析效率相关推荐

  1. Python偷懒小技巧-提高10倍工作效率

    说明:增加代码的描述力,可以成倍减少你的LOC,做到简单,并且真切有力 观点:少打字=多思考+少出错,10代码行比50行更能让人明白,以下技巧有助于提高10倍工作效率 1. 交换变量值时避免使用临时变 ...

  2. 使用计算机提高办公效率,掌握这四个电脑办公小技巧,你的工作效率至少提升3倍!要高调使用...

    原标题:掌握这四个电脑办公小技巧,你的工作效率至少提升3倍!要高调使用 职场办公,你有没有羡慕过别人的工作效率?明明差不多的工作,但是有些人就能比你先完成.甚至你在加班的时候,别人早就下班回家玩耍了. ...

  3. 20个Excel操作技巧,提高你的数据分析效率

    对于数据分析,Excel可以被当做一款入门的软件.在学习R或Python前,事先掌握一定的Excel知识是百利而无一害. EXCEL凭借其功能强大的函数.可视化图表.以及整齐排列的电子表格功能,使你能 ...

  4. 6 个工作中休息小技巧,让你工作效率翻倍!

    本文转载自:Google 都在用的 6 个休息小技巧,让你工作效率翻倍 一. 大脑工作久了为什么要休息:为了恢复注意力和意志力 大家应该都有感受,工作久了会累,思想走神,效率就会降低. 研究表明,大脑 ...

  5. 微x怎么设置主题_红人堂:抖音直播预告文案怎么写?5个小技巧提高你的文案吸引力!...

    抖音直播预告文案写得好,直播间人气翻一番! 现在很多主播在直播前都会发布直播预告,以此来提高自己的直播间人气. 但想要最大程度地发挥抖音直播预告文案的作用,你还需要掌握一定的设计技巧. 下面为大家整理 ...

  6. Google 都在用的 6 个休息小技巧,让你工作效率翻倍

    以前上学时,每节课 40 - 50 分钟,然后会休息 10 分钟. 工作后,没有了约束,自己平时忙碌一段时间,也会刷下朋友圈,看个小视频休息一下,我管这叫做劳逸结合,能提高工作效率. 但是,我最近读到 ...

  7. Excel|5个神技巧,提高你的数据分析效率~

    对于刚进入数据分析行业新手来说,EXCEL可以被当做一款入门的软件.在学习R或Python前,事先掌握一定的EXCEL知识是百利而无一害.EXCEL凭借其功能强大的函数.可视化图表.以及整齐排列的电子 ...

  8. 5个Excel常用小技巧,分分钟提升工作效率

    点赞再看,养成习惯:十年之计,莫如树木. 微信搜索[亦心Excel]关注这个不一样的自媒体人. 本文 GitHub https://github.com/hugogoos/Excel 已收录,包含Ex ...

  9. 9个value_counts()的小技巧,提高Pandas 数据分析效率

    来源:DeepHub IMBA本文约1800字,建议阅读5分钟 我们将探讨 Pandas value_counts() 的不同用例. 数据科学家通常将大部分时间花在探索和预处理数据上.当谈到数据分析和 ...

最新文章

  1. 家长学校.net keti.html,家长学校教科研的工作制度
  2. Placement new
  3. 软件设计应该遵循的基本原则有哪些?
  4. 《代码整洁之道》阅读笔记
  5. [ 云炬创业基础笔记]商业模式创新
  6. @hot热加载修饰器导致static静态属性丢失(已解决)
  7. 最全面的Android Studio使用教程【申明:来源于网络】
  8. 手把手实现一条延时消息
  9. python制作的游戏如何转化为swf_如何从python生成swf格式的幻灯片?
  10. python中初始化方法_Python中类的初始化特殊方法
  11. java socket 消息中转,Java中Socket实现消息传输(传输原型)
  12. 高德定位html,Ionic3 高德Web定位
  13. python file operate example - 2
  14. Java ConcurrentHashMap
  15. 十本Java网站开发必看书籍
  16. 山海演武传·黄道·第一卷 雏龙惊蛰 第四章 异兽
  17. Java-微信授权and手机号授权
  18. 引用论坛、社区、问答系统的区别
  19. 蓝凌工作ekp开发使用一些js编写开发记录
  20. 单片机C51复习题(课后习题及答案)

热门文章

  1. Pytorch实现SqueezeNet
  2. python 点餐系统(仅函数实现)
  3. cocoaPods多版本安装
  4. [游记]SDOI2017 R2酱油记
  5. 基于三电平SVPWM发波的异步电机矢量控制学习
  6. 一点计算机电脑就闪,电脑屏幕闪,点一下闪一下
  7. 减少网络卡顿,华为HMS Core无线传输服务赋能连接与通信领域
  8. Postfix配置文件解析
  9. 【Keras】 基于GAN自动生成动漫头像
  10. 易语言制作大漠模块API进程ID取窗口句柄