Pandas | 通过PUBG数据集进行数据分析并理解函数使用

PUBG数据分析

  • PUBG数据集
  • train 数据分析
      • iloc和loc
    • 过滤参数人数少的比赛
      • duplicated()
      • .count() 和 transform('count')
      • countplot绘图函数
    • 补充:查看判断pd的某一列是否没有重复值
      • 方法 1: 使用 `duplicated()` 方法
      • 方法 2: 使用 `nunique()` 方法
      • 方法 3: 使用 `value_counts()` 方法

PUBG数据集

在这里插入图片描述

train 数据分析

# 数据量很大  读取需要时间
train = pd.read_csv('Data/train_V2.csv')
test = pd.read_csv('Data/test_V2.csv')

在这里插入图片描述
winPlacePerc 列是标签列 查看是否缺失 若是缺失 删除该行数据

train[train['winPlacePerc'].isnull()]

在这里插入图片描述
删除缺失值,并查看

train.drop(2744604,inplace=True)
train[train['winPlacePerc'].isnull()]

在这里插入图片描述


iloc和loc

在上一步骤中train.drop(2744604,inplace=True)代码在源train中删除了这行数据【inplace参数的作用】,
在这里插入图片描述

train.index[2744603],train.index[2744604],train.index[2744605]

(2744603, 2744605, 2744606)

此时查看2744604索引对应的数值其实发生了变化 这是理解iloc和loc区别的关键从2744604往后的索引都发生了变化

train.loc[train.index[2744604],:]  # 基于索引  选择

在这里插入图片描述
在这里插入图片描述

train.iloc[train.index[2744604],5]  #  基于实际的行数值 选择  即第2744605 行

167.2
在这里插入图片描述

.iloc[] 是基于整数位置的索引器,它接受行和列的整数位置作为输入。当你使用 .iloc[] 时,是基于行和列的数值位置来选择数据的,而不是基于行和列的标签。对应的实际的行数

.loc[] 是基于标签的索引器,它接受行和列的标签作为输入。当你使用 .loc[] 时,你是基于行和列的标签来选择数据的。------对应的‘索引’位置

如下图:红色字体是实际的数值位置,而黑色是标签位置也可以理解为索引位置
在这里插入图片描述


过滤参数人数少的比赛

matchId 表示同一场比赛

train.Id.duplicated().sum()  

0

参赛人员没有重复值

duplicated()

len(train.matchId.unique()) 

47964

train.groupby('matchId')['matchId'].count()

在这里插入图片描述

train['playersJoin'] = train.groupby('matchId')['matchId'].transform('count')

这将返回一个与 train DataFrame 行数相同长度的Series,其中每个值代表相应 matchId 的出现次数。


.count() 和 transform(‘count’)

弄清两个函数的区别的前提 针对该问题:计算每场比赛的参赛人数 目的是创建新的一列Series并在后面加入人数
在这里插入图片描述

在Pandas中,groupby 方法用于对数据进行分组,而 transform 和 count 是对分组后的数据进行操作的两种不同方法。
transform 方法将 groupby 操作应用到指定的列上,并返回与原始数据相同长度的序列。在这种情况下,‘count’ 聚合函数计算每个组中非NA/null值的数量,然后将这个计数应用到每个组内的每个元素上。

import pandas as pd# 创建示例 DataFrame
data = {'matchId': [1, 1, 2, 2, 3, 3, 3],'otherColumn': ['A', 'B', 'C', 'D', 'E', 'F', 'G']
}
train = pd.DataFrame(data)# 使用 transform('count') 和 count()
transform_count = train.groupby('matchId')['matchId'].transform('count')
count_result = train.groupby('matchId')['matchId'].count()print("Transform Count:")
print(transform_count)print("\nCount Result:")
print(count_result)

Transform Count:
0 2
1 2
2 2
3 2
4 3
5 3
6 3
Name: matchId, dtype: int64

Count Result:
matchId
1 2
2 2
3 3
Name: matchId, dtype: int64

效果一样吗?
不,transform('count')count() 的效果不一样,它们在用法和返回结果上有明显的区别:

  1. groupby(...).transform('count'):

    • 这个方法返回的是一个与原始 DataFrame 行数相同长度的 Series
    • 每个元素的值代表相应组在指定列上的非空值数量。
    • 结果 Series 的索引与原始 DataFrame 的索引相同。
    • 可以保留原始数据的顺序和结构。
  2. groupby(...).count():

    • 这个方法返回的是一个新的 DataFrame,只包含每个组的计数。
    • 行数等于唯一分组键的数量,列数为1(或多个,如果对多列进行计数)。
    • 结果中的每一行代表一个唯一的分组键,列中的值表示该键在组中出现的次数。
    • 不保留原始数据的顺序和结构,只提供分组键的计数。

因此,如果你的目标是将每个组的大小附加到原始 DataFrame 的每一行,使用 transform('count')。如果你只需要知道每个组的大小,并且不需要保留原始数据的其他信息,那么使用 count() 就足够了。

例如,假设你有一个包含重复 matchIdDataFrame,并且你想要知道每个 matchId 出现的次数:

