87 KiB
87 KiB
In [16]:
import pandas as pd import numpy as np
In [17]:
df = pd.read_excel('table_landcover.xls') df.head(10)
Out[17]:
<style scoped="">
.dataframe tbody tr th:only-of-type {
vertical-align: middle;
}
.dataframe tbody tr th {
vertical-align: top;
}
.dataframe thead th {
text-align: right;
}
</style>
| Name | Code | Count | Area | |
|---|---|---|---|---|
| 0 | Байрачные Дубравы | 0 | 84 | 5.2500 |
| 1 | Байрачные Дубравы | 30 | 35 | 2.1875 |
| 2 | Байрачные Дубравы | 40 | 166 | 10.3750 |
| 3 | Байрачные Дубравы | 80 | 12 | 0.7500 |
| 4 | Байрачные Дубравы | 90 | 53 | 3.3125 |
| 5 | Байрачные Дубравы | 111 | 8 | 0.5000 |
| 6 | Байрачные Дубравы | 114 | 936 | 58.5000 |
| 7 | Байрачные Дубравы | 115 | 1070 | 66.8750 |
| 8 | Байрачные Дубравы | 116 | 65 | 4.0625 |
| 9 | Байрачные Дубравы | 121 | 3 | 0.1875 |
In [18]:
df.dtypes
Out[18]:
Name object Code int64 Count int64 Area float64 dtype: object
In [19]:
df_pivot = pd.pivot_table(df, index=["Name"], values=["Area"], columns=["Code"] ) df_pivot
Out[19]:
<style scoped="">
.dataframe tbody tr th:only-of-type {
vertical-align: middle;
}
.dataframe tbody tr th {
vertical-align: top;
}
.dataframe thead tr th {
text-align: left;
}
.dataframe thead tr:last-of-type th {
text-align: right;
}
</style>
| Area | ||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Code | 0 | 20 | 30 | 40 | 50 | 60 | 80 | 90 | 111 | 114 | 115 | 116 | 121 | 124 | 125 | 126 |
| Name | ||||||||||||||||
| Байрачные Дубравы | 5.2500 | NaN | 2.1875 | 10.3750 | NaN | NaN | 0.7500 | 3.3125 | 0.5000 | 58.5000 | 66.8750 | 4.0625 | 0.1875 | NaN | 9.6250 | 19.8125 |
| Балка_Красногоровка | NaN | NaN | 7.6250 | 12.8750 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
| Балка_Натухаевская | NaN | 2.8750 | 4.8750 | 1.8750 | 0.6250 | NaN | NaN | NaN | NaN | 0.8125 | NaN | 0.1250 | NaN | 0.6250 | 4.0000 | 3.0625 |
| Балки_горы_Педенкова | 38.5625 | NaN | 62.1250 | 17.0625 | NaN | 0.3125 | 10.6250 | 10.5625 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 6.3125 |
| Бужорский_лес | NaN | 0.2500 | 1.0000 | 4.1250 | 1.3125 | NaN | NaN | NaN | NaN | 157.6875 | 1.6875 | 0.7500 | NaN | 2.6875 | 12.6875 | 13.0625 |
| Высокогорный_массив_Ачишхо | NaN | NaN | 1026.0625 | NaN | NaN | 0.7500 | NaN | NaN | 7.5000 | 25.3750 | NaN | 19.8750 | NaN | 5.1875 | NaN | 2.5625 |
| Герпегем_обрезанная | NaN | NaN | 626.8750 | NaN | NaN | NaN | NaN | NaN | NaN | 509.0000 | NaN | 64.8750 | NaN | 0.7500 | NaN | 11.8750 |
| Гора_Паршивая | NaN | NaN | 206.9375 | 123.0000 | NaN | NaN | NaN | 23.5000 | NaN | 29.0000 | 2.1875 | 25.2500 | NaN | NaN | 0.7500 | 60.2500 |
| Гора_Школьная | NaN | NaN | NaN | 1.2500 | 2.3750 | NaN | NaN | NaN | NaN | 236.6875 | 3.8750 | 12.9375 | NaN | NaN | 5.1875 | 3.5000 |
| Горный_узел_Большое_Псеушх | NaN | NaN | 4.3125 | NaN | NaN | NaN | NaN | NaN | NaN | 1535.3125 | 2.0625 | 4.2500 | NaN | NaN | NaN | NaN |
| Дефановское_насаждение_пихты | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 1287.3750 | NaN | NaN | NaN | NaN | NaN | NaN |
| Долина_реки_Курджипс | 7.1250 | NaN | 93.0625 | NaN | 0.3125 | NaN | NaN | NaN | 330.9375 | 716.5000 | 382.0625 | 17.4375 | NaN | NaN | 0.7500 | NaN |
| Каменные_грибы | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 26.2500 | NaN | NaN | NaN | NaN | NaN | NaN |
| Коренной_берег_Кубани | 7.3125 | NaN | 8.9375 | 8.6250 | NaN | NaN | 9.4375 | 4.9375 | NaN | 6.0000 | 25.3750 | 3.3750 | NaN | NaN | 10.6250 | 23.6875 |
| Круглик | 30.5625 | NaN | 750.8750 | 5.0625 | NaN | NaN | NaN | 3.3125 | NaN | 1725.5000 | 1.0000 | 89.8750 | NaN | 3.8750 | 3.5000 | 102.6250 |
| Кудепстинский_лесопарк | NaN | NaN | NaN | NaN | 0.0625 | NaN | NaN | NaN | NaN | 28.5625 | 1.3125 | 0.6250 | NaN | NaN | NaN | NaN |
| Кустарниковый_участок_М_Зеленчук | NaN | NaN | 1.3125 | 20.8750 | NaN | NaN | 0.6250 | 10.5625 | NaN | 9.6250 | 8.6250 | 11.0625 | NaN | NaN | 21.3125 | 30.4375 |
| Новокубанский | 6.0625 | NaN | 45.0000 | 160.6875 | 2.4375 | NaN | 7.2500 | 110.8125 | NaN | 1841.1875 | 443.0000 | 60.1875 | NaN | 3.5625 | 128.3125 | 266.7500 |
| Предгорный_природны_лесной_комплекс | NaN | 0.6875 | 13.1875 | 65.5625 | NaN | NaN | NaN | 56.5000 | NaN | 1936.2500 | 108.0625 | 39.3125 | NaN | 12.7500 | 42.9375 | 33.2500 |
| Расширение_заказника_Степн | NaN | NaN | 1897.6250 | 990.6875 | NaN | NaN | NaN | NaN | NaN | NaN | 0.8750 | 1.5000 | NaN | NaN | 1.5625 | 4.3125 |
| Урочище_Алексеевское | NaN | NaN | 4.0000 | 10.3750 | NaN | NaN | NaN | 0.0625 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
| Урочище_Новомихайловское | NaN | NaN | 6.8750 | 31.6250 | NaN | NaN | NaN | 8.6875 | NaN | NaN | 3.4375 | 0.7500 | NaN | NaN | 9.0625 | 3.8125 |
| Урочище_Шевченко | NaN | NaN | 19.5625 | 23.9375 | NaN | NaN | NaN | 10.8125 | NaN | NaN | NaN | 0.5000 | NaN | NaN | 6.6250 | 9.0000 |
| Хребет_Грузинка | NaN | NaN | 0.9375 | 19.7500 | NaN | NaN | NaN | 1.0000 | NaN | 1536.5000 | 1.6875 | 12.5625 | NaN | 6.8750 | 13.8125 | 10.5000 |
| Хребет_Туапхат | NaN | 1.6875 | 4.5000 | NaN | 8.1875 | 0.7500 | 0.3125 | 0.3750 | 170.6875 | 1162.7500 | 470.2500 | 2.7500 | NaN | 18.5000 | 41.3125 | 32.8750 |
| Хребет_Экепце_Гадык | 16.5625 | NaN | 295.6875 | 4.5000 | NaN | NaN | NaN | NaN | NaN | 568.5000 | 8.2500 | 47.2500 | NaN | 6.9375 | 17.5625 | 60.6250 |
| Целинные степи_кургана_Бли | NaN | NaN | 322.0625 | 13.4375 | NaN | NaN | NaN | 2.5000 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
| Шкуринские_балки | NaN | NaN | 5.8125 | 6.0000 | NaN | NaN | NaN | 0.0625 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 0.6875 |
| Южно_Таманский_берег | 17.6250 | NaN | 169.5000 | 1.1250 | NaN | NaN | 8.9375 | 0.7500 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
In [20]:
# Добавляем необходимые столбцы df_pivot['Sum_Area'] = df_pivot.sum(axis=1)
In [21]:
df_pivot.to_excel('table_landcover_pivot111.xls')
C:\Users\Evgenii\AppData\Local\Temp\ipykernel_11212\512436048.py:1: FutureWarning: As the xlwt package is no longer maintained, the xlwt engine will be removed in a future version of pandas. This is the only engine in pandas that supports writing in the xls format. Install openpyxl and write to an xlsx file instead. You can set the option io.excel.xls.writer to 'xlwt' to silence this warning. While this option is deprecated and will also raise a warning, it can be globally set and the warning suppressed.
df_pivot.to_excel('table_landcover_pivot111.xls')
Добавляем столбцы с процентами¶
In [43]:
import pandas as pd import numpy as np
In [44]:
# Предварительно удалить лишние столбцы df = pd.read_excel('table_landcover_pivot.xls') df.head(10)
Out[44]:
<style scoped="">
.dataframe tbody tr th:only-of-type {
vertical-align: middle;
}
.dataframe tbody tr th {
vertical-align: top;
}
.dataframe thead th {
text-align: right;
}
</style>
| Name | 0 | 20 | 30 | 40 | 50 | 60 | 80 | 90 | 111 | 114 | 115 | 116 | 121 | 124 | 125 | 126 | Sum_Area | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | Байрачные Дубравы | 5.2500 | NaN | 2.1875 | 10.3750 | NaN | NaN | 0.750 | 3.3125 | 0.5 | 58.5000 | 66.8750 | 4.0625 | 0.1875 | NaN | 9.6250 | 19.8125 | 181.4375 |
| 1 | Балка_Красногоровка | NaN | NaN | 7.6250 | 12.8750 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 20.5000 |
| 2 | Балка_Натухаевская | NaN | 2.875 | 4.8750 | 1.8750 | 0.6250 | NaN | NaN | NaN | NaN | 0.8125 | NaN | 0.1250 | NaN | 0.6250 | 4.0000 | 3.0625 | 18.8750 |
| 3 | Балки_горы_Педенкова | 38.5625 | NaN | 62.1250 | 17.0625 | NaN | 0.3125 | 10.625 | 10.5625 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 6.3125 | 145.5625 |
| 4 | Бужорский_лес | NaN | 0.250 | 1.0000 | 4.1250 | 1.3125 | NaN | NaN | NaN | NaN | 157.6875 | 1.6875 | 0.7500 | NaN | 2.6875 | 12.6875 | 13.0625 | 195.2500 |
| 5 | Высокогорный_массив_Ачишхо | NaN | NaN | 1026.0625 | NaN | NaN | 0.7500 | NaN | NaN | 7.5 | 25.3750 | NaN | 19.8750 | NaN | 5.1875 | NaN | 2.5625 | 1087.3125 |
| 6 | Герпегем_обрезанная | NaN | NaN | 626.8750 | NaN | NaN | NaN | NaN | NaN | NaN | 509.0000 | NaN | 64.8750 | NaN | 0.7500 | NaN | 11.8750 | 1213.3750 |
| 7 | Гора_Паршивая | NaN | NaN | 206.9375 | 123.0000 | NaN | NaN | NaN | 23.5000 | NaN | 29.0000 | 2.1875 | 25.2500 | NaN | NaN | 0.7500 | 60.2500 | 470.8750 |
| 8 | Гора_Школьная | NaN | NaN | NaN | 1.2500 | 2.3750 | NaN | NaN | NaN | NaN | 236.6875 | 3.8750 | 12.9375 | NaN | NaN | 5.1875 | 3.5000 | 265.8125 |
| 9 | Горный_узел_Большое_Псеушх | NaN | NaN | 4.3125 | NaN | NaN | NaN | NaN | NaN | NaN | 1535.3125 | 2.0625 | 4.2500 | NaN | NaN | NaN | NaN | 1545.9375 |
In [45]:
col_list = df.columns for col in col_list: if col not in ('Name', 'Sum_Area'): df[str(col) + '_%'] = df[col] / df['Sum_Area'] * 100 else: pass #df = df.reindex(sorted(df.columns), axis=1) df
Out[45]:
<style scoped="">
.dataframe tbody tr th:only-of-type {
vertical-align: middle;
}
.dataframe tbody tr th {
vertical-align: top;
}
.dataframe thead th {
text-align: right;
}
</style>
| Name | 0 | 20 | 30 | 40 | 50 | 60 | 80 | 90 | 111 | ... | 80_% | 90_% | 111_% | 114_% | 115_% | 116_% | 121_% | 124_% | 125_% | 126_% | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | Байрачные Дубравы | 5.2500 | NaN | 2.1875 | 10.3750 | NaN | NaN | 0.7500 | 3.3125 | 0.5000 | ... | 0.413365 | 1.825698 | 0.275577 | 32.242508 | 36.858422 | 2.239063 | 0.103341 | NaN | 5.304857 | 10.919738 |
| 1 | Балка_Красногоровка | NaN | NaN | 7.6250 | 12.8750 | NaN | NaN | NaN | NaN | NaN | ... | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
| 2 | Балка_Натухаевская | NaN | 2.8750 | 4.8750 | 1.8750 | 0.6250 | NaN | NaN | NaN | NaN | ... | NaN | NaN | NaN | 4.304636 | NaN | 0.662252 | NaN | 3.311258 | 21.192053 | 16.225166 |
| 3 | Балки_горы_Педенкова | 38.5625 | NaN | 62.1250 | 17.0625 | NaN | 0.3125 | 10.6250 | 10.5625 | NaN | ... | 7.299270 | 7.256333 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 4.336625 |
| 4 | Бужорский_лес | NaN | 0.2500 | 1.0000 | 4.1250 | 1.3125 | NaN | NaN | NaN | NaN | ... | NaN | NaN | NaN | 80.761844 | 0.864277 | 0.384123 | NaN | 1.376440 | 6.498079 | 6.690141 |
| 5 | Высокогорный_массив_Ачишхо | NaN | NaN | 1026.0625 | NaN | NaN | 0.7500 | NaN | NaN | 7.5000 | ... | NaN | NaN | 0.689774 | 2.333736 | NaN | 1.827901 | NaN | 0.477094 | NaN | 0.235673 |
| 6 | Герпегем_обрезанная | NaN | NaN | 626.8750 | NaN | NaN | NaN | NaN | NaN | NaN | ... | NaN | NaN | NaN | 41.949109 | NaN | 5.346657 | NaN | 0.061811 | NaN | 0.978675 |
| 7 | Гора_Паршивая | NaN | NaN | 206.9375 | 123.0000 | NaN | NaN | NaN | 23.5000 | NaN | ... | NaN | 4.990709 | NaN | 6.158747 | 0.464561 | 5.362357 | NaN | NaN | 0.159278 | 12.795328 |
| 8 | Гора_Школьная | NaN | NaN | NaN | 1.2500 | 2.3750 | NaN | NaN | NaN | NaN | ... | NaN | NaN | NaN | 89.043028 | 1.457794 | 4.867153 | NaN | NaN | 1.951564 | 1.316718 |
| 9 | Горный_узел_Большое_Псеушх | NaN | NaN | 4.3125 | NaN | NaN | NaN | NaN | NaN | NaN | ... | NaN | NaN | NaN | 99.312715 | 0.133414 | 0.274914 | NaN | NaN | NaN | NaN |
| 10 | Дефановское_насаждение_пихты | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | ... | NaN | NaN | NaN | 100.000000 | NaN | NaN | NaN | NaN | NaN | NaN |
| 11 | Долина_реки_Курджипс | 7.1250 | NaN | 93.0625 | NaN | 0.3125 | NaN | NaN | NaN | 330.9375 | ... | NaN | NaN | 21.375802 | 46.279924 | 24.678051 | 1.126317 | NaN | NaN | 0.048444 | NaN |
| 12 | Каменные_грибы | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | ... | NaN | NaN | NaN | 100.000000 | NaN | NaN | NaN | NaN | NaN | NaN |
| 13 | Коренной_берег_Кубани | 7.3125 | NaN | 8.9375 | 8.6250 | NaN | NaN | 9.4375 | 4.9375 | NaN | ... | 8.713214 | 4.558569 | NaN | 5.539527 | 23.427582 | 3.115984 | NaN | NaN | 9.809579 | 21.869590 |
| 14 | Круглик | 30.5625 | NaN | 750.8750 | 5.0625 | NaN | NaN | NaN | 3.3125 | NaN | ... | NaN | 0.121954 | NaN | 63.526542 | 0.036816 | 3.308866 | NaN | 0.142663 | 0.128857 | 3.778274 |
| 15 | Кудепстинский_лесопарк | NaN | NaN | NaN | NaN | 0.0625 | NaN | NaN | NaN | NaN | ... | NaN | NaN | NaN | 93.456033 | 4.294479 | 2.044990 | NaN | NaN | NaN | NaN |
| 16 | Кустарниковый_участок_М_Зеленчук | NaN | NaN | 1.3125 | 20.8750 | NaN | NaN | 0.6250 | 10.5625 | NaN | ... | 0.546150 | 9.229929 | NaN | 8.410705 | 7.536865 | 9.666849 | NaN | NaN | 18.623703 | 26.597488 |
| 17 | Новокубанский | 6.0625 | NaN | 45.0000 | 160.6875 | 2.4375 | NaN | 7.2500 | 110.8125 | NaN | ... | 0.235753 | 3.603366 | NaN | 59.871149 | 14.405333 | 1.957158 | NaN | 0.115844 | 4.172425 | 8.674092 |
| 18 | Предгорный_природны_лесной_комплекс | NaN | 0.6875 | 13.1875 | 65.5625 | NaN | NaN | NaN | 56.5000 | NaN | ... | NaN | 2.447477 | NaN | 83.874810 | 4.681070 | 1.702946 | NaN | 0.552307 | 1.859974 | 1.440329 |
| 19 | Расширение_заказника_Степн | NaN | NaN | 1897.6250 | 990.6875 | NaN | NaN | NaN | NaN | NaN | ... | NaN | NaN | NaN | NaN | 0.030208 | 0.051786 | NaN | NaN | 0.053943 | 0.148883 |
| 20 | Урочище_Алексеевское | NaN | NaN | 4.0000 | 10.3750 | NaN | NaN | NaN | 0.0625 | NaN | ... | NaN | 0.432900 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
| 21 | Урочище_Новомихайловское | NaN | NaN | 6.8750 | 31.6250 | NaN | NaN | NaN | 8.6875 | NaN | ... | NaN | 13.521401 | NaN | NaN | 5.350195 | 1.167315 | NaN | NaN | 14.105058 | 5.933852 |
| 22 | Урочище_Шевченко | NaN | NaN | 19.5625 | 23.9375 | NaN | NaN | NaN | 10.8125 | NaN | ... | NaN | 15.350488 | NaN | NaN | NaN | 0.709849 | NaN | NaN | 9.405501 | 12.777285 |
| 23 | Хребет_Грузинка | NaN | NaN | 0.9375 | 19.7500 | NaN | NaN | NaN | 1.0000 | NaN | ... | NaN | 0.062359 | NaN | 95.814171 | 0.105230 | 0.783381 | NaN | 0.428716 | 0.861330 | 0.654767 |
| 24 | Хребет_Туапхат | NaN | 1.6875 | 4.5000 | NaN | 8.1875 | 0.7500 | 0.3125 | 0.3750 | 170.6875 | ... | 0.016319 | 0.019583 | 8.913476 | 60.719997 | 24.556937 | 0.143608 | NaN | 0.966089 | 2.157381 | 1.716766 |
| 25 | Хребет_Экепце_Гадык | 16.5625 | NaN | 295.6875 | 4.5000 | NaN | NaN | NaN | NaN | NaN | ... | NaN | NaN | NaN | 55.416108 | 0.804192 | 4.605824 | NaN | 0.676252 | 1.711953 | 5.909589 |
| 26 | Целинные степи_кургана_Бли | NaN | NaN | 322.0625 | 13.4375 | NaN | NaN | NaN | 2.5000 | NaN | ... | NaN | 0.739645 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
| 27 | Шкуринские_балки | NaN | NaN | 5.8125 | 6.0000 | NaN | NaN | NaN | 0.0625 | NaN | ... | NaN | 0.497512 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 5.472637 |
| 28 | Южно_Таманский_берег | 17.6250 | NaN | 169.5000 | 1.1250 | NaN | NaN | 8.9375 | 0.7500 | NaN | ... | 4.515314 | 0.378907 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
29 rows × 34 columns
In [46]:
### Переводим названия всех колонок в str и сортируем по алфавиту ### df.columns = df.columns.astype(str) ### df = df.reindex(sorted(df.columns), axis=1) ### df
In [47]:
df.to_excel('table_landcover_pivot222.xls')
C:\Users\Evgenii\AppData\Local\Temp\ipykernel_11212\3617560819.py:1: FutureWarning: As the xlwt package is no longer maintained, the xlwt engine will be removed in a future version of pandas. This is the only engine in pandas that supports writing in the xls format. Install openpyxl and write to an xlsx file instead. You can set the option io.excel.xls.writer to 'xlwt' to silence this warning. While this option is deprecated and will also raise a warning, it can be globally set and the warning suppressed.
df.to_excel('table_landcover_pivot222.xls')
In [ ]: