Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/sharepoint/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 熊猫:标准化数据时获得0和N_Python_Pandas - Fatal编程技术网

Python 熊猫:标准化数据时获得0和N

Python 熊猫:标准化数据时获得0和N,python,pandas,Python,Pandas,我在熊猫中标准化数据时遇到了一些问题。我已经创建了一个模型,并试图用它来预测 首先,我有: _text_img_count _text_vid_count _text_link_count _text_par_count ... 0 2 0 6 然后我将标准化如下: x = numeric_df.values #returns a numpy array min_max_scal

我在熊猫中标准化数据时遇到了一些问题。我已经创建了一个模型,并试图用它来预测

首先,我有:

_text_img_count  _text_vid_count  _text_link_count  _text_par_count  ...
0                2                0                 6
然后我将标准化如下:

    x = numeric_df.values #returns a numpy array
    min_max_scaler = preprocessing.MinMaxScaler()
    x_scaled = min_max_scaler.fit_transform(x)
    numeric_df_normalized = pd.DataFrame(x_scaled)
numeric_df_normalized = pd.DataFrame(numeric_df_normalized, columns=numeric_df.columns)
现在,数值_df_规格化如下所示:

 0    1    2    3    4    5    6    7    8    9  ...    13   14   15   16  \
0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0 ...   0.0  0.0  0.0  0.0   

    17   18   19   20   21   22  
0  0.0  0.0  0.0  0.0  0.0  0.0  
所以我丢失了我的列名,我的值都是0

最后,我尝试从原始数字_df中添加旧列名,如下所示:

    x = numeric_df.values #returns a numpy array
    min_max_scaler = preprocessing.MinMaxScaler()
    x_scaled = min_max_scaler.fit_transform(x)
    numeric_df_normalized = pd.DataFrame(x_scaled)
numeric_df_normalized = pd.DataFrame(numeric_df_normalized, columns=numeric_df.columns)
我回来了:

_text_img_count  _text_vid_count  _text_link_count ...
            NaN              NaN               NaN
所以有几个问题:

1为什么规范化会导致我丢失列名并将其设置为0

2为什么从numeric_df添加回列名会导致我的0转换为NaN


谢谢

如果要将结果转换为具有相同结构的数据帧,可以执行以下操作:

numeric_df_normalized.columns=numeric_df.columns
numeric_df_normalized.index=numeric_df.index
第二行是,如果您也有索引,而不是

numeric_df_normalized = pd.DataFrame(numeric_df_normalized, columns=numeric_df.columns)
关于0,如果第一行中的值是每个特征的最小可能值,则可能发生这种情况。然后,当缩放它们时,它们将转换为0

例如,考虑下面的规范化:

from sklearn import preprocessing

df=pd.DataFrame({'a':[1,2],'b':[3,4]})

min_max_scaler = preprocessing.MinMaxScaler()
x_scaled = min_max_scaler.fit_transform(df.values)
x_标度为


因此,左上角1变为0,因为1如果要将结果转换为具有相同结构的数据帧,可以执行以下操作:

numeric_df_normalized.columns=numeric_df.columns
numeric_df_normalized.index=numeric_df.index
第二行是,如果您也有索引,而不是

numeric_df_normalized = pd.DataFrame(numeric_df_normalized, columns=numeric_df.columns)
关于0,如果第一行中的值是每个特征的最小可能值,则可能发生这种情况。然后,当缩放它们时,它们将转换为0

例如,考虑下面的规范化:

from sklearn import preprocessing

df=pd.DataFrame({'a':[1,2],'b':[3,4]})

min_max_scaler = preprocessing.MinMaxScaler()
x_scaled = min_max_scaler.fit_transform(df.values)
x_标度为

所以左上角的1从1变为0 1为什么规范化会导致我丢失列名并将其设置为0

:

因此,当data min==data max时,缩放结果为0

2为什么从numeric_df添加回列名会导致我的0转换为NaN

请注意,numeric_df_normalized已经是一个数据帧,因此pd.DataFramenumeric_df_normalized,columns=numeric_df.columns将尝试用新列匹配当前数据帧。因为没有匹配的列名,所以结果数据为NaN

1为什么规范化会导致我丢失列名并将其设置为0

:

因此,当data min==data max时,缩放结果为0

2为什么从numeric_df添加回列名会导致我的0转换为NaN


请注意,numeric_df_normalized已经是一个数据帧,因此pd.DataFramenumeric_df_normalized,columns=numeric_df.columns将尝试用新列匹配当前数据帧。由于没有匹配的列名,结果数据为NaN。

x.max和x.min的最小值和最大值是多少?1。检查最小值和最大值。2.您正在从dataframe创建dataframe。。。最好使用以下选项:numeric_df_normalized=pd.DataFramex_scaled,columns=numeric_df.columns是x.max和x.min的最小值和最大值?1。检查最小值和最大值。2.您正在从dataframe创建dataframe。。。最好使用:numeric\u df\u normalized=pd.DataFramex\u scaled,columns=numeric\u df.columns