首先建立两个表,年龄国籍表和性别表,两者可以通过 name 字段进行关联。
t1 数据如下:
t2 数据如下:
用 SQL 来实现是:
而在 pandas 中,join 被称为 merge。其中 on 表示两个表用于关联的键。how 表示 join 的方式,支持 {‘left’, ‘right’, ‘outer’, ‘inner’} 四个选项,分别对应 SQL 的 left join、right join、outer join、inner join。
能匹配到 name 的就会补充上 gender,Kim 在性别表差不到数据,因此填充来一个 NaN 表示空值。
遇到两个表需要关联的字段不同名,在 SQL 中只需要修改 on 后面的条件即可。
假如把 t1 的 name 换一个名字,那么就不能直接用 on='name' 来进行关联了。先使用 rename 方法更改列名,然后再次左联。
输出:
新增一个年龄表:
表内容:
如果不对 age 两个同名字段进行处理,pandas 会自动添加后缀,一个是 _x,另一个是 _y:
如果想要自定义后缀,那么可以:
于是上表的 age_x 和 age_y 就变成 age_left 和 age_right 了。
pandas 的 join 和 SQL 的 join 不太一样。默认行为是直接根据 index 进行关联。你可以理解为直接把两个表左右拼接在一起。
可以看到是直接根据 index 序号进行左右拼接。
如果存在名字相同的列则需要指明后缀,否则会报 ValueError。
将两个表上下拼接起来的 *** 作。
结果如下:
注意,该 *** 作不会做任何去重,只是单纯的拼接而已。
例如要求男性和女性两组的平均年龄。先关联 t1 和 t2 然后 group by 即可:
如果用 SQL 实现:
同时查看最小值和最大值:
其中 ['age'] 表示只输出 age 字段。agg 表示聚合,对于内置函数需要用引号,这里分别计算两个组的最小值和最大值。
SQL版本:
这里是体现 Python 比 SQL 强大的地方了。你可以写自定义的聚合函数。比如我要计算每组的奇数个数。注意,由于是聚合函数,因此传入的参数是 Series 对象,即一列数据,因此要用对应的方法。用数学语言来说,这里处理的是向量,而不是标量。
s % 2 是对输入的向量的每一个元素进行除2求余数,然后用内置聚合函数 sum 加总,由于奇数的余数是1,而偶数的余数是0,因此这个求和数就是奇数的个数。传参到 agg 方法只需要把 is_odd 函数放入列表即可,由于不是内置函数,因此不需要加引号。
暂时写到这里,后面如果用到其他地方再继续补充。
不可以。经查阅pandas数据库可知,pandas只能执行相同库的musql表。主要使用python中集成的SQLAlchemy、PyMySQL的两个库来向数据库中新增行记录。
pandas是基于NumPy的一种工具,该工具是为了解决数据分析任务而创建的。Pandas纳入了大量库和一些标准的数据模型,提供了高效地 *** 作大型数据集所需的工具。
使用pandas的to_sql方法写入到SQL数据库中。可以使用pandas的to_sql方法将数据框中的数据写入到SQL数据库中。如果要覆盖原有数据,可以在to_sql方法中使用if_exists参数并将其设置为'replace'。
数据(data)是事实或观察的结果,是对客观事物的逻辑归纳,是用于表示客观事物的未经加工的的原始素材。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)