【課程筆記】《Udacity數(shù)據(jù)分析(入門)》「納米學位」——第 1 部分:SQL與數(shù)據(jù)分析——By Tensor麻麻麻

我是一個編程小白,因為工作原因,經(jīng)常接觸數(shù)據(jù)分析,但都是看別人做。。。。自己也找了很多入門教程看,都沒學進去,Udacity的課程試聽了一下,講的太淺顯和明白了??赡苡幸恍┚幊袒A(chǔ)的人覺得這個課太白癡,學下來覺得,就適合我這沒有數(shù)學基礎(chǔ)、編程基礎(chǔ)的人。
為了加深學習記憶,邊學習課程邊做了課程的筆記~

第1部分:SQL與數(shù)據(jù)分析

總共分兩個部分:

  • 項目準備:SQL和移動平均值
  • 項目:探索未來發(fā)簪趨勢

項目學習:SQL和移動平均值

課程所用數(shù)據(jù)示意圖

數(shù)據(jù)列表表頭(不知道有沒有人和我一樣,看不懂表頭都是什么意思。一個重要原因是我英語差,另一方面是簡寫詞語有的沒接觸過?!哉f,我是真小白<所以我把這些表頭詞語都查了一遍,找到了對應的中文解釋。放在文末了??>)

以上數(shù)據(jù)csv文件鏈接:https://pan.baidu.com/s/1rwwUFtVduGskthN5rkVC1A 密碼:47e4

1、規(guī)定查詢格式:

*CREATE TABLE(創(chuàng)建新表)、DROP TABLE(刪除表格)

  • SQL不區(qū)分大小寫,但一般命令大寫(SELECT、FROM),列表和名稱小寫,這樣方便讀取。查詢標簽之間加「逗號」隔開,查詢結(jié)束加「分號」。
  • 表和變量名避免使用「空格」
  • SQL忽略空格,所以可以添加空格,但不要加太多
  • 查詢所有列,直接用【SELECT ??】

2、基本命令:

  • SELECT FROM(查詢)
    如:從orders 里查詢accounts??
SELECT accounts
FROM orders
  • LIMIT(限制)
    如:查詢前十行數(shù)據(jù)??
SELECT accounts
FROM orders
LIMIT 10
  • ORDER BY(排序)
    如:按日期查詢前十行數(shù)據(jù)??
SELECT accounts
FROM orders
ORDER BY occurred_at
LIMIT 10

ORDER BY 放在SELECT 和LIMIT之間,LIMIT始終在最后一行。排序結(jié)果默認是升序,如果需要降序,需要在后邊加上DESC

  • WHERE(定位某一項信息)
    如:按日期查找用戶ID為4048的用戶的訂單前十行??
SELECT accounts
FROM orders
WHERE=account_id 4048
ORDER BY occurred_at
LIMIT 10

