可能是放年假前的最後一篇文,這一次練習增加天氣預報資訊,還沒有弄成美美的版面,先提供簡易的文字訊息!
要完成這個項目,務必到中央氣象局 開放資料平台辦一個帳號喔!
辦完帳號,就可以利用API取得氣象資料囉!
我的參考範例來源https://ithelp.ithome.com.tw/articles/10244761
可能是放年假前的最後一篇文,這一次練習增加天氣預報資訊,還沒有弄成美美的版面,先提供簡易的文字訊息!
要完成這個項目,務必到中央氣象局 開放資料平台辦一個帳號喔!
辦完帳號,就可以利用API取得氣象資料囉!
我的參考範例來源https://ithelp.ithome.com.tw/articles/10244761
要放假了,先來個輕量分享,今日在Bot加上了簡易回覆及搜尋新聞資料的功能,
回應結果大致截圖如下:
1. map 函數形式 : map(function, sequence)
原本同樣的事情需要用到像迴圈的語法
nums= [1,-2]
ans = [abs(x) for x in nums]
print(ans)
#[1, 2]
如果要套用map
nums= [1,-2]
ans = map(abs,nums)
print(list(ans))
2. filter 函數形式 : filter(function, sequnce)
原本同樣的事情需要用到像迴圈的語法
nums = [1, 2, 3, 4]
even_num = [x for x in nums if x % 2 == 0]
print(even_num)
#[2, 4]
如果要套用filter
even_num = list(filter(isEven, [1, 2, 3, 4]))
print(even_num)
3. reduce 函數形式 : reduce (function, sequnce) ->範例:用於求積
#reduce(f, [x1, x2, x3]) 代表的值為
#f(f(x1, x2), x3)
from functools import reduce
def prod(x,y):
return x*y
print(reduce(prod, [4,5,6]))
#120 <- 4x5x6
4. lambda 參數: 返回值
aa = lambda x: x*x相當於你定義了這樣的一個函數:
def aa(x):
return x*x
不過語法長度好像差不多,我可能還是會繼續用習慣的方式。
今日看了機器學習(by Python)範例,其實,若只是單純使用寫好的套件,只要設定參數,初入門者也能輕鬆將資料分類。
範例來源:參考https://ithelp.ithome.com.tw/articles/10197029及其一系列的文章。
from sklearn.linear_model import LinearRegression
import matplotlib.pyplot as plt
from sklearn import datasets
X,y = datasets.make_regression(n_samples=200,n_features=1,n_targets=1,noise=20)
plt.scatter(X,y,linewidths=0.1)
plt.show()
model = LinearRegression()
model.fit(X,y)
predict = model.predict(X[:200,:])
plt.plot(X,predict,c="red")
plt.scatter(X,y)
plt.show()
製作Line Bot的第一步,先準備以下工具囉!
1. Visual Studio Code + Jupyter:用於編輯原始碼。
2. GitHub:儲存程式碼的地方。
3. Render:部署程式碼的地方。
4. Line Developer:藉由這個工具,讓程式碼與Line結合,創造出自己的Line Bot。
Line訊息如下:
Line Bot外型製造出來囉!
本篇先介紹到此!
終極目標:做出https://vocus.cc/article/61fdf31efd897800014c2fac所提到的效果!
因為Java程式需要編譯過後才能執行(非直譯式語言),當程式修改時,常常需要re-start Server,所以個人很常遇到8080 port in use 錯誤,幸好網路資訊豐富,用cmd就可以處理了!
錯誤畫面示意圖:
cmd語法範例:
然後又可以重新啟動Server囉!(以下是Console顯示啟動Server成功的訊息)
上一篇package安裝成功後,該來試試第一個範例了!
首先利用cmd指令,使指定資料夾產生一個Project,然後至該Project將裡面的巨集檔案(.xlsm)打開,隨手加上一個按鈕並指定預設提供的巨集(SampleCall),
看看按下按鈕效果是甚麼吧!
補充說明:(SampleCall調用python code的寫法有兩種)
1. 巨集直接Call .py檔案,用戶端需安裝Python環境。
Sub SampleCall()
mymodule = Left(ThisWorkbook.Name, (InStrRev(ThisWorkbook.Name, ".", -1, vbTextCompare) - 1))
RunPython "import " & mymodule & ";" & mymodule & ".main()"
End Sub
2. .py檔案利用 PyInstaller打包成為.exe檔案,用戶端不需要安裝Python。
Sub SampleCall()
mymodule = Left(ThisWorkbook.Name, (InStrRev(ThisWorkbook.Name, ".", -1, vbTextCompare) - 1))
RunFrozenPython "..\Project\Project.exe" #.exe檔案的路徑
End Sub
共通點:Excel皆需要啟用巨集、Office項下的XLSTART資料夾需要置入xlwings.xlam檔案!
研究了一陣子,使用網路上提供的各種方法,以下是最終嘗試成功的方法!
目的是要讓Excel顯示xlwings的標籤,如下示意圖:
1. pip install xlwings #安裝此package至Python
2. 至安裝路徑將xlwings.xlam複製到Excel對應的資料夾下
安裝路徑
複製到目的地
3. 至Excel -> 開發人員 -> Visual Basic -> 工具 -> 設定引用項目 -> 瀏覽 -> 至指定資料夾開啟xlwings -> 然後xlwings就會顯示在Excel標籤上了喔!
下一篇要研究如何使用xlwings了!
先讀取檔案後,接著整理資料,進行繪圖!
import pandas as pd
import matplotlib.pyplot as plt
df = pd.read_excel("…\\整理邏輯.xlsx", sheet_name="Summary",
usecols="E,O", #usecols=["類別", "Value"]
nrows=264,
skiprows=4)
df['Value'].fillna(value=0, inplace=True)
df.columns=["Type1","Value1"] #修改表頭
#以下開始畫圖囉!
plt.bar(df['Type1'], df['Value1'], color=['red', 'green', 'blue', 'yellow','pink'])
plt.xticks(df['Type1'])
plt.xlabel('Type1')
plt.ylabel('Value1')
plt.title('Final Term')
plt.show()
plt.scatter("Type1", "Value1", data=df, alpha = 0.2)
plt.xlabel('Type1')
plt.ylabel('Value1')
plt.show()
plt.hist(df.Type1, density=False, color = 'lightblue', cumulative = False, label = "Type1")
plt.legend()
plt.xlabel('Type1')
plt.show()
plt.barh(np.arange(len(df.Type1)), df.Value1)
plt.yticks(np.arange(len(df.Type1)), df.Type1)
plt.ylabel('Type1')
plt.xlabel('Value1')
plt.title('Final Term')
plt.show()
先畫到這裡囉!!下次見!!
延續 [利用R做資料前置處理,成功!] 這一篇的資料,繼續繪圖囉!
看看微小的調整,圖形有甚麼大變化吧!
ggplot(data = x) + geom_point( mapping = aes(x = 類別, y = Value), position = "jitter" )
ggplot(data = x, mapping = aes(x = 類別, y = Value)) + geom_boxplot()
ggplot(data = x, mapping = aes(x = 類別, y = Value)) + geom_boxplot() + coord_flip()
ggplot(data = x) + geom_point(mapping = aes(x = 類別, y = Value, color=Value))
ggplot(data = x) + geom_point(mapping = aes(x = 類別, y = Value, color=類別))
ggplot(data = x) + geom_bar(mapping = aes(x = 類別, color = 類別))
ggplot(data = x) + geom_bar(mapping = aes(x = 類別, fill = 類別))
ggplot(data = x) + geom_bar( mapping = aes(x = 類別, fill = 類別), show.legend = FALSE,width = 1 ) +
theme(aspect.ratio = 1) + labs(x = NULL, y = NULL)+ coord_flip()
ggplot(data = x) + geom_bar( mapping = aes(x = 類別, fill = 類別), show.legend = FALSE, width = 1 ) +
theme(aspect.ratio = 1) + labs(x = NULL, y = NULL)+ coord_polar()