机器学习项目实战-能源利用率 Part-1(数据清洗)

news/2024/4/29 17:51:55/文章来源:https://blog.csdn.net/weixin_45492560/article/details/130728413

1. 项目背景

2009年的《当地法案84号》,或纽约市基准法案,要求对能源和用水量进行年度基准测试和披露信息。被覆盖的财产包括单个建筑物的税收地块,其总建筑面积大于50,000平方英尺(平方英尺),以及具有超过100,000平方英尺总建筑面积的多个建筑物的税收地块。从2018年开始,《纽约市基准法案》还将包括总面积大于25,000平方英尺的财产。

能源管理局的ENERGY STAR Portfolio Manager工具计算指标,建筑业主进行自我报告。数据的公开可用性使得建筑的绩效能够进行本地和全国比较,激励最精确的能源使用基准测试,并为能源管理决策提供信息。

2. 数据清洗与格式转换

这里的数据 NYC_Property_Energy.csv可私信给作者获取。

import warnings
# warning.filterwarnings('ignore')import pandas as pd
import numpy as np
pd.set_option('display.max_columns', 60)
pd.options.mode.chained_assignment = None
# No warnings about setting value on copy of sliceimport matplotlib.pyplot as plt
%matplotlib inline
plt.rcParams['font.size'] = 24
from IPython.core.pylabtools import figsizeimport seaborn as sns
sns.set(font_scale = 2)data = pd.read_csv('./data/NYC_Property_Energy.csv')
data.head()

代码解释:

  • import pandas as pdimport numpy as np 导入 Pandas 和 NumPy 库。
  • pd.set_option('display.max_columns', 60) 设置 Pandas 显示的最大列数为 60。
  • pd.options.mode.chained_assignment = None 禁止对 Pandas 切片进行警告提示。
  • import matplotlib.pyplot as plt 导入 Matplotlib 库用于绘图。
  • %matplotlib inline 魔法命令将 Matplotlib 图表嵌入到 Jupyter Notebook 中。
  • plt.rcParams['font.size'] = 24 设置 Matplotlib 字体大小为 24。
  • from IPython.core.pylabtools import figsize 导入 figsize 函数,该函数可以在 Jupyter Notebook 中设置图表大小。
  • import seaborn as sns 导入 Seaborn 库用于绘图。
  • sns.set(font_scale = 2) 设置 Seaborn 图表字体比例为 2。

在这里插入图片描述

2.1 数据类型与缺失值

data.info()

在这里插入图片描述

data.info()是pandas库中的一个函数,用于查看DataFrame的信息,包括列名、非空值数量、每列数据类型等。具体信息如下:

  • RangeIndex: 表示数据集中行数范围,包括行数开始和结束值;
  • Data columns (total x columns): 表示数据集中总共有多少列;
  • Column Name: 列名;
  • Non-Null Count: 非空值的数量;
  • Dtype: 每列的数据类型,如int64、float64、object等。

Not Available转换为np.nan,再将部分数值型数据转换成float

data = data.replace({'Not Available': np.nan})for col in list(data.columns):if ('ft²' in col or 'kBtu' in col or 'Metric Tons CO2e' in col or 'kWh' incol or 'therms' in col or 'gal' in col or 'Score' in col):data[col] = data[col].astype(float)data.describe()

这段代码的作用是对数据进行清洗和转换数据类型,以便后续的分析和建模。

首先,将所有Not Available的值替换为缺失值(np.nan),这是为了确保数据的完整性和准确性。

然后,使用一个for循环遍历数据集中的每一列,如果这一列的名称包含特定的字符串(如“ft²”、“kBtu”、“Metric Tons CO2e”、“kWh”、“therms”、“gal”和“Score”等),则将该列的数据类型转换为浮点数,这是为了将这些列转换为数值类型,以便后续的数值计算。

最后,使用.describe()函数统计数据集中每一列的基本统计信息,如均值、标准差、最小值、最大值等,以便对数据进行初步的探索和了解。

在这里插入图片描述

2.2 缺失值处理

import missingno as msno
msno.matrix(data, figsize = (16, 5))

这段代码使用了 missingno 库来绘制缺失值的矩阵图。该图以矩阵的形式展示了数据集中每个变量的缺失值情况,如果某个变量在某一行中有缺失值,那么这个变量所在的格子会被标记为白色。
在这里插入图片描述


计算缺失值的比例:

def missing_values_table(df):mis_val = df.isnull().sum() # 总缺失值mis_val_percent = 100 * df.isnull().sum() / len(df) # 缺失值比例mis_val_table = pd.concat([mis_val, mis_val_percent], axis=1) # 缺失值制成表格mis_val_table_ren_columns = mis_val_table.rename(columns={0:'Missing Values', 1:'% of Total Values'})mis_val_table_ren_columns = mis_val_table_ren_columns[mis_val_table_ren_columns.iloc[:,1] != 0].sort_values('% of Total Values', ascending=False).round(1)# 缺失值比例列由大到小排序print('Your selected dataframe has {} columns.\nThere are {} columns that have missing values.'.format(df.shape[1], mis_val_table_ren_columns.shape[0]))# 打印缺失值信息return mis_val_table_ren_columnsmissing_values_table(data)

这段代码定义了一个函数 missing_values_table(df),用于检测数据框中每一列的缺失值信息并返回一个缺失值信息表格。函数接收一个数据框作为参数。

具体来说,函数首先使用 df.isnull().sum() 计算出每一列的缺失值总数,使用 100 * df.isnull().sum() / len(df) 计算出每一列缺失值所占比例。然后将这两个计算结果拼接成一个表格,用 mis_val_table_ren_columns = mis_val_table.rename(columns={0:'Missing Values', 1:'% of Total Values'}) 重新命名列名,用 mis_val_table_ren_columns = mis_val_table_ren_columns[mis_val_table_ren_columns.iloc[:,1] != 0].sort_values('% of Total Values', ascending=False).round(1) 对缺失值比例列进行排序(由大到小),并且保留小数点后一位。最后打印输出数据框的列数和含有缺失值的列数,并且返回排序后的缺失值信息表格。
在这里插入图片描述


获取缺失值比例 > 50% 的列并移除

missing_df = missing_values_table(data)
missing_columns = list(missing_df[missing_df['% of Total Values'] > 50].index)
print('We will remove %d columns.' % len(missing_columns))

在这里插入图片描述

删除缺失值比例高于50%的列

data = data.drop(columns = list(missing_columns))

Reference

机器学习项目实战-能源利用率1-数据预处理

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

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

相关文章

OpenAI新作Shap-e算法使用教程

一、知识点 Shap-e是基于nerf的开源生成3d模型方案。它是由如今热火朝天的Open AI公司(chatgpt,Dell-E2)开发、开源的。Shap-e生成的速度非常快,输入关键词即可生成简单模型(限于简单单体模型)。 二、环境…

别去外包,干了三年,废了....

先说一下自己的情况,大专生,18年通过校招进入湖南某软件公司,干了接近4年的功能测试,今年年初,感觉自己不能够在这样下去了,长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了四年的功能测试…

jetson nx 用windows远程连接

VNC Viewer远程连接 一、jetson nx配置vnc 1、安装客户端 sudo apt-get install xrdp vnc4server xbase-clients2、进入nano/nx桌面,打开“Setting–>Desktop sharing”,没反应,据说是bug,我试过nano和nx都一样。首先输入下…

springboot+jsp法律知识分享网站普法平台

法律知识分享平台,主要的模块包括查看主页、个人中心、用户管理、律师事务所管理、律师管理、法律资讯管理、案例分析管理、案例分享管理、法规信息管理、法规分享管理、留言信息管理、留言回复管理、论坛管理、系统管理等功能。系统中管理员主要是为了安全有效地存…

Docker笔记7 | 如何使用 Docker Compose 搭建一个拥有权限 认证、TLS 的私有仓库?

7 | 如何使用 Docker Compose 搭建一个拥有权限 认证、TLS 的私有仓库? 1 准备工作2 准备站点证书2.1 创建CA私钥2.2 创建CA根证书请求文件2.3 配置CA根证书2.4 签发根证书2.5 生成站点SSL私钥2.6 私钥生成证书请求文件2.7 配置证书2.8 签署站点SSL证书 3 配置私有仓…

低代码行业的发展真的可以让复杂的代码编写一去不复返?

前言 传统的软件开发过程往往需要耗费大量的时间和精力,因为开发人员需编写复杂的代码以完成各种功能。 低代码行业的发展,正好解决了这个问题,让复杂的代码编写一去不复返了。 文章目录 前言引入强大的平台总结 引入 低代码平台 是一种通过可…

Go基础篇:接口

目录 前言✨一、什么是接口?二、空接口 interface{}1、eface的定义2、需要注意的问题 三、非空接口1、iface的定义2、itab的定义3、itab缓存 前言✨ 前段时间忙着春招面试,现在也算告一段落,找到一家比较心仪的公司实习,开始慢慢回…

