Изменение формы фреймов данных Pandas с помощью Melt And Unmelt

Опубликовано: 27 Марта, 2022

Pandas - это библиотека с открытым исходным кодом под лицензией BSD, написанная на языке Python. Pandas предоставляет высокопроизводительные, быстрые и простые в использовании структуры данных и инструменты анализа данных для управления числовыми данными и временными рядами. Pandas построен на библиотеке Numpy и написан на таких языках, как Python, Cython и C. В 2008 году Уэс МакКинни разработал библиотеку Pandas. В pandas мы можем импортировать данные из файлов различных форматов, таких как JSON, SQL, Microsoft Excel и т. Д. Функция фреймов данных используется для загрузки и выполнения манипуляций с данными.

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

Pandas.melt ()

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

Syntax: pandas.melt(frame, id_vars=None, value_vars=None, var_name=None, value_name=’value’, col_level=None)
 

Пример 1:

Initialize the dataframe with data regarding ‘Days‘, ‘Patients‘ and ‘Recovery‘.

Python3

# importing pandas library
import pandas as pd
  
# creating and initializing a list
values = [["Monday", 65000, 50000],
          ["Tuesday", 68000, 45000],
          ["Wednesday", 70000, 55000],
          ["Thursday", 60000, 47000],
          ["Friday", 49000, 25000],
          ["Saturday", 54000, 35000],
          ["Sunday", 100000, 70000]]
  
# creating a pandas dataframe
df = pd.DataFrame(values, columns=["DAYS", "PATIENTS", "RECOVERY"])
  
# displaying the data frame
df

Выход:

Now, we reshape the data frame using pandas.melt() around column ‘DAYS‘. 

Python3

# melting with DAYS as column identifier
reshaped_df = df.melt(id_vars=["DAYS"])
  
# displaying the reshaped data frame
reshaped_df

Выход:

Пример 2:

Now, to the dataframe used above a new column named ‘Deaths‘ is introduced.

Python3

# importing pandas library
import pandas as pd
  
# creating and initializing a dataframe
values = [["Monday", 65000, 50000, 1500],
          ["Tuesday", 68000, 45000, 7250],
          ["Wednesday", 70000, 55000, 1400],
          ["Thursday", 60000, 47000, 4200],
          ["Friday", 49000, 25000, 3000],
          ["Saturday", 54000, 35000, 2000],
          ["Sunday", 100000, 70000, 4550]]
  
# creating a pandas dataframe
df = pd.DataFrame(values,
                  columns=["DAYS", "PATIENTS", "RECOVERY", "DEATHS"])
  
# displaying the data frame
df

Выход:

we reshaped the data frame using pandas.melt() around column ‘PATIENTS‘.

Python3

# reshaping data frame 
# using pandas.melt()
reshaped_df = df.melt(id_vars=["PATIENTS"])
  
# displaying the reshaped data frame
reshaped_df

Выход:

Pandas.pivot () / функция unmelt

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

Syntax : DataFrame.pivot(index=None, columns=None, values=None)
 

Пример 1:

Create a dataframe that contains the data on ID, Name, Marks and Sports of 6 students.

Python3

# importing pandas library
import pandas as pd
  
# creating and initializing a list
values = [[101, "Rohan", 455, "Football"],
          [111, "Elvish", 250, "Chess"],
          [192, "Deepak", 495, "Cricket"],
          [201, "Sai", 400, "Ludo"],
          [105, "Radha", 350, "Badminton"],
          [118, "Vansh", 450, "Badminton"]]
  
# creating a pandas dataframe
df = pd.DataFrame(values, 
                  columns=["ID", "Name", "Marks", "Sports"])
  
# displaying the data frame
df

Выход:

Unmelting around the column Sports:

Python3

# unmelting
reshaped_df = df.pivot(index="Name", columns="Sports")
  
# displaying the reshaped data frame
reshaped_df

Выход:

Пример 2:

Consider the same dataframe used in the example above. Unmelting can be done based on more than one column also.

Python3

reshaped_df = df.pivot("ID", "Marks", "Sports")
  
# displaying the reshaped data frame
reshaped_df

Выход:

But the reshaped dataframe appears little different from the original one in terms of index. To get the index also set as original dataframe use reset_index() function on the reshaped dataframe.

Python3

reshaped_df = df.pivot("ID", "Marks", "Sports")
  
# reseting index
df_new = reshaped_df.reset_index()
  
# displaying the reshaped data frame
df_new

Выход:

Внимание компьютерщик! Укрепите свои основы с помощью базового курса программирования Python и изучите основы.

Для начала подготовьтесь к собеседованию. Расширьте свои концепции структур данных с помощью курса Python DS. А чтобы начать свое путешествие по машинному обучению, присоединяйтесь к курсу Машинное обучение - базовый уровень.