热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Pandasvalue_counts操作Series数组

     列中出现的每个值进行计数对给定列里面的每个值进行计数并进行降序排序,无效值也会被排除(默认从最高到最低做降序排列)value_counts()返回的序列是降序的。我们只需

 
 
 
 

 

列中出现的每个值进行计数 对给定列里面的每个值进行计数并进行降序排序,无效值也会被排除(默认从最高到最低做降序排列)
value_counts () 返回的序列是降序的。我们只需要把参数 ascending 设置为 True,就可以把顺序变成升序。
value_counts()返回的结果是一个Series数组,可以跟别的数组进行运算。value_count()跟透视表里(pandas或者excel)的计数很相似,都是返回一组唯一值,并进行计数。这样能快速找出重复出现的值。

 

dr = pd.DataFrame(df_search_issues.T, cite_bug_from_cycle_column)
if self.switch_issue_priority:
self.df_issue_priority = pd.concat([dr.T['严重程度'].value_counts(), pd.DataFrame(index=['1', '2', '3', '4', '5'])], axis=1).T.rename(index=str, columns={"1": "一级", "2": "二级", "3": "三级", "4": "四级", "5": "五级"})
print('拼接严重程度表格:\n{}'.format(self.df_issue_priority))
self.df_issue_priority = self.df_issue_priority.rename(index={"严重程度": "总个数"}).fillna(0)
print('重命名索引:\n{}'.format(self.df_issue_priority))
self.df_issue_priority = self.df_issue_priority[['一级', '二级', '三级', '四级', '五级']].astype(int)
print('重命名索引:\n{}'.format(self.df_issue_priority))

 

 

def value_counts(
values,
sort: bool = True,
ascending: bool = False,
normalize: bool = False,
bins=None,
dropna: bool = True,
) -> "Series":
"""
Compute a histogram of the counts of non-null values.
Parameters
----------
values : ndarray (1-d)
sort : bool, default True
Sort by values
ascending : bool, default False
Sort in ascending order
normalize: bool, default False
If True then compute a relative histogram
bins : integer, optional
Rather than count values, group them into half-open bins,
convenience for pd.cut, only works with numeric data
dropna : bool, default True
Don't include counts of NaN
Returns
-------
Series
"""
from pandas.core.series import Series
name = getattr(values, "name", None)
if bins is not None:
from pandas.core.reshape.tile import cut
values = Series(values)
try:
ii = cut(values, bins, include_lowest=True)
except TypeError:
raise TypeError("bins argument only works with numeric data.")
# count, remove nulls (from the index), and but the bins
result = ii.value_counts(dropna=dropna)
result = result[result.index.notna()]
result.index = result.index.astype("interval")
result = result.sort_index()
# if we are dropna and we have NO values
if dropna and (result.values == 0).all():
result = result.iloc[0:0]
# normalizing is by len of all (regardless of dropna)
counts = np.array([len(ii)])
else:
if is_extension_array_dtype(values):
# handle Categorical and sparse,
result = Series(values)._values.value_counts(dropna=dropna)
result.name = name
counts = result.values
else:
keys, counts = _value_counts_arraylike(values, dropna)
result = Series(counts, index=keys, name=name)
if sort:
result = result.sort_values(ascending=ascending)
if normalize:
result = result / float(counts.sum())
return result

 

探索性数据分析(EDA)与数据分析的任何部分一样重要,因为真实的数据集确实很乱,如果您不知道数据,很多事情都会出错。为此,Pandas库配备了一些方便的功能,并且value_counts是其中之一。Pandasvalue_counts返回一个对象,该对象按排序顺序在pandas数据框中包含唯一值的计数。但是,大多数用户倾向于忽略此功能,不仅可以与默认参数一起使用。因此,在本文中,我将向您展示如何value_counts通过更改默认参数和一些其他技巧来从熊猫中获取更多价值,这些技巧将节省您的时间。


什么是value_counts()函数?

value_counts()函数用于获取包含唯一值计数的系列。生成的对象将按降序排列,以便第一个元素是最频繁出现的元素。默认情况下不包括NA值。

句法

df['your_column'].value_counts() -这将返回指定列中唯一事件的计数。

需要注意的是,value_counts仅适用于pandas系列,不适用于Pandas数据框。结果,我们只包含一个括号df ['your_column'],而不包含两个括号df [['your_column']]。

参量



  • normalize(布尔值,默认为False)-如果为True,则返回的对象将包含唯一值的相对频率。

  • sort(布尔值,默认为True)-按频率排序。

  • 升序(布尔,默认为False)-按升序排序。

  • bins(整数,可选)-而不是对值进行计数,而是将它们分组为半开式垃圾箱,这对的方便之处pd.cut仅适用于数字数据。

  • dropna(布尔值,默认为True)-不包括NaN计数。


加载实时演示的数据集

