1. import pandas as pd
  2. import numpy as np
  3. # 读取全部数据,使用默认索引
  4. data = pd.read_excel(r'C:\Users\lenovo\Desktop\总结\Python\超市营业额.xlsx')
  5. # 修改异常值
  6. data.loc[data.交易额 > 3000,'交易额'] = 3000
  7. data.loc[data.交易额 < 200,'交易额'] = 200
  8. # 删除重复值
  9. data.drop_duplicates(inplace = True)
  10. # inplace 表示对源数据也进行修改
  11. # 填充缺失值
  12. data['交易额'].fillna(data['交易额'].mean(),inplace = True)
  13. # 使用交叉表得到每人在各柜台交易额的平均值
  14. data_group = pd.crosstab(data.姓名,data.柜台,data.交易额,aggfunc = 'mean').apply(round)
  15. # 绘制柱状图
  16. data_group.plot(kind = 'bar')
  17. # <matplotlib.axes._subplots.AxesSubplot object at 0x000001D681607888>
  18. # 数据的合并
  19. data1 = pd.read_excel(r'C:\Users\lenovo\Desktop\总结\Python\超市营业额.xlsx')
  20. data2 = pd.read_excel(r'C:\Users\lenovo\Desktop\总结\Python\超市营业额.xlsx',sheet_name = 'Sheet2')
  21. df1 = data1[:3]
  22. '''
  23. 工号 姓名 日期 时段 交易额 柜台
  24. 0 1001 张三 20190301 9:00-14:00 2000 化妆品
  25. 1 1002 李四 20190301 14:00-21:00 1800 化妆品
  26. 2 1003 王五 20190301 9:00-14:00 800 食品
  27. '''
  28. df2 = data2[:4]
  29. '''
  30. 工号 姓名 日期 时段 交易额 柜台
  31. 0 1006 钱八 20190301 9:00-14:00 850 蔬菜水果
  32. 1 1001 张三 20190302 14:00-21:00 600 蔬菜水果
  33. 2 1001 张三 20190302 9:00-14:00 1300 化妆品
  34. 3 1002 李四 20190302 14:00-21:00 1500 化妆品
  35. '''
  36. # 使用 concat 连接两个相同结构的 DataFrame 对象
  37. df3 = pd.concat([df1,df2])
  38. '''
  39. 工号 姓名 日期 时段 交易额 柜台
  40. 0 1001 张三 20190301 9:00-14:00 2000 化妆品
  41. 1 1002 李四 20190301 14:00-21:00 1800 化妆品
  42. 2 1003 王五 20190301 9:00-14:00 800 食品
  43. 0 1006 钱八 20190301 9:00-14:00 850 蔬菜水果
  44. 1 1001 张三 20190302 14:00-21:00 600 蔬菜水果
  45. 2 1001 张三 20190302 9:00-14:00 1300 化妆品
  46. 3 1002 李四 20190302 14:00-21:00 1500 化妆品
  47. '''
  48. # 合并,忽略原来的索引 ignore_index
  49. df4 = df3.append([df1,df2],ignore_index = True)
  50. '''
  51. 工号 姓名 日期 时段 交易额 柜台
  52. 0 1001 张三 20190301 9:00-14:00 2000 化妆品
  53. 1 1002 李四 20190301 14:00-21:00 1800 化妆品
  54. 2 1003 王五 20190301 9:00-14:00 800 食品
  55. 3 1006 钱八 20190301 9:00-14:00 850 蔬菜水果
  56. 4 1001 张三 20190302 14:00-21:00 600 蔬菜水果
  57. 5 1001 张三 20190302 9:00-14:00 1300 化妆品
  58. 6 1002 李四 20190302 14:00-21:00 1500 化妆品
  59. 7 1001 张三 20190301 9:00-14:00 2000 化妆品
  60. 8 1002 李四 20190301 14:00-21:00 1800 化妆品
  61. 9 1003 王五 20190301 9:00-14:00 800 食品
  62. 10 1006 钱八 20190301 9:00-14:00 850 蔬菜水果
  63. 11 1001 张三 20190302 14:00-21:00 600 蔬菜水果
  64. 12 1001 张三 20190302 9:00-14:00 1300 化妆品
  65. 13 1002 李四 20190302 14:00-21:00 1500 化妆品
  66. '''
  67. # 按照列进行拆分
  68. df5 = df4.loc[:,['姓名','柜台','交易额']]
  69. # 查看前五条数据
  70. df5[:5]
  71. '''
  72. 姓名 柜台 交易额
  73. 0 张三 化妆品 2000
  74. 1 李四 化妆品 1800
  75. 2 王五 食品 800
  76. 3 钱八 蔬菜水果 850
  77. 4 张三 蔬菜水果 600
  78. '''
  79. # 合并 merge 、 join
  80. # 按照工号进行合并,随机查看 3 条数据
  81. rows = np.random.randint(0,len(df5),3)
  82. pd.merge(df4,df5).iloc[rows,:]
  83. '''
  84. 工号 姓名 日期 时段 交易额 柜台
  85. 7 1002 李四 20190301 14:00-21:00 1800 化妆品
  86. 4 1002 李四 20190301 14:00-21:00 1800 化妆品
  87. 10 1003 王五 20190301 9:00-14:00 800 食品
  88. '''
  89. # 按照工号进行合并,指定其他同名列的后缀
  90. pd.merge(df1,df2,on = '工号',suffixes = ['_x','_y']).iloc[:,:]
  91. '''
  92. 工号 姓名_x 日期_x 时段_x ... 日期_y 时段_y 交易额_y 柜台_y
  93. 0 1001 张三 20190301 9:00-14:00 ... 20190302 14:00-21:00 600 蔬菜水果
  94. 1 1001 张三 20190301 9:00-14:00 ... 20190302 9:00-14:00 1300 化妆品
  95. 2 1002 李四 20190301 14:00-21:00 ... 20190302 14:00-21:00 1500 化妆品
  96. '''
  97. # 两个表都设置工号为索引 set_index
  98. df2.set_index('工号').join(df3.set_index('工号'),lsuffix = '_x',rsuffix = '_y').iloc[:]
  99. '''
  100. 姓名_x 日期_x 时段_x 交易额_x ... 日期_y 时段_y 交易额_y 柜台_y
  101. 工号 ...
  102. 1001 张三 20190302 14:00-21:00 600 ... 20190301 9:00-14:00 2000 化妆品
  103. 1001 张三 20190302 14:00-21:00 600 ... 20190302 14:00-21:00 600 蔬菜水果
  104. 1001 张三 20190302 14:00-21:00 600 ... 20190302 9:00-14:00 1300 化妆品
  105. 1001 张三 20190302 9:00-14:00 1300 ... 20190301 9:00-14:00 2000 化妆品
  106. 1001 张三 20190302 9:00-14:00 1300 ... 20190302 14:00-21:00 600 蔬菜水果
  107. 1001 张三 20190302 9:00-14:00 1300 ... 20190302 9:00-14:00 1300 化妆品
  108. 1002 李四 20190302 14:00-21:00 1500 ... 20190301 14:00-21:00 1800 化妆品
  109. 1002 李四 20190302 14:00-21:00 1500 ... 20190302 14:00-21:00 1500 化妆品
  110. 1006 钱八 20190301 9:00-14:00 850 ... 20190301 9:00-14:00 850 蔬菜水果
  111. '''

