import numpy as np
import pandas as pd
import sklearn
import urllib
import os
import tarfile

数据乱序

我们分别介绍numpy.ndarray和pandas.dataframe的乱序。

numpy.ndarray

拆分前,一般会先对数据进行随机排序。

numpy.random中有shuffle()和permutation()2个函数均可用于对数据进行乱序。主要区别在于:

  • shuffle()直接对原数据进行重排,无返回值。
  • permutation()复制原数据,然后再重排,返回重排后的数组。原数据没有任何变化。

生成数据:

data = np.arange(100).reshape(10,-1)
print(data)
[[ 0  1  2  3  4  5  6  7  8  9][10 11 12 13 14 15 16 17 18 19][20 21 22 23 24 25 26 27 28 29][30 31 32 33 34 35 36 37 38 39][40 41 42 43 44 45 46 47 48 49][50 51 52 53 54 55 56 57 58 59][60 61 62 63 64 65 66 67 68 69][70 71 72 73 74 75 76 77 78 79][80 81 82 83 84 85 86 87 88 89][90 91 92 93 94 95 96 97 98 99]]

使用permutation()重排:

x = np.random.permutation(data)
print(x)
print(data)
[[50 51 52 53 54 55 56 57 58 59][70 71 72 73 74 75 76 77 78 79][40 41 42 43 44 45 46 47 48 49][90 91 92 93 94 95 96 97 98 99][20 21 22 23 24 25 26 27 28 29][10 11 12 13 14 15 16 17 18 19][30 31 32 33 34 35 36 37 38 39][80 81 82 83 84 85 86 87 88 89][60 61 62 63 64 65 66 67 68 69][ 0  1  2  3  4  5  6  7  8  9]]
[[ 0  1  2  3  4  5  6  7  8  9][10 11 12 13 14 15 16 17 18 19][20 21 22 23 24 25 26 27 28 29][30 31 32 33 34 35 36 37 38 39][40 41 42 43 44 45 46 47 48 49][50 51 52 53 54 55 56 57 58 59][60 61 62 63 64 65 66 67 68 69][70 71 72 73 74 75 76 77 78 79][80 81 82 83 84 85 86 87 88 89][90 91 92 93 94 95 96 97 98 99]]

使用shuffle()重排:

np.random.shuffle(data)
print(data)
[[40 41 42 43 44 45 46 47 48 49][20 21 22 23 24 25 26 27 28 29][50 51 52 53 54 55 56 57 58 59][80 81 82 83 84 85 86 87 88 89][30 31 32 33 34 35 36 37 38 39][ 0  1  2  3  4  5  6  7  8  9][60 61 62 63 64 65 66 67 68 69][10 11 12 13 14 15 16 17 18 19][90 91 92 93 94 95 96 97 98 99][70 71 72 73 74 75 76 77 78 79]]

pandas.dataframe

对datafame进行乱序,只需要使用sample()即可。

我们使用iris数据集生成datafame:

from sklearn import datasets
iris = datasets.load_iris()
df = pd.DataFrame()
df['heigh'] = iris['data'][:,0]
df['length'] = iris['data'][:,1]
df['label'] = iris['target']print(df.head())
   heigh  length  label
0    5.1     3.5      0
1    4.9     3.0      0
2    4.7     3.2      0
3    4.6     3.1      0
4    5.0     3.6      0

sample()方式

我们使用sample对df进行shuffle。我们可以看到df自身是没有变化的:

df_shuffle = df.sample(frac=1)
print(df_shuffle.head())
print(df.head())
     heigh  length  label
40     5.0     3.5      0
80     5.5     2.4      1
55     5.7     2.8      1
96     5.7     2.9      1
108    6.7     2.5      2heigh  length  label
0    5.1     3.5      0
1    4.9     3.0      0
2    4.7     3.2      0
3    4.6     3.1      0
4    5.0     3.6      0

参数frac是要返回的比例。如果需要打混后数据集的index(索引)还是按照正常的排序:

df_shuffle2 = df.sample(frac=1).reset_index(drop=True)
print(df_shuffle2.head())
   heigh  length  label
0    7.7     2.6      2
1    6.5     3.2      2
2    5.6     2.8      2
3    4.6     3.6      0
4    7.4     2.8      2

sklearn的方式

sklearn.utils.shuffle()也可以对datafame乱序:

df_shuffle3 = sklearn.utils.shuffle(df)
print(df_shuffle3.head())
     heigh  length  label
88     5.6     3.0      1
17     5.1     3.5      0
7      5.0     3.4      0
132    6.4     2.8      2
67     5.8     2.7      1

numpy的方式

不推荐此方式

df_shuffle4 = df.iloc[np.random.permutation(len(df))]
print(df_shuffle4.head())
     heigh  length  label
130    7.4     2.8      2
144    6.7     3.3      2
110    6.5     3.2      2
99     5.7     2.8      1
143    6.8     3.2      2