让我们看看使用数据集的此方法的基本用法。我将使用Kaggle的Coursera课程数据集进行实时演示。我还在git上发布了一个随附的笔记本,以防您想要获取我的代码。

让我们从导入所需的库和数据集开始。这是每个数据分析过程中的基本步骤。然后在Jupyter笔记本中查看数据集。

# import package
import pandas as pd
# Loading the dataset
df = pd.read_csv('coursea_data.csv')
#quick look about the information of the csv
df.head(10)

加载数据集

# check how many records are in the dataset
# and if we have any NA
df.info()

这就告诉我们,我们的数据集中有891条记录,并且没有任何NA值。


1.)使用默认参数的value_counts()

现在我们可以使用value_counts函数了。让我们从函数的基本应用开始。

语法-df['your_column'].value_counts()

我们将从我们的数据框中获取Course_difficulty列的计数。

# count of all unique values for the column course_difficulty
df['course_difficulty'].value_counts()

value_counts函数的基本用法

value_counts函数以降序返回给定索引中所有唯一值的计数,不包含任何空值。我们可以很快地看到最大的课程具有初学者难度,其次是中级和混合,然后是高级。

既然我们已经了解了该函数的基本用法,那么现在该弄清楚参数的作用了。


2.)value_counts()升序

value_counts()默认情况下,返回的系列是降序排列的。我们可以通过将ascending参数设置为来反转大小写True

语法-df['your_column'].value_counts(ascending=True)

# count of all unique values for the column course_difficulty
# in ascending order
df['course_difficulty'].value_counts(ascending=True)

value_counts升序


3.)value_counts()的人为计数或唯一值的相对频率。

有时,获得百分比计数比正常计数更好。通过设置normalize=True,返回的对象将包含唯一值的相对频率。该normalize参数False默认设置为。

语法-df['your_column'].value_counts(normalize=True)

# value_counts percentage view
df['course_difficulty'].value_counts(normalize=True)

以百分比表示的value_counts


4.)value_counts()将连续数据分成离散间隔

这是一个通常未被充分利用的伟大黑客。的 value_counts()可用于连续仓数据分成离散的间隔与所述的帮助bin参数。此选项仅适用于数值数据。它类似于pd.cut功能。让我们使用course_rating列查看其工作方式。让我们将列的计数分为4个bin。

语法-df['your_column'].value_counts(bin = number of bins)

# applying value_counts with default parameters
df['course_rating'].value_counts()
# applying value_counts on a numerical column
# with the bin parameter
df['course_rating'].value_counts(bins=4)

valse_counts默认参数 合并的value_counts个

Binning使您很容易理解所传达的想法。我们可以很容易地看到,总人口中的大多数人对课程的评分高于4.5。评分低于4.15的异常值很少(只有7个评分低于4.15的课程)。


5.)value_counts()显示NaN值

默认情况下,从结果中排除空值计数。但是,通过将dropna参数设置为,可以轻松显示相同内容False。由于我们的数据集没有任何空值,因此设置dropna参数不会有任何不同。但这可以用于另一个具有空值的数据集,因此请记住这一点。

语法-df['your_column'].value_counts(dropna=False)


6.)value_counts()作为数据框

如本文开头所述,value_counts返回系列,而不是数据框。如果您希望将计数作为数据框使用,可以使用。.to_frame()之后的函数.value_counts()

我们可以将序列转换为数据框,如下所示:

语法-df['your_column'].value_counts().to_frame()

# applying value_counts with default parameters
df['course_difficulty'].value_counts()
# value_counts as dataframe
df['course_difficulty'].value_counts().to_frame()

正常的value_counts和value_counts为df

如果您需要命名索引列并重命名一列(在数据框中包含计数),则可以以略有不同的方式转换为数据框。

value_counts = df['course_difficulty'].value_counts()
# converting to df and assigning new names to the columns
df_value_counts = pd.DataFrame(value_counts)
df_value_counts = df_value_counts.reset_index()
df_value_counts.columns = ['unique_values', 'counts for course_difficulty'] # change column names
df_value_counts

7.)分组和value_counts

这是value_counts()函数的我最喜欢的用法之一,也是未得到充分利用的函数。Groupby是一种非常强大的熊猫方法。您可以使用来对一列进行分组并针对该列值计算另一列的值value_counts

语法-df.groupby('your_column_1')['your_column_2'].value_counts()

使用groupbyvalue_counts我们可以计算每种类型的课程难度的证书类型数量。

按课程难度和课程证书类型的值计数进行分组

这是一个多索引,是pandas数据框中的一个有价值的窍门,它使我们可以在数据框中使用几个级别的索引层次结构。在这种情况下,课程难度为索引的级别0,证书类型为级别1。


8.带有约束的熊猫值计数

使用数据集时,可能需要使用索引列返回的出现次数,该次数value_counts()也受到约束的限制。

