python xlsx to tsv
엑셀 파일을 tsv로 바꿔야 하는 일들이 많이 있었는데, 도움을 주지 못하고 있었다.
그러던 중 생각난김에 한번 작성해보았습니다.
python 코드는 매우 간단하며 mac에서 cli로도 실행이 가능하니 도움이 될 것이라 기대하면서 작성했습니다.
우선 시나리오는 아래와 같이 생각했습니다.
command <파일명.xlsx>파일명.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()
*
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