Matplotlib ( II ) — X軸、Y軸 與 title 的名稱設定

延續上一篇的教學,今天要將我們做出來的圖變得更完整。首先我們要為這張圖表先加上標題,並加上 x, y 座標的名稱。首先在plt.title()我們可以替這張圖表下標題,並利用plt.xlabel()plt.ylabel()替 x 座標跟 y 座標註解。做出來就會是完整的一張完整的摺線圖囉~

import matplotlib.pyplot as plt
x = [1, 3, 5, 7, 9]
y = [20, 30, 10, 40, 20]
plt.plot(x, y)
plt.title("Test 1")
plt.xlabel("data x")
plt.ylabel("data y")

接著在這張圖上我們也可以放上不同的資料表,下面是我模擬的場景,假設要調查兩個班級不同的的興趣分布,對了,除了放數字外,表單中也可以放英文字進去,於是下面我們依序調查了五種休閒活動,並計算喜歡的人數。接著我們還可以把兩個班級放在同一張圖上。

import matplotlib.pyplot as plt
x = ['basketball', 'swim', 'take photos', 'reading', 'guitar']

class_a = [8, 7, 1, 6, 5]
class_b = [12, 2, 9, 5, 3]

plt.plot(x, class_a)
plt.plot(x, class_b)

plt.title("hobbies investigation")
plt.xlabel("hobbies")
plt.ylabel("numbers")

好啦,我們就把兩個調查好的資料放在一張圖上囉~~其實光是這個做法初步就可以了解一些資料囉~不過大家有沒有發現,在圖上我們看不出來哪一個是 class_a ,哪一個是 class_b ,所以我們還必須這個資訊標到上面去,

plt.plot(x, class_a, label = 'class_a')
plt.plot(x, class_b, label = 'class_b')
plt.legend()

其實這個標籤也是在plt.plot()中的一個參數,大家只要去把label改成自己需要的就好,不過這邊要特別注意,需要加一行plt.legend(),他們才會顯出來喔~

好啦大致上 Matplotlib 折線圖的部分就是這樣囉,依照這兩篇的教學應該可以應付大部分的需求了。不過可不要以為 Matplotlib 的功能只有這樣喔,他還有很多不同類型的圖的可以做出來~~未來我們也會為大家一一介紹~

 

 

 

利用Python建立圖表 — ( II )

延續上一篇,上次我們把網站的瀏覽人數建成了 list 的格式了,然而大家仔細看會發現次數並沒又對應到每一天的日期,只是單純的一行數字,這樣畫出來的圖沒辦法像我們要的結果,所以這邊要把這張 list 做加工,並且試試看加工後我們有沒辦法做些初步的資料分析。

首先我們要把 index 改掉,pd.Series內建的索引值是從 0 開始排,我們要把它改成用日期來排,所以第一件事情是要創建三十天的日期出來。不知道大家是否還記得pd.date_range,沒錯 !! 現在我們就要利用它來完成。

 

import pandas as pd
date = pd.date_range(start = '2018-7-10', end = '2018-8-8', freq = "D")
print(date)

沒錯~~三十天日期這麼簡單就誕生拉~~ 接著我們需要拿這些日期去取代前面pd.Series裡面的 index 。其實也很簡單,pd.Series內建參數可以調整 index,所以我們就在創建pd.Series時候直接修改就好:

statistical_data = pd.Series(viewing_count, index = date)
print(statistical_data)

沒錯,索引就通通變成日期拉~~在畫圖之前,其實光是變成這樣子的資料格式,就能玩出很多花樣了。我們來試試看幾個場景吧~~

首先我想統計這一個月中,每次星期二的瀏覽人數,

statistical_data["2018-07-10":"2018-08-08":7]

我先查好日曆,剛好 7/10 就是星期二,所以我們取"2018-07-10" : "2018-08-08"  ,也就是 7/10 到 8/8 的資料,: 7指的是資料相隔七筆取一次。所以就是 7/10, 7/17, 7/24, 7/31, 8/7。天數也被完整的取出來囉~

接著我想要看星期三跟星期五的瀏覽人數的平均比較:

wed_mean = statistical_data["2018-07-11":"2018-08-08":7]
fri_mean = statistical_data["2018-07-13":"2018-08-08":7]
print(sum(wed_mean)/len(wed_mean))
print(sum(fri_mean)/len(fri_mean))

我先把資料分別存到wed_meanfri_mean中,取出他們的總和並除以個數。

或著是也可以利用describe()來看統計資料。

print(wed_mean.describe())
print(fri_mean.describe())

資料一目了然吧~~以上就是很簡單很簡單很簡單的簡單數據分析XDDD,大家可能覺得沒有很方便,不過如果今天的天數放大到三年五年、甚至是十年,我們只要用一模一樣的步驟就好,而且快又準確。另外還有一個好消息:Python 還有內建很多分析的工具,未來再慢慢跟大家分享吧 !!

 

 

( 免費 Python 電子書 ) Think Stats: Probability and Statistics for Programmers ( 統計思維:程序員數學之概率統計 )

免費英文版本~

中文版本是這一本喔~

在做數據分析的時候,有兩個很重要的核心概念,一個是對於所選程式語言的熟悉程度。像我就是使用Python,利用Python可以把不要的垃圾資料清理掉、整理成標準格式、找出你想要分析的資料或是把兩個甚至是兩個以上的的資料表整理成一份,這個部分在TinyCorner會慢慢地教大家如何完成;另外一個核心概念:統計,有了好的資料來源後,要如何分析?如何檢驗你的假設?這時候就需要靠統計的協助了。統計在整算是科學界中共通的語言,每份報告的可信度,或是假設成立與否,都需要藉助統計這個核心工具。所以這邊推薦這本免費的電子書”Think Stats”,感謝Allen B. Downey提供的教材,大家可以在這本免費的資源中,學會在Python中使用統計方法。

反過來說,想學統計的人,也可以藉由這本電子書來學習並實際應用,像我本身在大學時期有修過生物統計,然而在課堂上的教學因為缺乏實際操作,所以很多觀念跟步驟只能死記,所以到寫論文實際要使用時,還是要再花很多時間來找到適合的工具,更不用說找到方法後還要再找一個適合的軟體來做分析,找到了還要再學一次…所以學習不如一次到位,時做才是王道,跟著這本書的教學與練習,能完全的把統計內化成你的能力,讓你知道什麼時候要用什麼樣子的方式分析,人家做出來的統計結果又代表了什麼意思,最重要的是你會發現每次你每次的分析又快又正確。

最後,如果對於英文有閱讀障礙的人,這本書也有中文版(不過似乎是只有簡體中文…),中文書名是”統計思維:程序員數學之概率統計”,也可以和英文版的對照用。