파이썬 리스트를 csv파일로저장하고싶습니다.
인공지능 데이터셋 만드는 과정인데요.
True false로 리턴하는 함수 15개가있고
그 값을 받아서 1 , -1로 변환해 리스트에 넣었습니다.
이를 csv파일로 넣고싶은데
Import csv 후에 넣는 함수로 넣는것 까진했는데
엑셀 한칸에 리스트 전체가 다 들어갑니다
Ex a1칸에 0 [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1] 이게 다들어갑니다
앞의 0은 인덱스번호구요. 원하는 바는
한칸에 1하나씩 들어가는걸 원합니다.
어떻게해야할까요?
++ csv파일로 만드는 과정이 3만개기준
36시간이나 걸립니다 시간을 줄일수 있는 방법도 부탁드려요!
질문에 코드에 대한 내용이 없다보니 대략적으로 아래와 같이 만들면 될 것 같습니다.
import csv f = open('output.csv', 'w', encoding='utf-8') test_data = [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1] wr = csv.writer(f) for (index, value in enumerate(test_data)): wr.writerow([index, value]) f.close()안녕하세요.
1. index번호가 꼭 필요한 것인지요? 그렇지 않다면 아래와 같이 데이터를
구성하면 좋겠습니다.
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1혹은 index가 필요하다면
0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1이렇게 하고 엑셀에서 comma로 구분된 csv불러오기를 하시면 되구요,
36시간은 좀 너무 많이 걸리는데요, csv를 생성하는 전체 code를 올려주시면 확인해 보도록 하겠습니다. 파일크기가 1.2Mbyte정도 될 거같은데요, 생성 시간이 굉장히 오래 걸리니 무언가 다른 이유가 있어 보입니다.
안녕하세요,
numpy 모듈을 이용해 보심을 추천 드립니다.
numpy의 ndarray 자료형은 C언어의 array와 같이 일정한 크기의 데이터가 반복됨을 가정하여 만들어진 자료구조 입니다.
그러므로 데이터 형식이 동일할 경우 list 보다 훨~~~씬 효율적입니다.
더불어 savetxt 함수를 제공하고 있기 때문에 csv 파일로 내보내기가 쉽습니다.
백문이 불여일견, 코드로 설명하겠습니다.
import timeit import numpy as np record = list(np.random.randint(2, size=10)) print(record) biglist = [record] * 30000 print(len(biglist)) ndarray = np.array(biglist) print(ndarray) print(ndarray.shape) def save(): np.savetxt('list.csv', ndarray, fmt='%i', delimiter=',') elapsed = timeit.timeit(save, number=1) print(elapsed)np.array(리스트 변수) 를 이용해 numpy array를 만들 수 있습니다.
savetxt 함수를 이용해 csv 파일로 만들면 됩니다.
이를 엑셀로 열어보면...
원하는 결과가 나올 것 입니다.
속도는 30000 x 10 크기를 만들기 위해..
0.07초 정도 소요됩니다. (라이젠 3600x cpu 기준으로 사용 cpu에 따라 조금은 차이가 있을겁니다.)
감사합니다.
- import csv with open('output.csv', 'w', newline='') as file: writer = csv.writer(file) writer.writerow(['wpam', 'eggs', 'bacon', 'ham']) writer.writerow(['hello', 'eggs', 'bacon', 'ham'])
writer.writerow에 list를 for loop으로 각 list row값을 넣어주시면 됩니다.
padas-like한 cudf 라이브러리를 사용하시면 조금 더 빠르게 처리랑 로딩이 저장이 가능합니다.