yum和repo详细解析

目录 一、rpm、yum、repo 二、repo文件详细解析 三、常用命令 四、更改epel.repo为清华源 一、rpm、yum、repo RPM RPM(Red-hat Package Manager),是一个由红帽最早开发出来的包管理器,目前已经是大多数Linux发行的默认包管理器。RPM管理的包都是以…

程序员一个月拿两万,得知卖猪肉可以赚五万,你是选择做程序员还是卖猪肉?

在知乎上看到这么个帖子,觉得挺有意思,大家一起瞧瞧? 对此,我也看到了许多犀利的回答哈 **A:**我反过来问你,如果一对夫妇卖猪肉一个月只能挣一万,听说一名程序员一个月拿五万,他们…

刷题day66:目标和

题意描述: 给你一个整数数组 nums 和一个整数 target 。 向数组中的每个整数前添加 或 - ,然后串联起所有整数,可以构造一个 表达式 : 例如,nums [2, 1] ,可以在 2 之前添加 ,在 1 之前添…

【简介】限流

限流 为什么要限流限流算法单机限流计数器算法滑动窗口算法漏桶算法令牌桶算法 分布式限流配额算法 限流策略限流位置 为什么要限流 作为有追求的程序员,我们都希望自己的系统跑的飞快,但是速度再快,系统处理请求耗时也不可能为0&#xff0c…

[MYAQL / Mariadb] 数据库学习-管理表记录2:匹配条件

管理表记录-匹配条件 匹配条件基本条件查询逻辑匹配(多个条件判断) 高级条件范围匹配模糊查询正则表达式: regexp四则运算 操作查询结果(对查找到的数据再做处理)排序分组(一样的显示一次)&…

【网络】交换机基本原理与配置

目录 🍁交换机工作原理 🍁交换机接口的双工模式 🍁交换机命令行模式 🍁交换机常见命令 🧧帮助命令 🧧常用命令介绍 🍁交换机的基本配置 🧧配置接口的双工模式及速率 🦐博…

janus videoroom 对接freeswitch conference 篇1

janus videoroom 实时性非常好, freeswitch conference的功能也很多 ,有没办法集成到一块呢 让很多sip 视频终端也能显示到videoroom 里面, 实现方式要不两种 1.改源码实现 (本文忽略 难度高) 2.找一个videoroom管…

05mysql---函数

目录 1:日期函数 2:字符函数 3:数值函数 4:流程函数 1:日期函数 select 函数(参数) 函数功能举例curdate()返回当前日期2023-05-17curtime()返回当前时间14:44:33now()返回当前日期和时间2023-05-17 14:44:33year(date)获取指定date的年份month(date)获取指定date的月份day…

Python学习26:个人所得税计算器

描述‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬ 2018年10月1日以前&#xff…

特征选择与特征提取

目录 一、 特征选择1、特征2、特征选择3、扩展——特征选择算法(有兴趣和精力可了解)拓展--完全搜索:拓展--启发式搜索:拓展--随机搜索:拓展--遗传算法: 二、 特征提取三、特征提取主要方法——PCA(主成分分析)1、PCA算法是如何实现的?PCA--零均值化(中心…

【Linux命令】mount / umount命令、查看文件的挂载情况(lsblk)

在Windows环境下,我们可以直接访问检测到的外部设备,如磁盘、U盘等;然而在Linux环境下,外部硬件设备如磁盘、SD卡等外部设备是无法直接访问的。因此就需要挂载。 参考链接:mount 详解 目录 1、什么是挂载?…

Packet Tracer – 配置中继

Packet Tracer – 配置中继 地址分配表 设备 接口 IP 地址 子网掩码 交换机端口 VLAN PC1 NIC 172.17.10.21 255.255.255.0 S2 F0/11 10 PC2 NIC 172.17.20.22 255.255.255.0 S2 F0/18 20 PC3 NIC 172.17.30.23 255.255.255.0 S2 F0/6 30 PC4 NIC 1…

系统分析师:六、企业信息化战略与实施

目录 一、信息与信息化概念 1.1 信息的概念 1.2 信息化的概念 二、信息系统 2.1 信息系统的概念 2.2 信息系统的类型 2.3 信息系统的生命周期 2.4 系统建模 2.5 信息系统战略规划 2.6 信息化开发方法 三、电子政务 四、企业资源计划(ERP) 五、系统集成 一、信息与信息…