将csv文件动态加载到熊猫

时间:2020-05-18 17:00:11

标签: python python-3.x pandas matplotlib

请查看模式查找脚本,一切都按预期工作,但我坚持以下

  1. 正如您在下面看到的那样,我使用的是静态文件file.csv并定期重新加载脚本以将更新加载到csv文件中,我还有另一个脚本可以定期更新csv文件中的内容。
  2. 正如您在底部看到的那样,我们能够绘制价格x轴,但无法绘制时间y轴。

    tenant_id: 09872XXXXXXXXXXXXXXXXXX
    grant_type: client_credentials
    client_id: d7b7e-ighewiojwoei9-868767
    client_secret:adat-XXXXXX-diupi825tfsq38XXXXX
    resource: https://management.azure.com/
    

样本输入文件

import pandas as pd
import numpy as np
from scipy.signal import argrelextrema
import matplotlib.pyplot as plt
from harmonic_functions import *
import uuid


data = pd.read_csv('file.csv')

data.time = pd.to_datetime(data.time,format='%d.%m.%Y %H:%M:%S.%f')
data.index = data['time']
# data = data.drop_duplicates(keep=False)

price = data.close.copy()

err_allowed = 3.0/100

pnl = []
trade_dates=[]
correct_pats=0
pats=0

# plt.ion()

for i in range (100,len(price)):

    current_idx,current_pat,start,end = peak_detect(price.values[:i],order=7)

    XA = current_pat[1] - current_pat[0]
    AB = current_pat[2] - current_pat[1]
    BC = current_pat[3] - current_pat[2]
    CD = current_pat[4] - current_pat[3]

    moves = [XA,AB,BC,CD]

    gart = is_gartley(moves,err_allowed)
    butt = is_butterfly(moves,err_allowed)
    bat = is_bat(moves,err_allowed)
    crab = is_crab(moves,err_allowed)
    shark = is_shark(moves,err_allowed)
    trio = is_trio(moves,err_allowed)
    cyph = is_cyph(moves,err_allowed)
    three_dives = is_3dives(moves, err_allowed)
    fivezero = is_50(moves, err_allowed)
    altbat = is_altbat(moves, err_allowed)
    deepcrab = is_deepcrab(moves, err_allowed)
    dragon = is_dragon(moves, err_allowed)
    snorm = is_snorm(moves, err_allowed)

    harmonics = np.array([gart,butt,bat,crab,shark,trio,cyph,three_dives,fivezero,altbat,deepcrab,dragon,snorm])
    labels = ['Garterly','Butterfly','Bat','Crab','Shark','Trio','Cypher','3Dives','5Zero','AltBat','DeepCrab','Dragon','Snorm']


    if np.any(harmonics == 1) or np.any(harmonics == -1):
        for j in range (0,len(harmonics)):
            if harmonics[j] == 1 or harmonics[j]==-1:
                pats+=1
                sense = 'Bearish ' if harmonics[j]==-1 else 'Bullish '
                label = sense + labels[j] + ' found' 
                print(label)

                plt.title(label)
                plt.plot(np.arange(start,i+15),price.values[start:i+15])
                plt.scatter(current_idx,current_pat,c='r')
                filename = str(uuid.uuid1())[:8]
                print(current_pat)
                print(start)
                print(end)
                print(filename)
                plt.savefig(filename)
                plt.close(filename)
                plt.show()

1 个答案:

答案 0 :(得分:0)

在这一行:

plt.plot(np.arange(start,i+15),price.values[start:i+15])

您实际上是在x轴上绘制一系列数字([开始,结束),并在y轴上绘制前15个价格。 PyPlot.plt()具有呼叫签名plot([x], y, [fmt], *, data=None, **kwargs),这意味着前两个参数可以分别是在x和y轴上绘制的可迭代项。

我想你要做的是:

plt.plot(data.time.values[start,i+15], price.values[start:i+15])

即将所需的时间值传递到x轴参数中。

如果您确实希望在x轴上使用价格,在y轴上使用时间(通常是非常规的),则可以切换参数的顺序。