2012年数学建模竞赛脑卒中发病环境因素分析及干预日期数据处理代码
因四个表格日期数据处理有些复杂,故作此代码一次性处理四组数据:
import datetime
import pandas as pddef check(string, df, i, num, error_list):if is_valid(pd.to_datetime(string, errors='coerce', format='%Y/%m/%d'), error_list, i):df.iloc[i, num] = pd.to_datetime(string, errors='coerce', format='%Y/%m/%d')# 数据中空格数据的替换
def data_process(data):new_data = []for d in data:d = d.replace(" ", "")new_data.append(d)return new_data# 日期格式错误的判断与修改
def judge(df, data, i, num, date, error_list):if len(data[0]) == 4 and len(data[1]) == 2 and len(data[2]) == 2:string = data[0] + '/' + data[1] + '/' + data[2]check(string, df, i, num, error_list)elif len(data[0]) == 2 and len(data[1]) == 2 and len(data[2]) == 4:string = data[2] + '/' + data[1] + '/' + data[0]check(string, df, i, num, error_list)elif len(data[0]) == 2 and len(data[1]) == 1 and len(data[2]) == 4:string = data[2] + '/0' + data[1] + '/' + data[0]check(string, df, i, num, error_list)elif len(data[0]) == 4 and len(data[1]) == 1 and len(data[2]) == 1:string = data[0] + '/0' + data[1] + '/0' + data[2]check(string, df, i, num, error_list)elif len(data[0]) == 4 and len(data[1]) == 2 and len(data[2]) == 1:string = data[0] + '/' + data[1] + '/0' + data[2]check(string, df, i, num, error_list)elif len(data[0]) == 4 and len(data[1]) == 1 and len(data[2]) == 2:string = data[0] + '/0' + data[1] + '/' + data[2]check(string, df, i, num, error_list)elif len(data[0]) == 5 and len(data[1]) == 1 and len(data[2]) == 2:string = data[0][1:5] + '/0' + data[1] + '/' + data[2]check(string, df, i, num, error_list)elif len(data[0]) == 5 and len(data[1]) == 1 and len(data[2]) == 1:string = data[0][1:5] + '/0' + data[1] + '/0' + data[2]check(string, df, i, num, error_list)elif len(data[0]) == 5 and len(data[1]) == 2 and len(data[2]) == 1:string = data[0][1:5] + '/' + data[1] + '/0' + data[2]check(string, df, i, num, error_list)else:print("第{}行{}列异常的数据:{}".format(i + 1, num + 1, date))error_list.append(i)# 字符串年月日的处理
def str_process(df, date, i, num, error_list):string = date[0:4] + '/' + date[4:6] + '/' + date[6:8]if is_valid(pd.to_datetime(string, errors='coerce', format='%Y/%m/%d'), error_list, i):df.iloc[i, num] = pd.to_datetime(string, errors='coerce', format='%Y/%m/%d')# 判断日期是否合法 若要修改日期合法范围,直接修改函数中的(2010, 12, 31)即可
def is_valid(date, error_list, i):date1 = datetime.datetime(2007, 1, 1)date2 = datetime.datetime(2010, 12, 31)if date >= date1 and date <= date2:return Trueelse:print("第{}行异常的数据:{}".format(i + 1, date))error_list.append(i)return False# 数据处理过程
def date_process(file_path, sheet_name, new_excel, new_sheet, flag, is_delete):df = pd.read_excel(file_path, sheet_name=sheet_name)error_list = []for T in range(3, 5):col_num = df.shape[0]for i in range(col_num):try:date = df.iloc[i, T]if type(date) != datetime.datetime:try:if type(date) == int:print("第{}行{}列异常的数据:{}".format(i + 1, T + 1, date))error_list.append(i)continuedata = data_process(date.split('-'))if len(data) == 3:judge(df, data, i, T, date, error_list)elif len(data) == 2:print("第{}行{}列异常的数据:{}".format(i + 1, T + 1, date))error_list.append(i)elif len(data) == 1:data = data_process(date.split('/'))if len(data) == 3:judge(df, data, i, T, date, error_list)elif len(data) == 1:if len(date) == 8:str_process(df, date, i, T, error_list)else:print("第{}行{}列异常的数据:{}".format(i + 1, T + 1, date))error_list.append(i)else:print("第{}行{}列异常的数据:{}".format(i + 1, T + 1, date))error_list.append(i)else:print("第{}行{}列异常的数据:{}".format(i + 1, T + 1, date))error_list.append(i)except:if flag:print("第{}行{}列异常的数据:{}".format(i + 1, T + 1, date))error_list.append(i)else:is_valid(date, error_list, i)except:print("出错{} {}".format(i, col_num))continueif i >= df.shape[0] - 1:breakif is_delete:df = df.drop(df.index[error_list])df.to_excel(new_excel, index=False, sheet_name=new_sheet)# 主函数
if __name__ == '__main__':NULL_Error = True # 空格是否算作错误,若是则为True,若不是则为Falseis_delete = True # 错误行是否删除,若删除则为True,若不删除则为Falsefile_path = "Data/data1.xls" # 要修改的表的文件路径(可以用绝对路径)sheet_name = "脑卒中" # 要修改表的表名new_excel = 'data6.xls' # 修改后数据存储文件名new_sheet = 'Sheet1' # 修改后数据存储的表名date_process(file_path, sheet_name, new_excel, new_sheet, NULL_Error, is_delete)
相关文章:
2012年数学建模竞赛脑卒中发病环境因素分析及干预日期数据处理代码
因四个表格日期数据处理有些复杂,故作此代码一次性处理四组数据: import datetime import pandas as pddef check(string, df, i, num, error_list):if is_valid(pd.to_datetime(string, errorscoerce, format%Y/%m/%d), error_list, i):df.iloc[i, nu…...
Merge和Rebase的区别
Merge 和 Rebase 是 Git 中常用的两种分支整合方式,它们具有不同的工作原理和效果: Merge(合并) 合并是将两个或多个分支的提交历史合并为一个新的提交。在合并时,Git 会创建一个新的合并提交,将两个分支…...
[RTKLIB]模糊度固定相关问题(二)
文章目录 一、固定模糊度的前置工作1. 做好固定模糊度的准备2. 建立双差模糊度3. 问题与总结 版权声明:本文为原创文章,版权归 Winston Qu 所有,转载请注明出处。 在上一篇文章中,介绍了RTKLIB中manage_amb_LAMBDA()函数ÿ…...
QtAV for ubuntu16.04
下载ubuntu https://releases.ubuntu.com/16.04/ubuntu-16.04.7-desktop-amd64.iso 下载ffmpeg https://ffmpeg.org/download.html 下载QtAV https://github.com/wang-bin/QtAV/releases 更新 sudo apt update 安装库 sudo apt-get install libglu1-mesa-dev freeglut3-dev…...
MFC 文件读写包括字符串的结构体
试过CString char* 写入的都是地址 struct Param{int ID;int index;char val[128]; };vector<Param>ans; UINT count 17; ans.resize(count); FILE* fp; fopen_s(&fp,_T("my.txt"),_T("rb")); if(count ! fread(&ans[0],sizeof(Param),cou…...
在家构建您的迷你聊天Chat gpt
推荐:使用 NSDT场景编辑器 助你快速搭建可编辑的3D应用场景 什么是指令遵循模型? 语言模型是机器学习模型,可以根据句子的前一个单词预测单词概率。如果我们向模型请求下一个单词,并将其递减地反馈给模型以请求更多单词ÿ…...
pytest自动化测试框架之断言
前言 断言是完整的测试用例中不可或缺的因素,用例只有加入断言,将实际结果与预期结果进行比对,才能判断它的通过与否。 unittest 框架提供了其特有的断言方式,如:assertEqual、assertTrue、assertIn等,py…...
C++模板的用法
目录 模板的概念 函数模板(Function Templates) 基本用法 函数模板的实例化 匹配原则 类模板(Class Templates) 模板的概念 C中的模板(Templates)实际上是一种泛型编程(Generic Programm…...
ESP 32 蓝牙虚拟键盘链接笔记本电脑的键值问题
由于打算利用esp32 通过蓝牙链接电脑后实现一些特俗的键盘功能,所以就折腾了一下,折腾最耗费时间的却是键值问题,让一个20多年的老司机重新补充了知识 过程曲折就不说了,直接说结果。 我们通过网络搜索获取的键值和蓝牙模拟键盘传…...
128.【Maven】
Maven仓库 (一)、Maven 简介1.传统项目管理的缺点2.Maven是什么3.Maven的作用 (二)、Maven 的下载与安装1.下载与认识目录2.配置Maven的全局环境 (三)、Maven 的基础概念1.Maven 仓库(1).仓库分类 2. Maven 坐标3.Maven 本地仓库配置(1).改变默认的仓库地址(2).改变远程仓库地址…...
嵌入式虚拟仿真实验教学平台之串口发送数据
嵌入式虚拟仿真实验教学平台课程系列 串口发送数据实验 课程内容 本实验使用 STM32 的串口发送数据。开始仿真后,打开串口监视器,串口监视器会打印出要发送的数据。 课程目标 学习配置使用GPIO功能学习配置使用复用功能学习配置使用UART功能 硬件设计 本课程…...
Android Studio 屏幕适配
Android开发屏幕适配流程 首先studio中没有ScreenMatch这个插件的,下去现在这个插件 点击File->settings->Plugins->(搜索ScreenMatch插件),点击下载,应用重启Studio即可,如下图 在values下 创建dimens.xml,…...
【C++】C++11--- 线程库及详解lock_guard与unique_lock
目录 一、thread类的介绍二、线程函数参数三、 原子性操作库四、lock_guard与unique_lock4.1、mutex的种类4.2 lock_guard4.3 unique_lock 一、thread类的介绍 在C11之前,涉及到多线程问题,都是和平台相关的,比如**windows和linux下各有自己…...
第二篇|研究数据哪里来——建筑业
数据是研究和产业发展的重要基石,然而无论是学者、企业还是研究机构往往都面临着“找数据难”的局面。本期将分享一些查找建筑相关的数据及资料的渠道。希望可以帮大家解决这一难题,有用求收藏求收藏求收藏~ 1.政府机构 可以查找国家、地方政府的建筑行…...
numpy ascontiguousarra 学习笔记
目录 numpy ascontiguousarra函数 转换命令: ascontiguousarray等价效果: ascontiguousarray学习笔记 ascontiguousarray函数将一个内存不连续存储的数组转换为内存连续存储的数组,使得运行速度更快。 在昇腾开发版上使用时,…...
【算法|双指针系列No.1】leetcode283. 移动零
个人主页:平行线也会相交 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 平行线也会相交 原创 收录于专栏【手撕算法系列专栏】【LeetCode】 🍔本专栏旨在提高自己算法能力的同时,记录一下自己的学习过程,希望…...
PHP8定义字符串的方法-PHP8知识详解
字符串,顾名思义,就是将一堆字符串联在一起。字符串简单的定义方法是使用英文单引号( )或英文双引号(" ")包含字符。另外,还可以使用定界符定义字符串。本文还介绍了字符串的连接符。…...
分享21年电赛F题-智能送药小车-做题记录以及经验分享
这里写目录标题 前言一、赛题分析1、车型选择2、巡线1、OpenMv循迹2、灰度循迹 3、装载药品4、识别数字5、LED指示6、双车通信7、转向方案1、开环转向2、位置环速度环闭环串级转向3、MPU6050转向 二、调试经验分享1、循迹2、识别数字3、转向4、双车通信5、逻辑处理6、心态问题 …...
字符串统计-C语言/Java
描述 计算字符串中含有的不同字符的个数。字符在 ASCII 码范围内( 0~127 ,包括 0 和 127 ),换行表示结束符,不算在字符里。不在范围内的不作统计。多个相同的字符只计算一次。数据范围: 1≤n≤500 例如,对于字符串 ab…...
Styled-components,另一种css in js的方案
介绍 Styled-components是一种流行的CSS-in-JS库,它为React和React Native应用程序提供了一种优雅的方式来管理组件的样式。它的设计理念是将CSS样式与组件逻辑紧密绑定在一起,从而使样式在组件层级中作用更加清晰和可维护 使用 安装Styled-components…...
KubeSphere 容器平台高可用:环境搭建与可视化操作指南
Linux_k8s篇 欢迎来到Linux的世界,看笔记好好学多敲多打,每个人都是大神! 题目:KubeSphere 容器平台高可用:环境搭建与可视化操作指南 版本号: 1.0,0 作者: 老王要学习 日期: 2025.06.05 适用环境: Ubuntu22 文档说…...
地震勘探——干扰波识别、井中地震时距曲线特点
目录 干扰波识别反射波地震勘探的干扰波 井中地震时距曲线特点 干扰波识别 有效波:可以用来解决所提出的地质任务的波;干扰波:所有妨碍辨认、追踪有效波的其他波。 地震勘探中,有效波和干扰波是相对的。例如,在反射波…...
可靠性+灵活性:电力载波技术在楼宇自控中的核心价值
可靠性灵活性:电力载波技术在楼宇自控中的核心价值 在智能楼宇的自动化控制中,电力载波技术(PLC)凭借其独特的优势,正成为构建高效、稳定、灵活系统的核心解决方案。它利用现有电力线路传输数据,无需额外布…...
剑指offer20_链表中环的入口节点
链表中环的入口节点 给定一个链表,若其中包含环,则输出环的入口节点。 若其中不包含环,则输出null。 数据范围 节点 val 值取值范围 [ 1 , 1000 ] [1,1000] [1,1000]。 节点 val 值各不相同。 链表长度 [ 0 , 500 ] [0,500] [0,500]。 …...
HDFS分布式存储 zookeeper
hadoop介绍 狭义上hadoop是指apache的一款开源软件 用java语言实现开源框架,允许使用简单的变成模型跨计算机对大型集群进行分布式处理(1.海量的数据存储 2.海量数据的计算)Hadoop核心组件 hdfs(分布式文件存储系统)&a…...
PAN/FPN
import torch import torch.nn as nn import torch.nn.functional as F import mathclass LowResQueryHighResKVAttention(nn.Module):"""方案 1: 低分辨率特征 (Query) 查询高分辨率特征 (Key, Value).输出分辨率与低分辨率输入相同。"""def __…...
springboot整合VUE之在线教育管理系统简介
可以学习到的技能 学会常用技术栈的使用 独立开发项目 学会前端的开发流程 学会后端的开发流程 学会数据库的设计 学会前后端接口调用方式 学会多模块之间的关联 学会数据的处理 适用人群 在校学生,小白用户,想学习知识的 有点基础,想要通过项…...
纯 Java 项目(非 SpringBoot)集成 Mybatis-Plus 和 Mybatis-Plus-Join
纯 Java 项目(非 SpringBoot)集成 Mybatis-Plus 和 Mybatis-Plus-Join 1、依赖1.1、依赖版本1.2、pom.xml 2、代码2.1、SqlSession 构造器2.2、MybatisPlus代码生成器2.3、获取 config.yml 配置2.3.1、config.yml2.3.2、项目配置类 2.4、ftl 模板2.4.1、…...
宇树科技,改名了!
提到国内具身智能和机器人领域的代表企业,那宇树科技(Unitree)必须名列其榜。 最近,宇树科技的一项新变动消息在业界引发了不少关注和讨论,即: 宇树向其合作伙伴发布了一封公司名称变更函称,因…...
Xela矩阵三轴触觉传感器的工作原理解析与应用场景
Xela矩阵三轴触觉传感器通过先进技术模拟人类触觉感知,帮助设备实现精确的力测量与位移监测。其核心功能基于磁性三维力测量与空间位移测量,能够捕捉多维触觉信息。该传感器的设计不仅提升了触觉感知的精度,还为机器人、医疗设备和制造业的智…...
