Post
EN

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.