使用 Pandas 数据框架时,我们有时需要对数据进行重塑以满足不同的业务需求。其中,熔化和未熔化重塑是两种常见的操作。
熔化重塑
熔化重塑是指将一张宽表转化为一张长表的操作,即将表格中的列转换为行,同时将其它列的数据也跟随转换为行。在 Pandas 中,我们可以使用 melt()
方法来进行熔化重塑。
以下是一个 sales
表格的例子:
sales = pd.DataFrame({'storeid': [1, 2], '2020_sales': [1000, 2000], '2021_sales': [1500, 2500]})
sales
表格的内容如下:
storeid | 2020_sales | 2021_sales |
---|---|---|
1 | 1000 | 1500 |
2 | 2000 | 2500 |
我们可以使用以下代码来将 sales
表格进行熔化重塑:
sales_melted = pd.melt(sales, id_vars=['storeid'], var_name='year', value_name='sales')
sales_melted
表格的内容如下:
storeid | year | sales |
---|---|---|
1 | 2020_sales | 1000 |
2 | 2020_sales | 2000 |
1 | 2021_sales | 1500 |
2 | 2021_sales | 2500 |
上面的代码中,id_vars
参数指定了需要保留在长表格中的列,即 storeid
列,而 var_name
参数指定了需要被熔化的列的列名,即 year
列,value_name
参数指定了需要将与 var_name
列对应的值转换为的值的列名,即 sales
列。
未熔化重塑
未熔化重塑是指将一张宽表转化为一张更宽的宽表,即将一些行合并为一行来显示更多的信息。在 Pandas 中,我们可以使用 pivot()
方法来进行未熔化重塑。
以下是一个 sales_melted
表格的例子:
sales_melted = pd.DataFrame({'storeid': [1, 2, 1, 2], 'year': ['2020_sales', '2020_sales', '2021_sales', '2021_sales'], 'sales': [1000, 2000, 1500, 2500]})
sales_melted
表格的内容如下:
storeid | year | sales |
---|---|---|
1 | 2020_sales | 1000 |
2 | 2020_sales | 2000 |
1 | 2021_sales | 1500 |
2 | 2021_sales | 2500 |
我们可以使用以下代码来将 sales_melted
表格进行未熔化重塑:
sales_unmelted = sales_melted.pivot(index='storeid', columns='year', values='sales')
sales_unmelted
表格的内容如下:
year | 2020_sales | 2021_sales |
---|---|---|
storeid=1 | 1000 | 1500 |
storeid=2 | 2000 | 2500 |
上面的代码中,index
参数指定了需要作为行索引的列,即 storeid
列,columns
参数指定了需要作为列索引的列,即 year
列,values
参数指定了需要填充到表格中的值的列,即 sales
列。
总结一下,熔化和未熔化重塑是两种操作,它们能让我们更加灵活方便地使用 Pandas 数据框架。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:使用熔化和未熔化重塑Pandas数据框架 - Python技术站