Datawhale_Machine_learning_Task1

赛题比赛官网: 电力需求预测挑战赛

分析赛题数据,为电力预测,其中赛题数据集由字段id(房屋id)、 dt(日标识)、type(房屋类型)、target(实际电力消耗)组成。

  • 每日日期进行脱敏,用1-N进行标识,即1为数据集最近一天,其中1-10为测试集数据。
  • 不同房屋类型数据样本量不一定相同,导致可能出现类别不均衡的现象

首先查看数据(发现数据太多,使用Excel打开会提示,直接使用Python进行简单的数据查看、统计分析、样本分布特征分析等基础操作。(如果不会可以问大模型,一般都会给出答案)
代码如下:

# 导入基本库
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

# 导入数据(假设数据train.csv在同一个文件夹下
data = pd.read_csv('train.csv')

# 打印前5行
print(data.head())

# 查看基本信息
print(data.info())
print(data.describe())

# 查看数据集是否存在Null值
print(data.isnull().sum())    # 本赛题数据集并没有缺失值,不需要处理

# 查看是否存在数据类不均衡的现象(本赛题主要考虑不同房屋类型下数据量大小|不同房屋id数据量大小)

data_counts_by_id = data['id'].value_counts()    
"""
获取id的计数,发现id数据分布存在类别不均衡的现象,
多数id的训练数据量在450~510之间,
有少数(<50)在50以下(前天统计的,具体多少忘记了,
总数应该是5000+个id
"""
data_counts_by_id = data['type'].value_counts()    # 获取type的计数

Task1 Baseline

# 计算训练数据最近11-20单位时间内对应id的目标均值
target_mean = train[train['dt']<=20].groupby(['id'])['target'].mean().reset_index()

# 将target_mean作为测试集结果进行合并
test = test.merge(target_mean, on=['id'], how='left')

Task1 Baseline解释

由于test数据集是针对各房屋(id)进行dt为1~10的预测,采用11-20单位时间内对应id的目标均值作为预测结果。

train[train['dt']<=20]

这一行代码是在原始train DataFrame中筛选出所有’dt’列的值小于等于20的行。'dt’可能代表日期或者时间戳,这里我们筛选出所有在指定时间点之前的数据。

.groupby(['id'])

在筛选后的数据上,使用groupby方法按’id’列的值进行分组。这意味着所有具有相同’id’值的行会被归为一组。

['target'].mean()

对于每一组数据,计算’target’列的平均值。'target’列通常是我们感兴趣的结果或输出变量,这里的操作是计算每个’id’相关的所有记录的’target’平均值。

.reset_index()

将groupby操作产生的索引重置为普通的列。默认情况下,groupby和聚合操作会使用’id’作为索引,但.reset_index()将这个索引转换回常规的列,这样我们就可以更方便地处理或查看结果。

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值