Kaggle之旅2

Kaggle之旅2

文章目录

  • Kaggle之旅2
  • 前言
  • 一、目标
  • 二、测试
      • 代码如下
  • 结果


前言

今天继续学习pandas。并实践下All GM Chess Games on Chess.com这个dataset。

一、目标

读入dataset,做一些统计工作,如下,

  1. 一共有多少GM,都是谁
  2. 每个GM下了多少盘棋(取top10)
  3. 平均每年每个GM下几盘棋(取top10)
  4. 由于数据集时间范围是2008-05-10 ~ 2022-06-24,我们就取2021年来看看当年谁的胜率最高,首先应该要统计2021年所有棋手平局下了多少局棋,然后统计出下棋局数超过平均值的棋手都是谁,最后计算这些棋手谁的胜率最高。
  5. 总体看,执白胜率高还是执黑胜率高

二、测试

代码如下

# 1. 统计一共有多少GM,以及是谁
print(f"1. 一共有 " + str(df.player_name.nunique()) +" 位GM,分别是:")
print(df.player_name.unique())# 2. 统计每个GM下了多少盘棋
print("\n2. 每个GM下了多少盘棋(取top10):")
print(df.player_name.value_counts().head(10))# 3. 平均每年每个GM下几盘棋
df['Date'] = pd.to_datetime(df['Date'])
df['Year'] = df['Date'].dt.year
average_games_per_year = df.groupby(['player_name', 'Year']).size().groupby('player_name').mean().round(0).astype(int)# 取前十名
top_10_gms_average_games = average_games_per_year.groupby('player_name').mean().sort_values(ascending=False).head(10)print("\n3. 平均每年每个GM下几盘棋(取top10):")
print(top_10_gms_average_games)# 4. 计算2021年谁的胜率最高,需要至少达到超过全年所有棋手平均下棋局数
# 提取关键字段
df_2021 = df[['player', 'White', 'Black', 'Result', 'Date']]
df_2021['Date'] = pd.to_datetime(df_2021['Date'])
df_2021['Year'] = df_2021['Date'].dt.year# 计算2021年所有棋手下的总局数
games_in_2021 = df[df['Year'] == 2021]
total_games_by_player = pd.concat([games_in_2021['player'], games_in_2021['White'], games_in_2021['Black']]).value_counts()# 计算全年平均下棋局数
average_games_per_player = total_games_by_player.mean()# 过滤出下棋局数超过平均值的棋手
qualified_players = total_games_by_player[total_games_by_player > average_games_per_player].index# 筛选出符合条件的对局
qualified_games = games_in_2021[games_in_2021['player'].isin(qualified_players)]# 计算每个棋手的胜利次数和总局数
player_stats = pd.DataFrame()
for player in qualified_players:wins_as_white = qualified_games[(qualified_games['Result'] == '1-0') & ((qualified_games['White'] == player) | (qualified_games['Black'] == player))]wins_as_black = qualified_games[(qualified_games['Result'] == '0-1') & ((qualified_games['White'] == player) | (qualified_games['Black'] == player))]total_games = qualified_games[(qualified_games['White'] == player) | (qualified_games['Black'] == player)]player_stats = pd.concat([player_stats, pd.DataFrame({'player': [player],'total_wins': [len(wins_as_white) + len(wins_as_black)],'total_games': [len(total_games)]})])# 计算胜率
player_stats['win_percentage'] = player_stats['total_wins'] / player_stats['total_games']# 选择在2021年下棋局数超过平均值的棋手中胜率最高的
highest_win_percentage_player = player_stats.nlargest(1, 'win_percentage')print("\n4. 2021年胜率最高且下棋局数超过全年平均的玩家:")
print(highest_win_percentage_player[['player', 'win_percentage', 'total_games']])# 5. 总体看,执白胜率高还是执黑胜率高
# 创建一个新列 'player_color' 表示每个玩家在比赛中是执白还是执黑
df['player_color'] = df.apply(lambda row: 'White' if row['player'] == row['White'] else 'Black', axis=1)# 创建一个新列 'player_result' 表示每个玩家在比赛中的结果(胜负关系)
df['player_result'] = df.apply(lambda row: 1 if (((row['player'] == row['White']) & (row['Result'] == '1-0')) | ((row['player'] == row['Black']) & (row['Result'] == '0-1'))) else 0, axis=1)# 计算总体执白和执黑的比赛次数和胜率
overall_stats = df.groupby('player_color').agg(total_games=('Result', 'count'), total_wins=('player_result', 'sum'))# 计算总体胜率
overall_stats['win_percentage'] = overall_stats['total_wins'] / overall_stats['total_games']print("\n5. 总体执白和执黑的胜率统计:")
print(overall_stats)

