#
DataFrame的melt方法讲长格式转换为宽格式,即所有列变为行,并在新列值中列出所有关联值。比如下面的DataFrame:
import pandas as pd
df = pd.DataFrame({'item':['apple','bannana','pear'],
'Jan':[100,200,300],
'Feb':[120,250,350],
'Mar':[90,180,400],
'Apr':[110,230,260],
'May':[130,240,160]})
item | Jan | Feb | Mar | Apr | May | |
---|---|---|---|---|---|---|
0 | apple | 100 | 120 | 90 | 110 | 130 |
1 | bannana | 200 | 250 | 180 | 230 | 240 |
2 | pear | 300 | 350 | 400 | 260 | 160 |
melt之后为:
df_melt=df.melt(id_vars=['item',],var_name='Month',value_name='sales')
item Month sales
0 apple Jan 100
1 bannana Jan 200
2 pear Jan 300
3 apple Feb 120
4 bannana Feb 250
5 pear Feb 350
6 apple Mar 90
7 bannana Mar 180
8 pear Mar 400
9 apple Apr 110
10 bannana Apr 230
11 pear Apr 260
12 apple May 130
13 bannana May 240
14 pear May 160
其中:
- id_vars:需要保留的列,可以是一个列表,表示这些列不需要进行melt操作。
- var_name:列的变量名,缺省为variable
- value_name:列值,缺省为value
可以看出,melt实质是给出了我们关心的两个变量的所有可能情况(这里是Month, sales),以便于我们针对sales进一步的观察。比如使用小提琴图观察如下:
import seaborn as sns
sns.violinplot(x='Month',y='sales',data=df_melt)