[파이썬] xlsx 파일 csv로 변환하기

반응형
    반응형

    xlsx -> csv의 필요성

    파이썬에서 xlsx로 작업을 하면 제약사항이 많아집니다. 가장 큰 제약은 느린 불러오기입니다. xlsx를 불러오는 것부터가 곤욕입니다. 그 이후에 판다스에서의 작업은 사실 xlsx 파일과는 무관하기 때문에 상관은 없습니다.
    하지만, 계속해서 xlsx를 불러와야 하는 상황이라면 얘기가 달라집니다.
    훨씬 빠른 불러오기가 가능한 csv로 변환합니다.

    변환을 office를 이용하면 손쉬운데 실제로 해보면 오류도 많고 드럽게 안됩니다. 또한 office는 csv를 했다해도 office에서 원하는 방향으로 만들어지기 때문에 제약이 들어갑니다. 그래서 파이썬 내에서 xlsx를 가져와 csv로 바꿔보겠습니다.

    xlsx 파일 csv로 변환하기

    프로세스는 간단합니다.
    판다스로 xlsx 불러오기 -> 데이터프레임 -> csv로 저장

    판다스로 xlsx로 불러오기

    xlsx를 불러오고 기다리는 시간이 너무 버겁지만 한번만 불러오고 csv로 바꾸면 또 불러올 일이 없으니 참고 불러옵니다.

    xlsx를 불러오는 방법은 2가지입니다.
    read_excel와 ExtractFile입니다. 취향에 맞게 아무거나 씁니다.
    저는 read_excel로 불러오겠습니다.

    import pandas as pd
    df= pd.read_excel(path)

    데이터프레임으로 df가 만들어졌고 이걸 to_csv로 변환합니다.
    그전에 만약 ,이 있다면 csv에서는 구분되어지니깐 필요없는 ,는 공백으로 바꿔줍니다.
    columns 안에 원하는 컬럼을 넣어서 컬럼별로 공백으로 바꿔줍니다.

    df['columns'] = df['colums'].str.replace(',',' ')

    csv로 변환

    to_csv를 이용해 데이터프레임을 저장합니다.

    df.to_csv(path_or_buf='df_results.csv', sep=',', header=True, index=False, mode='w', encoding='CP949')

    CP949 가 안 먹히면 UTF-8로 대체합니다.
    이렇게해서 csv로 바꿔주었습니다.

    속도차이

    xlsx와 csv의 실제 속도차이를 비교해보겠습니다.
    xlsx파일은 지난 포스팅에서 썼던 그대로를 쓸 예정입니다.

    [Pandas] 엑셀 시트 여러개 불러오기(보다 쉬운 관리)

    xlsx는 약 4분 45초정도 걸렸었습니다. xlsx 파일에 있는 여러 시트를 csv 하나에 모아두었습니다.

    ddf = pd.read_csv('df_results.csv', engine='c', dtype=str, sep=',', encoding='UTF-8')

    csv를 약 4초 걸렸고 xlsx는 285초 걸렸습니다. 약 70배정도 빨라졌습니다.(컴퓨터 사양에 따라 달라질 수 있습니다.)

    마치며

    왜 빅데이터를 csv로 저장해놓는지 경험으로 깨닫게 된 것 같습니다. 앞으로는 데이터 크기가 커지면 csv를 적극활용해야겠습니다.

     

    함께보면 좋은 글

    [Pandas] 엑셀 시트 여러개 불러오기(보다 쉬운 관리)

    [Pandas] CSV 저장,불러오기

    [Pandas] csv 한글 깨짐 문제해결

     [Pandas] 데이터프레임 엑셀(xlsx) 저장, 불러오기

     

    댓글

    Designed by JB FACTORY

    ....