pandas_数据拆分与合并
- import pandas as pd
- import numpy as np
- # 读取全部数据,使用默认索引
- data = pd.read_excel(r'C:\Users\lenovo\Desktop\总结\Python\超市营业额.xlsx')
- # 修改异常值
- data.loc[data.交易额 > 3000,'交易额'] = 3000
- data.loc[data.交易额 < 200,'交易额'] = 200
- # 删除重复值
- data.drop_duplicates(inplace = True)
- # inplace 表示对源数据也进行修改
- # 填充缺失值
- data['交易额'].fillna(data['交易额'].mean(),inplace = True)
- # 使用交叉表得到每人在各柜台交易额的平均值
- data_group = pd.crosstab(data.姓名,data.柜台,data.交易额,aggfunc = 'mean').apply(round)
- # 绘制柱状图
- data_group.plot(kind = 'bar')
- # <matplotlib.axes._subplots.AxesSubplot object at 0x000001D681607888>
- # 数据的合并
- data1 = pd.read_excel(r'C:\Users\lenovo\Desktop\总结\Python\超市营业额.xlsx')
- data2 = pd.read_excel(r'C:\Users\lenovo\Desktop\总结\Python\超市营业额.xlsx',sheet_name = 'Sheet2')
- df1 = data1[:3]
- '''
- 工号 姓名 日期 时段 交易额 柜台
- 0 1001 张三 20190301 9:00-14:00 2000 化妆品
- 1 1002 李四 20190301 14:00-21:00 1800 化妆品
- 2 1003 王五 20190301 9:00-14:00 800 食品
- '''
- df2 = data2[:4]
- '''
- 工号 姓名 日期 时段 交易额 柜台
- 0 1006 钱八 20190301 9:00-14:00 850 蔬菜水果
- 1 1001 张三 20190302 14:00-21:00 600 蔬菜水果
- 2 1001 张三 20190302 9:00-14:00 1300 化妆品
- 3 1002 李四 20190302 14:00-21:00 1500 化妆品
- '''
- # 使用 concat 连接两个相同结构的 DataFrame 对象
- df3 = pd.concat([df1,df2])
- '''
- 工号 姓名 日期 时段 交易额 柜台
- 0 1001 张三 20190301 9:00-14:00 2000 化妆品
- 1 1002 李四 20190301 14:00-21:00 1800 化妆品
- 2 1003 王五 20190301 9:00-14:00 800 食品
- 0 1006 钱八 20190301 9:00-14:00 850 蔬菜水果
- 1 1001 张三 20190302 14:00-21:00 600 蔬菜水果
- 2 1001 张三 20190302 9:00-14:00 1300 化妆品
- 3 1002 李四 20190302 14:00-21:00 1500 化妆品
- '''
- # 合并,忽略原来的索引 ignore_index
- df4 = df3.append([df1,df2],ignore_index = True)
- '''
- 工号 姓名 日期 时段 交易额 柜台
- 0 1001 张三 20190301 9:00-14:00 2000 化妆品
- 1 1002 李四 20190301 14:00-21:00 1800 化妆品
- 2 1003 王五 20190301 9:00-14:00 800 食品
- 3 1006 钱八 20190301 9:00-14:00 850 蔬菜水果
- 4 1001 张三 20190302 14:00-21:00 600 蔬菜水果
- 5 1001 张三 20190302 9:00-14:00 1300 化妆品
- 6 1002 李四 20190302 14:00-21:00 1500 化妆品
- 7 1001 张三 20190301 9:00-14:00 2000 化妆品
- 8 1002 李四 20190301 14:00-21:00 1800 化妆品
- 9 1003 王五 20190301 9:00-14:00 800 食品
- 10 1006 钱八 20190301 9:00-14:00 850 蔬菜水果
- 11 1001 张三 20190302 14:00-21:00 600 蔬菜水果
- 12 1001 张三 20190302 9:00-14:00 1300 化妆品
- 13 1002 李四 20190302 14:00-21:00 1500 化妆品
- '''
- # 按照列进行拆分
- df5 = df4.loc[:,['姓名','柜台','交易额']]
- # 查看前五条数据
- df5[:5]
- '''
- 姓名 柜台 交易额
- 0 张三 化妆品 2000
- 1 李四 化妆品 1800
- 2 王五 食品 800
- 3 钱八 蔬菜水果 850
- 4 张三 蔬菜水果 600
- '''
- # 合并 merge 、 join
- # 按照工号进行合并,随机查看 3 条数据
- rows = np.random.randint(0,len(df5),3)
- pd.merge(df4,df5).iloc[rows,:]
- '''
- 工号 姓名 日期 时段 交易额 柜台
- 7 1002 李四 20190301 14:00-21:00 1800 化妆品
- 4 1002 李四 20190301 14:00-21:00 1800 化妆品
- 10 1003 王五 20190301 9:00-14:00 800 食品
- '''
- # 按照工号进行合并,指定其他同名列的后缀
- pd.merge(df1,df2,on = '工号',suffixes = ['_x','_y']).iloc[:,:]
- '''
- 工号 姓名_x 日期_x 时段_x ... 日期_y 时段_y 交易额_y 柜台_y
- 0 1001 张三 20190301 9:00-14:00 ... 20190302 14:00-21:00 600 蔬菜水果
- 1 1001 张三 20190301 9:00-14:00 ... 20190302 9:00-14:00 1300 化妆品
- 2 1002 李四 20190301 14:00-21:00 ... 20190302 14:00-21:00 1500 化妆品
- '''
- # 两个表都设置工号为索引 set_index
- df2.set_index('工号').join(df3.set_index('工号'),lsuffix = '_x',rsuffix = '_y').iloc[:]
- '''
- 姓名_x 日期_x 时段_x 交易额_x ... 日期_y 时段_y 交易额_y 柜台_y
- 工号 ...
- 1001 张三 20190302 14:00-21:00 600 ... 20190301 9:00-14:00 2000 化妆品
- 1001 张三 20190302 14:00-21:00 600 ... 20190302 14:00-21:00 600 蔬菜水果
- 1001 张三 20190302 14:00-21:00 600 ... 20190302 9:00-14:00 1300 化妆品
- 1001 张三 20190302 9:00-14:00 1300 ... 20190301 9:00-14:00 2000 化妆品
- 1001 张三 20190302 9:00-14:00 1300 ... 20190302 14:00-21:00 600 蔬菜水果
- 1001 张三 20190302 9:00-14:00 1300 ... 20190302 9:00-14:00 1300 化妆品
- 1002 李四 20190302 14:00-21:00 1500 ... 20190301 14:00-21:00 1800 化妆品
- 1002 李四 20190302 14:00-21:00 1500 ... 20190302 14:00-21:00 1500 化妆品
- 1006 钱八 20190301 9:00-14:00 850 ... 20190301 9:00-14:00 850 蔬菜水果
- '''
2020-05-07
pandas_数据拆分与合并的更多相关文章
- Oracle_表数据拆分与合并
参考文档: [1]http://blog.itpub.net/8858072/viewspace-426960/ [2]http://blog.csdn.net/mattlinsheep/articl ...
- (Sql Server)数据的拆分和合并
(Sql Server)数据的拆分和合并 背景: 今天遇到了数据合并和拆分的问题,尝试了几种写法.但大致可分为两类:一.原始写法.二.Sql Server 2005之后支持的写法.第一种写法复杂而且效 ...
- 45.oracle表类型、数据拆分、表分区
不要做一些没有意义的事情,就比如说你要离职并不打算吃回头草,离职理由中完全没有必要说明“领导的水平太渣,人品太差”此类的原因,而是“个人原因”,当然实在不批准辞职另说. oracle表类型 表的类型分 ...
- NDK学习笔记-文件的拆分与合并
文件的拆分与合并在开发中经常会用到,上传或是下载的时候都有这样的运用 文件拆分的思路 将文件大小拆分为n个文件 那么,每个文件的大小就是等大小的 如果文件大小被n除不尽,那么就使用n+1个文件来拆分 ...
- spss-数据抽取-拆分与合并
spss-数据抽取-拆分与合并 数据抽取也成为数据拆分,是指保留.抽取原数据表中某些字段.记录的部分信息,形成一个新字段.新纪录.分为:字段拆分和随机抽样两种方法. 一:字段拆分 如何提取" ...
- 【BIM】基于BIMFACE的空间拆分与合并
BIMFACE中矩形空间拆分与合并 应用场景 在BIM运维场景中,空间同设备一样,作为一种资产被纳入运维管理体系,典型的应用场景例如商铺.防火分区等,这就涉及到空间的拆分和合并,在bimface中,已 ...
- 利用SQl对数据库实行数据拆分与组合
利用SQl对数据库实行数据拆分与组合实现提供以下几种方案: 方法一: WITH CTE AS (SELECT A.Id,A.[Uid],UserName FROM (SELECT A.[id], RE ...
- pdf拆分与合并
1.引用iTextSharp,用于拆分和合并pdf文件 using iTextSharp.text; using iTextSharp.text.pdf; 2.合并pdf //outMergeFile ...
- fasta文件拆分与合并
Linux中fasta文件的拆分与合并 FASTA文件的拆分: (1)如果从一个文件a提取第11至20个序列存到另一个文件b: awk -v RS='>' 'NR>1{i++}i>= ...
随机推荐
- 在 Spring Boot 中,如何干掉 if else!
需求 传统实现 策略模式实现 ClassScanner:扫描工具类源码 总结 需求 这里虚拟一个业务需求,让大家容易理解.假设有一个订单系统,里面的一个功能是根据订单的不同类型作出不同的处理. 订单实 ...
- 键盘鼠标(PS2)模拟器驱动及Demo
详情 KeyboardMouseSimulateDriver 问题描述: 鼠标相对移动存在不正确性,绝对移动没正确性. 基于于Thinkpad E460上的开发及测试. 不支持HID设备.
- 《MapReduce: Simplified Data Processing on Large Clusters》论文研读
MapReduce 论文研读 说明:本文为论文 <MapReduce: Simplified Data Processing on Large Clusters> 的个人理解,难免有理解不 ...
- Spark 环境问题记录和解决方法
Spark 版本配套表 名称 版本 说明 Spark spark-2.3.0-bin-hadoop2.7 Spark mongo-java-driver-3.5.0.jar 3.5 Mongo驱动 m ...
- How many ways??,题解
题目: 题意: 找过k条边的路径个数. 分析: 首先注意一下题意,同一个点过两次算两次,做过类似的,过k条边的最短路,只要搞一个矩阵,然后快速幂就好了,这个也一样,维护信息变一下,然后就好了. 如果k ...
- Python——格式化GMT时间
1.背景 最近在做视频上传去获取大小.时间的功能,视频是存在金山云的,由于金山sdk接口用例执行后返回的结果中的时间是http头部时间,时间格式为‘Tue, 08 May 2018 06:17:00 ...
- Vue动态修改class
#####对象方法-最简单的绑定(这里的active加不加单引号都可以,以下也一样都能渲染) :class="{ 'active': isActive }"1判断是否绑定一个act ...
- 图文详解Prometheus监控+Grafana+Alertmanager告警安装使用
一:前言 一个服务上线了后,你想知道这个服务是否可用,需要监控.假如线上出故障了,你要先于顾客感知错误,你需要监控.还有对数据库,服务器的监控,等等各层面的监控. 近年来,微服务架构的流行,服务数越来 ...
- Java 项目创建 -- 统一结果处理、统一异常处理、统一日志处理
一.IDEA 插件使用 1.说明 此处使用 SpringBoot 2.2.6 .JDK 1.8 .mysql 8.0.18 作为演示. 使用 IDEA 作为开发工具. 2.IDEA 插件 -- Lom ...
- day19 生成器+函数递归
目录 一.yield表达式 1 yield表达式基本用法 二.三元表达式 三.生成式 1 列表生成式 2 字典生成式 3 集合生成式 4 生成器表达式 四.函数的递归 1 递归的定义 2 详解递归 前 ...