ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

数据分析与挖掘

2021-10-22 09:31:39  阅读:187  来源: 互联网

标签:数据分析 最大值 用户 最小值 挖掘 new data axis


题目:

数据data_etr.csv为用户用电量数据,数据中有编号为1-200的200位电力用户,DATA_DATE表示时间,如2015/1/1表示2015年1月1日,KWH为用电量。请完成以下工作:
(1) 将数据进行转置,转置后行为用户编号、列为日期、值为用户每日用电量。
(2) 对数据中的异常数据进行识别并处理。
(3) 统计每个用户用电数据的基本统计量,包括:最大值、最小值、均值、中位数、和、方差、偏度、峰度。
(4) 每个用户用电数据按日差分,并求取差分结果的基本统计量,统计量同3。
解析:先 进行按日期差分(diff),再 进行按用户求基本统计量(agg)。
(5) 求取每个用户的5%分位数。
(6) 每个用户按周求和并且进行差分(一周7天,年度分开),并求取差分结果的基本统计量,统计量同3。
(7) 统计每个用户的日用电量在其最大值0.9倍以上的次数。
(8) 求取每个用户日为最大值/最小值的索引月份,若最大值/最小值存在于多个月份中,则输出含有最大值/最小值最多的那个月份。如1号用户的最小值为0,12个月每个月都有0,则看哪个月的0最多。
(9) 合并上述特征。

答案

1.将数据进行转置,转置后行为用户编号、列为日期、值为用户每日用电量。

import numpy as np
import pandas as pd
import 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’)

2.对数据中的异常数据进行识别并处理。

def clear_(x=None):
QL=x.quantile(0.25)#下四分位数
QU=x.quantile(0.75)#上四分位数
IQR=QU-QL
x[((x>QU+1.5IQR)|(x<QL-1.5IQR))]=None 上四分位数是加运算,上四分位数是减运算,别记错了
return x

data_new.apply(clear_,axis=0)#对每一行操作

3.统计每个用户用电数据的基本统计量,包括:最大值、最小值、均值、中位数、和、方差、偏度、峰度。

feature1=data_new.T.agg([‘max’,‘min’,‘mean’,‘median’,‘sum’,‘var’,‘skew’,‘kurt’],axis=0).T

4.每个用户用电数据按日差分,并求取差分结果的基本统计量,统计量同3。

feature2=data_new.T.diff(axis=1).agg([‘max’,‘min’,‘mean’,‘median’,‘sum’,‘var’,‘skew’,‘kurt’],axis=0).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=0).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==x.min(),axis=1).groupby(by=data_new.columns.month,axis=1).sum().idxmax(axis=1) #最小值

feature7=data_new.apply(lambda x: x==x.max(),axis=1).groupby(by=data_new.columns.month,axis=1).sum().idxmax(axis=1) #最大值

9.合并上述特征。

pd.concat([feature1,feature2,feature3,feature4,feature5,feature6,feature7],axis=0)

标签:数据分析,最大值,用户,最小值,挖掘,new,data,axis
来源: https://blog.csdn.net/weixin_53299145/article/details/120899333

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有