“2021云+数:电路数据挖掘”的版本间的差异
来自CloudWiki
(创建页面,内容为“三、电力数据分析与挖掘。 数据data_etr.csv为用户用电量数据,数据中有编号为1-200的200位电力用户,DATA DATE表示时间,如2015/1/…”) |
(→答案) |
||
(未显示同一用户的1个中间版本) | |||
第1行: | 第1行: | ||
− | + | ==电力数据分析与挖掘== | |
数据data_etr.csv为用户用电量数据,数据中有编号为1-200的200位电力用户,DATA DATE表示时间,如2015/1/1表示2015年1月1日,KWH为用电量。请完成以下工作: | 数据data_etr.csv为用户用电量数据,数据中有编号为1-200的200位电力用户,DATA DATE表示时间,如2015/1/1表示2015年1月1日,KWH为用电量。请完成以下工作: | ||
− | (1) | + | (1)将数据进行转置,转置后,行为用户编号、列为日期、值为用户每日用电量。 |
(2)对数据中的异常数据进行识别并处理。 | (2)对数据中的异常数据进行识别并处理。 | ||
第21行: | 第21行: | ||
(9)合并上述特征。 | (9)合并上述特征。 | ||
− | + | ==答案== | |
− | #1.将数据进行转置,转置后行为用户编号、列为日期、值为用户每日用电量。import numpy as np | + | <nowiki>#1.将数据进行转置,转置后行为用户编号、列为日期、值为用户每日用电量。import numpy as np |
import pandas as pdimport os | import pandas as pdimport os | ||
#将数据进行转置,转置后行为用户编号、列为日期、值为用户每日用电量。data=pd.read_csv('data_etr.csv',parse_dates=['DATA_DATE'],encoding'gbk')data.head( | #将数据进行转置,转置后行为用户编号、列为日期、值为用户每日用电量。data=pd.read_csv('data_etr.csv',parse_dates=['DATA_DATE'],encoding'gbk')data.head( | ||
第56行: | 第56行: | ||
#9.合并上述特征。 | #9.合并上述特征。 | ||
pd.concat([ featurel ,feature2,feature3,feature4,feature5,feature6,feature7],axis=O) | pd.concat([ featurel ,feature2,feature3,feature4,feature5,feature6,feature7],axis=O) | ||
+ | </nowiki> |
2021年10月21日 (四) 03:54的最新版本
电力数据分析与挖掘
数据data_etr.csv为用户用电量数据,数据中有编号为1-200的200位电力用户,DATA DATE表示时间,如2015/1/1表示2015年1月1日,KWH为用电量。请完成以下工作:
(1)将数据进行转置,转置后,行为用户编号、列为日期、值为用户每日用电量。
(2)对数据中的异常数据进行识别并处理。
(3)统计每个用户用电数据的基本统计量,包括:最大值、最小值、均值、中位数、和、方差、偏度、峰度。
(4)每个用户用电数据按日差分,并求取差分结果的基本统计量,统计量同3。
(5)求取每个用户的5%分位数。
(6)每个用户按周求和并差分(一周7天,年度分开),并求取差分结果的基本统计量,统计量同3。
(7)统计每个用户的日用电量在其最大值0.9倍以上的次数。
(8)求取每个用户日为最大值/最小值的索引月份,若最大值/最小值存在于多个月份中,则输出含有最大值/最小值最多的那个月份。如1号用户的最小值为0,12个月每个月都有0,则看哪个月的0最多。
(9)合并上述特征。
答案
#1.将数据进行转置,转置后行为用户编号、列为日期、值为用户每日用电量。import numpy as np import pandas as pdimport os #将数据进行转置,转置后行为用户编号、列为日期、值为用户每日用电量。data=pd.read_csv('data_etr.csv',parse_dates=['DATA_DATE'],encoding'gbk')data.head( #透视表 #1.将数据进行转置,转置后行为用户编号、列为日期、值为用户每日用电量。import numpy as np import pandas as pdimport os #将数据进行转置,转置后行为用户编号、列为日期、值为用户每日用电量。data=pd.read_csv('data_etr.csv',parse_dates=['DATA_DATE'],encoding='gbk')data.head( #透视表 data _new=pd.pivot_table(data=data,values='KWH,index=CONS_NO',columns='DATA_DATE') #⒉.对数据中的异常数据进行识别并处理。 def clear_(x=None): QL=x.quantile(0.25)#下四分位数QU-x.quantile(0.75)#上四分位数IQR-QU-QL x[((x>QU+1.5*IQR)(x<QL-1.5*IQR))]=Nonereturn x data new.apply(clear_,axis=O)#对每一行操作 #3.统计每个用户用电数据的基本统计量,包括:最大值、最小值、均值、中位数、和、方差、偏度、峰度。 featurel=data new.T.agg([ 'max','min','mean','median','sum','var','skew','kurt ],axis=0).T #4.每个用户用电数据按日差分,并求取差分结果的基本统计量,统计量同3。 feature2=data new.T.dif(axis=1).agg(['max' 'min', 'mean ', 'median' 'sum','var','skew','kurt'],axis=O).T #5.求取每个用户的5%分位数。 feature3=data_new.quantile(0.05,axis=1) #6.每个用户按周求和并差分(一周7天,年度分开),并求取差分结果的基本统计量,统计量同3。data_new.columns.week feature4=(data new.T.resample('W').sum()). T.diff(axis=1).T.agg(['max,'min', 'mean' median' sum', var" 'skew',kurt'],axis=O).T #7.统计每个用户的日用电量在其最大值0.9倍以上的次数。 feature5=data_new.apply(lambda x:sum(x>x.max()*0.9),axis=1) #8.求取每个用户日为最大值/最小值的索引月份,若最大值/最小值存在于多个月份中,则输出含有最值/最小值最多的那个月份。如1号用户的最小值为0,12个月每个月都有0,则看哪个月的0最多。feature6-data_new.apply(lambda X=-x.min(),axis=1).groupby(by=data_new.columns.month,axis=1).sum().idxmax(axis=l)#最小值 feature7=data_new.apply(lambda X==x.max(),axis=1).groupby(by=data _new.columns.month,axis=1).sum().idxmax(axis=1 )#最大值 #9.合并上述特征。 pd.concat([ featurel ,feature2,feature3,feature4,feature5,feature6,feature7],axis=O)