谷歌数据分析 V 笔记(二)
进阶应用:计算总利润 📈
然而,$655 并不是这些厨房用品销售的实际利润,因为我们的计算中还没有包含利润率。利润率是一个百分比,表示每产生一美元的销售额,能带来多少美分的利润。
在我们的数据集中,产品编号 789 的利润率为 20%,这意味着每售出一美元该产品,能获得 20 美分的总利润。
与计算收入类似,我们可以使用SUMPRODUCT函数来节省计算利润率的时间。在这个电子表格中,利润率公式与收入公式只有一个重要区别。
操作步骤如下:
在单元格
G7中开始输入。键入公式的第一部分,与之前相同:
=SUMPRODUCT(。以同样的方式包含前两个数组(数量和单价)。
但不要立即结束公式,而是添加另一个逗号
,,后跟第三个数组。这次,选择包含利润率的单元格
D3:D7。完成公式并闭合括号。
SUMPRODUCT函数使我们免于将每个单独的收入金额乘以每个利润率百分比,然后再将每个利润金额相加的繁琐步骤。
总结 📝
https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/ggl-dtanls-5/img/ef48c72cc96bb872655a618ccc92bf2b_6.png
在本节课中,我们一起学习了SUMPRODUCT这个强大的复合函数。我们了解到:
SUMPRODUCT可以高效地执行涉及多个数组的乘法和求和运算。它通过
=SUMPRODUCT(array1, array2, ...)的语法结构工作。我们通过计算订单总收入和总利润的实际例子,掌握了它的应用方法。
使用SUMPRODUCT进行计算不仅能节省时间,还能帮助你避免手动计算可能出现的错误。这绝对是一个值得记住并融入你分析工具箱的技巧。
032:数据透视表入门 📊
https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/ggl-dtanls-5/img/20f0c842c5c9d14aa7ef414405b1dc59_0.png
在本节课中,我们将学习如何使用数据透视表(Pivot Table)来组织和计算数据,从而快速发现数据中的洞察和趋势。数据透视表是电子表格中一个强大的工具,尤其适用于汇总和分析大量数据。
数据透视表简介
上一节我们介绍了函数和公式,它们是完成计算的有用工具。本节中,我们来看看另一个可以实现类似功能的工具——数据透视表。
数据透视表允许你以多种方式查看数据,以发现洞察和趋势。我们之前讨论过数据透视表如何帮助清理和组织数据,包括排序和分组。此外,数据透视表也能辅助计算,例如快速计算总和与平均值。
实战演练:分析电影收入数据
现在,让我们通过一个电影数据集的例子,看看数据透视表如何与计算协同工作。在这个场景中,你的经理要求你通过收入计算来寻找一些趋势,以帮助构思新的电影创意。
这个电子表格包含了几年前的电影数据。虽然数据本身可能已过时,但我们分析数据的步骤在当下依然完全适用。
第一步:计算每年的总收入
首先,我们需要找出每年的总收入。使用数据透视表是组织这类信息的好方法。
以下是创建数据透视表以显示每年总收入的步骤:
选择数据范围:数据位于单元格
A1到N509。创建新工作表:为数据透视表添加一个新工作表,这有助于将计算集中在一处,并与原始数据分开。我们将此工作表重命名为“Revenue”。
构建数据透视表:
将“Release Date”(上映日期)字段拖到“行”区域。
将“Box Office Revenue”(票房收入)字段拖到“值”区域。
按年份分组:右键点击“Release Date”列中的任意单元格,选择“创建数据透视表日期组”,然后按“年”分组。
完成这些步骤后,数据透视表会自动使用求和函数(SUM)计算每年的总收入。无需手动更改设置。
第二步:计算每部电影的平均收入
仅看总收入可能不够,因为每年上映的电影数量不同。计算每部电影的平均收入可能更有用。
我们可以在同一个数据透视表中添加这个计算:
再次将“Box Office Revenue”字段拖到“值”区域。
点击这个新值字段,将“值字段设置”中的汇总方式从“求和”改为“平均值”。
平均值函数(AVERAGE)会为我们提供数据集中每年电影的平均收入。
第三步:深入分析数据
观察结果,我们发现2015年的平均收入远低于其他年份。作为一名优秀的分析师,发现异常后应进一步探索原因。
为了解原因,我们首先需要知道数据集中每年包含多少部电影:
第三次将“Box Office Revenue”字段拖到“值”区域。
将这个值字段的汇总方式改为“计数”。
计数函数(COUNT)显示,2015年的电影数量最多,但其总收入却是第二低。这可能意味着2015年有很多电影收入不高,从而拉低了平均收入。
为了验证这个假设,我们可以进行更深入的分析,例如:
使用筛选器找出2015年收入低于1000万美元的电影数量。
创建计算字段来确定这些电影占当年电影总数的百分比。
https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/ggl-dtanls-5/img/20f0c842c5c9d14aa7ef414405b1dc59_2.png
我们将在下一讲中继续这个探索过程。
总结
https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/ggl-dtanls-5/img/20f0c842c5c9d14aa7ef414405b1dc59_4.png
本节课中,我们一起学习了数据透视表的基础应用。我们了解到数据透视表不仅能组织和汇总数据,还能快速执行求和、平均值、计数等计算。通过分析电影收入数据的实例,我们掌握了创建数据透视表、按年份分组数据以及使用不同汇总函数的方法。最重要的是,我们认识到在分析中主动发现并探索数据异常是优秀数据分析师的关键特质。
033:数据透视表进阶 📊
https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/ggl-dtanls-5/img/4a6c8a9370a8e8253f196b509dcdaaca_0.png
在本节课中,我们将学习如何运用数据透视表的高级功能,包括筛选器和计算字段,来深入探索数据并验证假设。我们将继续使用电影收入数据集,通过具体操作来解答业务问题。
上一节我们创建了电影收入的数据透视表,并初步观察了年度收入趋势。我们发现2015年的平均收入低于其他年份,尽管该年上映的电影数量更多。我们假设这可能是因为2015年上映了更多收入低于1000万美元的电影。本节中,我们将通过应用筛选器和创建计算字段来验证这一假设。
应用筛选器聚焦数据
筛选器功能允许我们只查看所需的数据值。我们将对复制的数据透视表进行操作。
以下是具体步骤:
在复制的数据透视表中,选中“票房收入”列的一个单元格。
为该列添加筛选器,此筛选器将应用于整个表格。
打开筛选菜单,选择“按条件筛选”,以便找出每年收入低于1000万美元的电影数量。
设置筛选条件为“小于”,数值为
10000000(即1000万美元)。为确保匹配,建议使用与数据透视表中相同的数字格式(如10000000)。
应用筛选后,我们发现2015年有20部电影的收入低于1000万美元。虽然这个数字看起来比其他年份高,但需注意2015年上映的电影总数也更多。
使用计算字段验证数据
在继续分析之前,我们需要验证筛选后表格中的平均值是否正确,因为它是在筛选前从原始透视表复制过来的。
计算字段是数据透视表内的一个新字段,它基于其他字段的值执行特定计算。在Excel中,可以通过“字段设置”和“创建公式”菜单来实现。
我们将创建一个名为“验证平均收入”的计算字段,其公式为:
=SUM(票房收入) / COUNT(票房收入)
由于我们已对当前透视表应用了筛选,此公式将仅计算收入低于1000万美元的电影的平均收入。通过此操作,我们成功验证了数据的准确性。
计算百分比以进行年度对比
虽然我们有了具体数字,但仍难以衡量这些低收入电影对年度平均收入的影响程度。为了更直观地进行年度对比,我们将计算每年收入低于1000万美元的电影所占的百分比。
这次我们不使用计算字段,而是在新列中添加公式,以便同时引用原始和复制后的两个数据透视表。
操作步骤如下:
在单元格G10添加列标题“低收入电影占比”。
在下一单元格中输入公式:
= (复制表中电影数量) / (原始表中电影数量)。使用单元格的填充柄,将公式拖动应用到其他年份。
最后,将这些数字格式设置为百分比。
完成计算后,我们的分析显示,2015年上映的电影中有16%的收入低于1000万美元,而其他年份的比例均接近10%。这为2015年平均收入相对较低提供了一个可能的解释。
在实际工作中,根据分析目标,我们很可能需要进一步深入。但目前,我们已经完成了既定分析目标。
总结
本节课中,我们一起学习了如何利用数据透视表进行高级数据计算。你掌握了应用筛选器来聚焦特定数据子集,以及创建计算字段来执行自定义计算和验证数据。虽然熟练掌握需要练习,但数据透视表的价值在于它不仅能计算,还能有效地组织和筛选数据。
https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/ggl-dtanls-5/img/4a6c8a9370a8e8253f196b509dcdaaca_2.png
https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/ggl-dtanls-5/img/4a6c8a9370a8e8253f196b509dcdaaca_3.png
结合之前学习的函数、公式,数据透视表是数据分析中强大的工具。随着实践和经验的积累,你会感觉像使用它们很久一样熟练。请花时间熟悉它们的工作原理,并继续探索相关视频和阅读材料。做得好!📈
034:查询与计算 📊
https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/ggl-dtanls-5/img/994824f6a11ca39c033f603fd84ae35e_0.png
在本节课中,我们将学习如何在SQL中执行计算,并将其与电子表格中的计算方式进行对比。我们将探讨基本的算术运算符、查询语法以及函数的使用,帮助初学者理解SQL计算的核心概念。
概述
数据分析师在日常工作中可以通过多种方式完成任务,计算也不例外。之前我们已经了解到,在电子表格中可以通过多种方法完成相同的计算。同样,在SQL中也能实现这些计算。本节将概述SQL计算与电子表格计算的异同,并介绍SQL中的基本算术运算符和查询语法。
算术运算符对比
https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/ggl-dtanls-5/img/994824f6a11ca39c033f603fd84ae35e_2.png
在电子表格和SQL中,算术运算符用于执行基本的数学运算。运算符是公式中用于命名操作或计算类型的符号。
以下是电子表格公式中的四种基本算术运算符:
加法:使用加号
+减法:使用减号或连字符
-乘法:使用星号
*除法:使用正斜杠
/
在SQL中,这些运算符以相同的方式计算数据。它们嵌入在从数据库提取数据的查询中,就像电子表格公式一样。
SQL查询语法
查询的语法是其结构,应包含要提取到新表中的所有数据细节及其位置。以下是一个可能的查询语法示例:
SELECTcolumn1,column2,column1+column2AStotalFROMtable_name;https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/ggl-dtanls-5/img/994824f6a11ca39c033f603fd84ae35e_4.png
运行此查询将返回一个表,显示要相加的两列及其值的总和。
如果需要进行减法、乘法或除法运算,只需使用相应的运算符替换加号即可。
https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/ggl-dtanls-5/img/994824f6a11ca39c033f603fd84ae35e_6.png
使用多个运算符
如果需要在计算中使用多个算术运算符,可以使用括号控制计算顺序。例如:
SELECTcolumnA,columnB,columnC,(columnA+columnB)*columnCASresultFROMtable_name;https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/ggl-dtanls-5/img/994824f6a11ca39c033f603fd84ae35e_8.png
此查询将返回一个新列,显示列A和列B的总和乘以列C的值。
模运算符
如果只需要除法计算的余数,可以使用模运算符。在SQL中,模运算符用百分号%表示。在电子表格中,可以使用MOD函数完成相同的计算。
函数的使用
在电子表格和SQL中,很多时候可以使用函数代替运算符完成计算。例如:
求和函数:在电子表格和SQL中均可使用
SUM函数完成加法运算。平均值函数:电子表格中的
AVERAGE函数与SQL中的AVG函数功能相同,均返回一组数字的平均值。
在SQL中,这些函数被视为聚合函数,因为它们对一个或多个值执行计算并返回单个值。稍后我们将学习如何与GROUP BY命令结合使用。
总结
https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/ggl-dtanls-5/img/994824f6a11ca39c033f603fd84ae35e_10.png
本节课我们一起学习了SQL计算的基础知识,包括算术运算符、查询语法以及函数的使用。掌握如何编写计算查询是第一步,接下来我们将继续深入学习SQL中的更多计算技巧。
035:在SQL查询中嵌入计算 🧮
https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/ggl-dtanls-5/img/0b3339cd1ec7df4677a2b755790ba895_0.png
在本节课中,我们将学习如何在SQL查询中直接嵌入计算。这是一种非常高效的方法,可以让我们在提取数据的同时完成计算,从而更快地完成更多工作。
上一节我们介绍了SQL的基本查询结构,本节中我们来看看如何将计算嵌入到查询中。
基本查询语法回顾
https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/ggl-dtanls-5/img/0b3339cd1ec7df4677a2b755790ba895_2.png
一个包含计算的基本查询语法如下:
SELECTcolumn_name,calculation_detailsASnew_column_nameFROMtable_name;SELECT: 用于指定要使用的列。
计算细节: 包含运算符(例如除号
/)的计算表达式。AS: 用于为包含计算值的新列命名。
FROM: 指定数据来源的表。
实践:嵌入计算验证数据
现在,让我们通过一个关于牛油果销售数据的例子,将学习提升到新的水平。
我们将使用以下语法嵌入更复杂的计算:
SELECTcolumn1,column2,(columnA+columnB+columnC)AScalculated_columnFROMdataset.table;我们的目标是:找出每个日期、每个地点售出的牛油果袋子的总数。数据中已有一个显示总数的列,但我们需要验证这个总数是否确实是小号袋、大号袋和加大号袋三列数值的加和。
以下是构建查询的步骤:
使用
SELECT命令选择所需的列:date,region,small_bags,large_bags,xl_bags,total_bags。添加计算:将三个袋子数量列相加,即
small_bags + large_bags + xl_bags。使用
AS命令将计算结果命名为新列,例如total_bags_calc,以便与原始的总数列进行比较。使用
FROM命令指定数据源表。
运行查询后,通过比较total_bags列和我们计算出的total_bags_calc列,可以验证两列数值相同,从而确认数据的准确性。
进阶:计算百分比并处理错误
验证数据后,我们可以利用这些值进行更深入的分析。例如,计算小号袋占总袋数的百分比。这个信息可以帮助利益相关方决定如何包装牛油果或对哪种尺寸的袋子进行促销。
我们构建一个新的查询:
SELECTdate,region,total_bags,small_bags,(small_bags/total_bags)*100ASsmall_bags_percentFROMdataset.table;计算逻辑:
(小号袋数量 / 总袋数) * 100。乘以100是为了将小数转换为更易理解的百分比形式。括号: 确保除法运算优先进行。
然而,运行此查询可能会遇到错误:“不能除以0”。这是因为数据集中某些行的total_bags值为0。
为了解决这个问题,我们需要使用WHERE子句为计算添加条件。
以下是修复查询的方法:
SELECTdate,region,total_bags,small_bags,(small_bags/total_bags)*100ASsmall_bags_percentFROMdataset.tableWHEREtotal_bags<>0;WHERE total_bags <> 0: 这个条件确保只选择total_bags不等于0的行进行计算。符号<>表示“不等于”。你也可以使用
!=来达到同样的效果,即WHERE total_bags != 0。
注意:这只是避免除以零错误的一种方法。SQL还提供了像
SAFE_DIVIDE这样的函数,也能安全地处理除法运算。
运行修正后的查询,我们就能成功得到小号袋百分比的结果。
https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/ggl-dtanls-5/img/0b3339cd1ec7df4677a2b755790ba895_4.png
总结
本节课中我们一起学习了在SQL查询中嵌入计算的方法。我们首先回顾了基本语法,然后通过验证数据总和、计算百分比两个实例进行了实践。在计算百分比时,我们还遇到了“除以零”的错误,并学会了使用WHERE子句来排除无效数据。
https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/ggl-dtanls-5/img/0b3339cd1ec7df4677a2b755790ba895_6.png
这里展示的计算方法只是一个开始。在SQL中,你几乎可以在分析过程中完成任何所需的计算。将计算嵌入查询有助于你保持分析过程的有条理,并快速获得结果。
036:与其他语句结合的计算 📊
https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/ggl-dtanls-5/img/c21c97445c61d2f66bf1d19557ed9c32_0.png
在本节课中,我们将学习如何在SQL查询中结合使用GROUP BY和ORDER BY语句与聚合函数,以对数据进行分组、计算和排序。这是数据分析中整理和汇总数据的关键技能。
概述
作为数据分析师,您会遇到各种形式和规模的计算需求。之前我们已经介绍了SQL中的一些基础计算方法。虽然基础计算很有用,但有时我们需要先对数据进行分组,然后再进行计算。GROUP BY和ORDER BY命令可以帮助我们实现这一点。这些命令通常与SUM或COUNT等聚合函数配对使用。本节将展示如何使用这些命令和函数来计算和汇总表中行组的数据。
探索GROUP BY命令
GROUP BY是一个命令,它将表中具有相同值的行分组到汇总行中。GROUP BY命令在基本的SELECT FROM或SELECT FROM WHERE查询中与SELECT语句一起使用,并且位于查询的末尾。
让我们尝试使用GROUP BY。我们将使用一个包含自行车共享系统数据的数据库。我们的目标是找出每年人们使用这些自行车的骑行次数。
该数据包含多个列,但对于此任务,我们只需要start_time列。由于此数据集未按日期组织,且start_time列未按年份组织,我们需要在代码中包含步骤来整理它。我们还需要每年骑行次数的总数,因此需要在查询中包含一个计算。根据我们需要回答的问题,这可能是我们分析中的第一步。
以下是构建查询的步骤:
使用
SELECT命令开始查询。在查询中添加
EXTRACT命令。EXTRACT命令允许我们提取给定日期的某一部分来使用。从
start_time列中提取年份。为此,我们添加一个左括号,后跟YEAR,这会让服务器知道我们需要日期的哪一部分。然后添加
FROM命令和start_time,以便从该列的所有开始时间中获取年份。关闭括号,然后使用
AS和单词year来命名我们正在创建的列。在查询的下一行,使用聚合函数
COUNT,后跟一个星号和括号。这将计算start_time列中的自行车骑行次数。使用星号确保数据中的所有开始时间都被计数。
然后使用下划线代替空格,将我们的列命名为
number_of_rides。在下一行添加
FROM和我们正在提取数据的数据库。在本例中,是bigquery-public-data.new_york_citibike.citibike_trips。最后,添加我们的
GROUP BY命令。我们将使用它按年份对数据进行分组。输入GROUP BY,后跟year。
我们可以进一步使用ORDER BY命令来组织结果。在GROUP BY之后添加此命令可以对结果进行排序。我们将添加year以按年份对数据进行排序。需要注意的是,默认情况下,ORDER BY按升序对数据进行排序。
现在我们可以运行查询来获取结果。年份从2013年开始排序,到2016年结束。如果我们想将其更改为降序,可以在查询末尾添加关键字DESC并再次运行。
总结
https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/ggl-dtanls-5/img/c21c97445c61d2f66bf1d19557ed9c32_2.png
https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/ggl-dtanls-5/img/c21c97445c61d2f66bf1d19557ed9c32_3.png
无论使用哪种顺序,GROUP BY和ORDER BY命令都非常有助于我们完成和组织分析计算。这是在聚合数据时包含计算的一种方式,也是SQL帮助您的分析顺利进行和推进的众多方法之一。关于SQL中的计算,还有更多内容。接下来,我们将学习更多关于数据验证的知识。
037:反复检查与验证 📊
https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/ggl-dtanls-5/img/a4fdf6b748049825e183500f269f04e8_0.png
在本节课中,我们将学习数据分析中一个至关重要的环节:数据验证。我们将探讨如何通过反复检查来确保数据的质量、准确性和一致性,从而为可靠的分析打下坚实基础。
数据验证:不仅仅是电子表格功能
上一节我们介绍了数据验证,这是一种电子表格功能,通过下拉列表控制单元格的输入内容。使用数据验证可以保护工作表的结构化数据和公式。
但数据验证功能只是更广泛的数据验证过程的一部分。这个过程涉及反复检查数据的质量,确保其完整、准确、安全且一致。虽然数据验证过程是数据清洗的一种形式,但你应该在整个分析过程中都使用它。
如果你觉得这些概念很熟悉,那很好。拥有高质量的数据至关重要。在我看来,这个过程也很有趣,因为它能将你的业务知识与技术技能结合起来。这有助于你理解数据、检查其清洁度,并确保与业务目标保持一致。简而言之,这是确保你的数据有意义所必须做的事情。
请记住,你的业务知识会随着时间和经验而积累。这里有一个专业建议:尽可能多地提问会让这个过程变得容易得多。
实践案例:家具零售商数据分析
假设我们正在为一家家具零售商分析数据。我们需要检查“购买价格”列中的值是否始终等于“售出数量”乘以“产品单价”。
为此,我们添加一个新列并使用乘法公式来重新计算购买价格:
= 售出数量 * 产品单价比较总计后,我们发现至少有一个值与原始“购买价格”列中的值不匹配。我们需要找到答案才能继续分析。
通过研究和提问,我们发现当顾客购买五件或以上特定商品时,可享受30%的折扣。如果我们没有进行这项检查,可能会完全忽略这一点。
作为分析师,计算是你工作的重要组成部分。因此,每当进行计算时,检查计算是否正确至关重要。
常识性检查与业务理解
有时,你会进行一些常识性的数据验证检查。例如,假设你正在分析一家只在工作日营业的企业的店内促销效果。
你需要检查数据中是否没有周六和周日的销售数据。如果你的数据显示了周末的销售,这可能不是数据本身的问题,甚至可能根本不是问题。背后可能有合理的原因,比如你的企业在周末举办了特别活动,因此产生了周末销售。
如果你的目标仅仅是分析工作日,你可能仍然希望在分析中排除周末销售。但进行数据验证可以避免分析中的计算错误和其他失误。
在不同分析工具中应用数据验证
无论使用何种分析工具,都应始终进行数据验证。在之前的视频中,我们使用SQL分析了一些关于牛油果的数据。其中一个查询是检查“总袋数”是否为小、大和超大袋数的总和。
通过运行以下查询,我们能够确定“总袋数”列是准确的,这使我们得以继续分析:
SELECTtotal_bags,small_bags+large_bags+xlarge_bagsAScalculated_totalFROMavocado_dataWHEREtotal_bags!=(small_bags+large_bags+xlarge_bags);但是,当我们试图计算小袋数占总袋数的百分比时,遇到了一个小问题:我们收到了一个关于“除以零”的错误信息。
https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/ggl-dtanls-5/img/a4fdf6b748049825e183500f269f04e8_2.png
我们通过调整查询来修复这个错误。如果我们把这个有错误的查询链接到提交给利益相关者的演示文稿中,他们看到的将是“除以零”的错误,而不是我们想要的数字。
https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/ggl-dtanls-5/img/a4fdf6b748049825e183500f269f04e8_4.png
通过将这类检查作为数据验证过程的一部分,你可以避免分析中的错误,完成业务目标,让每个人都满意。相信我,当你做到这一点时,感觉会非常好。
https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/ggl-dtanls-5/img/a4fdf6b748049825e183500f269f04e8_6.png
总结
本节课中,我们一起学习了数据验证的核心概念和实际应用。我们了解到:
数据验证是一个持续的过程,旨在确保数据的完整性、准确性、安全性和一致性。
结合业务知识进行验证至关重要,它能帮助你理解数据背后的逻辑,发现异常。
在任何分析工具中(如电子表格、SQL)都应实施验证,包括常识性检查和计算验证。
主动检查和提问可以避免严重的分析错误,确保最终结果可靠,满足业务目标。
掌握数据验证技能,是成为一名优秀数据分析师的基石。恭喜你完成了本节内容的学习!🎉
038:临时表 📝
https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/ggl-dtanls-5/img/35a49595c1ed627363e2afc2f33acd94_0.png
在本节课中,我们将要学习SQL中的“临时表”。临时表是数据分析师在处理数据时的一种便捷工具,它类似于我们日常使用的便利贴,用于临时存储和处理数据,使用完毕后会自动清理。通过本教程,你将了解临时表的概念、用途以及如何在SQL中创建和使用它们。
什么是临时表?🤔
上一节我们介绍了临时表的基本概念,本节中我们来看看它的具体定义。
临时表是一种在数据库服务器上临时创建和存在的数据库表。它通常被称为“temp tables”。临时表用于在特定时间段内存储从标准数据表中提取的数据子集。当你的SQL数据库会话结束时,这些临时表会自动被删除。
由于临时表不会被永久存储,因此它们非常适合在短时间内完成分析任务,例如进行计算时使用。
临时表的用途 🛠️
了解了临时表的基本概念后,我们来看看它的具体应用场景。
临时表在多种数据分析场景中都非常有用。以下是几个常见的用途:
简化复杂查询:当你需要同时处理多个表,并且有一个查询需要连接7到8个表时,你可以先将行数最少的两个或三个表连接起来,并将结果存储在临时表中。然后,再将这个临时表与其他较大的表进行连接。
整合多数据库查询结果:如果你需要在多个不同的数据库上运行查询,可以在每个单独的数据库中运行这些初始查询,然后使用临时表来收集所有查询的结果。最终的报告查询将在临时表上运行。
高效处理数据子集:当一个表中包含大量记录,而你需要反复使用其中的一小部分记录来完成某些计算或其他分析时,临时表非常有用。与其反复过滤数据以返回子集,不如将数据过滤一次并存储在临时表中,然后针对创建的临时表运行查询。
实战演练:创建临时表 🚴
现在,我们通过一个具体的例子来学习如何创建和使用临时表。
假设你需要分析之前提到的共享单车系统的数据。你只需要分析骑行时间超过60分钟的数据,但你需要回答关于这些数据的多个问题。使用临时表可以让你在不重复过滤数据的情况下,多次查询这些数据。
在SQL中,创建临时表的方法取决于你使用的关系数据库管理系统。在本例中,我们将使用BigQuery,并应用WITH子句。WITH子句是一种可以多次查询的临时表类型,它近似于临时表的功能,即使它不会在数据库中永久添加一个表。
以下是创建临时表的步骤:
使用
WITH命令开始查询。为临时表命名,例如
trips_over_1_hr。输入
AS命令和一个开括号(。在新的一行,使用
SELECT FROM WHERE结构编写子查询。SELECT *:选择表中的所有列。FROM:指定数据来源,例如bigquery-public-data.new_york_citibike.citibike_trips。WHERE:添加条件,例如tripduration >= 3600(3600秒即60分钟)。
在新的一行添加闭括号
)来结束子查询。
代码示例:
WITHtrips_over_1_hrAS(SELECT*FROM`bigquery-public-data.new_york_citibike.citibike_trips`WHEREtripduration>=3600)这样,我们的临时表就设置好了。现在,我们可以运行只返回骑行时间60分钟或更长的结果的查询。
使用临时表进行查询 🔍
临时表创建完成后,我们就可以基于它进行查询了。
由于我们已经在临时表的上下文中工作,因此不需要开启新的查询。我们可以在添加代码之前,用描述性文字标注查询的目的。
代码示例:
## 统计有多少次骑行超过60分钟SELECTCOUNT(*)ASctFROMtrips_over_1_hr运行此查询后,结果将显示数据集中骑行时间达到或超过60分钟的总行程数。只要我们需要分析60分钟及以上的骑行数据,就可以反复对此临时表运行查询。
临时表的优势与总结 ✨
通过前面的学习,我们了解了临时表的创建和使用。现在,我们来总结一下它的优势。
https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/ggl-dtanls-5/img/35a49595c1ed627363e2afc2f33acd94_2.png
使用临时表可以使你的工作更高效。命名和使用临时表可以帮助你以更流畅的方式处理大量数据,避免因重复编写相同的查询代码而感到困惑。
此外,使用临时表还有另一个好处:它可以帮助你的团队成员。临时表通常会使你的代码不那么复杂,更易于阅读和理解,这将是团队所欣赏的。
本节课总结:
在本节课中,我们一起学习了SQL中临时表的概念和用途。我们了解到临时表是临时存储数据子集的工具,在会话结束后会自动删除。通过实战演练,我们掌握了如何使用WITH子句在BigQuery中创建临时表,并基于它进行高效查询。临时表不仅能简化复杂的数据操作,提高个人工作效率,还能使代码更清晰,便于团队协作。
039:临时表的多种创建方式 🗂️
https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/ggl-dtanls-5/img/3c06be30908e61090f15417a3f359c13_0.png
在本节课中,我们将学习如何通过不同的SQL语句创建临时表。临时表是数据分析中的一项重要工具,它能帮助您保持代码的条理性并提升分析效率。我们将介绍SELECT INTO和CREATE TABLE这两种创建临时表的方法,并讨论它们各自的优缺点。
上一节我们介绍了使用WITH子句创建临时表,本节中我们来看看其他创建临时表的方式。
使用 SELECT INTO 语句创建临时表
SELECT INTO语句可以将数据从一个表复制到一个新表中,但不会将这个新表永久添加到数据库中。当您需要基于特定条件(例如使用WHERE子句的查询)创建表的副本时,这种方法非常有用。
需要注意的是,我们目前演示使用的BigQuery数据库暂不支持SELECT INTO命令。以下是该语句在其他关系型数据库管理系统(RDBMS)中的通用语法示例:
SELECT*INTOAfrica_SalesFROMGlobal_SalesWHERERegion='Africa';这段代码会从Global_Sales表中筛选出Region为Africa的数据,并创建一个名为Africa_Sales的新临时表。
当您希望保持数据库的整洁,并且不需要与他人共享该表时,使用SELECT INTO是一个很好的实践。
使用 CREATE TABLE 语句创建临时表
https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/ggl-dtanls-5/img/3c06be30908e61090f15417a3f359c13_2.png
如果许多人都需要使用同一个表,那么CREATE TABLE语句可能是更好的选择。与SELECT INTO不同,这个语句会将创建的表正式添加到数据库中。
以下是使用CREATE TABLE语句实现同样功能的示例:
https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/ggl-dtanls-5/img/3c06be30908e61090f15417a3f359c13_4.png
CREATETABLEAfrica_SalesASSELECT*FROMGlobal_SalesWHERERegion='Africa';在大多数RDBMS中,您还可以为使用CREATE TABLE创建的表添加元数据描述,这有助于任何使用该表的人更好地理解其中的数据。
此外,CREATE TABLE语句对于创建结构更复杂的表尤其有用。例如,如果某段代码难以复现,那么以这种方式创建临时表意味着您之后可以安全地访问这些数据。
如何选择创建方式
选择使用WITH子句、SELECT INTO还是CREATE TABLE来创建临时表,通常取决于您的具体需求和偏好。
以下是选择时需要考虑的几个因素:
共享需求:如果表需要被团队多人使用,考虑
CREATE TABLE。数据库整洁性:如果只是临时性分析,不希望留下永久表,考虑
SELECT INTO或WITH子句。代码复杂度:对于复杂查询的结果集,考虑使用
CREATE TABLE或WITH子句将其物化,便于后续调用。平台兼容性:不同的数据库系统(RDBMS)语法可能略有不同,例如某些系统可能使用
CREATE TEMP TABLE。
https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/ggl-dtanls-5/img/3c06be30908e61090f15417a3f359c13_6.png
您可能会发现,在不同的RDBMS中工作时,所需的语法会有所差异。一个好消息是,通过快速的网络搜索,通常很容易找到特定数据库所需的准确语法。
临时表的潜在考量
无论以何种方式或在何处创建临时表,它们本身的缺点并不多。但需要注意,有时构建临时表可能会打断您的工作流程。这同样取决于您的分析目标和偏好。
您可以反复运行同一段代码,而不是创建临时表。但这通常会使您的查询语句可读性变差,并且更容易因拼写错误而出错。
总结
https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/ggl-dtanls-5/img/3c06be30908e61090f15417a3f359c13_8.png
本节课中我们一起学习了创建临时表的两种主要方法:SELECT INTO和CREATE TABLE。我们了解了SELECT INTO适用于创建私有的、临时的数据副本,而CREATE TABLE则更适合创建需要共享或结构更复杂的永久性表。随着您在数据分析领域的不断探索,您会发现临时表是众多可用工具中的一种,并且用得越多,您就越能游刃有余地驾驭数据分析的世界。
040:通过数据分析回答问题 🎯
https://github.com/OpenDocCN/dsai-notes-pt1-zh/raw/master/docs/ggl-dtanls-5/img/b3e6054f48cf887ddf0ba8ae0ad3f4b7_0.png
在本节课中,我们将学习如何将分析过程转化为清晰的结论,并准备向他人展示你的发现。你已经掌握了多种数据分析方法,现在是时候学习如何有效地传达你的分析结果了。
课程完成与回顾 📚
恭喜你完成了又一门课程。虽然我们还有更多知识需要学习,但你随时可以回顾已经掌握的内容。
接下来,你将认识我的同事凯文。他迫不及待地想向你展示本课程下一部分的所有内容。
从分析到展示 🖼️
既然你已经熟悉了多种数据分析方法,接下来你将准备好通过可视化和报告来分享你的分析结果。
在接下来的部分,我们将重点帮助你使用Tableau等工具提升数据可视化技能,使你的图表看起来更专业。
你还将学习到,分享数据本质上是讲述数据的故事,以及它如何回答最初驱动你进行分析的那些问题。
最后,你将学习如何做一场精彩的演示,以及如何管理和回应听众提出的问题。
总结与展望 🚀
非常感谢你与我一同探索数据分析的世界。你已经取得了长足的进步,请为此感到自豪,并在进入下一门课程时继续保持这股劲头。
本节课中,我们一起学习了从完成分析到准备展示成果的完整流程。核心在于将分析转化为故事,并运用可视化工具进行有效沟通。
