一.索引的堆(stack)

1.行列的转化:

Stack():列转行

Unstack():行转列

Stack对应行,

使用小技巧:使用stack()的时候,level等于哪一个,哪一个就消失,出现在行里。

使用UNstack的时候,level等于哪一个,哪一个就消失,出现在列里。

如:

原来:A:

现在:A.stack(level=0).unstack(level=0).unstack(level=0)执行后

二.多层索引的聚合操作

所谓的操作是指:平均数mean()、方差std()、最大数max()、最小值min()等.....

注意:需要指定axis

小技巧:和unstack()相反,聚合操作的时候,axis等于哪一个,哪一个就保留

求平均值:

重点是axis和level的组合

A.mean(axis=0,level=1)

求方差:

df.std(asis=x,level=y)

方差是衡量随随机变量或一组数据时离散程度的度量。

A.std(axis=0,level=0)

Pandas的拼接操作

1.联级:pd.concal,pd.append

 

(1)使用pd.concat()级联

Pandas使用pd.concat()函数,与np.concatenate函数类似,只是多了一些参数

dp.concat(['objs', 'axis=0', "join='outer'", 'join_axes=None', 'ignore_index=False', 'keys=None', 'levels=None', 'names=None', 'verify_integrity=False', 'sort=None', 'copy=True'])

Concat()此方法默认增加行数,即样本。通过设置axis进行行方向或是列方向的级联。

如:

行方向级联:

pd.concat([df1,df2],axis=0)

进行列方向级联

df3:

pd.concat([df1,df3],axis=1)

Pandas中的参数:

['objs', 'axis=0', "join='outer'", 'join_axes=None', 'ignore_index=False', 'keys=None', 'levels=None', 'names=None', 'verify_integrity=False', 'sort=None', 'copy=True']

Jgnore_index:

默认:False
如果为T,忽视给定的索引值,用1,2,3,4,.....代替,当然在操作时,以前给定的索引值失效。

如:pd.concat([df1,df2],ignore_index=True)

Keys:

序列,默认没有
如果传递了多个级别,则应该包含元组。构造使用传递的键作为最外层的分层索引

如:pd.concat([df1,df1],keys=["期中","期末"])

Join:

默认join=”outer”

Outer指合并除了公有列还合并非共有列

Inner指只合公有列

如:

pd.concat([df1,df5],join="outer")

pd.concat([df1,df5],join="inner")

Join_axes

当两张表中数据有部分列不同时,可以设置join_axes根据那个表中的列进行合并

如:pd.concat([df1,df5],join_axes=[df5.columns])

(2)使用append()追加

df1.append(df2)

  1. 合并:pd.merge,pd.join

(1)Merge:融合

A.参数:

['right', "how='inner'", 'on=None', 'left_on=None', 'right_on=None', 'left_index=False', 'right_index=False', 'sort=False', "suffixes=('_x', '_y')", 'copy=True', 'indicator=False', 'validate=None']

根据表中的属性值相同进行融合

Merge与concat的区别

merge需要依据某一共同的行或者列进行合并,使用pd.merge()合并时,会自动根据两者形同的column名称的那一列,作为key来进行合并。注意每一列元素的顺序不要求一致。

B.一对一合并

如:

df6 = DataFrame({"省":["北京","山东","河北"],"大学":["清华","山大","河大"],"人口":[1200,200,1000]})

df7 = DataFrame({"省":["北京","上海","河北"],"大学":["清华","复旦","河大"],"人口":[1200,1220,1000]})

df6.merge(df7)

C.多对一合并

Df8 = DataFrame({"省":["北京","山东","北京"],"大学":["清华","山大","北大"]})

Df9 = DataFrame({"省":["北京","上海","河北"],"人口":[1200,1220,1000]})

Df8.merge(df9)

D.多对多合并

df6 = DataFrame({"省":["北京","山东","北京"],"大学":["清华","山大","北大"]})

df7 = DataFrame({"省":["北京","上海","北京"],"人口":[1200,1220,1000]})

df6.merge(df7)

E.Key的规范化

使用on=显示指定那一列为key,当有多个key相同时使用

如:

df6 = DataFrame({"id":[1,3,5],"name":["A","B","C"],"salary":[1200,200,1000]})

df7 = DataFrame({"id":[5,3,1],"name":["A","C","D"],"age":[1200,1220,1000]})

df6.merge(df7,on="id",suffixes=["_曾用名","_现用名"]) #指定根据id进行合并

使用left_on和right_on指定左右两边的列作为key,当左右两边的key都不相等时使用

如:

df6 = DataFrame({"id":[1,3,5],"salary":[1200,200,1000]})

df7 = DataFrame({"ID":[5,3,1],"age":[23,34,42]})

df6.merge(df7,left_on = "id",right_on = "ID")

内合并与外合并

内合并:只保留两者都有的key(默认模式)

How = “inner”

外合并:how = “outer”,补nan

左合并,右合并:how=”left”,how=”right”

G.列冲突的解决

当列冲突时,即有多个列名称相同时,需要使用on=来指定哪一个作为key,配合suffixes指定冲突列名,可以使用suffixes=自己指定的列名

Left_index=,right_index=,是否使用索引

如:将总分列添加到总表中

s = df1.sum(axis=1)

df0 = DataFrame(s,columns=["总分"])

df1.merge(df0,left_index=True,right_index=True)

