一道 python 数据分析的题目

python 数据分析的题目。

做题方法:使用 pandas 读取数据,然后分析。

知识点:pandas,正则表达式,py知识。

过程:不断使用 GPT,遇到有问题的地方自己分析,把分析的结果告诉 GPT,注意要使用 Data Analysis,中文效果不是很好。

在这里插入图片描述

import pandas as pd
import hashlib
import re
from datetime import datetimedef load_csv(file_path):return pd.read_csv(file_path)def preprocess_a_table(a_table):account_table_map = {}for _, row in a_table.iterrows():account = row['账号']table = row['操作表']if account not in account_table_map:account_table_map[account] = set()account_table_map[account].add(table)return account_table_map#  row 是b表
def is_valid_operation(row, a_table, account_table_map):account = row['账号']operation = row['执行操作'].lower()# Extracting table name and operation typetable_name_match = re.search(r'from (\w+)', operation) or re.search(r'into (\w+)', operation) or re.search(r'update (\w+)', operation)table_name = table_name_match.group(1) if table_name_match else Noneoperation_type_match = re.match(r'(\w+)', operation)operation_type = operation_type_match.group(1) if operation_type_match else None# Check if account is not in account_table_map or if the table_name is not in the account's permissible tablesif account not in account_table_map or (table_name and table_name not in account_table_map[account]):return '0_' + str(row['编号'])# Check for time and permission violationsfor _, account_row in a_table[a_table['账号'] == account].iterrows():if account_row['操作表'] == table_name:# Time checkoperation_time = datetime.strptime(row['操作时间'], '%Y/%m/%d %H:%M:%S').time()start_time, end_time = account_row['可操作时间段(时:分:秒)'].split('~')start_time = datetime.strptime(start_time, '%H:%M:%S').time()end_time = datetime.strptime(end_time, '%H:%M:%S').time()if not (start_time <= operation_time <= end_time):return str(account_row['编号']) + '_' + str(row['编号'])  # Time violation# Permission checkpermissions = account_row['权限'].split(',')if operation_type and operation_type not in permissions:return str(account_row['编号']) + '_' + str(row['编号'])  # Permission violationreturn Nonedef custom_sort(violation):parts = violation.split('_')return (int(parts[0]), int(parts[1]))def main():a_table_path = '../iris_data/a_table_test.csv'b_table_path = '../iris_data/b_table_test.csv'a_table = load_csv(a_table_path)b_table = load_csv(b_table_path)account_table_map = preprocess_a_table(a_table)violations = []for _, row in b_table.iterrows():violation = is_valid_operation(row, a_table, account_table_map)if violation:violations.append(violation)# Sort the violations based on the numerical part after the underscoreviolations_sorted = sorted(violations, key=custom_sort)# Join the sorted list into a stringviolations_joined = ','.join(violations_sorted)# Calculate MD5 hashmd5_hash = hashlib.md5(violations_joined.encode()).hexdigest()print(f"Sorted Violations: {violations_joined}")print(f"MD5 Hash: {md5_hash}")if __name__ == "__main__":main()

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

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

相关文章

【java学习—十四】java动态代理(6)

文章目录 1. 相关概念2. 步骤3. 举例 问题&#xff1a; 假设一个java项目有100个java类&#xff0c;每个java有10个方法&#xff0c;这总共有1000个方法&#xff0c;现在有这样一个需求&#xff0c;需要在每个java方法加上2句话&#xff1a;在方法执行前输出这个方法开始执行&a…

【Web 实战】记一次攻防实战

经典开局一个登录框 由于漏洞应该还未修复。对于数据和相关网址打个码见谅一下 常规思路&#xff08;爆破&#xff09; 常规操作进行一波 尝试弱口令然后开始爆破 对于此种有验证码的爆破&#xff0c;可以借用一个bp插件。 captcha-killer-modified-jdk14.jar 具体使用我就…

