数据分析大作战,SQL V.S. Python,来看看这些考题你都会吗 ⛵

???? 作者:韩信子@ShowMeAI
???? 数据分析实战系列:https://www.showmeai.tech/tutorials/40
???? 本文地址:https://www.showmeai.tech/article-detail/314
???? 声明:版权所有,转载请联系平台与作者并注明出处
???? 收藏ShowMeAI查看更多精彩内容

对于数据分析师、数据科学家等数据从业人员来说,我们有很多的工具可以帮助我们探索与分析数据,发现数据之下的分布与模式规律,最常见和实用的技能是使用 SQL 和 Python 进行数据分析。SQL 和 Python 进行数据分析各有优势:

  • SQL 支持很多数据库(如 MS SQL、MySQL、SQLite、PostgreSQL等),可以很方便跨数据库使用,而且无需编程语言基础,可以快速上手。
  • Python 数据分析(这里指的使用 Pandas 工具库)比较灵活,可以进行数据清理、清洗、格式变化、复杂计算等,还支持很好的可视化,并能无缝衔接后续进一步深入挖掘与建模等流程。

但在大部分需求与功能上,SQL 和 Pandas 都是可以完成的,在本篇内容中,ShowMeAI就帮大家把所有的核心数据分析功能梳理处理,并用 SQL 和 Pandas 进行实现,我们可以轻松对比学习。

对于 Python 数据分析和 SQL 更详尽的内容,欢迎大家查阅ShowMeAI制作的系列教程和速查表:

  • 图解数据分析:从入门到精通系列教程

  • 数据科学工具库速查表 | Pandas 速查表

  • 编程语言速查表 | SQL 速查表

???? 场景&数据集

我们这里使用到的是 ???? mtcars数据集 ,它是一份1974年摩托风尚杂志的数据(1974 Motor Trend Magazine),你可以在 这里 下载到csv文本格式的文件,能够导入数据库的db格式文件可以在 这里 下载。

???? 实战数据集下载(百度网盘) :公众号『ShowMeAI研究中心』回复『 实战 』,或者点击 这里 获取本文 [21]SQL与Pandas数据分析实操大全 『 mtcars数据集

ShowMeAI官方GitHub :https://github.com/ShowMeAI-Hub

我们先用python对数据进行读取,读取为pandas dataframe格式。

 import numpy as np
import pandas as pd


mtcars_df = pd.read_csv("mtcars.csv")

下面我们梳理一下数据分析中会使用到的核心技能,并对比SQL和Pandas分别是如何实现这些功能的。

???? 数据选择

有时我们需要返回数据集的列(字段)子集。 例如,我们要从

mtcars
数据集中选择 Miles/(US) 加仑 (
mpg
), 气缸数(
cyl
) 和总马力 (
hp
)这几个字段对应的数据。

???? SQL

我们使用标准的

SELECT
语句就可以完成数据选择。

 SELECT 
mpg,
disp,
cyl
FROM mtcars


## mpg disp cyl
## 1 21.0 160.0 6
## 2 21.0 160.0 6
## 3 22.8 108.0 4
.
.
.
## 30 19.7 145.0 6
## 31 15.0 301.0 8
## 32 21.4 121.0 4

???? Pandas

我们直接把字段子集的列表给到 dataframe 即可取出对应的数据子集。

 mtcars_df[['mpg', 'disp', 'cyl']]
## mpg disp cyl
## 0 21.0 160.0 6
## 1 21.0 160.0 6
## 2 22.8 108.0 4
.
.
.
## 29 19.7 145.0 6
## 30 15.0 301.0 8
## 31 21.4 121.0 4

???? 限制

有时候我们希望提前查看一下数据集,但是在总体数据集很大的情况下,我们不能查看所有数据,我们会做一个限制,比如查看数据的前 5 行对表的结构和数据类型进行一个速览。

???? SQL

SQL有

LIMIT n
语法可以限制与返回数据前
n
行。

 SELECT * 
FROM mtcars
LIMIT 5;


## mpg cyl disp hp drat wt qsec vs am gear carb model
## 1 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4 Mazda RX4
## 2 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4 Mazda RX4 Wag
## 3 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1 Datsun 710
## 4 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1 Hornet 4 Drive
## 5 18.7 8 360 175 3.15 3.440 17.02 0 0 3 2 Hornet Sportabout

???? Pandas

Pandas通过