使用 transform('count') 会得到:

    matchId  count
0        1      3
1        1      3
2        2      2
3        2      2
4        3      3
5        3      3
6        3      3

这里,count 列显示了每个 matchId 在原始 DataFrame 中出现的次数。

使用 count() 会得到:

   matchId
1        3
2        2
3        3

这里,每一行代表一个唯一的 matchId,并且显示了该 matchId 在原始 DataFrame 中出现的次数。


countplot绘图函数

# 使用countplot函数必须指明  x还是y
plt.figure(figsize=(20,6))
sns.countplot(x=train[train['playersJoin'] >= 75]['playersJoin']) # 美剧参赛人数》75  认为这场比赛有价值
plt.show()

在这里插入图片描述
Python数据可视化-seaborn库之countplot


补充:查看判断pd的某一列是否没有重复值

需求:在过滤参数人数少的比赛我很疑惑是否有同一个人参加不同的比赛呢?而我的理想输出结果就是一个值 :
传统的count() sum() 无法直接进行这种统计,因此:

在Pandas中,你可以使用几种不同的方法来判断一个DataFrame的某一列是否没有重复值。以下是两种常用的方法:

方法 1: 使用 duplicated() 方法

duplicated() 方法可以标记出重复的行。如果一个列没有重复值,那么这个方法返回的布尔序列中应该没有任何 True 值。

import pandas as pd# 创建一个示例 DataFrame
df = pd.DataFrame({'A': [1, 2, 3, 4, 5],'B': [1, 1, 3, 4, 5]
})# 检查列 'A' 是否有重复值
has_no_duplicates = df['A'].duplicated().any()print('Column A has no duplicates:', not has_no_duplicates)

如果 has_no_duplicatesFalse,那么列 A 没有重复值。

方法 2: 使用 nunique() 方法

在Pandas中,nunique() 函数用于返回Series或DataFrame中唯一值的数量。当你想要快速了解某个列中有多少个不同的值时,这个函数非常有用。

train.Id.nunique() == train.shape[0]

在这里插入图片描述

nunique() 方法返回一个列中唯一值的数量。如果这个数量等于列的长度,那么说明列中没有重复值。

# 检查列 'A' 是否有重复值
has_no_duplicates = df['A'].nunique() == len(df['A'])print('Column A has no duplicates:', has_no_duplicates)

如果输出结果为 True,则列 A 没有重复值。

方法 3: 使用 value_counts() 方法

train.Id.value_counts().max() == 1

在这里插入图片描述

value_counts() 方法返回一个系列,其中包含每个唯一值出现的次数。如果列中没有重复值,那么这个系列的最大值应该为1。

# 检查列 'A' 是否有重复值
has_no_duplicates = (df['A'].value_counts().max() == 1)print('Column A has no duplicates:', has_no_duplicates)

如果输出结果为 True,则列 A 没有重复值。

以上方法都可以有效地判断Pandas DataFrame中某一列是否没有重复值。你可以根据你的具体需求和数据的大小选择最适合的方法。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/57041.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

4418 , TF 卡烧写, 无法启动,TF卡启动报错

问题: 在使用TF卡烧写的过程中,出现 TF卡无法启动的情况,报错如下: 解决:  我一直以为是 烧写的过程不对,或者是 烧写的uboot 镜像不对,或者是核心板有问题。 但是后来发现,我如果使用 另一台电脑 烧写HMI 的UBOOT的时候,我使用的是同一个 核心…

边缘计算网关助力煤矿安全远程监控系统

煤矿开采环境复杂,危险程度高,每一次事故都带给行业血淋淋的教训,安全问题也是政府与行业亟待解决的难题。伴随着技术的发展,煤矿智能化成为行业探索的新方向,降低安全风险也是智能化的重要目标之一。防微杜渐是安全生…

Markdown编辑器测试文章

Markdown编辑器测试文章 欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants 创建一个自定义列表如何创建一…

AI与测试行业调研

业务方向及应用场景 方向 技术 应用 大语言模型 私有化大模型: llama2 privateGPT 业务分析 测试数据生成 机器学习、深度学习应用 视觉自动化: FastbotApplitools 视觉自动化 缺陷预测与挖掘 知识图谱 neo4j 测试用例生成 精准测试 大语言模…

WEB前端使用标签制作网页

需要使用HTML的一些基本标签制作网页 基本代码如下: <!DOCTYPE html> <html><head><meta charset"utf-8"><title></title></head><body><form action"#" method"post" enctype"text/…

AI大模型应用开发:手把手教你部署并使用清华智谱GLM大模型

部署一个自己的大模型&#xff0c;没事的时候玩两下&#xff0c;这可能是很多技术同学想做但又迟迟没下手的事情&#xff0c;没下手的原因很可能是成本太高&#xff0c;近万元的RTX3090显卡&#xff0c;想想都肉疼&#xff0c;又或者官方的部署说明过于简单&#xff0c;安装的时…

nginx中的HTTP 负载均衡