【数据结构】希尔排序(最小增量排序)

&#x1f466;个人主页&#xff1a;Weraphael ✍&#x1f3fb;作者简介&#xff1a;目前正在学习c和算法 ✈️专栏&#xff1a;数据结构 &#x1f40b; 希望大家多多支持&#xff0c;咱一起进步&#xff01;&#x1f601; 如果文章有啥瑕疵 希望大佬指点一二 如果文章对你有帮助…

Linux下SPI环回测试

文章目录 前言一、回环测试代码1.1 头文件 spidev.h2.2 c代码 spidev_test.c 二、 编译验证2.1 交叉编译2.2 测试 前言 linux下做spi回环测试 一、回环测试代码 1.1 头文件 spidev.h /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ /** include/linux/spi…

Vue3:父组件向子组件传值(Props)

背景 在Vue3项目里&#xff0c;页面A&#xff08;在views文件夹里&#xff09;需要读取某个接口的数据&#xff0c;而页面A引入的组件a&#xff08;在components文件夹里&#xff09;也需要读取该接口的数据为了避免重复读取数据从而造成资源浪费&#xff0c;可以利用传值来实…

halcon识别验证码,先训练后识别

识别验证码图片&#xff0c;使用halcon 21.05 下面代码识别准确率100% 目录 训练&#xff0c;图片打标签使用代码创建分类器&#xff1b;识别验证码&#xff0c;检验识别效果使用“助手”加载训练文件&#xff0c;加载训练分类器&#xff0c;察看收集的字符&#xff0c;训练识别…

软件测试需求分析

1.1 需求的重要性 1.1.1 软件缺陷的8020原则 1) 在软件测试过程中&#xff0c;从需求分析开始到集成测试阶段引入测试手段&#xff0c;能发现所有缺陷的80%&#xff1b;系统测试阶段引入测试手段&#xff0c;能发现剩余缺陷中80%的缺陷&#xff1b;在运行维护阶段经过长…

HTTP 常见的请求头

面试官&#xff1a;说说 HTTP 常见的请求头有哪些? 作用&#xff1f; 一、是什么 HTTP头字段&#xff08;HTTP header fields&#xff09;,是指在超文本传输协议&#xff08;HTTP&#xff09;的请求和响应消息中的消息头部分 它们定义了一个超文本传输协议事务中的操作参数 …

为什么说MES管理系统是车间层与管理层的桥梁

随着制造业的快速发展&#xff0c;企业对于生产过程中的管理要求越来越高。为了满足这一需求&#xff0c;MES生产管理系统应运而生。MES管理系统作为车间层与管理层之间的桥梁&#xff0c;扮演着至关重要的角色。本文将探讨为什么说MES管理系统是车间层与管理层之间的桥梁。 一…

安装宝塔,使用宝塔自动部署

这里用的是华为云服务器&#xff0c;其实也就是普普通通的一个linux操作系统 首先我们来到宝塔官网地址 宝塔面板下载&#xff0c;免费全能的服务器运维软件 (bt.cn) 翻到下面&#xff0c;会有使用脚本安装的命令。 yum install -y wget && wget -O install.sh https:/…

[已解决]使用order by 排序后的是10 6 7 8 9 而不是 6 7 8 9 10?

问题 sql order by 排序后的为什么 是10 6 7 8 9 而不是 6 7 8 9 10? 思路 在 SQL 中&#xff0c;ORDER BY 默认的排序方式是升序&#xff08;从小到大&#xff09;。所以&#xff0c;如果您简单地使用 ORDER BY 对某个列进行排序&#xff0c;它会将数字按照升序排列&#…

sCrypt Playground 发布

sCrypt Playground 发布了。 与桌面IDE 完全相同的功能&#xff0c;但是无需安装。体验地址: https://playground.scrypt.io。 请不要在 sCrypt Playground 上存储重要数据。我们会不定时清除用户保存在其上的数据。