
正文
melt函数Python melt函数怎么用
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
PYTHON-行列转置 pd.melt()
pd.melt():将列名转换为数据
如melt函数Python:将左表转换为右表
相关问答
Q1: python pandas 长表格转换为宽表格/宽表格转换为长表格
目的如题目,长宽表格转换,即长表格转换为宽表格/宽表格转换为长表格,采用pivot和melt函数操作。关于该方法和stack和unstack的区别可以查看 Python Pandas DataFrame stack(), unstack(), pivot(), melt()操作
原始数据如下,想要得到city作为行,indus作为列,rca作为值的矩阵,操作如下,
通用范式为 df.pivot(index='index_label', columns='column_label', values='value_label')
针对上述的df,操作如下
可以看出,最后的dataframe的列的值是原来的column的具体数值。
今日份水文完毕,主要目的是为了第一个长转宽。
Q2: Python变形
1.长宽表的变形
什么是长表?什么是宽表?这个概念是对于某一个特征而言的。例如:一个表中把性别存储在某一个列中, 那么它就是关于性别的长表;如果把性别作为列名,列中的元素是某一其他的相关特征数值,那么这个表是 关于性别的宽表。
1.1 pivot
pivot 是一种典型的长表变宽表的函数。对于一个基本的长变宽的操作而言,最重要的有三个要素,分别是变形后的行索引、需要转到列索引的列, 以及这些列和行索引对应的数值,它们分别对应了 pivot 方法中的 index, columns, values 参数。新生成表的 列索引是 columns 对应列的 unique 值,而新表的行索引是 index 对应列的 unique 值,而 values 对应了想 要展示的数值列。
利用 pivot 进行变形操作需要满足唯一性的要求,即由于在新表中的行列索引对应了唯一的 value ,因此原 表中的 index 和 columns 对应两个列的行组合必须唯一。例如,现在把原表中第二行张三的数学改为语文就 会报错,这是由于 Name 与 Subject 的组合中两次出现 (”San Zhang”, ”Chinese”) ,从而最后不能够确定到 底变形后应该是填写 80 分还是 75 分。
pandas 从 1.1.0 开始,pivot 相关的三个参数允许被设置为列表,这也意味着会返回多级索引。这里构造一 个相应的例子来说明如何使用:下表中六列分别为班级、姓名、测试类型(期中考试和期末考试)、科目、成 绩、排名。
根据唯一性原则,新表的行索引等价于对 index 中的多列使用 drop_duplicates ,而列索引的长度为 values 中的元素个数乘以 columns 的唯一组合数量(与 index 类似)。
1.2 pivot_table
pivot 的使用依赖于唯一性条件,那如果不满足唯一性条件,那么必须通过聚合操作使得相同行列组合对应 的多个值变为一个值。例如,张三和李四都参加了两次语文考试和数学考试,按照学院规定,最后的成绩是 两次考试分数的平均值,此时就无法通过 pivot 函数来完成。
1.3 melt
长宽表只是数据呈现方式的差异,但其包含的信息量是等价的,前面提到了利用 pivot 把长表转为宽表,那 么就可以通过相应的逆操作把宽表转为长表,melt 函数就起到了这样的作用。
1.4 wide_to_long
melt 方法中,在列索引中被压缩的一组值对应的列元素只能代表同一层次的含义,即 values_name 。现在 如果列中包含了交叉类别,比如期中期末的类别和语文数学的类别,那么想要把 values_name 对应的 Grade 扩充为两列分别对应语文分数和数学分数,只把期中期末的信息压缩,这种需求下就要使用 wide_to_long 函数来完成。
2 索引的变形
2.1 stack 与 unstack
unstack 函数的作用是把行索引转为列索引
unstack 的主要参数是移动的层号,默认转化最内层,移动到列索引的最内层,同时支持同时转化多个层
类似于 pivot 中的唯一性要求,在 unstack 中必须保证 被转为列索引的行索引层和 被保留的行索引层构成 的组合是唯一的,例如把前两个列索引改成相同的破坏唯一性,那么就会报错
与 unstack 相反,stack 的作用就是把列索引的层压入行索引,其用法完全类似。
2.2 聚合与变形的关系
在上面介绍的所有函数中,除了带有聚合效果的 pivot_table 以外,所有的函数在变形前后并不会带来 values 个数的改变,只是这些值在呈现的形式上发生了变化。在上一章讨论的分组聚合操作,由于生成了新的行列 索引,因此必然也属于某种特殊的变形操作,但由于聚合之后把原来的多个值变为了一个值,因此 values 的 个数产生了变化,这也是分组聚合与变形函数的最大区别。
3 其他变形函数
3.1 crosstab
crosstab 并不是一个值得推荐使用的函数,因为它能实现的所有功能 pivot_table 都能完成,并且速度更快。 在默认状态下,crosstab 可以统计元素组合出现的频数,即 count 操作。例如统计 learn_pandas 数据集中 学校和转系情况对应的频数
3.2 explode
explode 参数能够对某一列的元素进行纵向的展开,被展开的单元格必须存储 list, tuple, Series, np.ndarray 中的一种类型。
3.3 get_dummies
get_dummies 是用于特征构建的重要函数之一,其作用是把类别特征转为指示变量。例如,对年级一列转为 指示变量,属于某一个年级的对应列标记为 1,否则为 0
Q3: 小技巧2-melt()函数转换(R)
melt函数Python我们常见melt函数Python的数据一般长这样melt函数Python:
作图时常用的形式是这样:(这个就是melt型数据)
ggplot2常用melt型数据melt函数Python,excel里手动进行转换很麻烦
使用reshape2包里的melt()函数就很方便melt函数Python了
melt(data,id.vars,measure.vars,variable.name=“variable”,…,na.rm=FALSE,value.name=“value”,factorsAsStrings=TRUE)
id.vars:标识变量(依旧在列上,保持不变的变量)
measure.vars:度量变量(我们想要放进同一列的变量)
variable.name:为新列取名,如果不取名,默认新增列的列名就是“variable”
value.name:新列对应值所在的变量名
变换需指定哪些数据是id variables,哪些是measured variables
举例1:
注意!这里没有指定“id.vars”和“measure.vars”,所以默认了第一列为的“id.vars(不做变动的列)”,其余所有列都作为“measure.vars(需要melt转换的列)”
如果是复杂一些的表格,则必须明确指出“id.vars”或“measure.vars”:
举例2:
这里"Time[s]"和"Temperature[C]"两列是想要固定不变的列,后三列为3次重复实验的数据,需要转换为melt格式
melt后得到的数据如下:
Q4: pd.melt() 将列名转换为列数据
melt是逆转操作函数,可以将列名转换为列数据(columns name → column values),重构DataFrame,用法如下:
```
pandas.melt(frame, id_vars=None, value_vars=None, var_name=None, value_name='value', col_level=None)
```
参数解释:
frame:要处理的数据集;id_vars:不需要被转换的列名;
value_vars:需要转换的列名,如果剩下的列全部都要转换,就不用写了;
var_name和value_name是自定义设置对应的列名;
col_level:如果列是MultiIndex,则使用此级别。
Q5: Python Pandas DataFrame stack(), unstack(), pivot(), melt()操作
四个函数功能melt函数Python的简单总结对比melt函数Python,stack/unstack一组,pivot/melt一组melt函数Python:
pivot()和melt()函数是较简单方便的,但是它俩是依据column的值作为索引的分类,和stack/unstack在column和index之间的转换有实质差别。一般在转换之后会进行reset_index()操作。
写的太糙melt函数Python了,看原始函数介绍比较好。
参见资料:
Pandas DataFrame stack 函数
Pandas DataFrame unstack 函数
Pandas DataFrame pivot 函数
Pandas DataFrame melt 函数
pandas中DataFrame的stack()、unstack()和pivot()方法的对比
关于melt函数Python和melt函数怎么用的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。






