介绍
很高兴认识你,我是 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;
↓执行结果↓
如果要选择列描述如下。
SELECT shop_name FROM shop_info; --単一列の出力の場合
SELECT shop_name, id FROM shop_info; --複数列の出力の場合
↓执行结果↓
对于单列
对于多列
如果你想缩小线条描述如下。
SELECT shop_name FROM shop_info WHERE id = 1; --単一行の出力の場合
SELECT shop_name FROM shop_info where id = 1 or id = 2; --複数行の出力の場合
↓执行结果↓
用于单线输出
用于多行输出
大熊猫
用于选择所有列
import pandas as pd
shop_info = pd.read_csv(r'C: ableshop_info.csv',index_col=None)
shop_info
↓执行结果↓
如果要选择列在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']] #複数列の出力の場合
↓执行结果↓
对于单列
对于多列
如果你想缩小线条也在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)] #複数条件の場合
↓执行结果↓
单一条件
对于多个条件
使用上述描述,您可以从数据库中提取所需的数据。
接下来是加入。
加入
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;
↓执行结果↓
右连接
SELECT *
FROM detail
RIGHT JOIN shop_info
ON detail.shop_id = shop_info.id;
↓执行结果↓
对于内部连接
向明细表和 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;
↓执行结果↓
对于完全外连接
同样,我们将使用之前用于 INNER JOIN 的同一个表。
SELECT *
FROM detail
FULL OUTER JOIN shop_info
ON detail.shop_id = shop_info.id;
↓执行结果↓
大熊猫
加入熊猫的时候,婚姻使用功能。
要传递的参数如下。
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
↓执行结果↓
右连接
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
↓执行结果↓
对于内部连接
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
↓执行结果↓
对于完全外连接
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
↓执行结果↓
概括
以上就是写基本SQL和pandas的区别。
使用 pandas 的好处是可以使用其他 Python 库,支持更复杂的数据处理和分析这是一个问题。
作为使用 pandas 的示例,您可以将其用于 S3 上的文件的初级处理,这是一项 AWS 服务,或者您可以通过组合库将 DataFrame 直接插入 DB。
当然,您也可以将 DB 数据存储在 DataFlame 中。
也可以只使用 Pandas 创建处理而不使用 SQL。
这是一个非常深的库,所以请尝试使用 pandas。
原创声明:本文系作者授权爱码网发表,未经许可,不得转载;
原文地址:https://www.likecs.com/show-308628565.html