结果

数据集很大,运行4、5比较慢,大约等个半小时吧。

1. 一共有 1055 位GM,分别是:
['Tingjie Lei' 'Дмитрий Хегай' 'Ivan Ivanisevic' ... 'Зубарев Александр''ZURAB AZMAIPARASHVILI' 'Nikita Petrov']2. 每个GM下了多少盘棋(取top10):
player_name
Rogelio Jr Antonio       138587
Daniel Naroditsky         70765
Aman Hambleton            46833
Hikaru Nakamura           43342
Hoang Thong Tu            41392
ZURAB AZMAIPARASHVILI     38654
Khatanbaatar Bazar        38212
Nihal Sarin               33453
Yannick Gozzoli           32219
Andrew Tang               30594
Name: count, dtype: int643. 平均每年每个GM下几盘棋(取top10):
player_name
Khatanbaatar Bazar       12737.0
Rogelio Jr Antonio       10661.0
ZURAB AZMAIPARASHVILI     9664.0
Brandon Jacobson          8586.0
Alireza Firouzja          7647.0
Lev Gutman                5656.0
Daniel Naroditsky         5443.0
Petar Drenchev            5006.0
Danielian Elina           4947.0
Hikaru Nakamura           4816.0
dtype: float644. 2021年胜率最高且下棋局数超过全年平均的玩家:player  win_percentage  total_games
0  sahpufjunior             1.0          2385. 总体执白和执黑的胜率统计:total_games  total_wins  win_percentage
player_color                                         
Black             4014186      408073        0.101658
White              796890      445434        0.558965

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

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

相关文章

在vue中使用echarts渲染地图,geo点击某个区域可高亮,取消

一、安装echarts npm install echarts --save二、main.js引入注册 import Vue from "vue";import * as echarts from "echarts";Vue.prototype.$echarts echarts;三、vue文件中使用echarts <template><div class"page-warp"><…

Vue-30、Vue非单文件组件。

非单文件组件&#xff1a; 一个组件包含n个组件 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>非单文件组件</title><script type"text/javascript" src"https://cdn.jsde…

BossCMS RCE

简介 BossCMS是一款基于自主研发PHP框架MySQL架构的内容管理系统&#xff0c;能够满足各类网站开发建设的需求。系统开源、安全、稳定、简洁、易开发、专注为中小型企业及政企单位、个人站长、广大开发者、建站公司提供一套简单好用的网站内容管理系统解决方案。官网提供了大量…

SystemVerilog中数组内置函数sum()的一个注意点

Systemverilog内置了数组求和运算方法(sum())&#xff0c;将数组的所有元素累加起来&#xff0c;返回一个最终值。在使用时要注意数组类型的位宽&#xff0c;通常情况下&#xff0c;如果你将一组单bit的值加起来&#xff0c;Systemverilog会使用足够的精度来确保不丢失任何bit的…

INS-06003错误处理

在麒麟V10操作系统上安装Oracle RAC 19C&#xff0c;安装GI的建立互信步骤中&#xff0c;遇到INS-06003错误&#xff1a; [INS-06003] Failed to setup password SSH connectivity with following node(s) 查看详细信息&#xff1a; PRVG-11001: PRCZ-2136: PRCZ-2006: 此时在操…

实验四 SQL语言

&#x1f57a;作者&#xff1a; 主页 我的专栏C语言从0到1探秘C数据结构从0到1探秘Linux &#x1f618;欢迎关注&#xff1a;&#x1f44d;点赞&#x1f64c;收藏✍️留言 &#x1f3c7;码字不易&#xff0c;你的&#x1f44d;点赞&#x1f64c;收藏❤️关注对我真的很重要&…

SSE[Server-Sent Events]实现页面流式数据输出(模拟ChatGPT流式输出)

文章目录 前言SSE 简介应用场景区分浏览器支撑性 实现过程Web VUE核心解析数据代码实例demo参考 前言 服务端向客户端推送消息&#xff0c;除了用WebSocket可实现&#xff0c;还有一种服务器发送事件(Server-Sent Events)简称 SSE&#xff0c;这是一种服务器端到客户端(浏览器)…

ChatGPT与文心一言:AI助手之巅的对决

随着科技的飞速发展&#xff0c;人工智能助手已经渗透到我们的日常生活和工作中。 而在这个充满竞争的领域里&#xff0c;ChatGPT和文心一言无疑是最引人注目的两款产品。它们各自拥有独特的优势&#xff0c;但在智能回复、语言准确性、知识库丰富度等方面却存在差异。那么&am…

(Arcgis)Python3.8批量裁剪利用shp文件裁剪tif栅格影像数据

