20数学建模校赛C题数据清理思路

2023-11-16

也就是这个看起来平平无奇的题目,我们觉得C题还能做
在这里插入图片描述
首先导入文件,导入库

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from pandas import DataFrame,Series
import seaborn as sns
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split
data=pd.read_csv(r"D:/markdown/数学建模/附件3.3:2020校赛C题/2020校赛C题/附件/list1.csv",encoding="gbk")

第一步,显然是删nan值了(excel里是NULL,也不知道为啥导到pandas里就变成了NAN,不慌,影响不大),顺便看看还剩多少数据

data=data.dropna(axis=0,how='any')
data.shape

然后删完了nan,下一步干啥,这是一个问题

我们思考了好久这个问题

先看看数据分布吧

data.describe()

沉默。沉默是今晚的康桥……

我们分析的核心是室内温度,呐看看室内温度

print(data["ROOM_TEMPERATURE"].skew())
sns.distplot(data["ROOM_TEMPERATURE"].dropna())

在这里插入图片描述
那么问题来了
我们知道自然条件下数据趋近正态分布,有点偏度无所谓,你这么大一片0杵在这有点突兀啊!

那么为什么

于是按时间排序,室内温度给画个图

 data_ROOM_TEMPERATURE = data.groupby('SYS_READ_TIME').mean()['ROOM_TEMPERATURE']

也没看出啥玩意来

然后注意到了这个在这里插入图片描述
呐分户吧,按地址

def func_address(x):
    data1=data[(data.address_2nd==x)]
    #按时间排序
    data1_ROOM_TEMPERATURE = data1.groupby('SYS_READ_TIME').mean()['ROOM_TEMPERATURE']
    # 按照索引排序
#     data1_ROOM_TEMPERATURE.sort_index(inplace=True)
    # 画出趋势图
    # 图太小了,设置下size
    plt.figure(figsize=(20,5))
    data1_ROOM_TEMPERATURE.plot(title=x)
    
address = [15311251,15310819,15310974,15310804,15311234,15311289,15311072,15311061,15310846,15311065,15311477,15311342,15311245,15310966,
15311191,15311361,15310827,15311411,15311196,15311471,15311235,15311403,15311233,15310808,15311383,15311473,15310839,15310815,15310845,
15311082]
for i in range(len(address)):
    x = address[i]
    func_address(x)
    i+=1

于是发现,有的户大片时间室温为0

为什么呢?室温自然条件下一定是波动的,你连续几天几个月一整个冬天都为0怎么
这显然是不正常的啊!

只能是供暖公司没去获得他的室温

这玩意应该跟设置室温有关系吧
画个图整到一块儿瞅瞅

def func_all(x):
    data1=data[(data.address_2nd==x)]
    #按时间排序
    data1_ROOM_TEMPERATURE = data1.groupby('SYS_READ_TIME').mean()['ROOM_TEMPERATURE']
    data1_ROOM_SET_TEMPERATURE = data1.groupby('SYS_READ_TIME').mean()['ROOM_SET_TEMPERATURE']
    # 按照索引排序
#     data1_ROOM_TEMPERATURE.sort_index(inplace=True)
    # 画出趋势图
    # 图太小了,设置下size
    plt.figure(figsize=(20,5))
    data1_ROOM_TEMPERATURE.plot(title=x,color = 'red',label='ROOM_TEMPERATURE')
    data1_ROOM_SET_TEMPERATURE.plot(title=x,color = 'blue',label='ROOM_SET_TEMPERATURE')
    
address = [15311251,15310819,15310974,15310804,15311234,15311289,15311072,15311061,15310846,15311065,15311477,15311342,15311245,15310966,
15311191,15311361,15310827,15311411,15311196,15311471,15311235,15311403,15311233,15310808,15311383,15311473,15310839,15310815,15310845,
15311082]
for i in range(len(address)):
    x = address[i]
    func_all(x)
    i+=1

于是惊奇的发现,室温为0跟设置室温为0的时间段是重合的

于是我们认为,设置室温为0就是这一家人不想用暖气了,于是公司就没必要去获得他们家室温了

