Python数据分析笔记#8.2.3 轴向连接

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python数据分析笔记#8.2.3 轴向连接相关的知识,希望对你有一定的参考价值。

参考技术A

「目录」

数据规整:聚合、合并和重塑

Data Wrangling: Join, Combine, and Reshape

--------> 数据库风格的DataFrame合并

--------> 索引上的合并

--------> 轴向连接


轴向连接

另一种数据合并运算也被称作连接(concatenation)、绑定(binding)或堆叠(stacking)。Numpy的concatenation函数可以用Numpy数组来做:

假设有三个没有重叠索引的Series:

对这些对象调用concat可以将值和索引粘合在一起:

默认情况下,concat是在axis=0上工作的,最终产生一个新的Series。如果传入axis=1,则结果就会变成一个DataFrame(axis=1是列):

传入join=\'inner\'可以得到他们的交集:

现在我们可以看到因为传入了join=\'inner\',f索引和g索引那两行消失了。

我们还可以通过join_axes指定要使用的索引:

一个可能遇到的问题是,如果我们将s1,s1和s3拼接的时候,可能因为重复的索引导致无法区分结果。

解决的办法是我们可以在连接轴上创建一个层次化索引。使用keys参数即可达到这个目的:

如果沿着axis=1对Series进行合并,则keys就会成为DataFrame的列名:

同样的逻辑适用于DataFrame对象:

如果传入的不是列表而是一个字典,则字典的键就会被当作keys选项的值:

另外,我们还可以用names参数命名创建的轴级别:

本篇最后一个关于DataFrame的问题,若DataFrame的行索引不包含任何相关数据:

在这种情况下,我们可以传入ignore_index=True,结果就不会保留连接轴上的索引,而是产生一组新索引:



-END-

学习笔记26数据库的连接与操作

数据库的连接与操作

一、连接数据库

用Python连接MySQL数据库,使用的方法是Connect(),具体的参数同MySQL Workbench中的连接信息,具体如下图所示。

# 用Python 连接数据库

connect = pymysql.Connect(host="127.0.0.1",

                          port=3306,

                          user="mao",

                          password="123456",

                          database="pythontest",

                          charset="utf8")

二、建立游标执行SQL

操作SQL之前需要用到cursor()方法创建一个游标,然后通过该游标去处理SQL代码。

 上面的例子是创建一个自定义表“userinfo”,包含id、name、age和gender四个字段,运行完毕后可以看到在数据库中已经创建成功了。

 创建完table就可以执行插入数据的操作了。

这里需要注意的是:执行完插入代码之后,需要用到commit()方法提交之后才可以在数据库中被查询到。

日常处理中往往需要批量插入多条数据,这时候需要用到循环遍历去处理,每次循环运行一次insert语句,最后一次性提交。

tip:下例中的format(*)中的“*”意思是将元组中的元素解压出来。

 要是觉得上面的循环遍历方法比较繁琐,这里其实也有更为简便的方法,就是executemany()方法,一次性插入多条数据。

三、执行事务

事务机制可以确保数据的一致性。

事务应该具有以下四个属性:原子性、一致性、隔离性和持久性,这四个属性通常称之为ACID特性。

  • 原子性(atomicity):一个事务是一个不可分割的工作单位,事务中包括的各个操作,要么都做,要么都不做;
  • 一致性(consistency):事务必须是使数据库从一个一致性状态变到另一个一致性状态。一致性与原子性是密切相关的;
  • 隔离性(isolation):一个事务的执行不能被其他事务干扰,即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰;
  • 持久性(durability):持久性也称之为永久性(permanence),指的是一个事务一旦提交,它对数据库中数据的改变就应该是永久性的,接下来的其他操作或故障不应该对其有任何影响。

为此,引入了以下格式的代码。

try:      # 尝试运行下面的代码,可能正常运行,也可能报错

except:   # 如果上面的代码报错,则运行下面的代码

finally:   # 不管代码是否报错,下面的代码均会运行

比如上例中的插入操作,严格来说不是很严谨,我们就可以这样做改善,使其保持数据的一致性。

 

四、查询数据

cursor.fetchone()    # 逐条提取数据

cursor.fetchall()     # 提取所有数据

cursor.fetchmany(3)  # 提取查询到的前几条数据

这里面也是有指针的,提取完毕了就没有了。

 

【练习题】

读取文件“grade.txt“,将其数据存到MySQL数据库中,然后查询出数学成绩大于90分的学生清单。

 

以上是关于Python数据分析笔记#8.2.3 轴向连接的主要内容,如果未能解决你的问题,请参考以下文章

python数据分析多份csv文件轴向合并

Pandas 的轴向连接 concat

python访问mysql初试--菜鸟笔记

使用pandas进行数据预处理01

pandas学习(创建多层索引数据重塑与轴向旋转)

数据规整:聚合合并和重塑