怎么说呢,我希望得到一个数据,就是某个K线的影线长短。可以这样算,用高点和低点的差值作为分母,开盘价和收盘价的差值的绝对值作为分子,得出的值得越大,说明影线越长,影线越长,说明上传下跳得越厉害,也就是震荡得越厉害。我喜欢这种个股。
步骤:
1,获得K线数据
2,新增一列,计算影线长度占比
import pandas as pd
import numpy as np
import tkinter as tk
from tkinter import filedialog
import os
path=''
def open_file():
global path
path = filedialog.askopenfilename(initialdir="./", title="Select file", filetypes=(("Text files", "*"), ("All files", "*.*")))
print("Selected file:", path)
root.quit() # 选择完文件后退出主循环
root = tk.Tk()
root.title("File Selector")
button = tk.Button(root, text="Open File", command=open_file)
button.pack()
root.mainloop()
# 读取表格数据
df = pd.read_csv(path, delimiter=',')
# 计算影线长度占比
df['影线长度占比'] = 1- (abs(df['开盘'] - df['收盘'])) / (df['最高'] - df['最低'])
# 如果分母为0,将影线长度占比设为0
df = df.replace({'影线长度占比': {0: np.nan}}) # 将0替换为NaN,方便后续处理
# 使用条件判断,如果分母为0,则影线长度占比设为0,否则保持原值
df['影线长度占比'] = df['影线长度占比'].apply(lambda x: 0 if x == 0 else x)
df['影线长度占比'] = df['影线长度占比'].round(3)
filename = os.path.basename(path)
# 保存到新的CSV文件
# df.to_csv('002456_2018_new.csv', index=False)
df.to_csv('shadow_'+filename, index=False)
print("已经保存文件--shadow_"+filename)
# 计算均值
影线长度占比 = df['影线长度占比']
均值 = 影线长度占比.mean()
print("影线长度占比均值:", 均值)
K线数据的获取,参考再《005》
效果: