Как выполнить Min Max Scaler для массива, содержащего столбцы со строкой и числами?

пожалуйста, мне действительно нужна ваша помощь, я борюсь с MinMaxScaler, я хотел бы применить эту технику к приведенному ниже массиву, который содержит столбцы со строкой и числами. Я хочу применить эту технику только к столбцам, содержащим числа.

clean_tweets_no_urls = pd.DataFrame(counts_no_urls.most_common(15),
                           columns=['words', 'count'])

clean_tweets_no_urls.head()

Это мой массив

minmax_scaling(clean_tweets_no_urls, columns=['words', 'count'])

Для этого я получаю такой результат:

---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-108-eeb7b44d7121> in <module>
----> 1 minmax_scaling(clean_tweets_no_urls, columns=['words', 'count'])

C:\ProgramData\Anaconda3\lib\site-packages\mlxtend\preprocessing\scaling.py in minmax_scaling(array, columns, min_val, max_val)
     36 
     37     """
---> 38     ary_new = array.astype(float)
     39     if len(ary_new.shape) == 1:
     40         ary_new = ary_new[:, np.newaxis]

C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\generic.py in astype(self, dtype, copy, errors)
   5696         else:
   5697             # else, only a single dtype is given
-> 5698             new_data = self._data.astype(dtype=dtype, copy=copy, errors=errors)
   5699             return self._constructor(new_data).__finalize__(self)
   5700 

C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\internals\managers.py in astype(self, dtype, copy, errors)
    580 
    581     def astype(self, dtype, copy: bool = False, errors: str = "raise"):
--> 582         return self.apply("astype", dtype=dtype, copy=copy, errors=errors)
    583 
    584     def convert(self, **kwargs):

C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\internals\managers.py in apply(self, f, filter, **kwargs)
    440                 applied = b.apply(f, **kwargs)
    441             else:
--> 442                 applied = getattr(b, f)(**kwargs)
    443             result_blocks = _extend_blocks(applied, result_blocks)
    444 

C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\internals\blocks.py in astype(self, dtype, copy, errors)
    623             vals1d = values.ravel()
    624             try:
--> 625                 values = astype_nansafe(vals1d, dtype, copy=True)
    626             except (ValueError, TypeError):
    627                 # e.g. astype_nansafe can fail on object-dtype of strings

C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\dtypes\cast.py in astype_nansafe(arr, dtype, copy, skipna)
    895     if copy or is_object_dtype(arr) or is_object_dtype(dtype):
    896         # Explicit copy, or required since NumPy can't view from / to object.
--> 897         return arr.astype(dtype, copy=True)
    898 
    899     return arr.view(dtype)

ValueError: could not convert string to float: 'joebiden'




person Itamar João Valentim    schedule 22.07.2020    source источник


Ответы (1)


from sklearn.preprocessing import minmax_scale

clean_tweets_no_urls[['count']] = minmax_scale.fit_transform(clean_tweets_no_urls[['count']])

Это можно использовать для автоматизации поиск числовых столбцов.

person Reveille    schedule 23.07.2020