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 轴向连接的主要内容,如果未能解决你的问题,请参考以下文章