使用环境&#xff1a; pycharm2020 arcgis pro 中的python3.8 一、pycharm中设置python编译器。左上角“文件”——“设置”——找到python interpreter——找到arcgis pro安装文件夹中的python D:\ArcGIS Pro\bin\Python\envs\arcgispro-py3\python.exe使用arcgis pro原因&a…

mybatis xml多表查询,子查询,连接查询,动态sql

项目结构 数据库表 student_type 表 student 表 依赖 <dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.30</version></dependency><dependency><groupId>org.…

Yield Guild Games 宣布与区块链游戏中心 Iskra 建立战略合作伙伴关系

Yield Guild Games (YGG) 宣布将向 Iskra 引入其任务系统&#xff0c;Iskra 是一个 Web3 游戏中心和发布平台&#xff0c;拥有超过 400 万注册钱包和 10 万月度活跃用户 (MAU)。在 LINE、Kakao、Wemade 和 Netmarble 等公司的支持下&#xff0c;Iskra 将游戏玩家和游戏工作室聚…

Java 内存模型深度解析

优质博文&#xff1a;IT-BLOG-CN 一、并发编程模型的两个关键问题 【1】并发中常见的两个问题&#xff1a;线程之间如何通信及线程之间如何同步。通信是指线程之间以何种机制来交换信息。在命令式编程中&#xff0c;线程之间的通信机制有两种&#xff1a;内存共享和消息传递&…

日常常见应用组件升级记录

一、前言 因近期安全扫描&#xff0c;发现java后端应用涉及多个引用组件版本过低&#xff0c;涉及潜在漏洞利用风险&#xff0c;特记录相关处理升级处理过程&#xff0c;以备后续确认&#xff1b; 二、升级处理过程 2.1、Java类应用内置Spring Boot版本升级 Spring Boot是一…

代码随想录算法训练营第十天|232 用栈实现队列、225 用队列实现栈

栈与队列 栈&#xff08;stack&#xff09;&#xff1a;先进后出&#xff1b;队列&#xff08;queue&#xff09;&#xff1a;先进先出栈和队列是STL里面的两个数据结构栈不能遍历元素&#xff0c;提供pop和push等接口&#xff0c;时间复杂度都为O(1)在SGI STL中&#xff0c;如…

python爬虫案例分享

当然&#xff0c;我可以分享一个基本的Python爬虫示例。这个示例将使用Python的requests库来抓取网页内容&#xff0c;然后使用BeautifulSoup库来解析和提取信息。我们将构建一个简单的爬虫来从一个示例网站抓取标题。 Python爬虫示例 目标 提取某网站的标题。 需要的库 r…

bug笔记:解决 HTTP Error 500.30 - ASP.NET Core app failed to start

总结下后端部署windos iis环境net6版本&#xff0c;500.30问题报错的一种解决方案&#xff1a; 一、问题描述 二、解决方案 检查下是否安装了net6对应的环境&#xff0c;是否已经安装 然后在事件管理器>Windows日志>应用程序&#xff0c;里面查看详细异常记录 在iis下面…

使用golang对接微软Azure AI翻译

文章目录 一、官方地址二、准备工作三、代码示例 一、官方地址 https://learn.microsoft.com/zh-CN/azure/ai-services/translator/translator-text-apis?tabsgo 二、准备工作 创建服务 创建服务连接地址&#xff1a;https://portal.azure.com/#create/Microsoft.CognitiveS…

RabbitMQ与SpringAMQP

MQ&#xff0c;中文是消息队列&#xff08;MessageQueue&#xff09;&#xff0c;字面来看就是存放消息的队列。也就是事件驱动架构中的Broker。&#xff08;经纪人&#xff01;&#xff09; 1.RabbitMQ介绍 微服务间通讯有同步和异步两种方式 同步&#xff08;通信&#xff0…

ruoyi-cloud—若依微服务打包部署

1. 前端端口修改 2. 后端端口修改 &#xff08;1&#xff09;修改ruoyi-gateway服务中的bootstrap.yml的port端口 &#xff08;2&#xff09;修改ruoyi-ui中的vue.confing.js的target中的端口 3. 后端部署 (1) 在本地电脑上代码界面上打包后端 在ruoyi项目的bin目录下执行pa…

探索 ChatGPT 中文版:开启自然语言处理新纪元

ChatGPT 中文版是一款由 OpenAI 推出的自然语言处理模型&#xff0c;它在中文语境下展现出了出色的文本生成和对话交互能力。作为程序员&#xff0c;我们对这一领域的创新和发展充满期待。 ChatGPT 中文版不仅能够回答各种技术问题&#xff0c;还能够生成代码示例&#xff0c;…