五分钟学会四种宽数据转长数据方法——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解析JSON数据并提取特定字段的实现步骤(以提取mailNo为例)

《使用Java解析JSON数据并提取特定字段的实现步骤(以提取mailNo为例)》在现代软件开发中,处理JSON数据是一项非常常见的任务,无论是从API接口获取数据,还是将数据存储为JSON格式,解析... 目录1. 背景介绍1.1 jsON简介1.2 实际案例2. 准备工作2.1 环境搭建2.1.1 添加

MySQL中删除重复数据SQL的三种写法

《MySQL中删除重复数据SQL的三种写法》:本文主要介绍MySQL中删除重复数据SQL的三种写法,文中通过代码示例讲解的非常详细,对大家的学习或工作有一定的帮助,需要的朋友可以参考下... 目录方法一:使用 left join + 子查询删除重复数据(推荐)方法二:创建临时表(需分多步执行,逻辑清晰,但会

Java实现任务管理器性能网络监控数据的方法详解

《Java实现任务管理器性能网络监控数据的方法详解》在现代操作系统中,任务管理器是一个非常重要的工具,用于监控和管理计算机的运行状态,包括CPU使用率、内存占用等,对于开发者和系统管理员来说,了解这些... 目录引言一、背景知识二、准备工作1. Maven依赖2. Gradle依赖三、代码实现四、代码详解五

使用Python绘制蛇年春节祝福艺术图

《使用Python绘制蛇年春节祝福艺术图》:本文主要介绍如何使用Python的Matplotlib库绘制一幅富有创意的“蛇年有福”艺术图,这幅图结合了数字,蛇形,花朵等装饰,需要的可以参考下... 目录1. 绘图的基本概念2. 准备工作3. 实现代码解析3.1 设置绘图画布3.2 绘制数字“2025”3.3

详谈redis跟数据库的数据同步问题

《详谈redis跟数据库的数据同步问题》文章讨论了在Redis和数据库数据一致性问题上的解决方案,主要比较了先更新Redis缓存再更新数据库和先更新数据库再更新Redis缓存两种方案,文章指出,删除R... 目录一、Redis 数据库数据一致性的解决方案1.1、更新Redis缓存、删除Redis缓存的区别二

JAVA中整型数组、字符串数组、整型数和字符串 的创建与转换的方法

《JAVA中整型数组、字符串数组、整型数和字符串的创建与转换的方法》本文介绍了Java中字符串、字符数组和整型数组的创建方法,以及它们之间的转换方法,还详细讲解了字符串中的一些常用方法,如index... 目录一、字符串、字符数组和整型数组的创建1、字符串的创建方法1.1 通过引用字符数组来创建字符串1.2

Redis事务与数据持久化方式

《Redis事务与数据持久化方式》该文档主要介绍了Redis事务和持久化机制,事务通过将多个命令打包执行,而持久化则通过快照(RDB)和追加式文件(AOF)两种方式将内存数据保存到磁盘,以防止数据丢失... 目录一、Redis 事务1.1 事务本质1.2 数据库事务与redis事务1.2.1 数据库事务1.

python使用watchdog实现文件资源监控

《python使用watchdog实现文件资源监控》watchdog支持跨平台文件资源监控,可以检测指定文件夹下文件及文件夹变动,下面我们来看看Python如何使用watchdog实现文件资源监控吧... python文件监控库watchdogs简介随着Python在各种应用领域中的广泛使用,其生态环境也

Python中构建终端应用界面利器Blessed模块的使用

《Python中构建终端应用界面利器Blessed模块的使用》Blessed库作为一个轻量级且功能强大的解决方案,开始在开发者中赢得口碑,今天,我们就一起来探索一下它是如何让终端UI开发变得轻松而高... 目录一、安装与配置:简单、快速、无障碍二、基本功能:从彩色文本到动态交互1. 显示基本内容2. 创建链

Java调用Python代码的几种方法小结

《Java调用Python代码的几种方法小结》Python语言有丰富的系统管理、数据处理、统计类软件包,因此从java应用中调用Python代码的需求很常见、实用,本文介绍几种方法从java调用Pyt... 目录引言Java core使用ProcessBuilder使用Java脚本引擎总结引言python