Python 206

[Pandas] update - 다른 데이터프레임 값으로 수정

개요 두 개의 다른 데이터프레임이 있을 때, 한 데이터프레임의 컬럼의 데이터프레임의 컬럼 값으로 수정하고 싶다. 확인해 보니 Pandas에서 제공하는 update 함수를 이용할 수 있는 것 같다. 사용 방법을 적어둔다. DataFrame.update update는 데이터프레임의 컬럼을 다른 DataFrame의 컬럼으로 덮어씌운다. 단 결측치가 아닌 값만 사용하며. 반환값 없이 원본이 변경된다. 인덱스와 컬럼이 동일한 셀의 값으로 데이터프레임을 수정하기 때문에, 두 데이터프레임 간에는 같은 이름의 인덱스와 컬럼이 존재해야 한다. 만약 시리즈를 사용한다면 name 속성을 사용해 컬럼 이름을 동일하게 맞추어야 한다. DataFrame.update(other, join='left', overwrite=True,..

[Pandas] apply 시 컬럼의 값에 따라 다른 함수 사용하기

개요 Pandas에서 제공하는 apply 함수는 매개변수로 전달받은 함수를 적용하는 함수이다. 당연히 하나의 함수를 열이나 행에 적용하는데…… 각 데이터의 값에 따라 적용해야 하는 함수가 달라져야 하는 필요가 생겼다. 지금부터 다음의 문제 상황을 맞이했다고 해보자. 업무에서 처리되는 데이터는 S3에 다음과 같은 경로에 떨어진다. 's3://test-bucket/summary/titanic/class=First/date=2024-03-28/27b3ce6245b44ff0950e98419089e66c-0.parquet' 's3://test-bucket/summary/titanic/class=Second/date=2024-03-28/27b3ce6245b44ff0950e98419089e66c-0.parquet' ..

[Pandas] 데이터프레임의 다른 컬럼을 참조하여 문자열 치환

개요 기존에 처리해서 S3에 저장한 데이터를 새로 처리해 새로운 경로에 저장하고 있다. 예로 들어 기존 데이터가 저장된 S3 경로가 아래와 같다면, s3://test-bucket/summary/titanic/class=First/27b3ce6245b44ff0950e98419089e66c-0.parquet' s3://test-bucket/summary/titanic/class=Second/27b3ce6245b44ff0950e98419089e66c-0.parquet' s3://test-bucket/summary/titanic/class=Third/27b3ce6245b44ff0950e98419089e66c-0.parquet' s3://test-bucket/raw/iris/species=setosa/2770df..

[Jupyter] ipython-sql - 노트북에서 SQL 사용하기

개요 기존에 JupyterLab에서 jupyterlab-sql이라는 확장 프로그램을 사용해서 데이터베이스 작업을 수행했었다. 하지만 jupyterlab-sql이 유지보수가 되지 않고 있어 더 이상 최신 버전의 JupyterLab에서 사용할 수 없게 되었다……. 마땅히 대체할 확장 프로그램이 없어 노트북 환경에서 SQL을 다룰 때 일반적으로 사용하는 ipython-sql을 사용하는 방법을 정리한다. ipython-sql ipython-sql은 SQLAlchemy를 사용해 데이터베이스에 연결한 뒤 IPython 또는 IPython Notebook에서 SQL 명령을 실행할 수 있게 해 준다. %sql 또는 %%sql 명령어로 사용할 수 있다. 참고로 ipython-sql은 jupySQL로 옮겨졌다고 한다. 해..

Python 2024.04.15

[Python] warnings - warning 메세지 무시하기

개요 Python으로 프로그래밍을 하다 보면 자연스럽게 여러 가지 종류의 경고 메세지를 보게 된다. 당장 해결해야 하는 문제는 아지만 추후 오류로 발전할 수 있기 때문에 확인한 메세지에 대해서 조치하는 편이 좋지만, 여러 가지 이유로 조치할 수 없을 수도 있다. 다만 과다한 경고 메세지로 인해 실행 로그가 지나치게 길어지게 되는 경우에는, 스토리지 용량과 관련된 문제를 야기할 수 있다. 따라서 이런 경우에는 로그 메세지를 무시할 수 있도록 조치할 필요가 있다. 이번 글에서는 warnings 모듈을 이용해 경고 메세지를 출력하지 않도록 하는 방법을 적어둔다. warnings 개발자는 프로그램 실행 도중 예외가 발생하거나 프로그램을 종료된다고 보장할 수 없는 특정 조건에 대해 경고할 필요가 있을 때 경고 메..

Python 2024.04.03

[Pandas] AWS S3에서의 parquet 파일 다루기

개요 2024.03.18 - [Pandas] parquet 파일 읽고 쓰기에서 일반 로컬 파일 시스템에서 parquet 파일을 읽거나 써보았다. 근데 공식 문서를 확인해 보면 read_parquet, to_parquet 함수 호출 시 storage_options 매개변수를 통해 AWS S3 등의 외부 저장소를 사용할 수 있는 것 같다. 이번 글에서는 Pandas를 사용해 AWS S3에 저장된 parquet 데이터를 읽거나 쓰는 방법에 대해 정리한다. 필요 라이브러리 설치 fsspec은 로컬, 원격, 임베디드 파일 시스템, 그리고 바이트 스토리지와 연동하는 인터페이스를 제공하는 라이브러리다. 그리고 s3fs는 s3 관련 python 파일 시스템 인터페이스를 제공한다. Pandas에서 두 패키지 모두 AWS..

[Pandas] parquet 파일 읽고 쓰기

개요 2024.03.13 - [Apache Arrow] parquet 파일 읽고 쓰기, 2024.03.14 - [Arrow] 파티셔닝한 parquet 파일 저장하기에서 Apache Arrow를 이용해 parquet 데이터를 읽고 쓰는 방법을 적어두었었는데, Pandas를 통해서 parquet 데이터를 읽고 쓸 수도 있다. 이 글에서는 Pandas를 이용한 방법을 적어둔다. read_parquet read_parquet 함수는 경로에 저장된 parquet 파일을 읽은 DataFrame을 반환한다. import pandas as pd pd.read_parquet('iris.parquet') 단일 파일 하나만 전달하거나, 여러 파일이 파티셔닝되어 저장된 경로를 전달해도 된다. 가령 iris란 경로에 parqu..

[Arrow] S3FileSystem - AWS S3에서의 parquet 파일 다루기

개요 2024.03.13 - [Apache Arrow] parquet 파일 읽고 쓰기, 2024.03.14 - [Arrow] 파티셔닝한 parquet 파일 저장하기에서 pyarrow로 parquet 파일을 간단히 다뤄보았다. 다만 보통 로컬 파일 시스템 대신 AWS s3와 같은 외부 스토리지를 많이 사용하는 것 같다. 따라서 이번 글에서는 AWS S3에 저장된 parquet 파일을 읽거나 쓰는 방법을 적어둔다. S3에 접근하기 위해 필요한 권한 등은 이미 준비가 되어 있다고 가정한다. S3FileSystem Arrow는 여러 스토리지 타입에 대한 추상 파일 시스템 인터페이스 구현을 제공한다. 파일 시스템 인터페이스는 디렉터리 작업뿐만 아니라 입출력 스트림을 제공하고, 기본 데이터 저장소를 단순한 형태로 ..

Python 2024.03.15

[Arrow] 파티셔닝한 parquet 파일 저장하기

개요 2024.03.13 - [Apache Arrow] parquet 파일 읽고 쓰기에서 Python으로 parquet 파일을 읽고 쓰는 방법을 간단히 정리했는데, 데이터를 파티셔닝 해서 저장할 필요가 있어 추가로 정리한다. 파티셔닝 Apache Arrow는 로컬, AWS S3, HDFS 등의 파일 시스템에 파티셔닝 데이터를 읽거나 쓸 수 있다. 기본적으로는 로컬 파일 시스템을 사용한다. 데이터를 쓸 때는 pyarrow.parquet.wrirte_to_dataset 함수에 파일로 저장할 테이블, 파일을 저장할 기본 경로, 그리고 파티셔닝 할 컬럼을 지정한다. pq.write_to_dataset(table, root_path='dataset_name', partition_cols=['one', 'two']..

Python 2024.03.14

[Apache Arrow] parquet 파일 읽고 쓰기

Apache Arrow Apache Arriow는 컬럼 형식의 데이터를 처리하는 데이터 분석 애플리케이션을 개발하기 위한 프레임워크다. Apache Parquet, Apache Spark, Numpy, Pandas 등의 데이터 처리 라이브러리와 함께 사용할 수 있는데, 이 글에서는 Arrow를 사용해 Parquet 파일을 다루는 방법을 간단히 정리하려고 한다. 설치 Python에서 Apache Arrow를 사용할 때는 pip나 conda를 사용해 pyarrow라는 이름의 라이브러리를 설치해야 한다. pip install pyarrow 참고로 2024-02-16일 기준 최신 버전인 Apache Arrow 15.0에서는 Numpy 1.16.6 이상의 버전을 요구하고, Pandas를 사용한다면 1.0 이상의 ..

Python 2024.03.13