Python之数据规整化:清理、转换、合并、重塑

Python之数据规整化:清理、转换、合并、重塑

1. 合并数据集

pandas.merge可根据一个或者多个不同DataFrame中的行连接起来。
pandas.concat可以沿着一条轴将多个对象堆叠到一起。
实例方法combine_first可以将重复数据编接在一起,用一个对象中的值填充另一个对象中的缺失值。

2. 数据风格的DataFrame合并操作

2.1 数据集的合并(merge)或连接(jion)运算时通过一个或多个键将行链接起来的。如果没有指定,merge就会将重叠列的列名当做键,最好显示指定一下。
pd.merge(df1,df2,on='key')
2.2 默认情况下,merge做的是"inner"连接,结果中的键是交集。其他方式有“left”、“right”、“outer”。外连接求取的是键的并集,组合了左连接和右连接。
2.3 都对的的连接是行的笛卡尔积。
2.4 merge的suffixes选项,用于指定附加到左右两个DataFrame对象的重叠列名上的字符串。

3. 索引上的合并

DataFrame有merge和join索引合并。

4. 重塑和轴向旋转

有许多用于重新排列表格型数据的基础运算。这些函数也称作重塑(reshape)或轴向旋转(pivot)运算。
4.1 重塑层次化索引
层次化索引为DataFrame数据的重排任务提供了良好的一致性方式。主要两种功能:
    stack:将数据的列“旋转”为行。
    unstack:将数据的行“旋转”为列。

5. 数据转换

5.1 利用函数或映射进行数据转换
Series的map方法可以接受一个函数或含有映射关系的字典型对象。
5.2 替换值
replace可以由一个带替换值组成的列表以及一个替换值
data.replace([-999,-1000],np.nan)
5.3 重命名轴索引
轴标签也可通函数或映射进行转换,从而得到一个新对象轴还可以被就地修改,而无需新建一个数据结构。
5.4 离散化和面元划分
为了便于分析,连续数据常常被分散化或拆分成“面元”(bin)。
pandas的cut函数
5.5 检测和过滤异常值
异常值的过滤或变换运算很大程度上其实就是数组的运算。

6. 字符串操作

6.1 字符串对象方法
split以逗号分割的字符串可以拆分成数段。
字符串“::”的jion方法以冒号分隔符的形式连接起来。
6.2 正则表达式
描述一个或多个空白符的regex是\s+
创建可重用的regex对象:
regex = re.complie('\s+')
regex.split(text)
6.3 pandas中矢量化的字符串函数
实现矢量化的元素获取操作:要么使用str.get,要么使用str属性上使用索引。
时间: 2024-07-29 17:24:47

Python之数据规整化:清理、转换、合并、重塑的相关文章

数据架构简史:转换中的范式

据架构是一系列决定收集哪些数据,如何在数据库系统中使用.处理和存储数据的规则.策略以及模型.例如,数据集成是依赖于数据架构用于集成过程中的指令.如果没有从编程范式转换到数据架构范式,现代计算机将会变得更加笨拙迟钝. 对于早期的计算机,创建过分简单化的程序是为了处理特定类型的计算机问题,甚至没有考虑过数据集成的概念,每个程序之间都是单独分开的.二十世纪四十年代至七十年代,程序处理是最主要的问题,有关建立数据架构的问题根本考虑得少之又少,甚至不在考虑的范围之内.程序员致力于让计算机通过执行特定的操作

Python之数据聚合与分组运算

Python之数据聚合与分组运算 1. 关系型数据库方便对数据进行连接.过滤.转换和聚合. 2. Hadley Wickham创建了用于表示分组运算术语"split-apply-combine"(拆分-应用-合并). 3. GroupBy的size方法,它可以返回一个含有分组大小的Series. 4. gorupby对分组进行迭代,可以产生一组二元元组(由分组名和数据块组成). 5. 选取一个或以组列 对于由GroupBy对象,如果用一个(单个字符串)或一组(字符串数组)列名对其进行索

Python的数据序列化「Json & Pickle」

