数据挖掘-家用热水器用户行为分析与事件识别

探索分析热水器的水流量状况

import pandas as pd
import matplotlib.pyplot as plt
inputfile = 'D:/laizheli111/python_shuju/original_data.xls'  # 输入的数据文件
data = pd.read_excel(inputfile)  # 读取总的数据   

lv_non = pd.value_counts(data['有无水流'])['无']
lv_move = pd.value_counts(data['有无水流'])['有']

fig=plt.figure(figsize=(6,5))
plt.rcParams['font.sans-serif'] = 'SimHei'
plt.rcParams['axes.unicode_minus'] = False
plt.bar(x=range(2),height=[lv_non,lv_move],width=0.4,alpha=0.8,color='skyblue')
plt.xticks([index for index in range(2)],['无','有'])
plt.xlabel('水流状态')
plt.xlabel('记录数')
plt.title('不同水流状态记录数(3005)')
plt.show()
plt.close()

water=data['水流量']
fig=plt.figure(figsize=(5,8))
plt.boxplot(water,patch_artist=True,labels=['水流量'],boxprops={'facecolor':'lightblue'})
plt.title("水流量分布箱型图(3005)")
plt.grid(axis='y')
plt.show()

 

 数据预处理

# ´代码10-2
import pandas as pd
import numpy as np
data = pd.read_excel('D:/laizheli111/python_shuju/original_data.xls')
print('初始状态的数据形状为:', data.shape)
# 删除热水器编号、有无水流、节能模式属性
data.drop(labels=["热水器编号","有无水流","节能模式"],axis=1,inplace=True) 
print('删除冗余属性后的数据形状为:', data.shape)
data.to_csv('D:/laizheli111/water_heart.csv',index=False)


# 代码10-3

# 读取数据
data = pd.read_csv('D:/laizheli111/python_shuju/water_heart.csv')
# 划分用水事件
threshold = pd.Timedelta('4 min')  # 阈值为4分钟
data['发生时间'] = pd.to_datetime(data['发生时间'], format = '%Y%m%d%H%M%S')  # 转换时间格式
data = data[data['水流量'] > 0]  # 只要流量大于0的记录
sjKs = data['发生时间'].diff() > threshold  # 相邻时间向前差分,比较是否大于阈值
sjKs.iloc[0] = True  # 令第一个时间为第一个用水事件的开始事件
sjJs = sjKs.iloc[1:]  # 向后差分的结果
sjJs = pd.concat([sjJs,pd.Series(True)])  # 令最后一个时间作为最后
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值