2023年1月30日 星期一

使用Yahoo Finance套件利用Python來分析亞馬遜股票

 原文:Amazon Stock Analysis in Python with Yahoo Finance

範例1:列出前五天的的交易情形

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import pandas as pd
import yfinance as yf
import datetime
from datetime import date, timedelta
import plotly.graph_objects as go
import plotly.express as px
today = date.today()

d1 = today.strftime("%Y-%m-%d")
end_date = d1
d2 = date.today() - timedelta(days=365)
d1 = d2.strftime("%Y-%m-%d")
start_date = d2

data = yf.download('AMZN',
                   start=start_date,
                   end=end_date,
                   progress=False)

data["Date"] = data.index
data = data[["Date", "Open", "High", "Low", "Close", "Adj Close", "Volume"]]
data.reset_index(drop=True, inplace=True)
print(data.head())

執行結果:

範例2: 畫出一年趨勢圖

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
import pandas as pd
import yfinance as yf
import datetime
from datetime import date, timedelta
import plotly.graph_objects as go
import plotly.express as px
today = date.today()

d1 = today.strftime("%Y-%m-%d")
end_date = d1
d2 = date.today() - timedelta(days=365)
d1 = d2.strftime("%Y-%m-%d")
start_date = d2

data = yf.download('AMZN',
                   start=start_date,
                   end=end_date,
                   progress=False)

data["Date"] = data.index
data = data[["Date", "Open", "High", "Low", "Close", "Adj Close", "Volume"]]
data.reset_index(drop=True, inplace=True)
print(data.head())
figure = go.Figure(data=[go.Candlestick(x=data["Date"],
                                        open=data["Open"], high=data["High"],
                                        low=data["Low"], close=data["Close"])])
figure.update_layout(title = "Amazon Stock Price Analysis",
                     xaxis_rangeslider_visible = False)
figure.show()

執行結果:

範例3:一年長條圖
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
import pandas as pd
import yfinance as yf
import datetime
from datetime import date, timedelta
import plotly.graph_objects as go
import plotly.express as px
today = date.today()

d1 = today.strftime("%Y-%m-%d")
end_date = d1
d2 = date.today() - timedelta(days=365)
d1 = d2.strftime("%Y-%m-%d")
start_date = d2

data = yf.download('AMZN',
                   start=start_date,
                   end=end_date,
                   progress=False)

data["Date"] = data.index
data = data[["Date", "Open", "High", "Low", "Close", "Adj Close", "Volume"]]
data.reset_index(drop=True, inplace=True)
print(data.head())
figure = px.bar(data, x="Date", y="Close")
figure.show()

執行結果:

範例4: 使用時間區塊來瞭解某一時段的交易情形

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
import pandas as pd
import yfinance as yf
import datetime
from datetime import date, timedelta
import plotly.graph_objects as go
import plotly.express as px
today = date.today()

d1 = today.strftime("%Y-%m-%d")
end_date = d1
d2 = date.today() - timedelta(days=365)
d1 = d2.strftime("%Y-%m-%d")
start_date = d2

data = yf.download('AMZN',
                   start=start_date,
                   end=end_date,
                   progress=False)

data["Date"] = data.index
data = data[["Date", "Open", "High", "Low", "Close", "Adj Close", "Volume"]]
data.reset_index(drop=True, inplace=True)
print(data.head())
figure = px.line(data, x='Date', y='Close',
                 title='Stock Market Analysis with Rangeslider')
figure.update_xaxes(rangeslider_visible=True)
figure.show()

執行結果:


2023年1月27日 星期五

Dropzone.js讓網站上拖移文件變得相當容易

 Dropzone.js官方網站:Dropzone.js

範例一:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
<html>
  <head>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/dropzone/5.7.2/min/dropzone.min.js"></script>
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/dropzone/5.7.2/dropzone.min.css">
  </head>
  <body>
	<form action="/file-upload" method="post" enctype="multipart/form-data">
	  <input type="file" name="file" />
	</form>
  </body>
</html>

