>source

pandas 스크립트에 대해 반복하려는 폴더에 CSV 세트가 있습니다. 나는 glob을 사용하여 .csv로 끝나는 파일을 선택하고 있지만 매번 동일한 .csv 파일을 반환합니다.

다음을 수행하려고 합니다.

  1. glob을 사용하여 .csvs가 포함된 폴더를 선택하고 폴더의 각 개별 .csv 파일에서 스크립트를 실행합니다.
  2. .csv 파일 이름을 나중에 .png 파일 이름에 적용할 수 있는 변수로 저장

기본적으로 .csv 파일을 스크립트에 입력하고 파일 이름을 변수로 저장하고 나머지 스크립트를 실행하고 완료될 때까지 반복합니다.

MacOS에서 Jupyter 노트북을 사용하고 있습니다.

현재 code는 다음과 같습니다.

import yfinance as yf
import matplotlib
from matplotlib import pyplot as plt
import numpy as np
import pandas as pd
import mplfinance as mpf
import glob
path= r'/Users/chris/Desktop/Files'
files= glob.glob(path + "/*.csv")
for f in files:
    dfb= pd.read_csv(f,usecols=['Time','Balance'],index_col=0, parse_dates=True)
photoname= files+'.png'
dfb["Balance"]= dfb["Balance"].str.split(expand=True).iloc[:,0]
dfb["Balance"]= dfb["Balance"].str.replace(',','').astype(float)
df= yf.Ticker("DOGE-USD").history(period='max')
df= df.loc["2021-01-01":]
newdfb= dfb['Balance'].resample('D').ohlc().dropna()
newdfb.drop(['open','high','low'],axis=1,inplace=True)
newdfb.columns= ['Balance']
dates= [d.date() for d in newdfb.index]
newdfb.index= pd.DatetimeIndex(dates)
newdfb.index.name= 'Time'
dfc= df.join(newdfb, how='outer').dropna()
dfc.index.name= 'Date'
ap= mpf.make_addplot(dfc['Balance'])
mpf.plot(dfc,type='candle',addplot=ap)
print(address)
mpf.plot(dfc,type='candle',addplot=ap, savefig=photoname) #This saves as a photo

for 루프에서 첫 번째 들여쓰기된 줄 다음에 오는 줄을 들여쓰시겠습니까? 들여쓰기를 사용하면 dfb는 나머지 code가 실행될 때까지 항상 마지막 파일의 데이터를 포함합니다.

Nathan Mills2022-02-04 16:48:13

@NathanMills 예, 들여쓰기가 없으면 IndentationError: 예상 들여쓰기 블록이 표시됩니다. 다른 방식으로 구성해야 합니까?

alwayshope4302022-02-04 16:48:13

내 말은 아마도 read_csv 다음에 오는 줄을 좀 더 들여써서 for 루프에 있어야 한다는 뜻입니다. 그렇지 않으면 dfb는 glob()에 의해 반환된 마지막 파일의 데이터만 갖게 됩니다. 또한 목록과 문자열을 연결할 수 없기 때문에 photoname= files + ".png"는 photoname= f + ".png"여야 합니다. 셋째, address라는 변수가 없지만 인쇄하려고 합니다.

Nathan Mills2022-02-04 16:48:13

@NathanMills가 말한 모든 것이 정확합니다! read_csv 아래의 모든 항목은 for f in file: loop 내에서 4칸 들여쓰기되어야 합니다. 또한 Nathan이 지적한 다른 문제를 해결합니다. 즉, 더 많은 효율성을 위해 df= yf.Ticker("DOGE-USD").history(period='max') 및 df= df.loc["2021-01-01":] 루프를 사용하여 한 번만 호출하도록 합니다(모든 호출에서 정확히 동일한 데이터를 반환할 가능성이 높기 때문).

Daniel Goldfarb2022-02-04 16:48:13
  • 이전 현재 월의 빈 셀을 강조 표시하는 조건부 서식
  • 다음 gitlab : 병합 요청에 언급된 문제 가져오기