数据参数解释


本文主要分析的是有功功率,所以可以暂时忽略无功功率

数据库的导入

import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
from pyecharts.charts import Pie
from pyecharts.charts import *
import pyecharts.options as opts
from statsmodels.tsa.seasonal import seasonal_decompose
plt.rcParams['font.sans-serif'] = ['SimHei']  #设置中文字体为黑体
plt.rcParams['axes.unicode_minus'] = False #正常显示负号
pd.set_option('display.float_format',lambda x : '%.2f' % x)#pandas禁用科学计数法

pyecharts是Echarts是一个由百度开源的数据可视化,凭借着良好的交互性,精巧的图表设计,得到了众多开发者的认可。而 Python 是一门富有表达力的语言,很适合用于数据处理。
此外本文还用到了statsmodels库,是一个Python库,用于拟合多种统计模型,执行统计测试以及数据探索和可视化。statsmodels包含更多的“经典”频率学派统计方法,而贝叶斯方法和机器学习模型可在其他库中找到。
我在安装statmodels库时参考了这篇文章,有需要的可以看看:
https://blog.csdn.net/m0_48313550/article/details/124731922

数据处理

重命名

data.rename(columns={'Date':'日期','Time':'时间','Global_active_power':'有功功率','Global_reactive_power':'无功功率','Voltage':'电压','Global_intensity':'电流','Sub_metering_1': '厨房的有功功率','Sub_metering_2': '洗衣房的有功功率','Sub_metering_3': '电热水器和空调的有功功率',
},inplace=1)
data.head()

全英文的列名不方便像我这种英语不太好的靓仔分析数据,所以我把列名都换成了中文的

时间格式转换

data['日期']=data['日期'].str.replace('/07','/2007')
data['时间']=data['时间'].astype(str)
data['日期']=data['日期'].astype(str)
data['index'] = pd.to_datetime(data['日期'] +' '+ data['时间'],format='%d/%m/%Y %H:%M:%S',errors='coerce')
data=data.drop(['日期','时间'],axis=1)
data.head()

将日期列的07转化成2007,并且把时间列的数据转化成str格式,将日期列的时间列合并成索引列,并删除日期和时间列
转换后:

我们使用info()函数发现最后的电热水器空调的有功功率的数值是有缺失的,由于数据量比较大,但是缺失的数据量并不是特别的大,这里我们可以选择删除

异常值处理

# 异常值处理
data = data.replace('?',np.NAN)
data['厨房的有功功率'] = data['厨房的有功功率'].astype('float64')
data['洗衣房的有功功率'] = data['洗衣房的有功功率'].astype('float64')
data['总功率']=data['厨房的有功功率']+data['洗衣房的有功功率']+data['电热水器和空调的有功功率']

仔细观察我们能够发现有一些数据是?,这种异常值格式,我们可以把异常值转换成空值,然后计算出总功率,加入原数据集中。

用电量可视化

sum_data = data[['厨房的有功功率','洗衣房的有功功率','电热水器和空调的有功功率']].sum()
plt.pie(sum_data,labels=['厨房的有功功率','洗衣房的有功功率','电热水器和空调的有功功率'],autopct='%3.1f%%',explode=[0.2,0.2,0],radius=2)
# plt.title('不同家电的有功功率')
# plt.legend(loc="upper right")
plt.show()

不同类型的家庭用电量和总用电量的关系
通过对时间序列的可视化的方式对家庭用电趋势进行数据分析

家庭用电趋势图

plt.figure(figsize=(12,8))
plt.subplot(321)
plt.plot(mon_sum.index,mon_sum['厨房的有功功率'])
plt.title('厨房的有功功率')
plt.subplot(322)
plt.plot(mon_sum.index,mon_sum['洗衣房的有功功率'])
plt.title('洗衣房的有功功率')
plt.subplot(323)
plt.plot(mon_sum.index,mon_sum['电热水器和空调的有功功率'])
plt.title('电热水器和空调的有功功率')
plt.subplot(324)
plt.plot(mon_sum.index,mon_sum.values)
plt.title('总有用功功率')
plt.subplot(3)


后续可以分析周一到周天的用电量
使用weekday()函数,返回0到6的数值,代表周一到周天。