df.head(n = 5)
的参数传入来返回头部
5

 mtcars_df.head(n = 5)
## mpg cyl disp hp drat ... vs am gear carb model
## 0 21.0 6 160.0 110 3.90 ... 0 1 4 4 Mazda RX4
## 1 21.0 6 160.0 110 3.90 ... 0 1 4 4 Mazda RX4 Wag
## 2 22.8 4 108.0 93 3.85 ... 1 1 4 1 Datsun 710
## 3 21.4 6 258.0 110 3.08 ... 1 0 3 1 Hornet 4 Drive
## 4 18.7 8 360.0 175 3.15 ... 0 0 3 2 Hornet Sportabout
##
## [5 rows x 12 columns]

???? 统计计数

如果我们要对数据进行统计计数,SQL 和 Pandas 的实现方式也不太一样。

???? SQL

SQL通过

count(*)
语法返回数据集的计数(例如下面是总行数)。

 SELECT COUNT(*) 
FROM
mtcars LIMIT 5;

## COUNT(*)
## 1 32

???? Pandas

Pandas dataframe 有一个属性

shape
,它返回数据集中的行数和列数。

 nrows, ncols = mtcars_df.shape
print("Number of Rows: ", nrows)
## Number of Rows: 32

???? 排序

在 SQL 和 Pandas 中,我们可以根据一列或多列的值对数据进行升序或降序排列。

???? SQL

SQL通过

ORDER BY
来对数据进行排序,默认升序。

 SELECT * 
FROM mtcars
ORDER BY mpg
LIMIT 5;

## mpg cyl disp hp drat wt qsec vs am gear carb model
## 1 10.4 8 472 205 2.93 5.250 17.98 0 0 3 4 Cadillac Fleetwood
## 2 10.4 8 460 215 3.00 5.424 17.82 0 0 3 4 Lincoln Continental
## 3 13.3 8 350 245 3.73 3.840 15.41 0 0 3 4 Camaro Z28
## 4 14.3 8 360 245 3.21 3.570 15.84 0 0 3 4 Duster 360
## 5 14.7 8 440 230 3.23 5.345 17.42 0 0 3 4 Chrysler Imperial

我们也可以指定降序排列(

DESC
)。

 SELECT * 
FROM mtcars
ORDER BY mpg DESC
LIMIT 5;

## mpg cyl disp hp drat wt qsec vs am gear carb model
## 1 33.9 4 71.1 65 4.22 1.835 19.90 1 1 4 1 Toyota Corolla
## 2 32.4 4 78.7 66 4.08 2.200 19.47 1 1 4 1 Fiat 128
## 3 30.4 4 75.7 52 4.93 1.615 18.52 1 1 4 2 Honda Civic
## 4 30.4 4 95.1 113 3.77 1.513 16.90 1 1 5 2 Lotus Europa
## 5 27.3 4 79.0 66 4.08 1.935 18.90 1 1 4 1 Fiat X1-9

我们也可以同时指定按照某些列升序,某些列降序进行排序,例如下面我们按照

mpg
升序和
model
降序对数据排列。

 SELECT * 
FROM mtcars
ORDER BY mpg ASC, model DESC
LIMIT 5;


## mpg cyl disp hp drat wt qsec vs am gear carb model
## 1 10.4 8 460 215 3.00 5.424 17.82 0 0 3 4 Lincoln Continental
## 2 10.4 8 472 205 2.93 5.250 17.98 0 0 3 4 Cadillac Fleetwood
## 3 13.3 8 350 245 3.73 3.840 15.41 0 0 3 4 Camaro Z28
## 4 14.3 8 360 245 3.21 3.570 15.84 0 0 3 4 Duster 360
## 5 14.7 8 440 230 3.23 5.345 17.42 0 0 3 4 Chrysler Imperial

???? Pandas

Pandas中的

sort_values
函数可以完成排序。

 mtcars_df.sort_values(by = 'mpg').head(n = 5)
## mpg cyl disp hp drat ... vs am gear carb model
## 15 10.4 8 460.0 215 3.00 ... 0 0 3 4 Lincoln Continental
## 14 10.4 8 472.0 205 2.93 ... 0 0 3 4 Cadillac Fleetwood
## 23 13.3 8 350.0 245 3.73 ... 0 0 3 4 Camaro Z28
## 6 14.3 8 360.0 245 3.21 ... 0 0 3 4 Duster 360
## 16 14.7 8 440.0 230 3.23 ... 0 0 3 4 Chrysler Imperial
##
## [5 rows x 12 columns]