在介绍Python的数据序列化模块「Json & Pickle」之前,我们先来看看为什么需要数据序列化,什么是数据序列化. 为什么需要数据序列化,我认为有如下两种原因: 一个原因是将对象(一切皆对象)的状态保持在存储媒介(硬盘.网盘......)中,以便可以在以后重新创建精确的副本,相当于镜像的概念,比如我们平时利用VMware虚拟机中的挂起功能,这个挂起功能就是利用数据的序列化,把虚拟机当前的状态序列化保存在本地磁盘的文件中,然后恢复的时候只需反序列化,把状态恢复即可. 另一个原因是通过值将对

大神手把手教你:(Python)序列数据的One Hot编码

更多深度文章,请关注:https://yq.aliyun.com/cloud 机器学习算法无法直接用于数据分类.数据分类必须转换为数字才能进一步进行. 在本教程中,你将发现如何将输入或输出的序列数据转换为一种热编码,以便于你在Python中深度学习的序列分类问题中使用. 看完本教程后,你将会了解: ·   1.什么是整数编码和One-Hot编码,以及为什么它们在机器学习中是必需的. ·   2.如何在Python中手工计算一个整数编码和One-Hot编码. ·   3.如何使用scikit-le

python socket 数据发送前后不一致,会自动增加一个空格。

问题描述 python socket 数据发送前后不一致,会自动增加一个空格. 我用py写了个server,用py的自带库tk写了个client,运行正常. 后面我又用QT4库写了个client,问题出来了: 我在client上有一个单行输入框,点击send按扭后,会获取单行输入框的text,并把这个内容发送给服务端,此时服务端接收消息,把这个消息再返回客户端. 问题出来了,如果我单行输入框中的内容是abc,也就是长度为3的字符串,服务器接收后却是a b c ,也就是在每个字符后面都自动加了一个

C# linq 两个表,列名一样,但数据无关联,想合并为一个表

问题描述 C# linq 两个表,列名一样,但数据无关联,想合并为一个表 我有两个表 ,里面的列名结构都是一样的,但是id等数据都是不一样,我想将这两个表合并为一个表,在页面上显示.我是将这两个表都放进各自的泛型集合里,但是就变成两个类型了,如何将这两个表合并成一个表呢?或者用linq的话怎么写呢,这两表之间没什么关联,单纯只是想合并成一个表而已?求教~~~ (只是想在查询时,将这两个表合并为一个表进行查询,并不想更改这两个表的数据) 解决方案 左边或者右边select转换成另一个类型,然后co

python 把数据 json格式输出的实例代码_python

有个要求需要在python的标准输出时候显示json格式数据,如果缩进显示查看数据效果会很好,这里使用json的包会有很多操作 import json date = {u'versions': [{u'status': u'CURRENT', u'id': u'v2.3', u'links': [{u'href': u'http://controller:9292/v2/', u'rel': u'self'}]}, {u'status': u'SUPPORTED', u'id': u'v2.2'

[大数据之Spark]——Transformations转换入门经典实例

Spark相比于Mapreduce的一大优势就是提供了很多的方法,可以直接使用:另一个优势就是执行速度快,这要得益于DAG的调度,想要理解这个调度规则,还要理解函数之间的依赖关系. 本篇就着重描述下Spark提供的Transformations方法. 依赖关系 宽依赖和窄依赖 窄依赖(narrow dependencies) 窄依赖是指父RDD仅仅被一个子RDD所使用,子RDD的每个分区依赖于常数个父分区(O(1),与数据规模无关). 输入输出一对一的算子,且结果RDD的分区结构不变.主要是ma

python 可变数据和不可变数据解析

python 的数据类型和C不一样,有一种类型:可变类型 (mutable)和不可变类型(immutable) Python中所有变量都是值的引用,也就说变量通过绑定的方式指向其值. 而这里说的不可变指的是值的不可变. 对于不可变类型的变量,如果要更改变量,则会创建一个新值,把变量绑定到新值上,而旧值如果没有被引用就等待垃圾回收.不可变的类型还有一个特性,就是可以计算其hash值,这样才能进一步作为字典的key.可变类型数据对对象操作的时候,不需要再在其他地方申请内存,只需要在此对象后面连续申请