koolreport / cleandata
解决缺失数据问题
This package is auto-updated.
Last update: 2024-08-30 01:44:52 UTC
README
在数据分析与数据挖掘中,缺失数据总是个问题。cleandata 包提供了解决这种数据缺失问题的方法。
安装
通过下载 .zip 文件
- 下载
- 解压缩 zip 文件
- 将
cleandata
文件夹复制到koolreport
文件夹中,使其看起来如下
koolreport ├── core ├── cleandata
通过 composer
composer require koolreport/cleandata
文档
缺失值通常以 null
值的形式出现在 KoolReport 中。我们通过 删除行 或 为它填充新值 来解决这个问题。
DropNull
DropNull
过程将删除包含 null
值或达到一定数量 null
出现次数的行。
让我们看看一个例子
$this->src('db')
->query("select * from customers")
->pipe(new DropNull())
->pipe($this->dataStore('clean_data'));
以上是使用 DropNull
过程的最简单示例。所有包含 null
值的行都将被删除。因此,返回的数据将是那些具有完整信息的 客户。
仅针对某些列
有时,只有当某些列有 null
值时,才会删除行
->pipe(new DropNull(array(
"targetColumns"=>array("salary","tax")
)))
排除某些列
如果您想针对所有列(除某些列外,因为这些列不重要),您可以这样做
->pipe(new DropNull(array(
"excludedColumns"=>array("address","city")
)))
针对特定类型的列
例如,您只能针对 number
列,如果这些列中的任何列有 null
值,则将删除该行
->pipe(new DropNull(array(
"targetColumnType"=>"number"
)))
您还可以针对其他列类型,例如 string
、date
、datetime
、time
阈值
例如,如果数据行包含超过 2 个 null
值,则删除该行
->pipe(new DropNull(array(
"thresh"=>3,
)))
目标值
如果不想删除 null
值,但想删除 0
值怎么办。对您来说,缺失数据是 0
值,您可以这样做
->pipe(new DropNull(array(
"targetValue"=>0,
)))
当然,您可以设置任何目标值,无论是数字类型还是字符串类型。targetValue 的默认值为 null
。
严格 null
默认情况下,null 可以是空字符串或 0
值。为了启用值和类型的严格比较,您可以设置以下内容
->pipe(new DropNull(array(
"strict"=>true,
)))
FillNull
FillNull
值是另一种数据清洗方法。我们不会删除包含 null
值的行,而是用新值填充 null
值。
->pipe(new FillNull(array(
"newValue"=>0
)))
以上代码将用 10
填充所有 null
值。
目标值
如果您想针对 0
值,可以这样做:
->pipe(new FillNull(array(
"targetValue"=>0,
"newValue"=>10,
)))
用中位数和平均值填充缺失值
在上面的示例中,我们用我们想要的值填充缺失值。然而,更好的方法是用列值的平均值或中位数来填充它们。这种解决方案看起来更优雅。您可以这样做
->pipe(new FillNull(array(
"newValue"=>FillNull::MEAN,
)))
对于中位数,您这样做
->pipe(new FillNull(array(
"newValue"=>FillNull::MEDIAN,
)))
针对某些特定列
您可以将填充操作应用于一些指定的列
->pipe(new FillNull(array(
"targetColumns"=>array("salary","tax"),
)))
排除某些列
某些列不重要,缺失值也不会影响,您可以这样做
->pipe(new FillNull(array(
"excludedColumns"=>array("lastname","gender"),
)))
针对特定类型的列
如果您想,可以将填充应用于特定的 number
列
->pipe(new FillNull(array(
"targetColumnType"=>"number"
)))
严格 null
默认情况下,null 可以是空字符串或 0
值。为了启用值和类型的严格比较,您可以设置以下内容
->pipe(new FillNull(array(
"strict"=>true,
)))
支持
如果您需要支持,请使用我们的论坛,这样其他人也能从中受益。如果支持请求需要隐私,您可以发送电子邮件到我们的邮箱 support@koolreport.com。