【课程笔记】《Udacity数据分析(入门)》「纳米学位」——第
我是一个编程小白,因为工作原因,经常接触数据分析,但都是看别人做。。。。自己也找了很多入门教程看,都没学进去,Udacity的课程试听了一下,讲的太浅显和明白了。可能有一些编程基础的人觉得这个课太白痴,学下来觉得,就适合我这没有数学基础、编程基础的人。
为了加深学习记忆,边学习课程边做了课程的笔记~
- UDcity课程配合B站黑马的python入门一起食用效果更佳哦!!(顺序不同可以跳着看)
- B站网址在这:https://www.bilibili.com/video/av14184325?p=1
第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')
找到了天津的历年的温度数据并下载

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

第二步:整理并分析数据
-
用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