探索分析热水器的水流量状况
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)]) # 令最后一个时间作为最后