【python数据分析】数据的分组,遍历,统计

人工智能58

数据的分组,遍历,统计

俗话说:"人与类聚,物以群分",到这里我们将学习数据的分组以及分组后统计。Pandas的分组相对于Excel会更加简单和灵活。

1️⃣分组

Pandas提供了一个灵活高效的groupby功能,它使你能以一种自然的方式对数据集进行切片、切块、摘要等操作。

✨效果
【python数据分析】数据的分组,遍历,统计

根据结果可以发现,分组后的结果为DataFrameGroupBy object,是一个分组后的对象。

用groupby的size方法可以查看分组后每组的数量,并返回一个含有分组大小的Series:

from pandas import Series,DataFrame

lol_list = [['上单','Nuguri',31,78],
            ['打野','Tian',42,68],
            ['中单','Doinb',51,83],
            ['中单','Faker',38,76],
            ['ADC','Lwx',74,72],
            ['辅助','Crisp',53,69]]

df = DataFrame(data=lol_list,
               index=['a','b','c','d','e','f'],
               columns=['位置','ID号','年龄','数据'])

groups = df.groupby('位置')
print('----------------------------------')

✨效果
【python数据分析】数据的分组,遍历,统计
根据上面的方法,我们可以得到每个职位的比例。请不要犹豫,在下面的代码框中尝试。

[En]

According to the above method, we can get the proportion of each position. Don't hesitate to try it in the code box below.

for i,j in groups.size().items():
    account = j/df.shape[0]
    dd="%.2f%%"%(account*100)
    print(f"{i}占比为{dd}")
print(groups.size())

✨效果

【python数据分析】数据的分组,遍历,统计
df.groupby('位置')是根据位置列对整个数据进行分组, 同样我们也可以只对一列数据进行分组,只保留我们需要的列数据。

例如:我们通过位置,只对年龄列数据进行分组。

group = df['年龄'].groupby(df['位置'])

print(group.groups)

print(group.get_group('中单'))

✨效果
【python数据分析】数据的分组,遍历,统计
1.代码 group = df['年龄'].groupby(df['位置'])
它的逻辑是:取出df中年龄列数据,并且对该列数据根据df['位置']列数据进行分组操作。

2.上一步的代码也可改写成 group = df.groupby(df['位置'])['年龄']
它的逻辑是: 将df数据通过df['位置']进行分组,然后再取出分组后的年龄列数据。 两种写法达到的效果是一样的。

3.group.groups的结果是一个字典,字典的key是分组后每个组的名字,对应的值是分组后的数据,此方法方便我们查看分组的情况。

4.group.get_group('中单')这个方法可以根据具体分组的名字获取,每个组的数据

2️⃣对分组进行遍历

上面我们通过groupby()和size()两个方法以及以前所学的一些技能计算出了各位置的占比。

那如果我们想加入进去呢,我们可以根据年龄来判断,groups.get_group('中单')可以获取分组后某一个组的数据,'中单'为组的名字,这样我们就可以对某一个组进行处理。

from pandas import Series,DataFrame

lol_list = [['韩国','上单','Nuguri',31,78],
            ['中国','打野','Tian',42,68],
            ['韩国','中单','Doinb',51,83],
            ['韩国','中单','Faker',38,76],
            ['中国','中单', 'xiye',21,45],
            ['中国','ADC','Lwx',74,72],
            ['中国','辅助','Crisp',53,69]]

df = DataFrame(data=lol_list,
               index=['a','b','c','d','e','f','g'],
               columns=['国家','位置','ID号','年龄','数据'])

group = df.groupby(df['位置'])['年龄']

print(group.groups)

print(group.get_group('中单'))

【python数据分析】数据的分组,遍历,统计

通过上面的图片,我们可以得到中间顺序的年龄,所以接下来我们将计算他们的平均年龄和最大和最小年龄(这里的样本量很小,但不影响操作)

[En]

Through the picture above, we can get the age of the middle order, so next we will calculate their average age and the maximum and minimum age (here the sample size is small, but does not affect the operation)

group = df.groupby('位置')

group_f = group.get_group('中单')
f_mean = group_f['年龄'].mean()
print(f_mean)

✨效果

【python数据分析】数据的分组,遍历,统计
🚩Pandas常用函数

函数意义count()统计列表中非空数据的个数nunique()统计非重复的数据的个数sum()统计列表中所有数值的和mean()计算列表中的数据的平均值median()统计列表中的数据的中位数max()求列表中数据的最大值min()求列表中数据的最小值

其余的函数大家可以自行尝试

上面的代码成功地计算了我们想要的数据,我们还可以遍历分组的数据,并获得它们的最大年龄、最小年龄和平均年龄。

[En]

The above code successfully calculates the data we want, and we can also traverse the grouped data and get their maximum age, minimum age and average age.

group = df.groupby('位置')

for i,j in group:
    f_mean = j['年龄'].mean()
    print(f"{i}的平均年龄为{f_mean}")

✨效果
【python数据分析】数据的分组,遍历,统计

3️⃣按多列进行分组

当我们的需求更复杂时,例如,如果我们想要根据相应的数据来划分一组数据,我们需要获得每个国家的位置数量。

[En]

When our needs are more complex, if we want to divide a set of data on the basis of a corresponding data, for example, we need to get the number of locations of each country.

按照上面的分析,难道我们要写两次groupby的分组操作?NO,我们强大的groupby()方法是支持按照多列进行分组。看下面

group = df.groupby(['国家','位置'])
df1=group.size()
print(df1)

✨效果

【python数据分析】数据的分组,遍历,统计

当需要按多列进行分组的时候, groupby方法里面我们传入的一个列表,列表中分别存储分组依据的列名。

