엑셀 파일 빠르게 읽어보자 빅데이터를 다루다보면 엑셀 파일 불러올 수 밖에 없는데 데이터 자체가 크다보니 불러오는 시간이 많이 소요됩니다. 이걸 여러번 불러온다면 곤욕이 따로 없겠죠? 이전 포스팅에서 xlsx에서 csv로 변환하는 방법을 다뤘었는데 csv로 변환하고 읽는 속도가 약 70배 빨라지는 것을 알 수 있었습니다. 이번 포스팅에서는 본격적으로 불러오는 속도를 극대화하는 방법에 대해 소개할까 합니다. DASK 모듈 이용하기 방법은 생각보다 간단합니다. 데이터를 불러올 때 병렬처리를 한다면 보다 빠르게 불러올 수 있게 됩니다. 그런데 이걸 코드로 만들어내면 귀찮아지니 다 만들어진 모듈을 사용해서 간편하게 불러올 수 있을 거라 생각합니다. DASK라는 모듈을 쓸 건데요. 이 모듈은 파이썬에서 분산 병렬..
xlsx -> csv의 필요성 파이썬에서 xlsx로 작업을 하면 제약사항이 많아집니다. 가장 큰 제약은 느린 불러오기입니다. xlsx를 불러오는 것부터가 곤욕입니다. 그 이후에 판다스에서의 작업은 사실 xlsx 파일과는 무관하기 때문에 상관은 없습니다. 하지만, 계속해서 xlsx를 불러와야 하는 상황이라면 얘기가 달라집니다. 훨씬 빠른 불러오기가 가능한 csv로 변환합니다. 변환을 office를 이용하면 손쉬운데 실제로 해보면 오류도 많고 드럽게 안됩니다. 또한 office는 csv를 했다해도 office에서 원하는 방향으로 만들어지기 때문에 제약이 들어갑니다. 그래서 파이썬 내에서 xlsx를 가져와 csv로 바꿔보겠습니다. xlsx 파일 csv로 변환하기 프로세스는 간단합니다. 판다스로 xlsx 불러오..
시트만 다른데 매번 다시 불러야하나? 판다스에서 엑셀시트를 불러오는 방법으로 보통 read_excel(sheet_name = '시트이름')을 쓰게 되는데 이러면 시트를 부를 때마다 excel을 부르고서 sheet_name을 다르게 해서 엑셀파일 자체를 다시 읽게 됩니다. 즉, 시간소비가 많다는 것이죠. (이런 시간낭비...) 그래서 엑셀 파일을 객체로 만드는 방법을 알아냈습니다. 판다스 내에 엑셀 파일을 객체로 불러와서 시트만 불러내는 방식을 사용할 수 있더라고요. 이 방식을 사용하면 엑셀파일은 불러와있는 상태에서 시트만 선택적으로 꺼내쓰는 방식으로 바뀝니다. 시간도 절약하고 시트관리가 좀 더 용이해집니다. 엑셀 파일 객체로 불러오기(ExcelFile) 판다스에 ExcelFile이라는 메쏘드가 있습니다...
문서를 주로 PDF 형식으로 주고받는데 PDF는 수정이 불가합니다. 하지만 수정이 불가능한 PDF 파일의 내용은 가져올 수 있습니다. 사실 워드에 쓰면 되는 것인데 파이썬을 쓰면 이런 일을 조금이나마 줄일 수 있을 것 같습니다. PDF 읽고 추출하기 PDF 파일을 읽고 데이터를 추출하기 위해 파이썬에서는 PyPDF2, pdfminer.six, textract 등의 라이브러리를 활용할 수 있습니다. 이러한 라이브러리들은 PDF 파일을 열어서 내용을 읽고 특정한 텍스트나 이미지 데이터를 추출할 수 있는 기능을 제공합니다. 파이썬 코드를 사용하여 PDF 파일을 열고 원하는 데이터를 추출하는 작업은 데이터 분석, 텍스트 처리, 문서 요약 등 다양한 분야에서 유용하게 활용될 수 있습니다. PyPDF2 설치 pyp..
pyqt로 파일 불러오기 창이 나오게 하는 방법입니다. 개인적으로 프로그램 내에서 파일 불러오거나 폴더를 지정할 때 편해서 자주 쓰게 되는 기능입니다. 파일선택창 간단하게 pushbutton을 누르면 파일선택창이나 폴더선택창이 나오도록 하겠습니다. import sys from PyQt5.QtWidgets import * class MyWindow(QWidget): def __init__(self): super().__init__() self.setupUI() def setupUI(self): #레이아웃만들기 self.setGeometry(200,150,300,300) self.pushButton= QPushButton('Open file') self.pushButton.clicked.connect(sel..
NumPy는 파이썬에서 과학적 계산을 위한 핵심 라이브러리로, 다차원 배열을 다루는데 매우 유용합니다. 이러한 다차원 배열은 종종 복잡한 계산을 수행하는 데 필요한 데이터 구조로 사용됩니다. 그러나 다차원 배열을 단일 차원으로 변환하여 데이터를 보다 효율적으로 처리하고자 할 때가 있습니다. 이를 평탄화(flattening)라고 합니다. 보통 머신러닝을 하게 되면 데이터를 분석하려는 머신이 단일 차원을 원하면 평탄화를 쓸 수밖에 없습니다. 평탄화를 꼭 Numpy로 해야하는 건 아니지만 데이터를 보통 numpyarray로 만들기도 하고 생각보다 아주 많이 간편합니다. 평탄화 작업 np.ravel() 함수를 활용한 평탄화 NumPy는 다차원 배열을 평탄화하기 위해 np.ravel() 함수를 제공합니다. 이 함..
파이썬의 os 모듈에 대해 정리합니다. 세세한것까지는 다 할 수 없고 쉽고 자주 쓰이는 것 위주로 정리합니다. 이 포스팅에 없다면 아래 파이썬 공식가이드에서 찾아보시기 바랍니다. 다 한글로 되어있어서 영어로 있었던 때보다는 훨씬 보기 편합니다. https://docs.python.org/ko/3/library/os.html os — Miscellaneous operating system interfaces Source code: Lib/os.py This module provides a portable way of using operating system dependent functionality. If you just want to read or write a file see open(), if you..
파이썬의 문자열을 html 파일로 저장하는 방법입니다. 사실 문자열에는 HTML 코드를 의미하고 저장하는 것입니다. 파이썬의 open(), write(), close()를 이용해서 html 파일을 작성할 수 있습니다. HTML 코드 준비하기 사실 막막할 수 있는데 html코드를 문자열화만 하면 됩니다. 글자 그대로 띄어쓰기 등 모든 것을 그대로 반영하려면 큰따옴표 3개를 앞에 써놓고 시작하면 됩니다. html_text = """ This is a Heading This is a paragraph. """ open(), write() 사용하기 저런 문자열은 open,write를 이용해서 파일로써 저장하면 됩니다. 이때 파일확장자로 html로 정의하면 html 파일이 만들어집니다. html_file = op..
리스트에서 특정 문자 있는 경우 제거하는 방법입니다. 조건 걸어서 하나씩 지우면 되긴 하는데 이게 될 때가 있고 안 될 때가 있더군요. 그래서 다른 방법을 추천하는 글입니다. 보통 for문으로 제거하려고 할텐데 if 문 써서 리스트 원소의 문자열에 해당 문자가 있으면 remove를 통해 지우려고 할 겁니다. 저도 그렇게 했고요. 그래서 아래와 같이 for문으로 합니다. 그럼 그냥 안된다고 봐야 합니다. search = 'temp' for word in file_list: if search in word: print('원소 제거: ' + word) file_list.remove(word) print(file_list) 전혀 지워지지 않습니다. 그 이유는 인덱스 문제로 remove의 방식 때문인데 인덱스가 ..
I. pyinstaller 소개 파이썬은 간단하고 직관적인 문법으로 인해 다양한 분야에서 사용되고 있습니다. 하지만 파이썬은 실행 파일이 아닌 소스 코드 형태로 제공되기 때문에, 사용자는 파이썬 인터프리터를 미리 설치해야만 해당 코드를 실행할 수 있습니다. 이는 일반 사용자가 접근하기 쉽지 않은 점입니다. 이러한 문제를 해결하기 위해 pyinstaller가 개발되었습니다. pyinstaller는 파이썬 코드를 실행 파일 형태로 패키징하여 사용자가 별도의 파이썬 인터프리터 없이도 해당 프로그램을 실행할 수 있도록 합니다. 이를 통해 파이썬 프로그램의 배포와 실행이 쉬워져 파이썬을 이용한 소프트웨어 개발의 생산성을 높일 수 있습니다. 또한 pyinstaller는 다양한 운영체제와 환경에서 동작하는 실행 파일..
가상환경 내에서 파이썬 업그레이드하는 방법입니다. 참고로 모듈 버전이 상호호환이 되어야 해서 여러가지 충돌이 있으니 권장하진 않습니다. 파이썬만 덩그러니 버전이 높아지면 특정 모듈은 아예 안될수도 있습니다. 그래도 버전이 크게 변하지 않는다면 가상환경에서 업그레이드 하는게 가장 간편하긴 합니다. 반면에, 버전업 차이가 크면 새로 가상환경을 만드는게 빠를수도 있습니다. 가상환경 만드는 방법은 아래 포스팅에서 확인하시기 바랍니다. 2020.08.14 - [Python/기초] - [Anaconda]가상환경 설치,삭제(32bit 포함) [Anaconda]가상환경 설치,삭제(32bit 포함) 보통 우리는 64bit 환경에서 개발을 합니다만 증권사 api를 쓰기 위해서는 32bit 개발환경이 필요합니다. 물론 다시..
newspaper 모듈 소개 뉴스 스크래핑 하는 방법은 많습니다. 일반적으로 셀레니움이나 requests 써도 되는데 편리함을 추구하는 사람으로써 newspaper를 써봤습니다. (좀... 늦었나?) newspaper는 사용자가 지정한 url에서 text를 추출해주는 모듈입니다. 그러니깐 뉴스말고 웹 전체를 다 텍스트화 한다고 생각하시면 됩니다. 이미지랑 동영상도 가능합니다. 이미지는 다 되는데 동영상은 일부 안 되는 경우도 있습니다. 자세한 내용은 newspaper 공식 가이드에서 확인할 수 있습니다. Newspaper 설치 지금도 python2를 쓰는 분이 있나봅니다. newspaper 설치를 그냥 하면 python2 버전으로 설치되서 python3에서는 안됩니다. # python2 pip insta..
여러문자 한꺼번에 치환하기 파이썬에서 문자열을 다루다보면 특정 문자열을 한꺼번에 다른 문자열로 치환해야 하는 경우가 있습니다. 이번에는 파이썬에서 여러 문자열을 한꺼번에 치환해주는 방법에 대해 알아보겠습니다. replace() 메소드 replace() 메소드는 문자열에서 특정 문자열을 다른 문자열로 치환하는 함수입니다. 다음은 replace() 메소드를 사용하여 문자열 내의 여러 문자열을 한꺼번에 치환하는 방법입니다. text = "apple banana cherry apple banana cherry" text = text.replace("apple", "orange").replace("banana", "kiwi") print(text) 위의 코드에서는 text 문자열에서 "apple"을 "orange..
이번 블로그 글에서는 파이썬에서 RSS를 가져오는 방법을 다루려고 합니다. RSS란? RSS(Rich Site Summary 또는 Really Simple Syndication)는 웹 사이트에서 발행되는 최신 정보를 구독자에게 쉽게 제공하기 위한 XML 기반의 웹 피드입니다. RSS를 이용하면 웹 사이트의 새로운 글, 뉴스, 팟캐스트 등을 매우 쉽게 받아볼 수 있습니다. 파이썬에서 파싱하는 방법 파이썬에서 RSS를 가져오는 방법은 크게 두 가지로 나눌 수 있습니다. 첫 번째는 파이썬 라이브러리를 사용하는 방법이고, 두 번째는 HTTP 요청을 통해 직접 RSS 데이터를 가져오는 방법입니다. 파이썬 라이브러리 사용하기 파이썬에서는 feedparser 라이브러리를 사용하여 RSS를 파싱할 수 있습니다. 이 라..
파이썬 input 사용방법 파이썬에서 사용자의 입력을 받는 방법은 여러 가지가 있지만, 가장 기본적인 방법은 input 함수를 사용하는 것입니다. input 함수는 키보드로 입력한 값을 문자열로 리턴해주는 함수입니다. 알고리즘 연습을 하게 되면 필수로 알아야 하는 함수라서 정리겸 포스팅합니다. input 함수의 기본 사용법 input 함수는 다음과 같은 형식으로 사용할 수 있습니다. 변수 = input(메시지) 메시지는 생략할 수 있으며, 메시지를 입력하면 프롬프트에 출력됩니다. 예를 들어, 다음 코드는 이름을 입력받아 출력하는 코드입니다. name = input("이름을 입력하세요: ") print("당신의 이름은", name, "입니다.") input 함수로 다른 자료형 입력받기 input 함수로 입..