Как масштабировать все данные внутри фрейма данных, кроме одного столбца

#python #pandas #numpy

#python #pandas #numpy

Вопрос:

Мои данные выглядят как:

 cycles  os1 os2 os3 sm1 sm2 sm3 sm4 sm5 sm6 sm7 sm8 sm9 sm10    sm11    sm12    sm13    sm14    sm15    sm16    sm17    sm18    sm19    sm20    sm21
0   1   -0.0007 -0.0004 100.0   518.67  641.82  1589.70 1400.60 14.62   21.61   554.36  2388.06 9046.19 1.3 47.47   521.66  2388.02 8138.62 8.4195  0.03    392 2388    100.0   39.06   23.4190
1   2   0.0019  -0.0003 100.0   518.67  642.15  1591.82 1403.14 14.62   21.61   553.75  2388.04 9044.07 1.3 47.49   522.28  2388.07 8131.49 8.4318  0.03    392 2388    100.0   39.00   23.4236
2   3   -0.0043 0.0003  100.0   518.67  642.35  1587.99 1404.20 14.62   21.61   554.26  2388.08 9052.94 1.3 47.27   522.42  2388.03 8133.23 8.4178  0.03    390 2388    100.0   38.95   23.3442
3   4   0.0007  0.0000  100.0   518.67  642.35  1582.79 1401.87 14.62   21.61   554.45  2388.11 9049.48 1.3 47.13   522.86  2388.08 8133.83 8.3682  0.03    392 2388    100.0   38.88   23.3739
4   5   -0.0019 -0.0002 100.0   518.67  642.37  1582.85 1406.22 14.62   21.61   554.00  2388.06 9055.15 1.3 47.28   522.19  2388.04 8133.80 8.4294  0.03    393 2388    100.0   38.90   23.4044
  

и я хочу изменить масштаб фрейма данных, но циклически использовать столбцы.

Я пытался:

 # Scale features
from sklearn.preprocessing import StandardScaler

sc = StandardScaler()

for col in data[1:].columns:
    data[col] = sc.fit_transform(data[col].values.reshape(-1,1))
  

но в любом случае он масштабирует весь фрейм данных.

Помощь была бы оценена. Спасибо!

Ответ №1:

Вы можете выбрать все столбцы без first by DataFrame.iloc , здесь first : означает все строки и 1: все столбцы без first и перейти к fit_transform :

 from sklearn.preprocessing import StandardScaler
sc = StandardScaler()

data.iloc[:, 1:] = sc.fit_transform(data.iloc[:, 1:])
print (data)
   cycles       os1       os2  os3  sm1       sm2       sm3       sm4  sm5  
0       1  0.074613 -1.128152  0.0  0.0 -1.847703  0.732430 -1.349237  0.0   
1       2  1.287080 -0.725241  0.0  0.0 -0.276203  1.313986 -0.034171  0.0   
2       3 -1.604187  1.692228  0.0  0.0  0.676221  0.263346  0.514636  0.0   
3       4  0.727480  0.483494  0.0  0.0  0.676221 -1.163111 -0.691704  0.0   
4       5 -0.484987 -0.322329  0.0  0.0  0.771464 -1.146651  1.560476  0.0   

   sm6       sm7       sm8       sm9  sm10      sm11      sm12      sm13  
0  0.0  0.765578 -0.422577 -0.822800   0.0  1.050958 -1.607627 -1.209416   
1  0.0 -1.617089 -1.267731 -1.339486   0.0  1.198981 -0.005169  0.950255   
2  0.0  0.374977  0.422577  0.822312   0.0 -0.429265  0.356676 -0.777482   
3  0.0  1.117119  1.690309 -0.020960   0.0 -1.465421  1.493904  1.382189   
4  0.0 -0.640586 -0.422577  1.360934   0.0 -0.355254 -0.237784 -0.345547   

       sm14      sm15  sm16      sm17  sm18  sm19      sm20      sm21  
0  1.866394  0.265372   0.0  0.204124   0.0   0.0  1.549015  0.867102  
1 -1.140246  0.795254   0.0  0.204124   0.0   0.0  0.637830  1.020631  
2 -0.406508  0.192136   0.0 -1.837117   0.0   0.0 -0.121491 -1.629404  
3 -0.153495 -1.944623   0.0  0.204124   0.0   0.0 -1.184541 -0.638144  
4 -0.166145  0.691862   0.0  1.224745   0.0   0.0 -0.880812  0.379816