我们可以在

sort_values
函数中指定排序字段和方式。

 mtcars_df.sort_values(by = 'mpg', ascending=False).head(n = 5)
## mpg cyl disp hp drat ... vs am gear carb model
## 19 33.9 4 71.1 65 4.22 ... 1 1 4 1 Toyota Corolla
## 17 32.4 4 78.7 66 4.08 ... 1 1 4 1 Fiat 128
## 27 30.4 4 95.1 113 3.77 ... 1 1 5 2 Lotus Europa
## 18 30.4 4 75.7 52 4.93 ... 1 1 4 2 Honda Civic
## 25 27.3 4 79.0 66 4.08 ... 1 1 4 1 Fiat X1-9
##
## [5 rows x 12 columns]

当我们要对多个字段排序并指定不同的规则时,只要在

sort_values
中传入对应的字段和排序规则列表即可。

 mtcars_df.sort_values(by = ['mpg', 'model'], ascending=[True, False]).head(n = 5)
## mpg cyl disp hp drat ... vs am gear carb model
## 15 10.4 8 460.0 215 3.00 ... 0 0 3 4 Lincoln Continental
## 14 10.4 8 472.0 205 2.93 ... 0 0 3 4 Cadillac Fleetwood
## 23 13.3 8 350.0 245 3.73 ... 0 0 3 4 Camaro Z28
## 6 14.3 8 360.0 245 3.21 ... 0 0 3 4 Duster 360
## 16 14.7 8 440.0 230 3.23 ... 0 0 3 4 Chrysler Imperial
##
## [5 rows x 12 columns]

???? 新字段生成

假如我们要基于目前已有字段

mpg
wt
创建两个新列 kg-per-gallon
kpl
wt_kg
,计算后保留小数点后两位,那 SQL 和 Pandas 的计算方式分别如下:

???? SQL

我们通过

SELECT
可以直接构建新的字段与重命名,SQL 中也支持用
ROUND
函数对数值精度进行控制。

 SELECT ROUND(mpg*1.60934, 2) AS kpg,
ROUND(wt*1000*0.453592, 2) AS wt_kg
FROM mtcars LIMIT 5;

## kpg wt_kg
## 1 33.80 1188.41
## 2 33.80 1304.08
## 3 36.69 1052.33
## 4 34.44 1458.30
## 5 30.09 1560.36

???? Pandas

Pandas 创建新字段也非常简单,对于数值进行精度控制需要借助 numpy 和 round 函数。

 mtcars_df['kpg'] = np.round(mtcars_df['mpg']*1.60934, 2)
mtcars_df['wt_kg'] = np.round(mtcars_df['wt']*1000*0.453592, 2)
mtcars_df[['kpg', 'wt_kg']].head(n = 5)

## kpg wt_kg
## 0 33.80 1188.41
## 1 33.80 1304.08
## 2 36.69 1052.33
## 3 34.44 1458.30
## 4 30.09 1560.36

???? 数据选择

我们经常需要对数据进行条件选择,SQL 中会通过

WHERE
语句来进行条件选择,而在 Pandas 中我们可以直接在 dataframe 后添加单一或组合条件来进行数据选择。具体示例如下:

???? SQL

从 mtcars 数据集中选择档位为4(

gear
为4)的汽车如下

 SELECT * 
FROM mtcars
WHERE gear = 4;

## mpg cyl disp hp drat wt qsec vs am gear carb model
## 1 21.0 6 160.0 110 3.90 2.620 16.46 0 1 4 4 Mazda RX4
## 2 21.0 6 160.0 110 3.90 2.875 17.02 0 1 4 4 Mazda RX4 Wag
## 3 22.8 4 108.0 93 3.85 2.320 18.61 1 1 4 1 Datsun 710
## 4 24.4 4 146.7 62 3.69 3.190 20.00 1 0 4 2 Merc 240D
## 5 22.8 4 140.8 95 3.92 3.150 22.90 1 0 4 2 Merc 230
## 6 19.2 6 167.6 123 3.92 3.440 18.30 1 0 4 4 Merc 280
## 7 17.8 6 167.6 123 3.92 3.440 18.90 1 0 4 4 Merc 280C
## 8 32.4 4 78.7 66 4.08 2.200 19.47 1 1 4 1 Fiat 128
## 9 30.4 4 75.7 52 4.93 1.615 18.52 1 1 4 2 Honda Civic
## 10 33.9 4 71.1 65 4.22 1.835 19.90 1 1 4 1 Toyota Corolla
## 11 27.3 4 79.0 66 4.08 1.935 18.90 1 1 4 1 Fiat X1-9
## 12 21.4 4 121.0 109 4.11 2.780 18.60 1 1 4 2 Volvo 142E

