首页 > 其他分享 >掌握pandas cut函数,一键实现数据分类

掌握pandas cut函数,一键实现数据分类

时间:2024-03-06 13:44:48浏览次数:31  
标签:cut 分类 df 场均 一键 选手 plt pandas

pandas中的cut函数可将一维数据按照给定的区间进行分组,并为每个值分配对应的标签。
其主要功能是将连续的数值数据转化为离散的分组数据,方便进行分析和统计。

1. 数据准备

下面的示例中使用的数据采集自王者荣耀比赛的统计数据。
数据下载地址:https://databook.top/

导入数据:

# 2023年世冠比赛选手的数据
fp = r"D:\data\player-2023世冠.csv"

df = pd.read_csv(fp)

# 这里只保留了下面示例中需要的列
df = df.loc[:, ["排名", "选手", "场均经济", "场均伤害"]]
df

image.png

2. 使用示例

每个选手的“场均经济”“场均伤害”是连续分布的数据,为了整体了解所有选手的情况,
可以使用下面的方法将“场均经济”“场均伤害”分类。

2.1. 查看数据分布

首先,可以使用直方图的方式看看数据连续分布的情况:

import matplotlib.pyplot as plt

df.loc[:, ["场均经济", "场均伤害"]].hist()
plt.show()

image.png
图中的横轴是“经济”和“伤害”的数值,纵轴是选手的数量。

2.2. 定制分布参数

从默认的直方图中可以看出大部分选手的“场均经济”“场均伤害”大致在什么范围,
不过,为了更精细的分析,我们可以进一步定义自己的分类范围,看看各个分类范围内的选手数量情况。

比如,我们将“场均经济”分为3块,分别为0~5000),5000~10000),10000~20000)。
同样,对于“场均伤害”,也分为3块,分别为0~50000),50000~100000),100000~200000)。

bins1 = [0, 5000, 10000, 20000]
bins2 = [0, 50000, 100000, 200000]

labels = ["低", "中", "高"]
s1 = "场均经济"
s2 = "场均伤害"
df[f"{s1}-分类"] = pd.cut(df[s1], bins=bins1, labels=labels)
df[f"{s2}-分类"] = pd.cut(df[s2], bins=bins2, labels=labels)

df

image.png
分类之后,选手被分到3个类别之中,然后再绘制直方图。

df.loc[:, f"{s1}-分类"].hist()
plt.title(f"{s1}-分类")
plt.show()

image.png
从这个图看出,大部分选手都是“中”“高”的经济,说明职业选手很重视英雄发育。

df.loc[:, f"{s2}-分类"].hist()
plt.title(f"{s2}-分类")
plt.show()

image.png
从图中可以看出,打出高伤害的选手比例并不高,可能职业比赛中,更多的是团队作战。

3. 总结

总的来说,cut函数的主要作用是将输入的数值数据(可以是一维数组、Series或DataFrame的列)按照指定的间隔或自定义的区间边界进行划分,并为每个划分后的区间分配一个标签

这样,原始的连续数据就被转化为了离散的分组数据,每个数据点都被分配到了一个特定的组中,从而方便后续进行分析和统计。

标签:cut,分类,df,场均,一键,选手,plt,pandas
From: https://www.cnblogs.com/wang_yb/p/18056341

相关文章

  • Pandas - DataFrame.loc
    描述DataFrame.loc主要是基于标签的索引方式,但也可以使用布尔数组进行索引。单个标签,例如5或'a'(注意5被解释为索引的标签,并不是索引中的整数位置)。标签的列表或数组,例如['a','b','c']。使用标签的切片对象,例如'a':'f'。war:[start]注意与通常的Python切片不同,在......
  • pandas笔记(一)-- 大的国家(逻辑索引、切片)
    题目描述如果一个国家满足下述两个条件之一,则认为该国是大国:面积至少为300万平方公里人口至少为2500万编写解决方案找出大国的国家名称、人口和面积按任意顺序返回结果表,如下例所示测试用例输入:namecontinentareapopulationgdpAfghanistanAsia65223......
  • 无人直播,云SRS,Docker一键搭建安装教程
    如果有服务器并已经安装Docker,可以直接从第四步开始。第一步:选购轻量应用服务器并安装Ubuntu22或者20系统。境外服务器以香港和日本、新加坡为佳。24小时无人直播流量需求比较大,请按照视频码率自己算好,超出后流量非常昂贵。【以视频码率5000为例:5000/8/1024*3600*24*31/1024/102......
  • Windwos JDK环境变量一键配置
    上代码@echooff@echo一键配置jdk环境变量@echobywkong、@echo.cd/d%~dp0setmypath=%~dp0REGADD"HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SessionManager\Environment"/vJAVA_HOME/tREG_EXPAND_SZ/d%mypath%/f@echo设置JAVA_HOME..........
  • 分组聚合不再难:Pandas groupby使用指南
    处理大量数据时,经常需要对数据进行分组和汇总,groupby为我们提供了一种简洁、高效的方式来实现这些操作,从而简化了数据分析的流程。1.分组聚合是什么分组是指根据一个或多个列的值将数据分成多个组,每个组包含具有相同键值(这里的键值即用来分组的列值)的数据行。聚合或者汇总则是......
  • 别再低效筛选数据了!试试pandas query函数
    数据过滤在数据分析过程中具有极其重要的地位,因为在真实世界的数据集中,往往存在重复、缺失或异常的数据。pandas提供的数据过滤功能可以帮助我们轻松地识别和处理这些问题数据,从而确保数据的质量和准确性。今天介绍的query函数,为我们提供了强大灵活的数据过滤方式,有助于从复杂的......
  • Tomcat一键部署脚本
    Tomcat一键部署脚本环境:centos7、已安装wget、已换阿里源简易脚本,抛砖引玉Tomcat一键部署脚本#!/bin/bash#安装Javayuminstalljava-1.8.0-y#检查Java是否安装成功java-versionif[$?-ne0];thenecho"Java安装失败,请检查后重试。"exit1f......
  • python接口自动化系列(14):一键执行生成并打开报告
     本系列汇总,请查看这里:https://www.cnblogs.com/uncleyong/p/18033074需求在前面的篇幅中,查看测试报告,我们要先运行自动化框架(执行pythonmain.py命令)生成result,然后再生成allure-report,最后再打开报告,这样稍显麻烦。有测试小伙伴就问,能不能一键执行生成并打开报告呢?当然可......
  • CutJ
    一、操作系统Windows1064 二、使用说明1、双击【CutJ.exe】程序,程序运行后托盘区域会显示程序图标。 2、右键托盘程序图标,会出现【设置】、【关于】、【退出】三个菜单项。 2.1、设置显示截图文件的保存位置,也可以点击选择按钮选择新的截图文件保存文件夹路径。 ......
  • pytorch报错:Variable._execution_engine.run_backward( # Calls into the C++ engine
    GPU模式下运行pytorch代码报错,pytorch为2.2.1,NVIDIA驱动版本535.161.07File"/home/devil/anaconda3/envs/sample-factory/lib/python3.11/site-packages/torch/_tensor.py",line522,inbackwardtorch.autograd.backward(File"/home/devil/anaconda3/envs/sample-......