2020-05-07

pandas_数据拆分与合并的更多相关文章

  1. Oracle_表数据拆分与合并

    参考文档: [1]http://blog.itpub.net/8858072/viewspace-426960/ [2]http://blog.csdn.net/mattlinsheep/articl ...

  2. (Sql Server)数据的拆分和合并

    (Sql Server)数据的拆分和合并 背景: 今天遇到了数据合并和拆分的问题,尝试了几种写法.但大致可分为两类:一.原始写法.二.Sql Server 2005之后支持的写法.第一种写法复杂而且效 ...

  3. 45.oracle表类型、数据拆分、表分区

    不要做一些没有意义的事情,就比如说你要离职并不打算吃回头草,离职理由中完全没有必要说明“领导的水平太渣,人品太差”此类的原因,而是“个人原因”,当然实在不批准辞职另说. oracle表类型 表的类型分 ...

  4. NDK学习笔记-文件的拆分与合并

    文件的拆分与合并在开发中经常会用到,上传或是下载的时候都有这样的运用 文件拆分的思路 将文件大小拆分为n个文件 那么,每个文件的大小就是等大小的 如果文件大小被n除不尽,那么就使用n+1个文件来拆分 ...

  5. spss-数据抽取-拆分与合并

    spss-数据抽取-拆分与合并 数据抽取也成为数据拆分,是指保留.抽取原数据表中某些字段.记录的部分信息,形成一个新字段.新纪录.分为:字段拆分和随机抽样两种方法. 一:字段拆分 如何提取" ...

  6. 【BIM】基于BIMFACE的空间拆分与合并

    BIMFACE中矩形空间拆分与合并 应用场景 在BIM运维场景中,空间同设备一样,作为一种资产被纳入运维管理体系,典型的应用场景例如商铺.防火分区等,这就涉及到空间的拆分和合并,在bimface中,已 ...

  7. 利用SQl对数据库实行数据拆分与组合

    利用SQl对数据库实行数据拆分与组合实现提供以下几种方案: 方法一: WITH CTE AS (SELECT A.Id,A.[Uid],UserName FROM (SELECT A.[id], RE ...

  8. pdf拆分与合并

    1.引用iTextSharp,用于拆分和合并pdf文件 using iTextSharp.text; using iTextSharp.text.pdf; 2.合并pdf //outMergeFile ...

  9. fasta文件拆分与合并

    Linux中fasta文件的拆分与合并 FASTA文件的拆分: (1)如果从一个文件a提取第11至20个序列存到另一个文件b: awk -v RS='>' 'NR>1{i++}i>= ...

随机推荐

  1. 在 Spring Boot 中,如何干掉 if else!

    需求 传统实现 策略模式实现 ClassScanner:扫描工具类源码 总结 需求 这里虚拟一个业务需求,让大家容易理解.假设有一个订单系统,里面的一个功能是根据订单的不同类型作出不同的处理. 订单实 ...

  2. 键盘鼠标(PS2)模拟器驱动及Demo

    详情 KeyboardMouseSimulateDriver 问题描述: 鼠标相对移动存在不正确性,绝对移动没正确性. 基于于Thinkpad E460上的开发及测试. 不支持HID设备.

  3. 《MapReduce: Simplified Data Processing on Large Clusters》论文研读

    MapReduce 论文研读 说明:本文为论文 <MapReduce: Simplified Data Processing on Large Clusters> 的个人理解,难免有理解不 ...

  4. Spark 环境问题记录和解决方法

    Spark 版本配套表 名称 版本 说明 Spark spark-2.3.0-bin-hadoop2.7 Spark mongo-java-driver-3.5.0.jar 3.5 Mongo驱动 m ...

  5. How many ways??,题解

    题目: 题意: 找过k条边的路径个数. 分析: 首先注意一下题意,同一个点过两次算两次,做过类似的,过k条边的最短路,只要搞一个矩阵,然后快速幂就好了,这个也一样,维护信息变一下,然后就好了. 如果k ...

  6. Python——格式化GMT时间

    1.背景 最近在做视频上传去获取大小.时间的功能,视频是存在金山云的,由于金山sdk接口用例执行后返回的结果中的时间是http头部时间,时间格式为‘Tue, 08 May 2018 06:17:00 ...

  7. Vue动态修改class

    #####对象方法-最简单的绑定(这里的active加不加单引号都可以,以下也一样都能渲染) :class="{ 'active': isActive }"1判断是否绑定一个act ...

  8. 图文详解Prometheus监控+Grafana+Alertmanager告警安装使用

    一:前言 一个服务上线了后,你想知道这个服务是否可用,需要监控.假如线上出故障了,你要先于顾客感知错误,你需要监控.还有对数据库,服务器的监控,等等各层面的监控. 近年来,微服务架构的流行,服务数越来 ...

  9. Java 项目创建 -- 统一结果处理、统一异常处理、统一日志处理

    一.IDEA 插件使用 1.说明 此处使用 SpringBoot 2.2.6 .JDK 1.8 .mysql 8.0.18 作为演示. 使用 IDEA 作为开发工具. 2.IDEA 插件 -- Lom ...

  10. day19 生成器+函数递归

    目录 一.yield表达式 1 yield表达式基本用法 二.三元表达式 三.生成式 1 列表生成式 2 字典生成式 3 集合生成式 4 生成器表达式 四.函数的递归 1 递归的定义 2 详解递归 前 ...