아하
생활

생활꿀팁

깔끔한올빼미80
깔끔한올빼미80

파이썬 리스트를 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시간이나 걸립니다 시간을 줄일수 있는 방법도 부탁드려요!

55글자 더 채워주세요.
4개의 답변이 있어요!
  • 검은밀잠자리283
    검은밀잠자리283

    질문에 코드에 대한 내용이 없다보니 대략적으로 아래와 같이 만들면 될 것 같습니다.

    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 라이브러리를 사용하시면 조금 더 빠르게 처리랑 로딩이 저장이 가능합니다.

    https://github.com/rapidsai/cudf