特征工程的开始:数据集的特征理解

导读

本篇将详细解释数据集的处理方式。我相信肯定是有小伙伴读过《特征工程入门与实践》,所以这里就拿一些不一样的数据集说明特征理解的过程。

数据集的准备

在这里我们使用的是德国的能源消耗信息,是一个结构化的报表。由于数据在外网,所以这里下载下来给大家:点击查看并全文复制保存在本地

如果你使用Chrome浏览器打开,那么你打开的时候应该是这样:

数据集

我们可以看到,这个数据中包含了从 2006 / 1 / 1 2006/1/1 2006/1/1开始的所有耗电数据、风力发电数据、太阳能发电数据和风力太阳能混合发电。在准备理解特征之前,我们还是把之前的流程图放在下面供参考:

特征工程流程

好的,开搞!

数据读取

在这里,我们使用pandas库进行数据的读取。

import pandas as pd

# 读取数据集文件
def get_data(path):
  datas = pd.read_csv(path)
  # 选取耗电作为研究对象
  data = datas[['Date', 'Consumption']]
  return data
  pass

封装了这个方法之后,我们调用就是这样:

# 我的文件保存在了/home/sakebow/python/data/germany_energy.csv
data = get_data('/home/sakebow/python/data/germany_energy.csv')

由于数据本身是用csv存储的,所以具有一定的结构性。第一步结构化直接完成 \sqrt{}

紧接着,我们来看看每一列的情况:

  • 日期是定序等级,虽然数值有实际的意义,本质上还是类别;
  • 能耗是定量数据,在研究的时候还是会觉得数值非常大,所以将所有的能耗数据和 2006 / 01 / 01 2006/01/01 2006/01/01的相减,得到定距等级;
  • 风力发电和混合发电也是使用定距等级进行分析。

第二步每一列的类别分析完成 \sqrt{}

然后我们就对照特征工程的准备:特征理解中提供的参照表进行图表的绘制。

那么对着表一个个看,发现应当这么操作:

对象使用图表
日期直方图
能耗折线图、散点图、直方图
风力折线图、散点图、直方图
太阳能折线图、散点图、直方图
混合折线图、散点图、直方图

看起来还不错。不过我们还是想研究能耗风力太阳能混合发电量随着时间的推移而变化的趋势,所以,重新规划一下:

对象变量类型
日期自变量(作为 x x x轴)
能耗因变量(作为 y y y轴之一)
风力因变量(作为 y y y轴之一)
太阳能因变量(作为 y y y轴之一)
混合因变量(作为 y y y轴之一)

好了,图表确认了,我们直接开始吧。

编码

首先,我们先拉出数据集里面的日期和耗电量。刚刚我们拿到了一共四列数据的DataFrame对象data现在我们需要提取其中的几列作为研究对象。

# 使用两个中括号能够同时提取多列作为研究对象
consumptions = data[['Date', 'Consumption']]
# 使用DataFrame封装的plot方法能够非常方便的画出图像
consumptions.plot()

执行

好嘛,啥都没发生。纠其原因,就是没有显示图像。画归画,显示又是另一回事。所以我们引入matplotlib作为绘图包。接下来就是完整的代码:

严重警告:这部分代码虽然没问题,但是得出来的结果很奇葩复制请慎重

import pandas as pd
import matplotlib.pyplot as pyplot

def get_data(path, x, y):
  datas = pd.read_csv(path)
  data = datas[[x, y]]
  return data

if __name__ == '__main__':
  data = get_data('/home/sakebow/python/data/germany_energy.csv', 'Date', 'Consumption')
  data.plot()
  pyplot.xlabel('date')
  pyplot.ylabel('consumption')
  pyplot.show()
  pass

看起来非常完美运行

德国能源数据

修正

嗯……虽然线条没什么问题,但是这个横坐标也太奇葩了吧?直接将DataFrame的索引变成了横坐标。这显然不是什么好图表。

所以,我们稍加修改:

注意:下面这个方法是正确的请放心复制

import pandas as pd
import matplotlib.pyplot as pyplot
# 封装读取数据的函数
def get_data(path, x, y):
  datas = pd.read_csv(path)
  data = datas[[x, y]]
  return data

if __name__ == '__main__':
  # 获取数据
  data = get_data('/home/sakebow/python/data/germany_energy.csv', 'Date', 'Consumption')
  # 确认索引,并且替换掉原先的索引
  data.set_index('Date', inplace=True)
  # 内置函数绘图
  data.plot()
  # 横坐标备注
  pyplot.xlabel('date')
  # 纵坐标备注
  pyplot.ylabel('consumption')
  # 显示图表
  pyplot.show()
  pass

德国能源数据

这就好多了

能够很明显地看出来,德国能耗有一定的周期性。

再进一步

这也就是特征理解一直在做的事情。通过图表分析数据地走向。如果数据量非常多,我们也可以使用这样的方法:

import pandas as pd
import matplotlib.pyplot as pyplot

if __name__ == '__main__':
  # 获取数据
  datas = pd.read_csv('/home/sakebow/python/data/germany_energy.csv')
  # 确认索引,并且替换掉原先的索引
  datas.set_index('Date', inplace=True)
  # 内置函数绘图
  data.plot()
  # 横坐标备注
  pyplot.xlabel('date')
  # 显示图表
  pyplot.show()
  pass

德国能源数据

像这样就非常明显地表明:从2006年开始德国的耗电有着周期性的稳定的变化风力发电和太阳能发电一直都在增长但是混合发电量依然远远达不到耗电量

这就是特征理解了。在这个阶段,我们所做的就是使用图表来理解什么数据是什么趋势通过肉眼大致预测什么数据和什么有关

是不是有点能理解了?

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ordinary_brony

代码滞销,救救码农

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值