Рубрики
Без рубрики

Изменение Формы Данных Панд С Помощью Расплава

Это очень простой пример, чтобы помочь пользователям понять, как мы можем изменить структуру данных с помощью панд.

Автор оригинала: AB Abhi.

Pandas – это библиотека анализа данных python, и в этом посте мы будем работать над примером того, как изменить форму pandas data с помощью melt

import pandas as pd
data = {
    "location":['CityA', 'CityB'],
    "Temperature" : ["Predict", "Actual"],
    "Jan-2010":[30, 32],
    "Feb-2010":[45, 43],
    "Mar-2010":[24, 22]
}
print(data)
{'Feb-2010': [45, 43], 'Jan-2010': [30, 32], 'Mar-2010': [24, 22], 'location': ['CityA', 'CityB'], 'Temperature': ['Predict', 'Actual']}

Приведенные выше данные представляют собой совокупность средних температур 2 городов cityA и cityB в месяцах Jan , Feb & Mar .

Создайте фрейм данных pandas

Давайте создадим объект pandas DataFrame, чтобы мы могли выполнять наши операции с данными.

df = pd.DataFrame(data, columns=['location', 'Temperature','Jan-2010', 'Feb-2010', 'Mar-2010'])
print(df)
  location Temperature  Jan-2010  Feb-2010  Mar-2010
0    CityA     Predict        30        45        24
1    CityB      Actual        32        43        22

Измените форму фрейма данных для лучшего анализа.

Эти данные в настоящее время находятся в удобочитаемой форме, так как есть строка для каждого местоположения и отдельный столбец для Temparture в определенные месяцы; но это не очень хорошо для анализа, так как; если бы мы хотели создать операции use ‘groupby’ или начать нормализовать этот фрейм данных, нам нужно было бы сделать некоторые изменения.

Давайте изменим форму фрейма данных, чтобы иметь столбец, содержащий местоположение, и еще один столбец, содержащий информацию о температуре.

df2 = pd.melt(df, id_vars=["location", "Temperature"], var_name="Date", value_name="Value")
print(df2)
  location Temperature      Date  Value
0    CityA     Predict  Jan-2010     30
1    CityB      Actual  Jan-2010     32
2    CityA     Predict  Feb-2010     45
3    CityB      Actual  Feb-2010     43
4    CityA     Predict  Mar-2010     24
5    CityB      Actual  Mar-2010     22

Сортировка данных

Для сортировки данных мы можем использовать панды.DataFrame.sort_values(column_list) & передайте ему список столбцов.

df_sorted = df2.sort_values(["location", "Temperature"])
print(df_sorted)
  location Temperature      Date  Value
0    CityA     Predict  Jan-2010     30
2    CityA     Predict  Feb-2010     45
4    CityA     Predict  Mar-2010     24
1    CityB      Actual  Jan-2010     32
3    CityB      Actual  Feb-2010     43
5    CityB      Actual  Mar-2010     22

Рекомендации: