五分钟学会四种宽数据转长数据方法——Excel、Mysql、R、python

本文主要是介绍五分钟学会四种宽数据转长数据方法——Excel、Mysql、R、python,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在学Mysql中的时候,想必大家都曾遇到如下的题:将表1转为表2,
表1

CompanyNameSale2013Sale2014Sale2015Sale2016
Apple苹果5000505050505050
Google谷歌3500380038003800
Facebook脸书2300290029002900

表2

CompanyNameYearSales
Apple苹果Sale20135000
Google谷歌Sale20133500
Facebook脸书Sale20132300
Apple苹果Sale20145050
Google谷歌Sale20143800
Facebook脸书Sale20142900
Apple苹果Sale20155050
Google谷歌Sale20153800
Facebook脸书Sale20152900
Apple苹果Sale20165050
Google谷歌Sale20153800
Facebook脸书Sale20162900

这实际上就是宽表转长表。今天,分享一下分别在MySQL、excel、R、python中实现宽表转长表的方法。

目录

        • 一、Mysql
        • 二、Excel
        • 三、R
        • 四、python

一、Mysql

实现的关键字:union all

#准备数据
create table items(Company varchar(10),Name varchar(10),Sale2013 int,Sale2014 int,Sale2015 int, Sale2016 int);insert into items values("Apple","苹果",5000,5050,5050,5050),("Google","谷歌",3500,3800,3800,3800),("Facebook","脸书",2300,2900,2900,2900);
select Company,Name,
'Sale2013' as 'Year',`Sale2013` as 'Sales' from items union all
select Company,Name,
'Sale2014' as 'Year',`Sale2014` as 'Sales' from items union all
select Company,Name,
'Sale2015' as 'Year',`Sale2015` as 'Sales' from items union all
select Company,Name,
'Sale2016' as 'Year',`Sale2016` as 'Sales' from items;

在这里插入图片描述

二、Excel

实现关键词:PowerQuery逆透视

(1)数据——从表格——表包含标题
在这里插入图片描述
(2)选中Company,Name列——转换——逆透视其他列
在这里插入图片描述
(3)修改列名——关闭并上载至

在这里插入图片描述

三、R

实现关键词:gather

#准备数据
df=data.frame(Company=c("Apple","Google","Facebook"),Name=c("苹果","谷歌","脸书"),Sale2013=c(5000,3500,2300),Sale2014=c(5050,3800,2900),Sale2015=c(5050,3800,2900),Sale2016=c(5050,3800,2900))
library(tidyr)
gather(df,key="Year",value="Sales",Sale2013:Sale2016)

key:转换后新的列名
value:转换后值的新列名
Sale2013:Sale2016 : 需要转列的字段

在这里插入图片描述

四、python

实现关键词:set_index+stack+reset_indexmelt(有点类似R中的gather)

方法一:set_index+stack+reset_index

stack可以将行索引转为列索引,但Company、Name这列是没有变化的,所以需要先将其设置为索引,具体实现方法如下:

import pandas as pd
import os
os.chdir('C:/Users/dell/Desktop')
data=pd.read_excel('data.xlsx',encoding='utf-8')
df=data.set_index(['Company','Name']).stack().reset_index()
df.columns=['Company','Name','Year','Sales']

在这里插入图片描述

方法二:melt

data.melt(id_vars=['Company','Name'],var_name='Year',value_name='Sales')

在这里插入图片描述
id_vars:保持不变的列索引
var_name:行索引转列索引后新的列名 (类似R中的KEY)
value_name:value_name:新索引对应的值的列名 (类似R中的VALUE)

这篇关于五分钟学会四种宽数据转长数据方法——Excel、Mysql、R、python的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/456270

相关文章

Java整合Protocol Buffers实现高效数据序列化实践