如果我们需要使用组合条件,比如选择

gear
为4以及气缸数
cyl
小于或等于 6的数据,那在where 语句中我们可以用
AND
等进行条件组合:

 SELECT * 
FROM mtcars
WHERE gear = 4 AND cyl <= 6;

## mpg cyl disp hp drat wt qsec vs am gear carb model
## 1 21.0 6 160.0 110 3.90 2.620 16.46 0 1 4 4 Mazda RX4
## 2 21.0 6 160.0 110 3.90 2.875 17.02 0 1 4 4 Mazda RX4 Wag
## 3 22.8 4 108.0 93 3.85 2.320 18.61 1 1 4 1 Datsun 710
## 4 24.4 4 146.7 62 3.69 3.190 20.00 1 0 4 2 Merc 240D
## 5 22.8 4 140.8 95 3.92 3.150 22.90 1 0 4 2 Merc 230
## 6 19.2 6 167.6 123 3.92 3.440 18.30 1 0 4 4 Merc 280
## 7 17.8 6 167.6 123 3.92 3.440 18.90 1 0 4 4 Merc 280C
## 8 32.4 4 78.7 66 4.08 2.200 19.47 1 1 4 1 Fiat 128
## 9 30.4 4 75.7 52 4.93 1.615 18.52 1 1 4 2 Honda Civic
## 10 33.9 4 71.1 65 4.22 1.835 19.90 1 1 4 1 Toyota Corolla
## 11 27.3 4 79.0 66 4.08 1.935 18.90 1 1 4 1 Fiat X1-9
## 12 21.4 4 121.0 109 4.11 2.780 18.60 1 1 4 2 Volvo 142E

如果上面两个条件不是且关系,而是满足任何一个都可以,那我们把条件组合方式换成

OR

 SELECT * 
FROM mtcars
WHERE gear = 4 OR cyl <= 6;

## mpg cyl disp hp drat wt qsec vs am gear carb model
## 1 21.0 6 160.0 110 3.90 2.620 16.46 0 1 4 4 Mazda RX4
## 2 21.0 6 160.0 110 3.90 2.875 17.02 0 1 4 4 Mazda RX4 Wag
## 3 22.8 4 108.0 93 3.85 2.320 18.61 1 1 4 1 Datsun 710
## 4 21.4 6 258.0 110 3.08 3.215 19.44 1 0 3 1 Hornet 4 Drive
## 5 18.1 6 225.0 105 2.76 3.460 20.22 1 0 3 1 Valiant
## 6 24.4 4 146.7 62 3.69 3.190 20.00 1 0 4 2 Merc 240D
## 7 22.8 4 140.8 95 3.92 3.150 22.90 1 0 4 2 Merc 230
## 8 19.2 6 167.6 123 3.92 3.440 18.30 1 0 4 4 Merc 280
## 9 17.8 6 167.6 123 3.92 3.440 18.90 1 0 4 4 Merc 280C
## 10 32.4 4 78.7 66 4.08 2.200 19.47 1 1 4 1 Fiat 128
## 11 30.4 4 75.7 52 4.93 1.615 18.52 1 1 4 2 Honda Civic
## 12 33.9 4 71.1 65 4.22 1.835 19.90 1 1 4 1 Toyota Corolla
## 13 21.5 4 120.1 97 3.70 2.465 20.01 1 0 3 1 Toyota Corona
## 14 27.3 4 79.0 66 4.08 1.935 18.90 1 1 4 1 Fiat X1-9
## 15 26.0 4 120.3 91 4.43 2.140 16.70 0 1 5 2 Porsche 914-2
## 16 30.4 4 95.1 113 3.77 1.513 16.90 1 1 5 2 Lotus Europa
## 17 19.7 6 145.0 175 3.62 2.770 15.50 0 1 5 6 Ferrari Dino
## 18 21.4 4 121.0 109 4.11 2.780 18.60 1 1 4 2 Volvo 142E

