可能是放年假前的最後一篇文,這一次練習增加天氣預報資訊,還沒有弄成美美的版面,先提供簡易的文字訊息!

image

 

要完成這個項目,務必到中央氣象局 開放資料平台辦一個帳號喔!

辦完帳號,就可以利用API取得氣象資料囉!

我的參考範例來源https://ithelp.ithome.com.tw/articles/10244761

 

文章標籤

mina 發表在 痞客邦 留言(0) 人氣()

要放假了,先來個輕量分享,今日在Bot加上了簡易回覆及搜尋新聞資料的功能,

     if re.match("你是誰",evtText):
            line_bot_api.reply_message(event.reply_token,TextSendMessage("我沒有名字喔。"))
        elif re.match("我是誰",evtText):
            line_bot_api.reply_message(event.reply_token,TextSendMessage("請您自我介紹喔。"))
        elif evtText.find("新聞") >=0 or evtText.find("餐廳") >=0 or evtText.find("景點") >=0 or evtText.find("遊") >=0:
            #news_list = list()
            response = requests.get(
                "https://news.google.com/search?q=+"+event.message.text+"+&hl=zh-TW&gl=TW&ceid=TW%3Azh-Hant")
            soup = BeautifulSoup(response.text, "html.parser")
            result = soup.find_all("div", class_="xrnccd", limit=10)

回應結果大致截圖如下:

image

文章標籤

mina 發表在 痞客邦 留言(0) 人氣()

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

 

不過語法長度好像差不多,我可能還是會繼續用習慣的方式。

文章標籤

mina 發表在 痞客邦 留言(0) 人氣()

今日看了機器學習(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()

image

文章標籤

mina 發表在 痞客邦 留言(0) 人氣()

製作Line Bot的第一步,先準備以下工具囉!

1. Visual Studio Code + Jupyter:用於編輯原始碼。

  • 安裝Visual Studio Code,並於安裝完成後打開介面,至指定路徑安裝Jupyter:Create Interactive Window。

     image

  • 進行設定。

     image

2. GitHub:儲存程式碼的地方。

  • 註冊帳號即可。
  • 以下是範例使用的檔案:

                 image

3. Render:部署程式碼的地方。

  • 用GitHub帳號登入。
  • 參考此網頁範例(https://github.com/haojiwu/line-bot-python-on-render)嘗試部署至Render,成功!
  • 以下是Render部署成功的log:

    image

4. Line Developer:藉由這個工具,讓程式碼與Line結合,創造出自己的Line Bot。

  • 註冊帳號即可。
  • 參考此網頁說明(https://ithelp.ithome.com.tw/articles/10283836),更新 LINE Channel 的Webhook settings,並做文字訊息test,成功讓Line Bot回應!
  • 以下是於Line Developer測試網頁連結,顯示"成功"!

    image

                 

     Line訊息如下:

              image

 

Line Bot外型製造出來囉!

Botimage

本篇先介紹到此!

終極目標:做出https://vocus.cc/article/61fdf31efd897800014c2fac所提到的效果!

 

文章標籤

mina 發表在 痞客邦 留言(0) 人氣()

因為Java程式需要編譯過後才能執行(非直譯式語言),當程式修改時,常常需要re-start Server,所以個人很常遇到8080 port in use 錯誤,幸好網路資訊豐富,用cmd就可以處理了!

錯誤畫面示意圖:

image

cmd語法範例:

image

然後又可以重新啟動Server囉!(以下是Console顯示啟動Server成功的訊息)

image

文章標籤

mina 發表在 痞客邦 留言(0) 人氣()

上一篇package安裝成功後,該來試試第一個範例了!

首先利用cmd指令,使指定資料夾產生一個Project,然後至該Project將裡面的巨集檔案(.xlsm)打開,隨手加上一個按鈕並指定預設提供的巨集(SampleCall),

image

 

看看按下按鈕效果是甚麼吧!

image

 

補充說明:(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檔案

文章標籤

mina 發表在 痞客邦 留言(0) 人氣()

研究了一陣子,使用網路上提供的各種方法,以下是最終嘗試成功的方法!

目的是要讓Excel顯示xlwings的標籤,如下示意圖:

image

1. pip install xlwings #安裝此package至Python

2. 至安裝路徑將xlwings.xlam複製到Excel對應的資料夾下

安裝路徑

image

複製到目的地

image

 

3. 至Excel -> 開發人員 -> Visual Basic -> 工具 -> 設定引用項目 -> 瀏覽 -> 至指定資料夾開啟xlwings -> 然後xlwings就會顯示在Excel標籤上了喔!

image

 

下一篇要研究如何使用xlwings了!

文章標籤

mina 發表在 痞客邦 留言(0) 人氣()

先讀取檔案後,接著整理資料,進行繪圖!

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()

image

 

plt.scatter("Type1", "Value1", data=df, alpha = 0.2)

plt.xlabel('Type1')

plt.ylabel('Value1')

plt.show()

image

 

plt.hist(df.Type1, density=False, color = 'lightblue', cumulative = False, label = "Type1")

plt.legend()

plt.xlabel('Type1')

plt.show()

image

 

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()

image

先畫到這裡囉!!下次見!!

文章標籤

mina 發表在 痞客邦 留言(0) 人氣()

延續 [利用R做資料前置處理,成功!] 這一篇的資料,繼續繪圖囉!

看看微小的調整,圖形有甚麼大變化吧!

ggplot(data = x) + geom_point( mapping = aes(x = 類別, y = Value), position = "jitter" )

image

 

ggplot(data = x, mapping = aes(x = 類別, y = Value)) + geom_boxplot()

image

 

ggplot(data = x, mapping = aes(x = 類別, y = Value)) + geom_boxplot() + coord_flip()

image

 

ggplot(data = x) + geom_point(mapping = aes(x = 類別, y = Value, color=Value))

image

 

ggplot(data = x) + geom_point(mapping = aes(x = 類別, y = Value, color=類別))

image

 

ggplot(data = x) + geom_bar(mapping = aes(x = 類別, color = 類別))

image

 

ggplot(data = x) + geom_bar(mapping = aes(x = 類別, fill = 類別))

image

 

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()

image

 

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()

image

文章標籤

mina 發表在 痞客邦 留言(0) 人氣()