【课程笔记】《Udacity数据分析(入门)》「纳米学位」——第 1 部分:SQL与数据分析——By Tensor麻麻麻

我是一个编程小白,因为工作原因,经常接触数据分析,但都是看别人做。。。。自己也找了很多入门教程看,都没学进去,Udacity的课程试听了一下,讲的太浅显和明白了。可能有一些编程基础的人觉得这个课太白痴,学下来觉得,就适合我这没有数学基础、编程基础的人。
为了加深学习记忆,边学习课程边做了课程的笔记~

第1部分:SQL与数据分析

总共分两个部分:

  • 项目准备:SQL和移动平均值
  • 项目:探索未来发簪趋势

项目学习:SQL和移动平均值

课程所用数据示意图

数据列表表头(不知道有没有人和我一样,看不懂表头都是什么意思。一个重要原因是我英语差,另一方面是简写词语有的没接触过。——所以说,我是真小白<所以我把这些表头词语都查了一遍,找到了对应的中文解释。放在文末了⬇️>)

以上数据csv文件链接:https://pan.baidu.com/s/1rwwUFtVduGskthN5rkVC1A 密码:47e4

1、规定查询格式:

*CREATE TABLE(创建新表)、DROP TABLE(删除表格)

  • SQL不区分大小写,但一般命令大写(SELECT、FROM),列表和名称小写,这样方便读取。查询标签之间加「逗号」隔开,查询结束加「分号」。
  • 表和变量名避免使用「空格」
  • SQL忽略空格,所以可以添加空格,但不要加太多
  • 查询所有列,直接用【SELECT ✳️】

2、基本命令:

  • SELECT FROM(查询)
    如:从orders 里查询accounts➡️
SELECT accounts
FROM orders
  • LIMIT(限制)
    如:查询前十行数据➡️
SELECT accounts
FROM orders
LIMIT 10
  • ORDER BY(排序)
    如:按日期查询前十行数据➡️
SELECT accounts
FROM orders
ORDER BY occurred_at
LIMIT 10

ORDER BY 放在SELECT 和LIMIT之间,LIMIT始终在最后一行。排序结果默认是升序,如果需要降序,需要在后边加上DESC

  • WHERE(定位某一项信息)
    如:按日期查找用户ID为4048的用户的订单前十行➡️
SELECT accounts
FROM orders
WHERE=account_id 4048
ORDER BY occurred_at
LIMIT 10

WHERE一般放在SELECT FROM后,LIMIT 前

  • 将现有的列组合,生成的新列称为 “派生列”(derived column)。
    常见运算包括:
    *(乘法)
    +(加法)
    -(减法)
    /(除法)
    在SELECT 和FROM之间
gloss_qty + poster_qty AS nonstandard_qty

3、逻辑运算符

逻辑运算符包括:LIKE、IN、NOT、AND&BETWEEN、OR ,下边详细介绍各
逻辑运算符的作用:


逻辑运算符简介
  • LIKE(模糊匹配,在WHERE的子句中使用)
    LIKE(运算符)通常与%(通配符)一起使用
    注意:需要用单引号或双引号将传达给 LIKE 运算符的文本括住,因为这个字符串中的大小写字母不一样,比如 搜索 'T' 与搜索 't' 不同。
#查找所有带google的url
SELECT *
FROM orders
WHERW referrer_url LIKE '%google%'
#查找所有C开头的url
SELECT *
FROM orders
WHERW referrer_url LIKE 'C%'
#查找所有l结尾的url
SELECT *
FROM orders
WHERW referrer_url LIKE '%l'
  • IN (多个数据进行筛选)
    IN在WHERE的句子中
SELECT *
FROM orders
WHERE id IN (12,18)
SELECT *
FROM orders
WHERE name IN ('hannah','jones','amy')
  • NOT(通常与IN、LIKE一起用)
    NOT IN、NOT LIKE(所有不符合选项的数据,去掉之前数据的剩余数据)

  • AND和BETWEEN (一次考虑多个逻辑子句,在WHERE的子句中使用)

#搜素id在1-8的所有数据(AND的前后都要注明哪一行id)
SELECT *
FROM orders
WHERE id >=1 AHD id <=8
#BETWEEN AND  的方式更加清晰、简洁
SELECT *
FROM orders
WHERE id BETWEEN 1 AHD 8
  • OR(和AND用法类似,OR 也可以和 IN、LIKE AND BETWEEN等一起使用)
    OR后的条件是并列的,只要符合任一项,就会被筛选出。所以添加的OR越多,得到的结果就越多。
#在orders表中,找出标准纸数量是0,铜版纸或海报纸大于1000的订单的所有信息
SELECT *
FROM orders
WHERE standard_qty = 0 AND (gloss_qty > 1000 OR poster_qty > 1000);

4、SQL小结

语句 使用方法 其他详细信息
SELECT SELECT Col1,Col2 提供你需要的列
FROM FROM Table 提供所在的表格
LIMIT LIMIT 数字 限制返回的行数
ORDER BY ORDER BY Col 根据列来排序,默认从小到大。与DESC一起用
WHERE WHERE>5 条件语句:用于筛选结果
LIKE WHERE Col LIKE ‘%hehe%’ 挑选出具有“hehe”的行
IN WHERE Col IN ('A','B') 筛选的列为A或B
NOT WHERE Col NOT IN ('A','B') NOT 常与IN 或LIKE 一起用
AND WHERE Col >4 AND Col <9 两个或者多个条件必须都为真
BETWEEN WHERE Col BETWEEN 4 AND 9 结果同上
OR WHERE Col>9 OR Col<4 >9和<4的所有结果,一个条件必须为真


5、移动平均值

在表格中新建一个“7-day MA”的列,意思是七天的平均值,以此类推。
方法比较简单,如图

如图所示,七天平均值




项目:探索未来气候发展趋势

气温分布数据

在这个项目中,我将分析天津和全球的气温数据,并比较天津的气温走向与全球气温走向。

任务

任务是让数据可视化,描述全球气温走向和天津气温走向之间的相似性与差异。

使用工具

  • SQL:主要用于收集数据
  • Excel:整理数据、数据可视化、数据分析


    数据内容和结构

第一步:查询下载数据

1、从city_list城市列表中找出离我最近的城市
city_list

city country
SELECT *
FROM city_list
WHERE country IN ('China')

得到了35个城市结果,在这35个城市中,找到了离我最近的城市:Tianjin


中国🇨🇳城市结果


2、从city_data数据库提取天津的气温数据

city_data

year city country avg_temp
SELECT *
FROM city_data
WHERE city IN ('Tianjin')

找到了天津的历年的温度数据并下载


天津的历年温度数据194条

3、从global_data找出全球历年气温数据

SELECT *
FROM global_data
全球的历年温度数据266条

第二步:整理并分析数据

  • 用Excel合并两个表格的气温数据,发现天津的气温数据是从1820年开始的,少于全球数据的,且数据有缺失。所以我使用了1828年-2014年的温度数据。
    每年平均气温走势图可以看出,全球平均气温和天津平均气温都是在升高的,但每年温度波动较大,而且缺失数据的位置直接导致大幅波动。


    天津和全球每年平均气温.png
  • 我们课程学习了移动平均值的方法,我用Excel中的average函数对数据进行移动平均值⬇️


    移动平均值7(移动步数越多,曲线越平滑)
  • 接着,在Excel中插入折线图,横坐标是年份(year),纵坐标是温度(temp),橙色是天津历年平均气温变化,蓝色是全球历年平均气温变化。


    天津气温和全球气温的变化对比图.png

从这个图可以看出 ,天津的平均气温高于全球平均气温,且气温波动的幅度也基本一致。

  • 同样的方法,我下载了长春的气温数据


    下载长春气温

导入Excel,用上边同样的方法对数据进行对比分析。


长春平均气温和全球平均气温对比图

小结:

  • 与全球平均水平相比,天津的平均气温高于全球平均气温;
  • 天津的平均气温走势与全球基本一致,都是上升趋势;
  • 虽然天津的平均气温走势与全球平均气温基本一致,但天津的平均气温波动幅度大于全球平均气温;
  • 长春平均气温低于全球平均气温,并且波动幅度也较大
  • 长春和天津的气温波动幅度都是较大的,而全球气温波动幅度相对较小






【❤️❤️❤️附📃:表格的翻译】

这家公司是销售纸的,产品有三种:regular(普通纸)、poster(海报纸)、glossy(铜版纸)。在美国四大区,这家公司有50位销售代表。

#一共五个表格,分别是accounts(账户)、orders(订单)、region(区域)、sales_reps(销售代表)、web_events(网页活动)。下边是我个人对表格的理解,可能不是很准确。

account_id(账户id)
primary_poc(主要联系人)
lat=latitude(纬度)
long=longitude(经度)
sales_rep_id(销售代表id)
occurred_at(下单时间)
standard_qty(普通纸)
gloss_qty(铜版纸)
poster_qty(海报纸)
standard_amt_usd(普通纸金额)
gloss_amt_usd(铜版纸金额)
poster_amt_usd(海报纸金额)
total_amt_usd(总金额)
channel(渠道)
region _id(区域id)
派生列:nonstandard_qty(非标准纸)

Mac电脑打开jupyter notebook:

python -m IPython notebook

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容