关于家庭用电数据分析

数据参数解释

在这里插入图片描述
本文主要分析的是有功功率,所以可以暂时忽略无功功率

数据库的导入

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的数值,代表周一到周天。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值