執行結果:
選取檔案前

選取檔案後

範例二:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
<html>
	<head>
		<script src="https://cdnjs.cloudflare.com/ajax/libs/dropzone/5.7.2/min/dropzone.min.js"></script>
		<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/dropzone/5.7.2/dropzone.min.css">
		<script>
		  Dropzone.options.myGreatDropzone = { // camelized version of the `id`
			paramName: "file", // The name that will be used to transfer the file
			autoProcessQueue: false,
			addRemoveLinks: true,			
			maxFilesize: 2, // MB
		  };
		</script>
	</head>
	<body>
		<form action="/target" class="dropzone" id="my-great-dropzone"></form>
	</body>
</html>

執行結果:
拖移檔案前

拖移檔案後


刪除檔案後



2023年1月14日 星期六

用Python Flask搭配Raspberry pi設計GardenPi 魚菜共生控制系統

今天(2023/1/14)是台灣魚菜共生產業促進會之理監事聯誼會的聚會,因為疫情大家已經有一年沒有一起聚會,2023年對促進會推廣魚菜共生是很重要的,會中大家提出幾項建議,相信在不久後就可以看到促進會的活動。

回想起敏哥參與魚菜共生的學習,要從一位南開畢業生談起,故事發生在10年前(2013年),一位畢業生回來找敏哥,他說想留在老師的實驗室練功學習,老師說可是我付不起您的薪水,只能申請國科會的計畫-銀髮族健康促進暨魚菜共生情境感知系統之研製, 計畫通過後展開大學和農民、社區間的魚菜共生的共學旅程。

2016台北國際發明展_組合架式室內魚菜共生栽培暨情境感知技術_廖俊欽同學(南開科技大學)
台灣魚菜共生產業促進會成立大會圓滿落幕
工作退休但人生不退休 生命的脈動,因為有動而更精彩!

聯誼會結束後,總是想著Python教學,隨手查閱Githup,發現有一套很不錯的開源系統,這套系統是採用Python Flask來開發Web人機介面,利用Raspberry pi來設計控制系統。 GardenPi開源軟體: https://github.com/rjsears/GardenPi

GardenPi開源系統:

(摘自GardenPi開源軟體)

(摘自GardenPi開源系統)

(摘自GardenPi開源系統)

2022年2月17日 星期四

Machine learning with Raspberry Pi 4 and Coral USB Accelerator (2) -- Object Detection

 

上篇說明 Coral USB 加速器在樹梅派的安裝與使用 PyCoral 函式庫實作分類分類(Classification),但實在太久沒寫文章,上一篇文章寫得不甚好至今回頭修了好幾次,接著本篇則是實作另一個範例物件偵測(Object Detection)。

2022年2月11日 星期五

Machine learning with Raspberry Pi 4 and Coral USB Accelerator (1) -- Image Classification

因全球晶片缺貨關係,最近單板電腦(raspberry pi、nvidia jetson nano、...)不是缺貨就是漲翻天,在農曆年前有機會入手 Google coral 裝置來練一下機器學習(Machine Learning, ML),順便也在久久...未出文章的部落格留個紀錄。

2022年2月1日 星期二

MindAR: 用WebAR技術把樹藝生命之美年暦與智創虎年賀歲圖片結合在一起,虎哩幸福一整年



在這2022年的大年初一,敏哥想用WebAR技術把國立臺灣工藝研究發展中心2020年推出的樹藝生命之美年暦與智創虎年賀歲圖片結合在一起,虎哩幸福一整年,歡迎大家留意智創生活科技與樹藝工坊,將在3月份推出科技藝術種子教師培訓課程,完全是免費的喔! 

1.準備作品與

準備樹藝生命之美年暦的電子檔,可以利用手機拍照。


2.準備智創虎年賀歲圖片檔(smartcreating.jpg)。


3.利用Image Targets Compiler編譯生命之美年暦的圖片檔,轉換成影像物件檔。


把生命之美年暦的圖片檔放到上圖Drop files to upload區。


按下上圖的Start鍵


按下上圖的Download compiled鍵,下載targets.mind,並自行建立一個資料夾,例如:TreeArt。

4.從https://hiukim.github.io/mind-ar-js-doc/quick-start/webpage,取得程式碼,並儲存AR html檔案。


5.開啟Web Server for Chrome,按下"啟用應用程式"。


6.按下上圖中"CHOOSE FOLDER",選擇儲存AR.html程式的資料夾TreeArt。

7.打開Chrome瀏覽器進行測試,http://127.0.0.1:8887/AR.html。


8.修改程式,儲存成AR2.html檔案。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
<html>
  <head>
    <meta name="viewport" content="width=device-width, initial-scale=1" />
    <script src="https://cdn.jsdelivr.net/gh/hiukim/mind-ar-js@1.0.0/dist/mindar-image.prod.js"></script>
    <script src="https://aframe.io/releases/1.2.0/aframe.min.js"></script>
    <script src="https://cdn.jsdelivr.net/gh/hiukim/mind-ar-js@1.0.0/dist/mindar-image-aframe.prod.js"></script>
  </head>

  <body>
    <a-scene mindar-image="imageTargetSrc: ./targets.mind;" vr-mode-ui="enabled: false" device-orientation-permission-ui="enabled: false">
	  <a-assets>
        <img id="smartcreating" crossorigin="anonymous" src="smartcreating.jpg">
      </a-assets>
      <a-camera position="0 0 0" look-controls="enabled: false"></a-camera>
      <a-entity mindar-image-target="targetIndex: 0">
		<a-image src="#smartcreating"></a-image>
      </a-entity>
    </a-scene>
  </body>
</html>

9.把smartcreatimg.jpg檔案放到和AR.html同一個目錄下。

10.打開Chrome瀏覽器,並輸入http://127.0.0.1:8887/AR2.html,進行測試,就可以看到文章最上面圖片的景像。

2022年1月31日 星期一

MindAR: 使用Python Flask來實現WebAR

MindAR教學網站:https://hiukim.github.io/mind-ar-js-doc/face-tracking-quick-start/webpage

 Flask教學網站:https://flask.palletsprojects.com/en/2.0.x/quickstart/#a-minimal-application

1. 安裝Flask套件,開啟cmd應用程式,輸入下列命令。
pip install Flask


2.使用IDLE來編輯程式,並儲存成test.html。


3.切換到工作目錄,使用python test.py來啟動網站。


4.開啟Chrome進行測試,並輸入127.0.0.1:5000。


5.編輯face_ar.html文件,並儲存在templates資料來中,範例程式摘自Minimal Example

程式碼:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
<html>
  <head>
    <meta name="viewport" content="width=device-width, initial-scale=1" />
    <script src="https://cdn.jsdelivr.net/gh/hiukim/mind-ar-js@1.0.0/dist/mindar-face.prod.js"></script>
    <script src="https://aframe.io/releases/1.2.0/aframe.min.js"></script>
    <script src="https://cdn.jsdelivr.net/gh/hiukim/mind-ar-js@1.0.0/dist/mindar-face-aframe.prod.js"></script>
  </head>

  <body>
    <a-scene mindar-face embedded color-space="sRGB" renderer="colorManagement: true, physicallyCorrectLights" vr-mode-ui="enabled: false" device-orientation-permission-ui="enabled: false">
      <a-camera active="false" position="0 0 0"></a-camera>

      <a-entity mindar-face-target="anchorIndex: 1">
    <a-sphere color="green" radius="0.1"></a-sphere>
      </a-entity>
    </a-scene>
  </body>
</html>

6.改寫Flask程式-test.py,黃底是新增的部份。

1
2
3
4
5
6
7
8
from flask import Flask
from flask import render_template

app = Flask(__name__)

@app.route("/")
def hello_world(name=None):
    return render_template('face_ar.html', name=name)

7.測試時要記得在cmd中按下Ctrl+C來中止網站,再執行Python test.py命令重新啟動網站。
8.重新更新Chrome的內容,就可看到AR。