emmmmmmmmm很完美

那就删了吧,顺便看看还剩多少数据

data= data.drop(data[(data['ROOM_TEMPERATURE']==0) & (data['ROOM_SET_TEMPERATURE']==0)].index)
data.shape

现在室温就差不多是正态分布了(看图说话)
于是看看均值以外三倍标准差的数据

mean, std = data["ROOM_TEMPERATURE"].mean(), data["ROOM_TEMPERATURE"].std()
lower, upper = mean - 3 * std, mean + 3 * std

print("均值:", mean)
print("标准差:", std)
print("下限:", lower)
print("上限:", upper)
data["ROOM_TEMPERATURE"][(data["ROOM_TEMPERATURE"] < lower) | (data["ROOM_TEMPERATURE"] > upper)]

画个箱线图

sns.boxplot(data=data["ROOM_TEMPERATURE"])

于是我们认为这部分数据是异常

(实际操作中我们是在删完其他影响后最后箱线图去除了这部分数据)

删了吧,顺便看看还剩多少数据

data = data.drop(data[(data["ROOM_TEMPERATURE"] < lower) | (data["ROOM_TEMPERATURE"] > upper)].index)
data.shape

接下来我们瞅瞅,看看这些影响室温的因素

阀门状态,进出水温度,进出水温差,设置室温,流速,功率

其中,我们认为阀门状态,进出水温差,设置室温,流速,这些影响可以体现在功率上(经过队友严格和不严格的公式推导及联系实际的猜测)

于是我们按以上分析温度的方法分析了功率的异常

首先看看功率的分布

print(data["ROOM_TEMPERATURE"].skew())
sns.distplot(data["ROOM_TEMPERATURE"].dropna())

在这里插入图片描述
又是一大片0杵在这啊!

那么为什么
根据之前分析温度的经验,我们分户画功率图,跟温度画在一起

def func_all(x):
    data1=data[(data.address_2nd==x)]
    #按时间排序
    data1_ROOM_TEMPERATURE = data1.groupby('SYS_READ_TIME').mean()['ROOM_TEMPERATURE']
    data1_ROOM_SET_TEMPERATURE = data1.groupby('SYS_READ_TIME').mean()['ROOM_SET_TEMPERATURE']
    data1_POWER = data1.groupby('SYS_READ_TIME').mean()['POWER']
    # 按照索引排序
#     data1_ROOM_TEMPERATURE.sort_index(inplace=True)
    # 画出趋势图
    # 图太小了,设置下size
    plt.figure(figsize=(20,5))
    data1_ROOM_TEMPERATURE.plot(title=x,color = 'red',label='ROOM_TEMPERATURE')
    data1_ROOM_SET_TEMPERATURE.plot(title=x,color = 'blue',label='ROOM_SET_TEMPERATURE')
    data1_POWER.plot(title=x,color = 'green',label='POWER')
    
address = [15311251,15310819,15310974,15310804,15311234,15311289,15311072,15311061,15310846,15311065,15311477,15311342,15311245,15310966,
15311191,15311361,15310827,15311411,15311196,15311471,15311235,15311403,15311233,15310808,15311383,15311473,15310839,15310815,15310845,
15311082]
for i in range(len(address)):
    x = address[i]
    func_all(x)
    i+=1

于是看到,除了个别家里功率一直为0或一大段时间为0,所有户家里功率为0都是集中在前面17年十一月,和18年四月

于是我们认为,这段时间公司还没开始供暖,或供暖已经结束了

删了吧,顺便看看还剩多少数据

data= data.drop(data[(data['POWER']<=0)].index)
data.shape

emmmmmmm右偏有点严重,没事删完异常就好了(或许也可以对数转换,既然题目说删了就行那就不费劲了黑黑黑)

(实际操作中这一部分也是删完其他最后搞的)

还是先看看均值以外三倍标准差的数据

mean, std = data["POWER"].mean(), data["POWER"].std()
lower, upper = mean - 3 * std, mean + 3 * std

print("均值:", mean)
print("标准差:", std)
print("下限:", lower)
print("上限:", upper)
data["POWER"][(data["POWER"] < lower) | (data["POWER"] > upper)]

箱线图

sns.boxplot(data=data["POWER"])

删数据,顺便看看还剩多少

data = data.drop(data[(data["POWER"] < lower) | (data["POWER"] > upper)].index)

emmmmm呐还有什么问题嘛

在这里插入图片描述
温差怎么能小于0呢?

于是队长查资料去了,回来说进水温度小于出水温度,这是异常

好说,删了吧,顺便看看还剩多少数据

data= data.drop(data[(data['dtemp']<=0)].index)
data.shape

队长:等等,怎么还有阀门全关流速不为0的?

于是队长excel一番骚操作,发现这一波一共50个数据,集中在一户人家里的两天时间

队长说,可能是热表坏了,那两天去修热表了吧

在这里插入图片描述
好说,删删删!

data= data.drop(data[(data['ROOM_TEMPERATURE']==0) & (data['ROOM_SET_TEMPERATURE']==0)].index)
data.shape

至此,附件一的数据完美就处理完了

嗨皮!!!

当然,把整理完的附件二左连接过来之后又发现了一部分室外温度的缺失,也就删了

完美!!!
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

20数学建模校赛C题数据清理思路 的相关文章

  • 使用 python requests 模块时出现 HTTP 503 错误

    我正在尝试发出 HTTP 请求 但当前可以从 Firefox 浏览器访问的网站响应 503 错误 代码本身非常简单 在网上搜索一番后我添加了user Agent请求参数 但也没有帮助 有人能解释一下如何消除这个 503 错误吗 顺便说一句
  • Python 中的舍入浮点问题

    我遇到了 np round np around 的问题 它没有正确舍入 我无法包含代码 因为当我手动设置值 而不是使用我的数据 时 返回有效 但这是输出 In 177 a Out 177 0 0099999998 In 178 np rou
  • 用枢轴点拟合曲线 Python

    我有下面的图 我想用 2 条线来拟合它 使用 python 我设法适应上半部分 def func x a b x np array x return a x b popt pcov curve fit func up x up y 我想用另
  • 使用 Python 从文本中删除非英语单词

    我正在 python 上进行数据清理练习 我正在清理的文本包含我想删除的意大利语单词 我一直在网上搜索是否可以使用像 nltk 这样的工具包在 Python 上执行此操作 例如给出一些文本 Io andiamo to the beach w
  • 跟踪 pypi 依赖项 - 谁在使用我的包

    无论如何 是否可以通过 pip 或 PyPi 来识别哪些项目 在 Pypi 上发布 可能正在使用我的包 也在 PyPi 上发布 我想确定每个包的用户群以及可能尝试积极与他们互动 预先感谢您的任何答案 即使我想做的事情是不可能的 这实际上是不
  • 删除flask中的一对一关系

    我目前正在使用 Flask 开发一个应用程序 并且在删除一对一关系中的项目时遇到了一个大问题 我的模型中有以下结构 class User db Model tablename user user id db Column db String
  • 独立滚动矩阵的行

    我有一个矩阵 准确地说 是 2d numpy ndarray A np array 4 0 0 1 2 3 0 0 5 我想滚动每一行A根据另一个数组中的滚动值独立地 r np array 2 0 1 也就是说 我想这样做 print np
  • 使用Python请求登录Google帐户

    在多个登录页面上 需要谷歌登录才能继续 我想用requestspython 中的库以便让我自己登录 通常这很容易使用requests库 但是我无法让它工作 我不确定这是否是由于 Google 做出的一些限制 也许我需要使用他们的 API 或
  • 立体太阳图 matplotlib 极坐标图 python

    我正在尝试创建一个与以下类似的简单的立体太阳路径图 http wiki naturalfrequent com wiki Sun Path Diagram http wiki naturalfrequency com wiki Sun Pa
  • 如何使用 Pandas、Numpy 加速 Python 中的嵌套 for 循环逻辑?

    我想检查一下表的字段是否TestProject包含了Client端传入的参数 嵌套for循环很丑陋 有什么高效简单的方法来实现吗 非常感谢您的任何建议 def test parameter a list parameter b list g
  • 在Python中连接反斜杠

    我是 python 新手 所以如果这听起来很简单 请原谅我 我想加入一些变量来生成一条路径 像这样 AAAABBBBCCCC 2 2014 04 2014 04 01 csv Id TypeOfMachine year month year
  • Python 2:SMTPServerDisconnected:连接意外关闭

    我在用 Python 发送电子邮件时遇到一个小问题 me my email address you recipient s email address me email protected cdn cgi l email protectio
  • Python beautifulsoup 仅限 1 级文本

    我看过其他 beautifulsoup 得到相同级别类型的问题 看来我的有点不同 这是网站 我正试图拿到右边那张桌子 请注意表的第一行如何展开为该数据的详细细分 我不想要那个数据 我只想要最顶层的数据 您还可以看到其他行也可以展开 但在本例
  • Python,将函数的输出重定向到文件中

    我正在尝试将函数的输出存储到Python中的文件中 我想做的是这样的 def test print This is a Test file open Log a file write test file close 但是当我这样做时 我收到
  • Docker 中的 Python 日志记录

    我正在 Ubuntu Web 服务器上的 Docker 容器中测试运行 python 脚本 我正在尝试查找由 Python Logger 模块生成的日志文件 下面是我的Python脚本 import time import logging
  • javascript 是否有等效的 __repr__ ?

    我最接近Python的东西repr这是 function User name password this name name this password password User prototype toString function r
  • 不同编程语言中的浮点数学

    我知道浮点数学充其量可能是丑陋的 但我想知道是否有人可以解释以下怪癖 在大多数编程语言中 我测试了 0 4 到 0 2 的加法会产生轻微的错误 而 0 4 0 1 0 1 则不会产生错误 两者计算不平等的原因是什么 在各自的编程语言中可以采
  • 为什么 Pickle 协议 4 中的 Pickle 文件是协议 3 中的两倍,而速度却没有任何提升?

    我正在测试 Python 3 4 我注意到 pickle 模块有一个新协议 因此 我对 2 个协议进行了基准测试 def test1 pickle3 open pickle3 wb for i in range 1000000 pickle
  • 在本地网络上运行 Bokeh 服务器

    我有一个简单的 Bokeh 应用程序 名为app py如下 contents of app py from bokeh client import push session from bokeh embed import server do
  • 使用for循环时如何获取前一个元素? [复制]

    这个问题在这里已经有答案了 可能的重复 Python 循环内的上一个和下一个值 https stackoverflow com questions 1011938 python previous and next values inside