语法-df['your_column'].value_counts().loc[lambda x : x>1]

上面的快速单行代码将过滤出唯一数据的计数,并且仅查看指定列中的值大于1的数据。

让我们通过限制课程等级大于4来证明这一点。

# prints standart value_counts for the column
df['course_rating'].value_counts()
# prints filtered value_counts for the column
df['course_rating'].value_counts().loc[lambda x : x>4]

有约束的value_counts

因此,我们可以看到值计数是一个方便的工具,并且我们可以用这一行代码进行一些有趣的分析



推荐阅读
  • 先看官方文档TheJavaTutorialshavebeenwrittenforJDK8.Examplesandpracticesdescribedinthispagedontta ... [详细]
  • 本文由编程笔记#小编为大家整理,主要介绍了logistic回归(线性和非线性)相关的知识,包括线性logistic回归的代码和数据集的分布情况。希望对你有一定的参考价值。 ... [详细]
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • VScode格式化文档换行或不换行的设置方法
    本文介绍了在VScode中设置格式化文档换行或不换行的方法,包括使用插件和修改settings.json文件的内容。详细步骤为:找到settings.json文件,将其中的代码替换为指定的代码。 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • 本文介绍了P1651题目的描述和要求,以及计算能搭建的塔的最大高度的方法。通过动态规划和状压技术,将问题转化为求解差值的问题,并定义了相应的状态。最终得出了计算最大高度的解法。 ... [详细]
  • sklearn数据集库中的常用数据集类型介绍
    本文介绍了sklearn数据集库中常用的数据集类型,包括玩具数据集和样本生成器。其中详细介绍了波士顿房价数据集,包含了波士顿506处房屋的13种不同特征以及房屋价格,适用于回归任务。 ... [详细]
  • Python正则表达式学习记录及常用方法
    本文记录了学习Python正则表达式的过程,介绍了re模块的常用方法re.search,并解释了rawstring的作用。正则表达式是一种方便检查字符串匹配模式的工具,通过本文的学习可以掌握Python中使用正则表达式的基本方法。 ... [详细]
  • 本文详细介绍了Java中vector的使用方法和相关知识,包括vector类的功能、构造方法和使用注意事项。通过使用vector类,可以方便地实现动态数组的功能,并且可以随意插入不同类型的对象,进行查找、插入和删除操作。这篇文章对于需要频繁进行查找、插入和删除操作的情况下,使用vector类是一个很好的选择。 ... [详细]
  • [大整数乘法] java代码实现
    本文介绍了使用java代码实现大整数乘法的过程,同时也涉及到大整数加法和大整数减法的计算方法。通过分治算法来提高计算效率,并对算法的时间复杂度进行了研究。详细代码实现请参考文章链接。 ... [详细]
  • ALTERTABLE通过更改、添加、除去列和约束,或者通过启用或禁用约束和触发器来更改表的定义。语法ALTERTABLEtable{[ALTERCOLUMNcolu ... [详细]
  • 深度学习中的Vision Transformer (ViT)详解
    本文详细介绍了深度学习中的Vision Transformer (ViT)方法。首先介绍了相关工作和ViT的基本原理,包括图像块嵌入、可学习的嵌入、位置嵌入和Transformer编码器等。接着讨论了ViT的张量维度变化、归纳偏置与混合架构、微调及更高分辨率等方面。最后给出了实验结果和相关代码的链接。本文的研究表明,对于CV任务,直接应用纯Transformer架构于图像块序列是可行的,无需依赖于卷积网络。 ... [详细]
  • Python爬虫中使用正则表达式的方法和注意事项
    本文介绍了在Python爬虫中使用正则表达式的方法和注意事项。首先解释了爬虫的四个主要步骤,并强调了正则表达式在数据处理中的重要性。然后详细介绍了正则表达式的概念和用法,包括检索、替换和过滤文本的功能。同时提到了re模块是Python内置的用于处理正则表达式的模块,并给出了使用正则表达式时需要注意的特殊字符转义和原始字符串的用法。通过本文的学习,读者可以掌握在Python爬虫中使用正则表达式的技巧和方法。 ... [详细]
  • 本文介绍了一种划分和计数油田地块的方法。根据给定的条件,通过遍历和DFS算法,将符合条件的地块标记为不符合条件的地块,并进行计数。同时,还介绍了如何判断点是否在给定范围内的方法。 ... [详细]
  • 本文介绍了多因子选股模型在实际中的构建步骤,包括风险源分析、因子筛选和体系构建,并进行了模拟实证回测。在风险源分析中,从宏观、行业、公司和特殊因素四个角度分析了影响资产价格的因素。具体包括宏观经济运行和宏经济政策对证券市场的影响,以及行业类型、行业生命周期和行业政策对股票价格的影响。 ... [详细]
author-avatar
用户da7lbtmrer
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有