???? Pandas

mtcars
中返回
gear == 4
的数据

 mtcars_df[mtcars_df.gear == 4]
## mpg cyl disp hp drat ... gear carb model kpg wt_kg
## 0 21.0 6 160.0 110 3.90 ... 4 4 Mazda RX4 33.80 1188.41
## 1 21.0 6 160.0 110 3.90 ... 4 4 Mazda RX4 Wag 33.80 1304.08
## 2 22.8 4 108.0 93 3.85 ... 4 1 Datsun 710 36.69 1052.33
## 7 24.4 4 146.7 62 3.69 ... 4 2 Merc 240D 39.27 1446.96
## 8 22.8 4 140.8 95 3.92 ... 4 2 Merc 230 36.69 1428.81
## 9 19.2 6 167.6 123 3.92 ... 4 4 Merc 280 30.90 1560.36
## 10 17.8 6 167.6 123 3.92 ... 4 4 Merc 280C 28.65 1560.36
## 17 32.4 4 78.7 66 4.08 ... 4 1 Fiat 128 52.14 997.90
## 18 30.4 4 75.7 52 4.93 ... 4 2 Honda Civic 48.92 732.55
## 19 33.9 4 71.1 65 4.22 ... 4 1 Toyota Corolla 54.56 832.34
## 25 27.3 4 79.0 66 4.08 ... 4 1 Fiat X1-9 43.93 877.70
## 31 21.4 4 121.0 109 4.11 ... 4 2 Volvo 142E 34.44 1260.99
##
## [12 rows x 14 columns]

如果要求

gear == 4
以及
cyl &lt;= 6
,那 Pandas 写法如下:

 mtcars_df[(mtcars_df.gear == 4) & (mtcars_df.cyl <= 6)]
## mpg cyl disp hp drat ... gear carb model kpg wt_kg
## 0 21.0 6 160.0 110 3.90 ... 4 4 Mazda RX4 33.80 1188.41
## 1 21.0 6 160.0 110 3.90 ... 4 4 Mazda RX4 Wag 33.80 1304.08
## 2 22.8 4 108.0 93 3.85 ... 4 1 Datsun 710 36.69 1052.33
## 7 24.4 4 146.7 62 3.69 ... 4 2 Merc 240D 39.27 1446.96
## 8 22.8 4 140.8 95 3.92 ... 4 2 Merc 230 36.69 1428.81
## 9 19.2 6 167.6 123 3.92 ... 4 4 Merc 280 30.90 1560.36
## 10 17.8 6 167.6 123 3.92 ... 4 4 Merc 280C 28.65 1560.36
## 17 32.4 4 78.7 66 4.08 ... 4 1 Fiat 128 52.14 997.90
## 18 30.4 4 75.7 52 4.93 ... 4 2 Honda Civic 48.92 732.55
## 19 33.9 4 71.1 65 4.22 ... 4 1 Toyota Corolla 54.56 832.34
## 25 27.3 4 79.0 66 4.08 ... 4 1 Fiat X1-9 43.93 877.70
## 31 21.4 4 121.0 109 4.11 ... 4 2 Volvo 142E 34.44 1260.99
##
## [12 rows x 14 columns]

如果要求

gear == 4
cyl &lt;= 6
,那 Pandas 写法如下:

 mtcars_df[(mtcars_df.gear == 4) | (mtcars_df.cyl <= 6)]
