关于家庭用电数据分析

数据参数解释

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

数据库的导入

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

猜你喜欢

转载自blog.csdn.net/weixin_44052130/article/details/130455089