介绍

很高兴认识你,我是 Zeal Co., Ltd. 的@hiroaki_yoshida。
我通常使用 AWS 和 Python 进行开发。
在从事开发的过程中,我想输出我在该领域学到的东西。

本文是上一篇 Python 的续篇熊猫我正在考虑写一个名为的库,我想解释一下数据处理的方法,同时将它与基本的 SQL 语句进行比较。

没看过之前的文章,点这里↓
关于 pandas,数据分析库

执行环境

蟒蛇版本:3.7.6
熊猫版本:1.0.1

什么是 SQL?

相信有些人可能会好奇我们这次比较的 SQL 是什么,所以我将做一个简单的解释。
SQL什么是 ”结构查询语言是的缩写日语是一种结构化查询语言。
从数据库(以下简称DB)中检索需要的数据时需要什么样的数据? SQL用于进行查询,例如
例如,如果您想从客户数据中获取 20 岁以上男性的数据,20岁以上的男性”是查询的内容。

SQL是处理数据时经常出现的一个词,所以我想你应该记住它。

数据准备

我将用下面的数据来解释。

明细表

不同的d 项目 shop_id 数量 日期
1 挖掘机 2 2 2022-09-09
2 垃圾车 1 3 2022-09-10
3 压路机 3 4 2022-09-11
4 挖掘机 2 5 2022-09-12

shop_info 表

不同的d 店铺名称 地位
1 东京分公司 2
2 名古屋分店 1
3 大阪分公司 3

状态表

不同的d 地位
1 开幕式
2 关闭
3 移动
4 关闭

选择

SELECT 语句是用于选择数据的语法。

对于 SQL

我将 shop_info 表中的数据更改为选择所有列时描述如下。

SELECT * FROM shop_info;

↓执行结果↓

pandasでデータ加工をおこなうには

如果要选择列描述如下。

SELECT shop_name FROM shop_info; --単一列の出力の場合
SELECT shop_name, id FROM shop_info; --複数列の出力の場合

↓执行结果↓
对于单列
pandasでデータ加工をおこなうには
对于多列
pandasでデータ加工をおこなうには

如果你想缩小线条描述如下。

SELECT shop_name FROM shop_info WHERE id = 1; --単一行の出力の場合
SELECT shop_name FROM shop_info where id = 1 or id = 2; --複数行の出力の場合

↓执行结果↓
用于单线输出
pandasでデータ加工をおこなうには
用于多行输出
pandasでデータ加工をおこなうには

大熊猫

用于选择所有列

import pandas as pd

shop_info = pd.read_csv(r'C:	ableshop_info.csv',index_col=None)

shop_info

↓执行结果↓
pandasでデータ加工をおこなうには

如果要选择列在df之后" "并描述您要输出的列。
如果您想列出多个,请将其写为列表。

import pandas as pd

shop_info = pd.read_csv(r'C:	ableshop_info.csv',index_col=None)

shop_info['shop_name'] #単一列の出力の場合
shop_info[['shop_name','id']] #複数列の出力の場合

↓执行结果↓
对于单列
pandasでデータ加工をおこなうには
对于多列
pandasでデータ加工をおこなうには

如果你想缩小线条也在df之后“”它将以描述内部条件的形式。
列出多个时“和”或者“或者”不是“&”什么时候“|”利用

import pandas as pd

shop_info = pd.read_csv(r'C:	ableshop_info.csv',index_col=None)

shop_info[shop_info['id'] == 1] #単一条件の場合
shop_info[(shop_info['id'] == 1) | (shop_info['id'] == 2)] #複数条件の場合

↓执行结果↓
单一条件
pandasでデータ加工をおこなうには

对于多个条件
pandasでデータ加工をおこなうには

使用上述描述,您可以从数据库中提取所需的数据。
接下来是加入。

加入

JOIN 字面意思是加入。
您可以使用 JOIN 组合表。
在这里,我们将介绍如何编写常用的 LEFT JOIN、RIGHT JOIN、INNER JOIN 和 FULL OUTER JOIN 的区别。

对于 SQL

对于左连接

SELECT *
FROM detail
LEFT JOIN shop_info
ON detail.shop_id = shop_info.id;

↓执行结果↓
pandasでデータ加工をおこなうには

右连接

SELECT *
FROM detail
RIGHT JOIN shop_info
ON detail.shop_id = shop_info.id;

↓执行结果↓
pandasでデータ加工をおこなうには

对于内部连接

向明细表和 shop_info 添加一条新记录,以便您可以看到 INNER JOIN 的移动。

明细表

