如何处理这样的缺失值和回归的日期格式?

how to handle the missing values like this and date format for regression?

我想从这个数据集建立回归模型(前两个是因变量,最后一个是因变量)。我使用 dataset=pd.read_csv('data.csv') 导入数据集 现在我以前也制作过模型,但从未将日期格式数据集作为自变量完成,所以我们应该如何处理这些日期格式来制作回归模型。 我们还应该如何处理给定数据集中的 0 值数据。 我的数据集是 like:in .csv 格式:

Month/Day, Sales, Revenue
01/01    ,  0    , 0
01/02    , 100000, 0
01/03    , 400000, 0
01/06    ,300000, 0
01/07    ,950000, 1000000
01/08    ,10000,  15000
01/10    ,909000, 1000000
01/30    ,12200,  12000
02/01   ,950000,  1000000
02/09     ,10000, 15000
02/13    ,909000, 1000000
02/15    ,12200,  12000

我不知道如何处理这种格式的日期和 0 值

这是一个开始。我将你的数据保存到一个文件中并删除了所有空白。

import pandas as pd
df = pd.read_csv('20180112-2.csv')
df['Month/Day'] = pd.to_datetime(df['Month/Day'], format = '%m/%d')
print(df)

输出:

    Month/Day   Sales  Revenue
0  1900-01-01       0        0
1  1900-01-02  100000        0
2  1900-01-03  400000        0
3  1900-01-06  300000        0
4  1900-01-07  950000  1000000
5  1900-01-08   10000    15000
6  1900-01-10  909000  1000000
7  1900-01-30   12200    12000
8  1900-02-01  950000  1000000
9  1900-02-09   10000    15000
10 1900-02-13  909000  1000000
11 1900-02-15   12200    12000

年份默认为 1900,因为您的数据中未提供该年份。如果您需要更改它,那是另一个不同的问题。要更改年份,请参阅:

import datetime as dt
df['Month/Day'] = df['Month/Day'].apply(lambda dt: dt.replace(year = 2017))
print(df)

输出:

    Month/Day   Sales  Revenue
0  2017-01-01       0        0
1  2017-01-02  100000        0
2  2017-01-03  400000        0
3  2017-01-06  300000        0
4  2017-01-07  950000  1000000
5  2017-01-08   10000    15000
6  2017-01-10  909000  1000000
7  2017-01-30   12200    12000
8  2017-02-01  950000  1000000
9  2017-02-09   10000    15000
10 2017-02-13  909000  1000000
11 2017-02-15   12200    12000

最后,要找到列之间的相关性,只需使用 df.corr():

print(df.corr())

输出:

            Sales   Revenue
Sales    1.000000  0.953077
Revenue  0.953077  1.000000

How to handle missing data?

有多种方法可以替换它。按平均数、中位数或使用移动平均数 window 或什至 RF 方法(或类似的 MICE 等)。 对于 'sales' 列,您可以尝试任何一种方法。 对于 'revenue' 列,最好不要使用其中的任何一个,尤其是当您有很多缺失值时(这会损害模型)。只需删除 'revenue' 列中缺少值的行。

顺便说一句,ML 中的一些方法接受缺失值:XGBoost 和某种方式 Trees/Forests。对于最新的,您可以将零替换为一些非常不同的值,例如 -999999。

What to do with the data?

很多与特征工程相关的事情都可以在这里完成: 1.星期几 2.工作日或周末 3. 月中的第几天(数字) 4. 假期前或 post-假期 5.周数 6.月号 7.年号 8. 一些因素的表示(例如,如果是水果销售数据,你可以与它相关的一些布尔列) 9.等等...

这里的几乎每个特征都应该通过 one-hot-encoding 进行预处理。

如果您使用线性模型,当然要清除相关性。