随机推荐

  • 关于error: possibly undefined macro: AC_PROG_LIBTOOL问题解决

    通过baidu或者google 大多数解决方案都是通过安装libtool 不同的平台有不同的安装方式 比如ubuntu安装 sudo apt get install libtool 大多数情况下都能解决问题 但是通过安装libtool也不能
  • 关于list理论最大大小Integer.MAX_VALUE - 8

    今天看源码对list最大大小为什么是Integer MAX VALUE 8产生了兴趣 目前得出以下结论 首先数组头需要存储数组大小信息以及其它的一些信息 假设数组达到了最大则数组大小需要8个字节来存储 而当留下8个数组大小时则可保证至少有8
  • CMAKE之add_dependencies使用

    CMAKE之add dependencies使用 问题引入 问题解决 总结 问题引入 在项目中通常会遇见这样的情况 例如一个项目中有 main libhello a libworld a 当项目过小的时候 编译顺序是 a 然后是main 但
  • 也谈免拆机破解中兴B860av1.1(解决不能安装软件/解决遥控)

    20170221更新 部分用户 自己恢复出厂测试过 操作后仍然无法直接在当贝市场安装应用了 在第8条 最后两步 先改为中国通用市场 后面再改为未知局方 如果开机想优先启动当贝桌面 就把导出的0 ini里AutoStartIptv 1改为0
  • Ubuntu修改环境变量后命令不可用的解决办法

    方法一 导入临时变量 但是重启虚拟后会失效 export PATH PATH usr local sbin usr local bin sbin bin usr sbin usr bin 方法二 根本方法 普通用户 root用户都适用 解决
  • word打印

    package com stonewomb business outerContract contractApply utils import java io IOException import java text SimpleDateF
  • 【LeetCode】9月 每日一题

    LeetCode 9月 每日一题 9 1 题目 1475 商品折扣后的最终价格 思路 模拟即可 代码 function finalPrices prices number number let len number prices lengt
  • 设计模式(一)

    1 适配器模式 1 概述 适配器中有一个适配器包装类Adapter 其包装的对象为适配者Adaptee 适配器作用就是将客户端请求转化为调用适配者中的接口 当调用适配器中的方法时 适配器内部会调用适配者类的方法 这个调用对客户端是透明 实现
  • Python爬虫技术及其原理探

    导言 随着互联网的发展 大量的数据被存储在网络上 而我们需要从中获取有用的信息 Python作为一种功能强大且易于学习的编程语言 被广泛用于网络爬虫的开发 本文将详细介绍Python爬虫所需的技术及其原理 并提供相关的代码案例 1 HTTP
  • Tomcat日志配置远程rsyslog采集

    Tomcat日志数据的采集有很多种方式 使用tail是最简单的方法 但必须保证catalina out日志中的每行都是以日期格式开头的 除了tail方法外 还可以通过对rsyslog配置实现 本博客主要通过配置rsyslog进行Tomcat
  • 经验分享:解决 错误0x80071AC3:无法完成操作,请运行chkdsk并重试

    在Windows系统电脑下 使用移动硬盘或者U盘复制拷贝文件的时候 如果遇到一个这样的提示 一个意外错误使您无法移动该文件夹 如果您继续收到此错误 可以使用错误代码来搜索有关此问题的帮助 错误0x80071AC3 无法完成操作 因为卷有问题
  • Unity shader系列:内置Shader代码查看

    官网下载 https unity3d com cn get unity download archive 对自己使用的unity版本进行下图操作
  • centos7 将home的空间扩容到根目录

    Centos7把home目录下多余的空间转移到 根目录下 通过df h发现 根目录只有35G 而home目录可用的 居然有19G 我现在想分出8G给根目录 把你需要挂载的机器的逻辑卷记住 上面的图 左边是逻辑卷 右边是虚拟磁盘 dev ma
  • 图像处理-State of the Art

    https github com BlinkDL BlinkDL github io 目前常见图像任务的 State of the Art 方法 从 Super resolution 到 Captioning CV 二维图像任务 Image
  • 【Java】【NIO】【04】通过SocketChannel读写Socket

    package easing common java demo import lombok SneakyThrows import java net InetSocketAddress import java nio ByteBuffer
  • 全局变量 multiple definition of 问题解决方法

    解决方法 1 给每一个头文件加上条件编译 注 此方法不是解决上述问题的方法 只是解决multiple definition of的一个方法 当多个文件包含同一个头文件时 而头文件中没有加上条件编译 就会独立的解释 然后生成每个文件生成独立的
  • 江西武功山旅游攻略(周末两日游)

    一 往返路线 1 出发路线 周五晚上上海出发坐火车 到江西萍乡 11 5小时 卧铺550左右 打车到江西武功山景区 120 150元左右 人均30元 1小时10分左右到达 或者 到达萍乡北之后 出站后步行200米到长途汽车站 乘旅游巴士直达
  • RestHighLevelClient初始化http参数的含义

    high level rest client 初始化 一般初始化时需要设置验证信息 http相关参数 Bean public RestHighLevelClient createClient return new RestHighLevel
  • etcd学习和实战:3、go使用etcd实现服务发现和管理

    etcd学习和实战 3 go使用etcd实现服务发现和管理 文章目录 etcd学习和实战 3 go使用etcd实现服务发现和管理 1 前言 2 代码及编译运行问题总结 2 1 服务注册 2 2 服务发现 2 3 问题 2 4 运行结果 1
  • 20数学建模校赛C题数据清理思路

    也就是这个看起来平平无奇的题目 我们觉得C题还能做 首先导入文件 导入库 import pandas as pd import numpy as np import matplotlib pyplot as plt from pandas