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

deephub 2021-09-15 14:39:32
技巧 提高 value counts value_counts


数据科学家通常将大部分时间花在探索和预处理数据上。当谈到数据分析和理解数据结构时,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 95
female 73
Q male 41
female 36
S male 441
female 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

本文分享自微信公众号 - DeepHub IMBA(deephub-imba) ,作者:P**nHub兄弟网站

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间: 2021-09-03

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

版权声明
本文为[deephub]所创,转载请带上原文链接,感谢
https://cloud.tencent.com/developer/article/1877700

  1. 从0起步学Python(附程序实例讲解)第1讲
  2. 从0起步学Python(附程序实例讲解)第1讲
  3. Apprendre Python à partir de 0 (avec des exemples de programme) leçon 1
  4. Apprendre Python à partir de 0 (avec des exemples de programme) leçon 1
  5. With Python, I'll take you to enjoy it for a month when the Mid Autumn Festival is coming
  6. You can't write interface software in Python! Which software on sale has no UI?
  7. Python国内外原题解析及源码1~15
  8. Python实现长篇英文自动纠错~
  9. Python implémente la correction automatique des erreurs en anglais long
  10. Analyse des problèmes originaux et code source de Python au pays et à l'étranger 1 ~ 15
  11. 一张思维导图学Python之表白
  12. Python教学中课程思政建设的研究探索2
  13. Recherche sur la construction idéologique et politique du Programme d'études dans l'enseignement Python 2
  14. Une présentation de la cartographie mentale Python
  15. Python高级用法总结(8)-函数式编程
  16. Python + Mirai development QQ robot starting tutorial (2021.9.9 test is valid)
  17. Python Advanced use Summary (8) - functional Programming
  18. How to get started with Python and share learning methods for free. All you want to know is here
  19. Python + Mirai development QQ robot starting tutorial (2021.9.9 test is valid)
  20. Python趣味编程中(PPT适合青少儿和零基础学习Python)
  21. Python基础第1讲(含代码、Python最新安装包、父与子的编程之旅:与小卡特一起学Python中文版)
  22. 用 Python 增强 Git
  23. Python基礎第1講(含代碼、Python最新安裝包、父與子的編程之旅:與小卡特一起學Python中文版)
  24. Base Python leçon 1 (y compris le Code, le dernier paquet d'installation Python, le voyage de programmation parent - enfant: apprendre la version chinoise de python avec le petit Carter)
  25. Dans la programmation amusante Python (ppt pour les jeunes enfants et l'apprentissage de base zéro Python)
  26. 非常好的题目详解Python字典的用法
  27. Python teaches you to build wechat push live Betta reminder from 0 (single room simplified version)
  28. Python 协程与 JavaScript 协程的对比
  29. 手把手带你用Python实现一个量化炒股策略
  30. Main dans la main pour mettre en œuvre une stratégie quantitative de spéculation boursière en python
  31. Comparaison des coproductions Python et JavaScript
  32. 【python种子项目ppc】一行代码生成项目与开发详细指导
  33. Docker 部署一个用 Python 编写的 Web 应用
  34. Python - poetry(4)管理环境
  35. Python - poetry(2)命令介绍
  36. [Python Seed Project PPC] a line of Code Generation Project and Development detailed guidance
  37. Introduction à la commande python - Poetry (2)
  38. Python - Poetry (4) Management Environment
  39. I collected Banhua's spatial data set in Python. In addition to meizhao, I found her other secrets again!
  40. I modified ban Hua's boot password in Python and found her secret after logging in again!
  41. After my girlfriend said good night to you, she was still online. I made a script in Python and successfully conquered it
  42. Python crawlers are used by you to climb sister pictures. We are ashamed to be with them!
  43. Python basic exercises, including answer analysis
  44. I used Python to capture the hot reviews of Wu's microblog events, chatting about technology and eating melons
  45. 60000 word summary of Python basic knowledge points, liver explosion, staying up late in a week [recommended collection]
  46. How do Python crawlers learn? Learn about the responsibilities of recruitment positions and see how much you can earn for your skills
  47. 20 lines of Python code crawl 2W multiple audio file materials [source code attached + detailed analysis] necessary for new media creation
  48. 微软开源浏览器自动化工具Playwright for Python(附源码)
  49. Python 中的进制转换
  50. Python 的算术运算符
  51. Python 的整数
  52. You love me, I love you. It's a headache for IP to be blocked [Python crawler practice: IP proxy JS reverse collection]
  53. Django learning knowledge points, road map, data summary, recommended collection!
  54. Headmaster Wang was hammered instead of flirting with his sister? No matter how rich you are, you just lick the dog [Python reptile actual combat: microblog comments]
  55. We are addicted to short videos and can't extricate ourselves? Python crawler advanced, take you to play short video
  56. How to learn Python Programming? Which books are suitable for beginners
  57. Python is so popular, what's the difference between it and other programming languages?
  58. Python web crawler - Jingdong Mall product list
  59. Django custom user model
  60. All the learning routes of Python and the knowledge system you want are here. Don't do useless work