使用熔化和未熔化重塑Pandas数据框架
Pandas是一个用Python语言编写的开源、BSD许可的库。Pandas提供高性能、快速、易于使用的数据结构和数据分析工具,用于处理数字数据和时间序列。Pandas建立在Numpy库上,用Python、Cython和C等语言编写。2008年,Wes McKinney开发了Pandas库。在pandas中,我们可以从各种文件格式导入数据,如JSON、SQL、Microsoft Excel等。数据框架的功能是用来加载和对数据进行操作的。
有时我们需要重塑Pandas数据框架,以更好的方式进行分析。重塑在数据分析中起着至关重要的作用。Pandas提供了像融化和解除融化这样的功能来重塑。
Pandas.melt()
melt()用于将一个宽的数据框架转换为一个较长的形式。当有要求将特定的列作为一个标识符时,可以使用这个函数。
语法: pandas.melt(frame, id_vars=None, value_vars=None, var_name=None, value_name=’value’, col_level=None)
示例 1:
用有关 “DAYS”、”PATIENTS “和 “RECOVERY”的数据初始化数据框架。
# 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
输出:

现在,我们用pandas.melt()对 “DAYS “列周围的数据框进行重塑。
# melting with DAYS as column identifier
reshaped_df = df.melt(id_vars=['DAYS'])
# displaying the reshaped data frame
reshaped_df
输出:

示例 2:
现在,在上面使用的数据框架中引入了一个名为 “死亡 “的新列。
# 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
输出:

我们用pandas.melt()对 “PATIENTS “列周围的数据框进行重塑。
# reshaping data frame
# using pandas.melt()
reshaped_df = df.melt(id_vars=['PATIENTS'])
# displaying the reshaped data frame
reshaped_df
输出:

Pandas.pivot()/ unmelt函数
透视、未熔化或反向熔化用于将一个有多个值的列转换为其自身的几个列。
语法 : DataFrame.pivot(index=None, columns=None, values=None)
示例 1:
创建一个包含6个学生的ID、姓名、分数和运动数据的数据框架。
# 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
reshaped_df = df.pivot(index='Name', columns='Sports')
# displaying the reshaped data frame
reshaped_df
输出:

示例 2:
考虑一下上面的例子中使用的同一个数据框架。不熔化也可以基于一个以上的列进行。
reshaped_df = df.pivot('ID', 'Marks', 'Sports')
# displaying the reshaped data frame
reshaped_df
输出:

但是在索引方面,重塑后的数据框架与原始的数据框架看起来没有什么不同。为了获得与原始数据框架相同的索引,请在重塑的数据框架上使用reset_index()函数。
reshaped_df = df.pivot('ID', 'Marks', 'Sports')
# reseting index
df_new = reshaped_df.reset_index()
# displaying the reshaped data frame
df_new
输出:
极客教程