《Java整合ProtocolBuffers实现高效数据序列化实践》ProtocolBuffers是Google开发的一种语言中立、平台中立、可扩展的结构化数据序列化机制,类似于XML但更小、更快... 目录一、Protocol Buffers简介1.1 什么是Protocol Buffers1.2 Pro

MySQL中REPLACE函数与语句举例详解

《MySQL中REPLACE函数与语句举例详解》在MySQL中REPLACE函数是一个用于处理字符串的强大工具,它的主要功能是替换字符串中的某些子字符串,:本文主要介绍MySQL中REPLACE函... 目录一、REPLACE()函数语法:参数说明:功能说明:示例:二、REPLACE INTO语句语法:参数

Python脚本轻松实现检测麦克风功能

《Python脚本轻松实现检测麦克风功能》在进行音频处理或开发需要使用麦克风的应用程序时,确保麦克风功能正常是非常重要的,本文将介绍一个简单的Python脚本,能够帮助我们检测本地麦克风的功能,需要的... 目录轻松检测麦克风功能脚本介绍一、python环境准备二、代码解析三、使用方法四、知识扩展轻松检测麦

Python多线程应用中的卡死问题优化方案指南

《Python多线程应用中的卡死问题优化方案指南》在利用Python语言开发某查询软件时,遇到了点击搜索按钮后软件卡死的问题,本文将简单分析一下出现的原因以及对应的优化方案,希望对大家有所帮助... 目录问题描述优化方案1. 网络请求优化2. 多线程架构优化3. 全局异常处理4. 配置管理优化优化效果1.

Java实现本地缓存的四种方法实现与对比

《Java实现本地缓存的四种方法实现与对比》本地缓存的优点就是速度非常快,没有网络消耗,本地缓存比如caffine,guavacache这些都是比较常用的,下面我们来看看这四种缓存的具体实现吧... 目录1、HashMap2、Guava Cache3、Caffeine4、Encache本地缓存比如 caff

C#使用Spire.XLS快速生成多表格Excel文件

《C#使用Spire.XLS快速生成多表格Excel文件》在日常开发中,我们经常需要将业务数据导出为结构清晰的Excel文件,本文将手把手教你使用Spire.XLS这个强大的.NET组件,只需几行C#... 目录一、Spire.XLS核心优势清单1.1 性能碾压:从3秒到0.5秒的质变1.2 批量操作的优雅

MySQL设置密码复杂度策略的完整步骤(附代码示例)

《MySQL设置密码复杂度策略的完整步骤(附代码示例)》MySQL密码策略还可能包括密码复杂度的检查,如是否要求密码包含大写字母、小写字母、数字和特殊字符等,:本文主要介绍MySQL设置密码复杂度... 目录前言1. 使用 validate_password 插件1.1 启用 validate_passwo

Java 中编码与解码的具体实现方法

《Java中编码与解码的具体实现方法》在Java中,字符编码与解码是处理数据的重要组成部分,正确的编码和解码可以确保字符数据在存储、传输、读取时不会出现乱码,本文将详细介绍Java中字符编码与解码的... 目录Java 中编码与解码的实现详解1. 什么是字符编码与解码?1.1 字符编码(Encoding)1

Python中高级文本模式匹配与查找技术指南

《Python中高级文本模式匹配与查找技术指南》文本处理是编程世界的永恒主题,而模式匹配则是文本处理的基石,本文将深度剖析PythonCookbook中的核心匹配技术,并结合实际工程案例展示其应用,希... 目录引言一、基础工具:字符串方法与序列匹配二、正则表达式:模式匹配的瑞士军刀2.1 re模块核心AP

Python Flask实现定时任务的不同方法详解

《PythonFlask实现定时任务的不同方法详解》在Flask中实现定时任务,最常用的方法是使用APScheduler库,本文将提供一个完整的解决方案,有需要的小伙伴可以跟随小编一起学习一下... 目录完js整实现方案代码解释1. 依赖安装2. 核心组件3. 任务类型4. 任务管理5. 持久化存储生产环境