首页 >> 电商 >> 统计分析哪家强?选Pandas还是选SQL

统计分析哪家强?选Pandas还是选SQL

2024-12-15 电商

pd.read_sql( "SELECT name FROM sweets WHERE weight = '300'", connector)

output

我们再来看一个相值得注意的案例,审核显露效率正数100的佳肴重新命名,code如下

# Pandas

df_sweets[ 'cost'] = pd.to_numeric(df_sweets[ 'cost'])

df_sweets[df_sweets.cost == 100].name

# SQL

pd.read_sql( "SELECT name FROM sweets WHERE cost = '100'", connector)

output

Milty

针对文本型的目录,我们也可以实质性来审核显露我们只想的目录,code如下

# Pandas

df_sweets[df_sweets.name.str.startswith( 'M')].name

# SQL

pd.read_sql( "SELECT name FROM sweets WHERE name LIKE 'M%'", connector)

output

Milty

Mikus

Mivi

Mi

Misa

Maltik

Macus

当然在 SQL 关键字总括的通配符, % 坚称匹配任意数量的字母,而 _ 坚称匹配任意一个字母,具体情况的区别如下

# SQL

pd.read_sql( "SELECT name FROM sweets WHERE name LIKE 'M%'", connector)

output

pd.read_sql( "SELECT name FROM sweets WHERE name LIKE 'M_'", connector)

output

复杂必需的审核

上去我们来看一下多个必需的目录审核,例如我们只想重量正数300并且效率价压制在150的佳肴重新命名,code如下

# Pandas

df_sweets[(df_sweets.cost == 150) & (df_sweets.weight == 300)].name

# SQL

pd.read_sql( "SELECT name FROM sweets WHERE cost = '150' AND weight = '300'", connector)

output

Mikus

或者是审核显露效率价压制在200-300彼此之间的佳肴重新命名,code如下

# Pandas

df_sweets[df_sweets[ 'cost'].between(200, 300)].name

# SQL

pd.read_sql( "SELECT name FROM sweets WHERE cost BETWEEN '200' AND '300'", connector)

output

要是牵涉到排序的原因,在 SQL 总括应用于的是 ORDER BY 关键字,code如下

# SQL

pd.read_sql( "SELECT name FROM sweets ORDER BY id DESC", connector)

output

而在 Pandas 模块化总括线程的则是 sort_values 工具,code如下

# Pandas

df_sweets.sort_values(by= 'id', ascending=False).name

output

11 Macus

10 Maltik

9 Sor

8 Co

7 Soviet

6 Soucus

5 Soltic

4 Misa

3 Mi

2 Mivi

1 Mikus

0 Milty

Name: name, dtype: object

审核显露效率价最高的佳肴重新命名,在 Pandas 模块化总括的code是这个仿佛的

df_sweets[df_sweets.cost == df_sweets.cost.max].name

output

11 Macus

Name: name, dtype: object

而在SQL关键字总括的code,我们必需首先审核显露效率最高的是哪个佳肴,然后再展开实质性的处理,code如下

pd.read_sql( "SELECT name FROM sweets WHERE cost = (SELECT MAX(cost) FROM sweets)", connector)

我们只想看一下是配送的小城镇具体情况是有哪几个,在 Pandas 模块化总括的code是这个仿佛的,通过线程 unique 工具

df_storehouses[ 'city'].unique

output

array([ 'Moscow', 'Saint-petersburg', 'Yekaterinburg'], dtype=object)

而在 SQL 关键字总括则互换的是 DISTINCT 网址

pd.read_sql( "SELECT DISTINCT city FROM storehouses", connector)

目录预选统计数据

在 Pandas 模块化总括预选统计数据一般线程的都是 groupby 工具,然后上去再加进一个统计数据线性,例如是求分概率分布的 mean 工具,或者是讲和的 sum 工具等等,例如我们只想查找显露在不止一个小城镇装配制品佳肴的重新命名,code如下

df_manufacturers.groupby( 'name').name.count[df_manufacturers.groupby( 'name').name.count> 1]

output

name

Mishan 2

Name: name, dtype: int64

而在 SQL 关键字总括的预选也是 GROUP BY ,上去要是还有其他必需的话,用的是 HAVING 网址,code如下

pd.read_sql( """

SELECT name, COUNT(name) as 'name_count' FROM manufacturers

GROUP BY name HAVING COUNT(name)> 1

" "", connector)

目录分拆

当两个目录集或者是多个目录集必需展开分拆的时候,在 Pandas 模块化总括,我们可以线程 merge 工具,例如我们将 df_sweets 目录集和 df_sweets_types 两目录集展开分拆,其中所 df_sweets 总括的 sweets_types_id 是该表的外键

df_sweets.head

output

df_sweets_types.head

output

具体情况目录分拆的code如下所示

df_sweets_1 = df_sweets.merge(df_sweets_types, left_on= 'sweets_types_id', right_on= 'id')

output

我们再实质性的审核显露巧克力菜肴的佳肴,code如下

df_sweets_1.query( 'name_y == "chocolate"').name_x

output

10 Misa

11 Sor

Name: name_x, dtype: object

而 SQL 关键字则变得比较单纯了,code如下

# SQL

pd.read_sql( """

SELECT sweets.name FROM sweets

JOIN sweets_types ON sweets.sweets_types_id = sweets_types.id

WHERE sweets_types.name = 'chocolate';

" "", connector)

output

目录集的在结构上

我们来检视一下目录集的在结构上,在 Pandas 模块化总括直接检视 shape 物件即可,code如下

df_sweets.shape

output

(12, 10)

而在 SQL 关键字总括,则是

pd.read_sql( "SELECT count(*) FROM sweets;", connector)

output

点这里👇关注我,记得标星哦~

CDA课程咨询

健胃消食片和乳酸菌素片的区别
干燥综合症用海露滴眼液能缓解吗
金奥康奥美拉唑一次吃几粒
老年痴呆能治愈吗
积食消化不良怎么办
视疲劳怎么缓解
如何让脸色红润有光泽
用血糖仪测血糖准吗
自己家用的血糖仪选什么好
英太青凝胶对腱鞘炎有用吗
友情链接