Post

python xlsx to tsv

엑셀 파일을 tsv로 바꿔야 하는 일들이 많이 있었는데, 도움을 주지 못하고 있었다.

그러던 중 생각난김에 한번 작성해보았습니다.

​

python 코드는 매우 간단하며 mac에서 cli로도 실행이 가능하니 도움이 될 것이라 기대하면서 작성했습니다.

​

우선 시나리오는 아래와 같이 생각했습니다.

​

command <파일명.xlsx>

-> 파일명.tsv 저장

​

이런 형태로 진행될 것이라 생각되었고, 관련 라이브러리를 찾아보니 pandas, sys,os 를 import해서 사용해야 했다.

​

​

설치방법

brew install python3

pip3 install --upgrade pip

pip3 install pandas

​

sys 표준라이브러리

sys

처음으로 알려드릴 것은 sys 모듈입니다. 요놈은 파이썬 인터프리터를 제어할 수 있는 방법을 제공하지요.

파이썬 인터프리터를 띄워주세요. 인터프리터가 우리의 명령을 기다린다는 뜻으로 »>를 표시하고 있죠? 도스와 마찬가지로 이것도 프롬프트라고 합니다.

sys 모듈을 사용하면 이 프롬프트를 바꿀 수가 있지요.

import sys »> sys.ps1 # 현재의 프롬프트는? ‘»> ‘ »> sys.ps1 = ‘^^; ‘ # 요걸로 바꿔! ^^; print(‘hello’) hello ^^; 5 * 3 15 ^^;

재미있지요? 이번엔 인터프리터를 끝내볼까요?

^^; sys.exit()

​

​

출처 : https://wikidocs.net/78

참고 : https://wikidocs.net/33

​

​

pandas 모듈

  • 데이터 처리와 분석을 위한 라이브러리

  • 행과 열로 이루어진 데이터 객체를 만들어 다룰 수 있음

  • 대용량의 데이터들을 처리하는데 매우 편리

  • pandas 자료구조

  • Series: 1차원

  • DataFrame: 2차원

  • Panel: 3차원

  • pandas 로딩

  • import numpy as np # 보통 numpy와 함께 import* import pandas as pd

​

데이터 분석, 사물 인터넷

파이썬으로 만든 판다스(Pandas) 모듈을 사용하면 데이터 분석을 더 쉽고 효과적으로 할 수 있다. 데이터 분석을 할 때 아직까지는 데이터 분석에 특화된 “R” 이라는 언어를 많이 사용하고 있지만, 판다스가 등장한 이후로 파이썬을 사용하는 경우가 점점 증가하고 있다.

사물 인터넷 분야에서도 파이썬은 활용도가 높다. 한 예로 라즈베리파이(Raspberry Pi)는 리눅스 기반의 아주 작은 컴퓨터이다. 라즈베리파이를 사용하면 홈시어터나 아주 작은 게임기 등 여러 가지 재미있는 것들을 만들 수 있는데, 파이썬은 이 라즈베리파이를 제어하는 도구로 사용된다. 예를 들어 라즈베리파이에 연결된 모터를 작동시키거나 LED에 불이 들어오게 하는 일을 파이썬으로 할 수 있다.

​

​

출처 : http://bigdata.dongguk.ac.kr/lectures/Python/_book/pandas.html

참고 : https://pandas.pydata.org/

​

대용량 처리와 관련된 라이브러리인듯 했다.

​

작성했던 코드는 아래와 같다.

import pandas as pd
import sys
import os

def main(argv):
    fileName = argv[1]
    if fileName is None:
        print("file name is null")
        sys.exit(2)
    if ".xlsx" not in fileName:
        print("check file format .xlsx")
        sys.exit(2)

    # xlsx file 읽기
    xlsx_file = pd.read_excel(fileName)

    # convert csv file
    csvFileName = fileName.replace(".xlsx", ".csv")
    xlsx_file.to_csv(csvFileName, index=False)

    # convert csv file to tsv file
    readCsvFile = pd.read_csv(csvFileName, sep=',', engine='python', encoding='utf-8')

    readCsvFile.dropna(axis=0)
    # convert ',' to '\t' and save as tsv file
    tsvFileName = csvFileName.replace(".csv", ".tsv")
    readCsvFile.to_csv(tsvFileName, sep='\t', encoding='utf-8', index=False)
    print("conversion from '" + fileName + "' to '" + fileName.replace(".xlsx", ".tsv") + "' complete")
    # 종료

    # csv file 삭제
    if os.path.isfile(csvFileName):
        os.remove(csvFileName)
        # print("csv file 제거")
    sys.exit(0)

if __name__ == "__main__":
    main(sys.argv)
~ python converter.py test.xlsx                                                                       ✔  10397  23:17:03
conversion from 'test.xlsx' to 'test.tsv' complete

​

This article is licensed under CC BY 4.0 by the author.