분류 전체보기 65

[polars] 셀 안의 문자열 또는 리스트 값 모두 보이게 출력(polars.Config.set_fmt_str_lengths, max_colwidth)

polas에서 데이터프레임을 출력하면 긴 문자열을 아래 사진처럼 끊긴다 pandas에서는 max_colwidth을 쓰면 해결됐었음 https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.option_context.html pandas.option_context — pandas 2.1.3 documentation next pandas.option_context.__call__ pandas.pydata.org polars의 문법 pl.Config.set_fmt_str_lengths(200) 공식 홈페이지의 예시 코드 df = pl.DataFrame( { "txt": [ "Play it, Sam. Play 'As Time Goes By'.", "T..

[polars] 데이터프레임의 특정 컬럼 또는 모든 컬럼의 데이터 타입 변경하기(cast)

공식홈페이지 기본 문법 df.cast({"foo": pl.Float32, "bar": pl.UInt8}) 모든 데이터의 형식을 str(문자열)로 바꾸기 -> utf8 df = df.with_columns(pl.all().cast(pl.Utf8, strict=False)) with_columns로 모든 컬럼(pl.all())을 불러오고, 모든 컬럼의 데이터 타입을 cast로 지정해 변환함 strict는 예외발생시 강제로 수행할 것인가를 지정함 (참고용) 리스트 안에 있는 값을 str으로 변환하는 코드 출처: https://stackoverflow.com/questions/75628413/cast-column-of-type-list-to-str-in-polars df.with_columns(pl.col("f..

[polars] write_csv로 UTF-8-SIG 처럼 저장하기(include_bom)

pandas와 다르게, index가 포함되지 않고 저장됨 # 기본 코드 df.write_csv("파일명.csv") 판다스는 인코딩을 특정해서 저장할 수 있지만, polars는 현재(2023-11-21) 지원하지 않음 대신, 계속 업데이트 중이라서 최근 `include_bom` 변수로 윈도우의 인코딩을 지원할 수 있게 되었음 (polars 0.19.15 버전 기준) https://github.com/pola-rs/polars/pull/12253 df.write_csv("파일명.csv", include_bom=True) 이외의 파라미터는 공식홈페이지를 참고 아래는 단순 번역한 내용임 (최신 라이브러리라서, 계속 변경될 가능성이 높음) parameter: - file (파일): 결과가 기록될 파일 경로 또는 ..

[polars] with_columns(), map_elements(=apply) 컬럼 전처리 후 새로운 컬럼 만들기

모두 null값이 없는 컬럼이라면 아래와 같이 사용할 수 있음 df = df.with_columns(새컬럼 = pl.col('참조컬럼1') + pl.col('참조컬럼2')) null값이 존재하는 행을 처리하려면 when, then, otherwise 사용 df = df.with_columns(새컬럼 = pl.when(pl.col('참조컬럼2') != None).then(pl.col('참조컬럼1') + pl.col('참조컬럼2')).otherwise(None)) 참조컬럼2에 null(None)이 아니면 (when) 참조컬럼1+참조컬럼2의 값을 기입(then) 참조컬럼2에 null(None)이면 (when) 참조컬럼1+참조컬럼2의 값이 아니라(otherwise) None을 기입 apply(=map_eleme..

[polars] read_csv, 특정 문자열을 None 처리, dtypes 설정

csv 파일을 읽어올 때, 특정 문자열을 None으로 바꾸기 df = pl.read_csv("data.csv", dtype=str, na_values=["", " "]) 참고: stackoverflow df = pl.read_csv("test.csv", infer_schema_length=0).with_columns(pl.all().cast(pl.Utf8, strict=False)) 데이터프레임이 이미 생성된 경우, 특정 문자열을 None으로 바꾸기 df = df.with_columns( pl.when(pl.col(pl.Utf8) == "") .then(None) .otherwise(pl.col(pl.Utf8)) # keep original value .name.keep() ) 여러 문자열 중 하나라도 ..

[postgreSQL] 원격으로 shp 파일 넣기

넣으려는 데이터베이스에 접속하고 익스텐션 꼭 설치 1. CREATE EXTENSION postgis; shp2pgsql 사용해서 shp 파일 업로드 2. shp2pgsql -c -D -s 5179 -W cp949 {file_path} {table_name} | psql -U {user_name} -d {db_name} -c: 테이블 생성 -a: 이미 테이블이 있는 경우면 -c대신 -a사용 결과 geom 컬럼이 내가 보던 geometry 형식이랑 달라서 당황했는데, 관련 블로그 글을 보니 다른 표준 형식이라고 함 보통 polygon((0 0, 1 0, 1 1, 01, 0 0)) 이런 형태는 WKT라고 부름 애초에 shp2pgsql로 업로드 할때 WKT로 할 수 없나? "-w"를 넣으면 된다고 하는데 똑같이..

개발일지 2023.10.18

[postgreSQL] 모든 테이블의 행 수(row), 열 수(column) 조회하기

조회 전 통계 테이블의 업데이트를 위해 VACUUM 또는 ANALYZE 실행 VACUUM ANALYZE; ANALYZE VERBOSE; DB의 크기에 따라 시간이 소모됨. SELECT schemaname, relname, n_live_tup AS row_count, (SELECT count(*) FROM pg_attribute WHERE attrelid = pg_stat_user_tables.relid) AS column_count FROM pg_stat_user_tables ORDER BY n_live_tup DESC; n_live_tup는 행 수를 나타냄 attrelid는 테이블과 연결된 카탈로그 엔트리를 가리키는데, 이를 이용하여 해당 테이블의 열 수를 세어 출력함 참고) [Postgresql] 전..

개발일지 2023.09.20

[postgreSQL] 한글 TXT 또는 CSV 데이터 import하기

Ubuntu 20.04의 터미널 환경에서 직접 실행하는 경우 DB서버 내 경로를 인식할 수 있음 postgres@ubuntu:~$ export PGCLIENTENCODING='uhc' postgres@ubuntu:~$ psql test_db test_db=> set client_encoding='UHC'; #일회용 세션 # 우분투 서버 내의 파일경로 입력 test_db=> \copy test FROM '/home/data/test.txt' CSV DELIMITER '|'; # 헤더 없는 경우, 헤더 있을 시에는 `HEADER` 추가 >> COPY 193765 # 결과 set client_encoding 영구 설정 postgreSQL의 configration 수정해야함 우분투에서 apt로 설치한 경우, /..

개발일지 2023.09.15