2023-07-19|閱讀時間 ‧ 約 5 分鐘

午餐煮了泡麵後才發現沒筷子..

只好用湯匙吃,

超瞎...



我吃這款啦

全家賣兩件60,

一餐只要30,

好吃又省,

中午還喝同事泡的咖啡,

根本...

也許這就是自由吧。

寫到這,

心裡只剩兩種情緒:

知足、感恩。





以下分享,

如何使用 python 處理買賣日報,

逐段解說,穿插在程式碼中間,

有興趣的可以看看

# 載入處理 csv 的工具​
import csv

# 檔案路徑
file_path = './2317.csv'

# 打開 csv​
with open(file_path, 'r', encoding='Big5') as f:
# 讀取前三行​然後丟掉
  f.readline()
  f.readline()
  f.readline()

# 第四行起​,使用 csv 工具一次讀
  rows = csv.reader(f, delimiter=',')

# 建立一個空的表格​存放分點日報​
table = {}

for row in rows:
# ​分點, 價格, 買量, 賣量
dealer = row[1]
price = float(row[2])
b_volume = int(row[3])
s_volume = int(row[4])

# 若table裡無該分點就新增
if dealer not in table:
    table[dealer] = {}

# ​table的結構是 dict
# key: 分點
# value: 各價位的(買量, 賣量)
#
# 所以此行是在記錄
# dealer這個分點,在price價位時,
# 買了​ b_volume 股,
# 賣了 s_volume 股。
  table[dealer][price] = (b_volume, s_volume)

# 對此行後半段也做一樣的事​
dealer = row[7]
price = float(row[8])
b_volume = int(row[9])
s_volume = int(row[10])

if dealer not in table:
table[dealer] = {}

table[dealer][price] = (b_volume, s_volume)

# 打印在視窗,確認結果
for d, op in table.items():
    print(d)
    for p, v in op.items():
      print(f'{p:3.2f}: ({v[0]}, {v[1]})')


已刻意寫得比較好懂,歡迎抄去用,但是務必答應我...

看到訊號,記得叫我!🙇‍♂️

QQ


再來把程式存成 jn.py,執行後結果大概像這樣

$ python jn.py

1020合庫
110.50: (0, 3000)
111.00: (5000, 3000)
111.50: (15236, 1006)
112.00: (23000, 139000)
112.50: (9000, 55000)
113.00: (5000, 140000)
113.50: (0, 20000)
1021合庫台中
110.50: (15000, 2000)
111.00: (1000, 13000)
111.50: (24300, 18200)
112.00: (18000, 34000)
112.50: (7000, 3000)
113.00: (11000, 5000)
113.50: (0, 6000)
1022合庫台南
111.00: (0, 6200)
111.50: (0, 10250)
112.00: (4000, 6000)
112.50: (4000, 0)
113.00: (1000, 1100)
113.50: (0, 1000)
(以下省略)​


跟app 對過答案,應該沒錯。

下一篇會寫如何視覺化,但我也還再研究,目前只會下面這種簡單的:

1.成交量 top N 分點

成交量 top 5

2.買超 top N 分點

買超 top 5

3.賣超 top N 分點

賣超 top 5

其實我很少看這些,

不確定還需要看什麼,

歡迎留言分享,教學相長。

分享至
成為作者繼續創作的動力吧!
© 2024 vocus All rights reserved.