不同的d 项目 shop_id 数量 日期
1 挖掘机 2 2 2022-09-09
2 垃圾车 1 3 2022-09-10
3 压路机 3 4 2022-09-11
4 挖掘机 2 5 2022-09-12
5 挖掘机 5 5 2022-09-15

shop_info 表

不同的d 店铺名称 地位
1 东京分公司 2
2 名古屋分店 1
3 大阪分公司 3
4 石川分店 2

在此状态下执行以下查询。

SELECT *
FROM detail
INNER JOIN shop_info
ON detail.shop_id = shop_info.id;

↓执行结果↓
pandasでデータ加工をおこなうには

对于完全外连接

同样,我们将使用之前用于 INNER JOIN 的同一个表。

SELECT *
FROM detail
FULL OUTER JOIN shop_info
ON detail.shop_id = shop_info.id;

↓执行结果↓
pandasでデータ加工をおこなうには

大熊猫

加入熊猫的时候,婚姻使用功能。
要传递的参数如下。

pd.merge(左テーブル, 右テーブル, left_on='左テーブルの結合キー', right_on='右テーブルの結合キー', how='結合方法')

如果关键字段同名,也可以这样写:

pd.merge(左テーブル, 右テーブル, on='結合キー', how='結合方法')

让我们来看看每个债券。

对于左连接

import pandas as pd

detail = pd.read_csv(r'C:	abledetail.csv',index_col=None)
shop_info = pd.read_csv(r'C:	ableshop_info.csv',index_col=None)

left_join_df = pd.merge(detail, shop_info, left_on='shop_id', right_on='id', how='left')
left_join_df

↓执行结果↓
pandasでデータ加工をおこなうには

右连接

import pandas as pd

detail = pd.read_csv(r'C:	abledetail.csv',index_col=None)
shop_info = pd.read_csv(r'C:	ableshop_info.csv',index_col=None)

right_join_df = pd.merge(detail, shop_info, left_on='shop_id', right_on='id', how='right')
right_join_df

↓执行结果↓
pandasでデータ加工をおこなうには

对于内部连接

import pandas as pd

ddetail = pd.read_csv(r'C:	abledetail.csv',index_col=None)
shop_info = pd.read_csv(r'C:	ableshop_info.csv',index_col=None)

#DataFrameに追加する行を作っています
detail_addd = pd.DataFrame([[5,'ショベルカー',5,5,'2022/9/15']],columns=['id','item','shop_id','amount','date'])
sho_info_add = pd.DataFrame([[4,'石川',2]],columns=['id','shop_name','status'])

#行を追加しています
detail = pd.concat([detail,detail_addd])
shop_info = pd.concat([shop_info,sho_info_add])

inner_join_df = pd.merge(detail, shop_info, left_on='shop_id', right_on='id', how='inner')
inner_join_df

↓执行结果↓
pandasでデータ加工をおこなうには

对于完全外连接

import pandas as pd

detail = pd.read_csv(r'C:	abledetail.csv',index_col=None)
shop_info = pd.read_csv(r'C:	ableshop_info.csv',index_col=None)

#DataFrameに追加する行を作っています
detail_addd = pd.DataFrame([[5,'ショベルカー',5,5,'2022/9/15']],columns=['id','item','shop_id','amount','date'])
sho_info_add = pd.DataFrame([[4,'石川',2]],columns=['id','shop_name','status'])

#行を追加しています
detail = pd.concat([detail,detail_addd])
shop_info = pd.concat([shop_info,sho_info_add])

outer_join_df = pd.merge(detail, shop_info, left_on='shop_id', right_on='id', how='outer')
outer_join_df

↓执行结果↓
pandasでデータ加工をおこなうには

概括

以上就是写基本SQL和pandas的区别。
使用 pandas 的好处是可以使用其他 Python 库,支持更复杂的数据处理和分析这是一个问题。

作为使用 pandas 的示例,您可以将其用于 S3 上的文件的初级处理,这是一项 AWS 服务,或者您可以通过组合库将 DataFrame 直接插入 DB。
当然,您也可以将 DB 数据存储在 DataFlame 中。
也可以只使用 Pandas 创建处理而不使用 SQL。

这是一个非常深的库,所以请尝试使用 pandas。


原创声明:本文系作者授权爱码网发表,未经许可,不得转载;

原文地址:https://www.likecs.com/show-308628565.html

相关文章:

  • 2021-07-18
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-11-30
猜你喜欢
  • 2021-11-23
  • 2021-07-30
  • 2021-08-20
  • 2022-12-23
  • 2022-12-23
  • 2021-06-01
  • 2021-07-11
相关资源
相似解决方案