只好用湯匙吃,
超瞎...
全家賣兩件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]})')
已刻意寫得比較好懂,歡迎抄去用,但是務必答應我...
看到訊號,記得叫我!🙇♂️
再來把程式存成 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 分點
2.買超 top N 分點
3.賣超 top N 分點
其實我很少看這些,
不確定還需要看什麼,
歡迎留言分享,教學相長。