# 사용할 모든 파일 리스트로 읽어오기
import os
import numpy as np
import pandas as pd
# import math #math 모듈을 먼저 import해야 한다.
# 파일들이 저장된 경로
os_file_list = os.listdir('C:/Users/Happy/Desktop/논문용/krwusdtdata/전처리된파일')
# 저장된 폴더 경로
read_path = "C:\\Users\\Happy\\Desktop\\논문용\\krwusdtdata\\전처리된파일\\"
# 딕셔너리 안에 모든 데이터 프레임 저장
All_data = {}
for files in os_file_list:
print(files)
df= pd.read_csv(read_path+files, encoding = "cp949")
All_data[files[:-4]] = df
해당 방식은 모든 데이터프레임을 하나의 딕셔너리 안에 저장하는 방식이다.
# All_data , key_list
for i in range(len(key_list)):
print(key_list[i])
print(All_data[key_list[i]].info())
# All_data[key_list[i]] = All_data[key_list[i]]
def set_index(df):
df['time'] = pd.to_datetime(df['time'], format='%Y-%m-%d', errors='raise')
df = df.set_index('time',drop=False)
return df
Use_data = {}
# All_data , key_list
for i in range(len(key_list)):
# print(key_list[i])
# print(All_data[key_list[i]].info())
Use_data[key_list[i]] = All_data[key_list[i]].copy() # [["time","Open"]]
# All_data[key_list[i]] = All_data[key_list[i]]
for i in range(len(key_list)):
print(key_list[i],i)
Use_data[key_list[i]] = set_index(Use_data[key_list[i]])
# 기간 조정
pariod_min_list = [Use_data[key_list[i]].index.min() for i in range(len(key_list)) ]
pariod_max_list = [Use_data[key_list[i]].index.max() for i in range(len(key_list)) ]
pariod_start = max(pariod_min_list)
pariod_end = min(pariod_max_list)
print("시작일 교집합 : ",pariod_start)
print("최종일 교집합 : ",pariod_end)
#날짜 조정.(모든 사용할 데이터들의 날짜를 같게 조정함.)
for i in range(len(key_list)):
Use_data[key_list[i]] = Use_data[key_list[i]].loc[Use_data[key_list[i]]["time"].between(pariod_start,pariod_end)]
# 모든 컬럼명을 데이터 프레임 이름으로 바꿈
for i in range(len(key_list)):
col_list = list(Use_data[key_list[i]].columns)
col_list = list(set(col_list) - {"time"})
for j in range(len(col_list)):
print(key_list[i]+"_"+col_list[j])
Use_data[key_list[i]] = Use_data[key_list[i]].rename(columns={col_list[j]:key_list[i]+"_"+col_list[j]})
ALL_DATA_BY_USE = pd.DataFrame()
for i in range(len(key_list)):
# Use_data[key_list[i]]
print(len(Use_data[key_list[i]]),key_list[i])
if i == 0: # 처음시작만 @ 또는 가장 길이가 긴 값!!!!(날짜)
ALL_DATA_BY_USE = Use_data[key_list[i]]
else:
ALL_DATA_BY_USE = pd.concat([ALL_DATA_BY_USE,Use_data[key_list[i]]],axis = 1)
# try:
# del ALL_DATA_BY_USE["time"]
# except:
# pass
ALL_DATA_BY_USE = ALL_DATA_BY_USE.fillna(method="ffill")
if (len(ALL_DATA_BY_USE) == len(ALL_DATA_BY_USE.drop_duplicates())): # 중복데이터가 더 없는지 확인
pass
else:
print("길이가 다름")
# try:
# del ALL_DATA_BY_USE["time"]
# except:
# pass
try:
del ALL_DATA_BY_USE["time"]
except:
pass
위 코드는 하나의 데이터 프레임 안에 넣는 방법인데.. 일단 설명은 나중에 하겠습니다.. 코드도 좀 급하게 짜서
import os
import pandas as pd
# import xlrd
os.getcwd()
path = os.getcwd()
os_file_list = os.listdir(path)
# xls파일만..
xls_file_list = []
for i in range(len(os_file_list)):
if os_file_list[i].find(".xls") == -1:
pass
else:
xls_file_list.append(os_file_list[i])
new_df = pd.DataFrame()
for i in range(len(xls_file_list)):
if i == 0:
df = pd.ExcelFile(xls_file_list[i])
new_df = df.parse(df.sheet_names[1])
else:
df = pd.ExcelFile(xls_file_list[i])
df_1 = df.parse(df.sheet_names[1])
new_df = pd.concat([new_df,df_1],axis = 1)
new_df.to_csv(path+"\\종합"+".csv",index = False, encoding = "cp949")
위 코드는 모든 xls파일을 csv파일로 저장하는 방법입니다
# # 새로운 엑셀 파일 생성
# writer = pd.ExcelWriter(path+"\\전처리후"+"\\종합"+".xlsx")
# for i in range(len(xls_file_list)):
# # print(i,"=====")
# df = pd.ExcelFile(xls_file_list[i])
# # print(df.parse(df.sheet_names[1]))
# # 파일이름을 컬럼명으로 하여 저장
# df.parse(df.sheet_names[1]).to_excel(writer, sheet_name = xls_file_list[i][:-4])
# writer.save()
# writer.close()
해당 방식을 이용하면 한 엑셀 파일에 시트명만 달리해서 모든엑셀파일을 저장하는 방법입니다
'IT - 코딩 > 유용한 코드' 카테고리의 다른 글
블로그 자동화 with python, chat gpt api, selenium (0) | 2025.01.09 |
---|---|
파이썬 exe 파일 만들기 (0) | 2023.04.23 |
바이낸스 가격데이터 websoket으로 받기 with node.js python (0) | 2022.11.27 |
주피터 노트북 테마 바꾸기 (0) | 2022.08.12 |
인베스트 데이터 전처리(with python)+예스 트레이더, 데이터 가이드포함 (0) | 2022.07.22 |