pandas的数据联级的更多相关文章

  1. FreeSql 导航属性的联级保存功能

    写在前面 FreeSql 一个款 .net 平台下支持 .net framework 4.5+..net core 2.1+ 的开源 ORM.单元测试超过3100+,正在不断吸引新的开发者,生命不息开 ...

  2. Blazor和Vue对比学习(基础1.6):祖孙传值,联级和注入

    前面章节,我们实现了父子组件之间的数据传递.大多数时候,我们以组件形式来构建页面的区块,会涉及到组件嵌套的问题,一层套一层.这种情况,很大概率需要将祖先的数据,传递给子孙后代去使用.我们当然可以使用父 ...

  3. 利用Python进行数据分析(12) pandas基础: 数据合并

    pandas 提供了三种主要方法可以对数据进行合并: pandas.merge()方法:数据库风格的合并: pandas.concat()方法:轴向连接,即沿着一条轴将多个对象堆叠到一起: 实例方法c ...

  4. 【转载】使用Pandas对数据进行筛选和排序

    使用Pandas对数据进行筛选和排序 本文转载自:蓝鲸的网站分析笔记 原文链接:使用Pandas对数据进行筛选和排序 目录: sort() 对单列数据进行排序 对多列数据进行排序 获取金额最小前10项 ...

  5. 【转载】使用Pandas进行数据提取

    使用Pandas进行数据提取 本文转载自:蓝鲸的网站分析笔记 原文链接:使用python进行数据提取 目录 set_index() ix 按行提取信息 按列提取信息 按行与列提取信息 提取特定日期的信 ...

  6. 【转载】使用Pandas进行数据匹配

    使用Pandas进行数据匹配 本文转载自:蓝鲸的网站分析笔记 原文链接:使用Pandas进行数据匹配 目录 merge()介绍 inner模式匹配 lefg模式匹配 right模式匹配 outer模式 ...

  7. 【转载】使用Pandas创建数据透视表

    使用Pandas创建数据透视表 本文转载自:蓝鲸的网站分析笔记 原文链接:使用Pandas创建数据透视表 目录 pandas.pivot_table() 创建简单的数据透视表 增加一个行维度(inde ...

  8. Pandas 把数据写入csv

    Pandas 把数据写入csv from sklearn import datasets import pandas as pd iris = datasets.load_iris() iris_X ...

  9. pandas学习(数据分组与分组运算、离散化处理、数据合并)

    pandas学习(数据分组与分组运算.离散化处理.数据合并) 目录 数据分组与分组运算 离散化处理 数据合并 数据分组与分组运算 GroupBy技术:实现数据的分组,和分组运算,作用类似于数据透视表 ...

随机推荐

  1. jsp学习与提高(一)——JSP生命周期、三大指令及动作

    1.jsp定义: 1.1以java语言为脚本语言,运行在服务端的程序: 1.2处理客户请求,生成页面 1.3其本质是个sevlet会生成.java文件编译后再生成.class文件 2.jsp生命周期( ...

  2. Java基础笔记(六)——进制表示、ASCII码和Unicode编码

    Java中有三种表示整数的方法:十进制.八进制.十六进制. 八进制:以0开头,包括0~7的数字.如:int octal=020;  //定义int型变量存放八进制数据 十六进制:以0x或0X开头,包括 ...

  3. easyui datagrid编辑时编辑框自动获取焦点

    onDblClickCell:function(rowIndex, field, val){//双击单元格监听器 $(this).datagrid('beginEdit',rowIndex);//开启 ...

  4. [TCP/IP]OSI七层模型和TCP/IP四层模型

    OSI參考模型 在過去的電腦網路上,由於資料通訊系統涉及複雜的軟硬體,可是又沒有統一的標準,導致通訊軟體不僅龐大複雜,而且不易測式.修改或分享.為此,ISO(國際標準組織)發展出一套OSI參考模型(O ...

  5. Hive_Hive的数据模型_外部表

    Hive的数据模型之外部表 外部表(External Table)- 指向已经在HDFS中存在的数据,可以创建Partition- 它和内部表在元数据的组织上是相同的,而实际数据的存储则有较大的差异. ...

  6. JSP jsp内置对象

    jsp(java server pages):java服务器端的页面   JSP的执行过程 1.浏览器输入一个jsp页面 2.tomcat会接受*.jsp请求,将该请求发送到org.apache.ja ...

  7. JAVA分包下项目部分代码存储

    一.注册时姓名去重和符合汉字格式: // 新用户申请加入 public void NewHuman() { System.out.println("========新会员申请加入页面==== ...

  8. https的网站使用百度地图的问题

    https的网站使用百度地图,如果你引用的地址没写对的话,加载不出来百度地图,被认为是不安全的JS内容. 引用的地址:http://api.map.baidu.com/api?v=2.0&ak ...

  9. 【Unity3D】射箭打靶游戏(简单工厂+物理引擎编程)

    打靶游戏:     1.靶对象为 5 环,按环计分:    2.箭对象,射中后要插在靶上:    3.游戏仅一轮,无限 trials: 增强要求:  添加一个风向和强度标志,提高难度 游戏成品图: U ...

  10. Android 贝塞尔曲线的浅析

    博客也开了挺长时间了,一直都没有来写博客,主要原因是自己懒---此篇博客算是给2017年一个好的开始,同时也给2016年画上一个句点,不留遗憾. 那就让我们正式进入今天的主题:贝塞尔曲线. 首先,让我 ...