numpy和pandas的数据乱序相关推荐

  1. fastjson解析JSON数据乱序导致的问题

    本文作者:合肥工业大学 电子商务研究所 钱洋 email:1563178220@qq.com . 内容可能有不到之处,欢迎交流. 未经本人允许禁止转载. 文章目录 问题背景 问题解决 完整的案例代码 ...

  2. Flink Checkpoint 机制:如何保证 barrier 和数据之间不乱序?

    Flink Checkpoint 机制:如何保证 barrier 和数据之间不乱序? 1 前言 1.1 什么是 state? 要说 checkpoint,首先要从 state 聊起.之前有被问到对于 ...

  3. 浅析LET无线移动网络为什么RTT抖动大为什么数据包乱序多

    浙江温州皮鞋湿,下雨进水不会胖!9月份错过了深圳的超猛台风,12月8号又错过了杭州的超猛大雪,当天却在深圳迎来了赵正则,马上2019年了,又一次错过了杭州的大雪,回到了深圳过元旦- 无奈啊无奈,去年夏 ...

  4. 用Numpy和Pandas分析二维数据笔记

    用Numpy和Pandas分析二维数据 上节课,我们利用numpy和pandas分析了一维数据.在这节课中,你将学到这两种库的更多特性.并用它们来分析 二维数据,这节课后,你将能够使用pandas重新 ...

  5. 数据基础---numpy、pandas使用教程

    数组对象 Numpy库 Numpy最重要的一个特点是就是其N维数组对象,即ndarray,ndarray是一个通用的同构数据多维容器,其中的所有元素必须是相同类型的.每个数组都有一个shape(一个表 ...

  6. 查处的数据如何乱序_老司机总结常用镜像方法,让镜像数据更加可靠

    在做数据包分析的时候,经常会说一句话,"Packets never lie(数据包不会说谎)",即数据包会真实反应网络服务和应用服务的真实状态.基于网络镜像的流量分析同样如此,如果 ...

  7. Numpy 生成随机数和乱序

    Numpy 生成随机数和乱序 Numpy官网:http://www.numpy.org/ 一.生成随机数 1. numpy.random.rand(d0, d1, -, dn) 生成在 [0, 1) ...

  8. Pentium M处理器架构/微架构/流水线 (2) - 数据预取/乱序核/退役单元

    Data Prefetching Intel Pentium M处理器支持3种预取机制: 第一种是硬件指令预取,已在上面章节中讲述 第二种是自动的将数据预取到二级缓存.这个机制基本上与Intel Ne ...

  9. pandas 转化np数据_python,numpy,pandas数据处理之小技巧

    今日是端午4天假期的最后一天,自己的2台电脑一台在处理数据,另一台电源适配器也坏掉了.感觉闲来无事,在此就简单聊聊numpy和pandas的各种冷知识.小技巧和疑难杂症.个人觉得关于 这里就着重聊聊一 ...

最新文章

  1. gdal 1.9+python 2.7开发环境配置
  2. jdbc mysql参数_Mysql JDBC URL中的重要参数有啊些
  3. Android Service 服务(二)—— BroadcastReceiver
  4. Golang 入门笔记(二)上
  5. android dropbox切换账户,android – 如何获取我的APP_KEY和SECRET_KEY的Dropbox同步?
  6. 奇偶个数 中国大学生mooc 翁恺 C语言
  7. 洛谷 P2285 BZOJ 1207 [HNOI2004]打鼹鼠
  8. smtp邮件服务器配置,配置电子邮件通知和指定 SMTP 服务器
  9. 淘客APP开发定制系统推荐
  10. cad多段线画圆弧方向_CAD多段线绘制技巧 - CAD自学网
  11. 微博缓存视频导出自行解决方案
  12. 如何将瀚高数据库单机数据导入HGDW
  13. 常用的人格测试理论等小结
  14. 强大的第三方视频播放器。
  15. 2023款ThinkBook 14和15锐龙版区别对比评测选哪个好
  16. 如何注册和设置 zoom Background
  17. C: 重复宏定义warning: “A“ redefined
  18. 大象进冰箱和软件设计的关联性
  19. LINUX学习—AWK(LINUX三剑客)
  20. 计算机的移动硬盘,学会九招不再犯愁!移动硬盘使用中心得体会

热门文章

  1. [leetcode] 144.二叉树的前序遍历
  2. @EnableTransactionManagement原理
  3. OSPF动态路由协议(了解ospf,RIP协议,外部网关协议内部网关协议,ospf工作过程,选举过程,ospf邻居关系7个状态)
  4. 内网端口转发-LCX基本使用
  5. 面向对象的4个基本特征
  6. JLabel标签文字换行
  7. flask查询mysql数据展示_flask再学习-思考之怎么从数据库中查询数据在页面展示!...
  8. python硬件交互_对Python的交互模式和直接运行.py文件的区别详解
  9. c语言常量x,C语言的数据、常量和变量
  10. 4g模块注册上网 移远_通信模组企业 移远通信amp;广和通