Изменение формы фреймов данных Pandas с помощью Melt And Unmelt
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 libraryimport pandas as pd # creating and initializing a listvalues = [["Monday", 65000, 50000], ["Tuesday", 68000, 45000], ["Wednesday", 70000, 55000], ["Thursday", 60000, 47000], ["Friday", 49000, 25000], ["Saturday", 54000, 35000], ["Sunday", 100000, 70000]] # creating a pandas dataframedf = pd.DataFrame(values, columns=["DAYS", "PATIENTS", "RECOVERY"]) # displaying the data framedf |
Выход:

Now, we reshape the data frame using pandas.melt() around column ‘DAYS‘.
Python3
# melting with DAYS as column identifierreshaped_df = df.melt(id_vars=["DAYS"]) # displaying the reshaped data framereshaped_df |
Выход:

Пример 2:
Now, to the dataframe used above a new column named ‘Deaths‘ is introduced.
Python3
# importing pandas libraryimport pandas as pd # creating and initializing a dataframevalues = [["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 dataframedf = pd.DataFrame(values, columns=["DAYS", "PATIENTS", "RECOVERY", "DEATHS"]) # displaying the data framedf |
Выход:

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 framereshaped_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 libraryimport pandas as pd # creating and initializing a listvalues = [[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 dataframedf = pd.DataFrame(values, columns=["ID", "Name", "Marks", "Sports"]) # displaying the data framedf |
Выход:

Unmelting around the column Sports:
Python3
# unmeltingreshaped_df = df.pivot(index="Name", columns="Sports") # displaying the reshaped data framereshaped_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 framereshaped_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 indexdf_new = reshaped_df.reset_index() # displaying the reshaped data framedf_new |
Выход:

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