WHERE一般放在SELECT FROM后,LIMIT 前

  • 將現(xiàn)有的列組合,生成的新列稱為 “派生列”(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(wèi)結(jié)尾的url
SELECT *
FROM orders
WHERW referrer_url LIKE '%l'
  • IN (多個數(shù)據(jù)進行篩選)
    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(所有不符合選項的數(shù)據(jù),去掉之前數(shù)據(jù)的剩余數(shù)據(jù))

  • AND和BETWEEN (一次考慮多個邏輯子句,在WHERE的子句中使用)

#搜素id在1-8的所有數(shù)據(jù)(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越多,得到的結(jié)果就越多。
#在orders表中,找出標準紙數(shù)量是0,銅版紙或海報紙大于1000的訂單的所有信息
SELECT *
FROM orders
WHERE standard_qty = 0 AND (gloss_qty > 1000 OR poster_qty > 1000);

4、SQL小結(jié)

語句 使用方法 其他詳細信息
SELECT SELECT Col1,Col2 提供你需要的列
FROM FROM Table 提供所在的表格
LIMIT LIMIT 數(shù)字 限制返回的行數(shù)
ORDER BY ORDER BY Col 根據(jù)列來排序,默認從小到大。與DESC一起用
WHERE WHERE>5 條件語句:用于篩選結(jié)果
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 結(jié)果同上
OR WHERE Col>9 OR Col<4 >9和<4的所有結(jié)果,一個條件必須為真


5、移動平均值

在表格中新建一個“7-day MA”的列,意思是七天的平均值,以此類推。
方法比較簡單,如圖

如圖所示,七天平均值




項目:探索未來氣候發(fā)展趨勢

氣溫分布數(shù)據(jù)

在這個項目中,我將分析天津和全球的氣溫數(shù)據(jù),并比較天津的氣溫走向與全球氣溫走向。

任務

任務是讓數(shù)據(jù)可視化,描述全球氣溫走向和天津氣溫走向之間的相似性與差異。

使用工具

  • SQL:主要用于收集數(shù)據(jù)
  • Excel:整理數(shù)據(jù)、數(shù)據(jù)可視化、數(shù)據(jù)分析


    數(shù)據(jù)內(nèi)容和結(jié)構(gòu)

第一步:查詢下載數(shù)據(jù)

1、從city_list城市列表中找出離我最近的城市
city_list

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

得到了35個城市結(jié)果,在這35個城市中,找到了離我最近的城市:Tianjin


中國????城市結(jié)果


2、從city_data數(shù)據(jù)庫提取天津的氣溫數(shù)據(jù)

city_data

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

找到了天津的歷年的溫度數(shù)據(jù)并下載


天津的歷年溫度數(shù)據(jù)194條

3、從global_data找出全球歷年氣溫數(shù)據(jù)

SELECT *
FROM global_data
全球的歷年溫度數(shù)據(jù)266條

第二步:整理并分析數(shù)據(jù)

  • 用Excel合并兩個表格的氣溫數(shù)據(jù),發(fā)現(xiàn)天津的氣溫數(shù)據(jù)是從1820年開始的,少于全球數(shù)據(jù)的,且數(shù)據(jù)有缺失。所以我使用了1828年-2014年的溫度數(shù)據(jù)。
    每年平均氣溫走勢圖可以看出,全球平均氣溫和天津平均氣溫都是在升高的,但每年溫度波動較大,而且缺失數(shù)據(jù)的位置直接導致大幅波動。


    天津和全球每年平均氣溫.png
  • 我們課程學習了移動平均值的方法,我用Excel中的average函數(shù)對數(shù)據(jù)進行移動平均值??


    移動平均值7(移動步數(shù)越多,曲線越平滑)
  • 接著,在Excel中插入折線圖,橫坐標是年份(year),縱坐標是溫度(temp),橙色是天津歷年平均氣溫變化,藍色是全球歷年平均氣溫變化。


    天津氣溫和全球氣溫的變化對比圖.png

從這個圖可以看出 ,天津的平均氣溫高于全球平均氣溫,且氣溫波動的幅度也基本一致。

  • 同樣的方法,我下載了長春的氣溫數(shù)據(jù)


    下載長春氣溫

導入Excel,用上邊同樣的方法對數(shù)據(jù)進行對比分析。


長春平均氣溫和全球平均氣溫對比圖

小結(jié):

  • 與全球平均水平相比,天津的平均氣溫高于全球平均氣溫;
  • 天津的平均氣溫走勢與全球基本一致,都是上升趨勢;
  • 雖然天津的平均氣溫走勢與全球平均氣溫基本一致,但天津的平均氣溫波動幅度大于全球平均氣溫;
  • 長春平均氣溫低于全球平均氣溫,并且波動幅度也較大
  • 長春和天津的氣溫波動幅度都是較大的,而全球氣溫波動幅度相對較小






【??????附??:表格的翻譯】

這家公司是銷售紙的,產(chǎn)品有三種:regular(普通紙)、poster(海報紙)、glossy(銅版紙)。在美國四大區(qū),這家公司有50位銷售代表。

#一共五個表格,分別是accounts(賬戶)、orders(訂單)、region(區(qū)域)、sales_reps(銷售代表)、web_events(網(wǎng)頁活動)。下邊是我個人對表格的理解,可能不是很準確。

account_id(賬戶id)
primary_poc(主要聯(lián)系人)
lat=latitude(緯度)
long=longitude(經(jīng)度)
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(區(qū)域id)
派生列:nonstandard_qty(非標準紙)

Mac電腦打開jupyter notebook:

python -m IPython notebook

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容