Как нормализовать значения в столбце GeoDataFrame - PullRequest
0 голосов
/ 08 июля 2019

Есть два шейп-файла, считанные как GeoDataFrames.Для одного столбца в каждом файле gdf мне нужно нормализовать значения, чтобы они находились в диапазоне от 0 до 1.

Я попытался использовать функцию scaler.fit_transform для нормализации значений, но была выдана ошибка в связи с передачей в 2Dмассив в отличие от 1D массива.Поэтому я начал (безуспешно) пытаться изменить (используя np.reshape) столбец в 1D DataFrame перед нормализацией.


    output = gpd.read_file(r"C:\Users\mrich\OneDrive\GMU\Summer 2019 Comp Migration\output_3_simOutput.shp")
    val = gpd.read_file(r"C:\Users\mrich\OneDrive\GMU\CSS 645 (Spring 2019)\Final Project\Other_geo_data\gadm36_TUR_1_val.shp")

    # Reshape attributes
    output.simEnd = np.reshape(output.simEnd, (928, -1)
    val.val_mar19 = np.reshape(val.val_mar19, (928, -1)

    # Normalize both actual and predicted REFPOP
    scaler = preprocessing.StandardScaler()
    scaled_actual = scaler.fit_transform(val.val_mar19)
    scaled_predicted = scaler.fit_transform(output.simEnd)

Нормализованы два столбца: simEnd (в выходных данных) и val_mar19 (в val).Есть 928 записей в каждом.Я полагаю, что они могут быть GeoSeries.

В линиях изменения формы, Exception: Data must be 1-dimensional.

Другая ошибка, но не могу определить, связана ли она: AttributeError: 'Series' object has no attribute 'reshape.'

1 Ответ

0 голосов
/ 09 июля 2019

Трудно помочь более конкретно без mcve , но если я правильно понимаю, это кажется простым pandas вопросом:

df = pd.DataFrame({'x':np.random.rand(20) // .01})
df['x_norm'] = (df['x'] - df['x'].min()) / (df['x'].max() - df['x'].min())

возвращает

       x    x_norm
0   38.0  0.426966
1   77.0  0.865169
2   61.0  0.685393
3   48.0  0.539326
4   88.0  0.988764
5   74.0  0.831461
6   49.0  0.550562
7    0.0  0.000000
8   47.0  0.528090
9   60.0  0.674157
10  22.0  0.247191
11  74.0  0.831461
12  34.0  0.382022
13  48.0  0.539326
14  69.0  0.775281
15   3.0  0.033708
16  89.0  1.000000
17  83.0  0.932584
18  57.0  0.640449
19  26.0  0.292135
...