HTTP 负载均衡&#xff1a;如何实现多台服务器的高效分发 为了让流量均匀分配到两台或多台 HTTP 服务器上&#xff0c;我们可以通过 NGINX 的 upstream 代码块实现负载均衡。 方法 在 NGINX 的 HTTP 模块内使用 upstream 代码块对 HTTP 服务器实施负载均衡&#xff1a; upstr…

Maven与Gradle的区别

Maven与Gradle是两种流行的构建工具&#xff0c;广泛用于Java项目的管理和构建。以下是它们的对比&#xff0c;包括官网、Windows 11配置环境、在IDEA中的相同点和不同点&#xff0c;以及它们各自的优缺点。 官网 Maven官网: https://maven.apache.orgGradle官网: https://gr…

[Linux网络编程]02-Socket编程

一.套接字(Socket) 在通信过程中&#xff0c;套接字一定是成对出现的(通信双方各持一个) 一个文件描述符指向一个套接字(该套接字内部由内核借助两个缓冲区实现读写),即一个套接字只有一个文件描述符&#xff0c;但有两个缓存区&#xff0c;与管道正好相反。 Linux套接字实现…

解决k8s集群中安装ks3.4.1开启日志失败问题

问题 安装kubesphere v3.4.1时&#xff0c;开启了日志功能&#xff0c;部署时有三个pod报错了 Failed to pull image “busybox:latest”: rpc error: code Unknown desc failed to pull and unpack image “docker.io/library/busybox:latest”: failed to copy: httpRead…

uniapp使用html2canvas时,页面内的image元素模糊

不废话很简单只需要将image改成img就行 改之前 改之后 原因可能是因为uniapp里面的image标签做了某种处理

QT教程-二十一,Qt动画类

目录 1. QPropertyAnimation 主要功能 示例 2. QVariantAnimation 主要功能 3. QAbstractAnimation 主要功能 4. QAnimationGroup 主要功能 5. QSequentialAnimationGroup 示例 6. QParallelAnimationGroup 示例 7. QEasingCurve 示例 8. 例子,实现一边移动一边…

1.计算机网络_基本知识

基本知识 计算机网络的类别&#xff1a; 1、按作用范围来分类 2、按网络的使用者来分类 什么是计算机网络&#xff1a; 计算机网络由若干个节点和链接这些节点的链路组成&#xff0c;节点可以是计算机、集线器、交换机、路由器等。互联网络是多个网络通过路由器连接在了一起…

具备技术二:正则表达式

一、C正则库 regex 用于报文的解析。 使用接口&#xff1a;bool regex_match(const string &src, smatch &matches, regex &e); src&#xff1a;要解释的字符串。 smatch&#xff1a;一个类似于数组的结构&#xff0c;用于存储一个个解释之后的字符串。 matche…

可视化大屏的C位放啥(02):3D建筑,数据的集大成展示。

3D 建筑以其立体、逼真的形态&#xff0c;瞬间抓住人们的眼球。它不仅仅是一个静态的模型&#xff0c;更是一个承载着丰富数据的载体。通过精细的建模&#xff0c;可以展示建筑的外观、结构、内部布局等多方面信息。 从数据展示的角度来看&#xff0c;3D 建筑可以与各种数据进…

【zookeeper】集群配置

zookeeper 数据结构 zookeeper数据模型结构&#xff0c;就和Linux的文件系统类型&#xff0c;看起来是一颗树&#xff0c;每个节点称为一个znode.每一个Znode默认的存储1MB的数据&#xff0c;每个Znode都有唯一标识&#xff0c;可以通过命令显示节点的信息每当节点有数据变化…

相同的树算法

给你两棵二叉树的根节点 p 和 q &#xff0c;编写一个函数来检验这两棵树是否相同。 如果两个树在结构上相同&#xff0c;并且节点具有相同的值&#xff0c;则认为它们是相同的。 示例 1&#xff1a; 输入&#xff1a;p [1,2,3], q [1,2,3] 输出&#xff1a;true示例 2&…

最新开发项目H5商城小程序源码系统 带源代码安装包以及搭建部署教程

系统概述 在当今数字化迅猛发展的时代&#xff0c;电子商务已成为企业拓展市场、提升品牌影响力的重要手段。H5商城小程序作为一种跨平台、轻量级的应用形式&#xff0c;凭借其无需下载安装、即用即走的特性&#xff0c;迅速赢得了广大用户的青睐。为了满足企业对高质量H5商城…

【工具变量】A股上市企业大数据应用(2001-2023年)-参考柏淑嫄实践

数据简介&#xff1a;企业数字化转型的浪潮孕育出大数据&#xff0c;大数据技术是在数据处理和应用中释放大数据多元价值的必要手段。大数据作为企业发展的战略资源和生产要素对企业转型发展具有重要意义。对上市企业大数据应用程度进行测算不仅有助于了解大数据相关技术在企业…

Linux安装部署服务:Nginx和Openresty

Linux安装部署服务&#xff1a;Nginx和Openresty 一、安装环境说明1.1 虚拟机环境1.2 nginx 安装包1.3 openresty 安装包 二、安装 nginx 服务2.1 安装前环境准备2.2 源码安装 nginx2.3 开机自启 nginx 三、安装 openresty 服务3.1 安装前环境准备3.2 源码安装 openresty3.4 离…