## mpg cyl disp hp drat ... gear carb model kpg wt_kg
## 0 21.0 6 160.0 110 3.90 ... 4 4 Mazda RX4 33.80 1188.41
## 1 21.0 6 160.0 110 3.90 ... 4 4 Mazda RX4 Wag 33.80 1304.08
## 2 22.8 4 108.0 93 3.85 ... 4 1 Datsun 710 36.69 1052.33
## 3 21.4 6 258.0 110 3.08 ... 3 1 Hornet 4 Drive 34.44 1458.30
## 5 18.1 6 225.0 105 2.76 ... 3 1 Valiant 29.13 1569.43
## 7 24.4 4 146.7 62 3.69 ... 4 2 Merc 240D 39.27 1446.96
## 8 22.8 4 140.8 95 3.92 ... 4 2 Merc 230 36.69 1428.81
## 9 19.2 6 167.6 123 3.92 ... 4 4 Merc 280 30.90 1560.36
## 10 17.8 6 167.6 123 3.92 ... 4 4 Merc 280C 28.65 1560.36
## 17 32.4 4 78.7 66 4.08 ... 4 1 Fiat 128 52.14 997.90
## 18 30.4 4 75.7 52 4.93 ... 4 2 Honda Civic 48.92 732.55
## 19 33.9 4 71.1 65 4.22 ... 4 1 Toyota Corolla 54.56 832.34
## 20 21.5 4 120.1 97 3.70 ... 3 1 Toyota Corona 34.60 1118.10
## 25 27.3 4 79.0 66 4.08 ... 4 1 Fiat X1-9 43.93 877.70
## 26 26.0 4 120.3 91 4.43 ... 5 2 Porsche 914-2 41.84 970.69
## 27 30.4 4 95.1 113 3.77 ... 5 2 Lotus Europa 48.92 686.28
## 29 19.7 6 145.0 175 3.62 ... 5 6 Ferrari Dino 31.70 1256.45
## 31 21.4 4 121.0 109 4.11 ... 4 2 Volvo 142E 34.44 1260.99
##
## [18 rows x 14 columns]

???? 数据分组

我们对数据进行分析,分组和按组统计是最重要的核心功能,我们来看看 SQL 和 Pandas 都分别如何对数据分组:

???? SQL

在 SQL 中可以借助于

GROUP BY
语句对数据进行分组,例如下面是我们基于 gear 字段进行数据分组。

 SELECT 
gear,
COUNT(*)
FROM mtcars
GROUP BY gear;

## gear COUNT(*)
## 1 3 15
## 2 4 12
## 3 5 5

Pandas 中可以直接对 dataframe 使用 groupby 函数进行数据分组,如下:

???? Pandas

 mtcars_df.groupby("gear").count()['model']
## gear
## 3 15
## 4 12
## 5 5
## Name: model, dtype: int64

???? 统计均值

非常常见的统计任务之一是对数据进行均值统计,对应的 SQL 和 Pandas 操作如下:

???? SQL

 SELECT 
AVG(wt),
AVG(hp),
AVG(mpg)
FROM mtcars;

## AVG(wt) AVG(hp) AVG(mpg)
## 1 3.21725 146.6875 20.09062

???? Pandas

 mtcars_df[['wt', 'hp', 'mpg']].mean()

## wt 3.217250
## hp 146.687500
## mpg 20.090625
## dtype: float64

???? 方差

对于方差而言,SQL 和 Pandas 的计算方式如下:

???? SQL

 SELECT AVG(wt*wt) - AVG(wt)*AVG(wt) AS WT,
AVG(hp*hp) - AVG(hp)*AVG(hp) AS HP,
AVG(mpg*mpg) - AVG(mpg)*AVG(mpg) AS MPG
FROM mtcars;

## WT HP MPG
## 1 0.9274609 4553.965 35.18897

???? Pandas

 mtcars_df[['wt', 'hp', 'mpg']].var(ddof=0)

## wt 0.927461
## hp 4553.964844
## mpg 35.188975
## dtype: float64

???? 极差/范围

另外一个常用统计量是极差(最大值 - 最小值),SQL 和 Pandas 的做法如下:

???? SQL

 SELECT min(gear) AS MIN,
max(gear) AS MAX,
sum(gear) AS TOTAL,
max(gear)-min(gear) AS RANGE
FROM mtcars;

## MIN MAX TOTAL RANGE
## 1 3 5 118 2

???? Pandas

 # Min
mtcars_df['gear'].min()
## 3


#Max
mtcars_df['gear'].max()
## 5


#Total
mtcars_df['gear'].sum()
## 118


#Range
mtcars_df['gear'].max() - mtcars_df['gear'].min()
## 2

???? 总结

在本篇中,ShowMeAI将使用 SQL 和 Python(Pandas 工具库)进行数据分析做了梳理和对比,两个都是非常常见的工具和方式,大家可以对比学习掌握后灵活使用。

参考资料

  • ???? 图解数据分析:从入门到精通系列教程 :https://www.showmeai.tech/tutorials/33
  • ???? 数据科学工具库速查表 | Pandas 速查表 :https://www.showmeai.tech/article-detail/101
  • ???? 编程语言速查表 | SQL 速查表 :https://www.showmeai.tech/article-detail/99

标签: python

添加新评论