关于家庭用电数据分析相关推荐

  1. 机器学习实验(一):运用机器学习(Kmeans算法)判定家庭用电主因

    声明:版权所有,转载请联系作者并注明出处  http://blog.csdn.net/u013719780?viewmode=contents 博主简介:风雪夜归子(Allen),机器学习算法攻城狮, ...

  2. 如何建立Multi-Step(多步预测)的LSTM时间序列模型(以对家庭用电预测为例)

    译自How to Develop LSTM Models for Multi-Step Time Series Forecasting of Household Power Consumption~ ...

  3. LSTM模型对家庭用电进行多步时间序列预测

    随着智能电表的兴起和太阳能电池板等发电技术的广泛应用,有大量可用的用电数据.这些数据代表了一系列与电力相关的多元时间序列,进而可以用来建模甚至预测未来的用电量.与其他机器学习算法不同,长短时记忆递归神 ...

  4. 线性回归预测--家庭用电功率与时间的关系功率与电流的关系

    线性回归预测–家庭用电功率与时间的关系&&功率与电流的关系 具体过程如下: import time import numpy as np import pandas as pd imp ...

  5. 线性回归多项式拟合——家庭用电预测

    LinearRegression模型参数 fit_intercept: 训练的模型是否包含截距,默认为为True,表示包含 LinearRegression模型属性 coef_ :模型训练好后的参数列 ...

  6. 机器学习案例——‘线性回归预测家庭用电与时间关系‘ 中格式化时间字符串问题

    在机器学习的线性回归案例**"家庭用电案例"**中遇到的问题,自己记录下来. // 需求:把数据集中,字符串类型的时间信息------>数字类型,保存成样本集X # 创建一个 ...

  7. 开发和设计实现LSTM模型用于家庭用电的多步时间序列预测

    鉴于智能电表的兴起以及太阳能电池板等发电技术的广泛采用,有大量的用电数据可供选择.该数据代表了多变量时间序列的功率相关变量,这些变量又可用于建模甚至预测未来的电力消耗. 与其他机器学习算法不同,长期短 ...

  8. 安全健康的使用计算机就要注意,家庭用电安全知识有哪些?了解一下?

    随着科学技术的发展和市民生活质量的提高,电视机.电冰箱.电饭锅.电吹风.电熨斗.电热毯等"电"字打头的电器和空调机.计算机.录像机.洗衣机等"机"字收尾的家用电 ...

  9. 家庭用电都是交流电,为何会有零线和火线的区别?

    交流电是世界上使用最广泛的一种电流形式,交流电是指电流方向随时间作周期性变化的电流. 直流电我们也很熟悉,直流电的电流在流动过程中电流方向不会发生变化,并且我们知道,电流是从正极流向负极,如果我们用这 ...

最新文章

  1. sql server修改字段编码格式_原理:一条 sql 的执行过程详解
  2. 东财在线计算机应用基础作业,《计算机应用基础》东财在线20秋第一套作业答案...
  3. 【好文翻译】10个免费的压力测试工具(Web)
  4. 小米随身wifi没有网络显示无服务器,小米wifi怎么用 小米随身wifi无法上网怎么办...
  5. 信号与系统19(拉普拉斯逆变换)
  6. 文件服务器版压缩工具,FileOptimizer文件压缩工具
  7. 使用html查看dicom,LEADTOOLS构建HTML5 DICOM/PACS查看器(二)
  8. 「消息秒回」是一种美德
  9. mysql innodb 唯一键里的字段为什么不能为NULL
  10. 软件工程师嵌入式开发交流论坛推荐排行
  11. 什么是 yum?更改yum源 yum的相关命令
  12. 关于通用人工智能的思考
  13. 关于战棋对战化的设想和实现
  14. 矩阵顺逆时针旋转、翻转 java
  15. EastWave应用案例:同轴线仿真
  16. Matlab中的匿名函数如何使用?
  17. python自我总结笔记、加上一些自己思考_2020.1 月 阿巛个人总结
  18. chorme-调试模式基本使用
  19. python中画地图map的用法_使用basemap和python在地图中绘制海洋
  20. 420个生活小窍门,很有用的哦

热门文章

  1. 面临裁员调薪,你或许可以考虑这些新职业
  2. 怀旧服猎人1-60级及副本怎么输出?
  3. ​机器人爆发,能从「潮玩」开始吗?
  4. SQLServer的基本语句(增,删,改)_02
  5. 更改mysql表显示数据条数_layui数据表格自定义每页条数limit设置
  6. Scala 方法与函数
  7. 基于51单片机十字路口红绿灯管理系统
  8. WIN7定时开关机命令
  9. 仙道录 第一卷 天道门 第十章 大长老之死
  10. 行车记录仪里面的移动侦测(运动检测、Motion Detection )什么