注意:列表中列名的顺序,确定了 先按国家列进行分组, 然后再 按位置列分组。不同的顺序,产生的分组名字是不同的。

那我们如何去获取里面的单个数据呢,group.size()返回的结果中发现索引值是多层的,那我们只需要一层一层的获取就行了
【python数据分析】数据的分组,遍历,统计

4️⃣对分组后数据进行统计

数据统计(也称为数据聚合)是数据处理的最后一步,通常为每个数组生成单个值。

[En]

Data statistics (also known as data aggregation) is the last step in data processing, usually to generate a single value for each array.

pandas提供了一个 agg( )方法用来对分组后的数据进行统计。

import pandas as pd
df = pd.read_excel('data.xlsx')
groups = df.groupby('gender')
for group_name,group_df in groups:
    f_se = group_df['age'].agg(['max','min','mean'])
    print('{}组的最大年龄是{},最小年龄是{},平均年龄是{}'.format(group_name,f_se[0],f_se[1],f_se[2]))

观察上面的代码,可以发现在使用agg()函数时,我们可以将多个统计函数一起放到一个agg()函数中。

🚩并且需要注意的是,如果是统计函数是pandas提供的,我们只需将函数的名字以字符串的形势存储到列表中即可,例如: 将max()改成'max'。

✨效果
【python数据分析】数据的分组,遍历,统计
这样不仅简化了我们的代码,在添加和删减统计函数的时候我们只需 更改agg()函数中list就可以了。

它的好处还不止这些,比如现在又有新的需求,要计算年龄的最大值和最小值的差值。但是,pandas并没有提供这样统计函数,所以就需要我们进行自己定义一个统计函数:

def peak_range(df):
"""
        返回数值范围
"""
    return df.max() - df.min()

现在我们看一下自己定义的统计函数,如何使用

groups = df.groupby('国家')
def peak_range(df):
"""
        返回数值范围
"""
    return df.max() - df.min()
for group_name,group_df in groups:
    f_se = group_df['年龄'].agg(['max','min','mean',peak_range])
    print(f'{group_name}组的最大年龄是{f_se[0]},最小年龄是{f_se[1]},平均年龄是{f_se[2]},最大值减去最小值{f_se[3]}')

对于数据的分组统计处理,整理到这,有问题加我qq:2024810652

Original: https://blog.csdn.net/m0_53088614/article/details/121883360
Author: 弈鸣coding
Title: 【python数据分析】数据的分组,遍历,统计



相关阅读

Title: dirsearch安装+使用+运行问题(小宇特详解)

dirsearch安装+使用+运行问题(小宇特详解)

前几天电脑坏了重新安装了一下dirsearch,却发现好多问题今天写个文章说一下

这里着重说一下我运行时出现的问题

安装

dirsearch是一个用python开发的网站目录扫描工具
github下载地址

我的系统是win10的

我一开始是将这个东西放到过D盘,也放到过python3环境的位置进行了解压

这里两个方式都可

一般解压之后就可以使用

【python数据分析】数据的分组,遍历,统计

; 使用

使用的方法就是打开dirsearch-master文件后打开cmd命令

【python数据分析】数据的分组,遍历,统计

打开后运行

python setup.py

安装后运行

python dirsearch.py -u ip

详细用法可以查看帮助

python dirsearch.py -h

运行问题

这里我详细说一下这个问题

首先是缺库问题

这里请看图

【python数据分析】数据的分组,遍历,统计

解决办法

pip install certifi

后来又出现了

【python数据分析】数据的分组,遍历,统计

这时用上面的方法来pip的话,我这里出现了问题

【python数据分析】数据的分组,遍历,统计

这里提示pip版本过低

这里升级pip

这里先查看pip版本

pip -V

然后直接升级pip

D:\python3\python.exe -m pip install --upgrade pip

这里的D:\python3\python.exe是我电脑上的python路径

然后

pip install cryptography

这里又出现问题了

【python数据分析】数据的分组,遍历,统计

这个问题我找了半天才找到原因。

这里提示连接被中断,一开始没多想觉得时pip被国内的网断了觉得时下面红字提示的找不到满足加密要求的版本的问题

后来我关了我电脑上的代理才解决了问题。这里直接关代理运行上面的pip即可。

希望我走过的坑你们不用再走。

Original: https://blog.csdn.net/xhy18634297976/article/details/122900500
Author: 小宇特详解
Title: dirsearch安装+使用+运行问题(小宇特详解)

相关文章
如何训练循环神经网络 人工智能

如何训练循环神经网络

你好,这篇文章咱们讨论一下关于「如何训练循环神经网络」的事情... 循环神经网络(RNN)是一种非常强大的神经网络模型,它在处理序列数据方面表现出了非常出色的性能。而在实际应用中,RNN 通常被用来进...
安装tensorflow-gpu版本 人工智能

安装tensorflow-gpu版本

安装tensorflow-gpu 2.5详细步骤 1、配置python环境 ​ 安装anaconda。anaconda是用于科学计算、机器学习的专用软件包,包含python环境及sklearn等一系列...
爱上WPF,努力才会有希望! 人工智能

爱上WPF,努力才会有希望!

从WinForm转向WPF开发已经有两个多月了,通过不断深入地学习与运用,现在是越来越爱它了。它实在是太强大了。运用WPF,你不仅可以做Win界面,也可以很快转向Web开发,因为Silverlight...
集束搜索(Beam Search) 人工智能

集束搜索(Beam Search)

来源:Coursera吴恩达深度学习课程 我们来看看 集束搜索(beam search)算法,上篇文章选择最可能的句子讲了对于机器翻译来说,给定输入(法语句子),我们并不想要一个随机的英语翻译结果,而...