pandas

python 메모

[pandas] excel로 저장할 때 IllegalCharacterError가 뜰 때

pandas DataFrame을 excel로 저장할 때 IllegalCharacterError 같은 에러가 뜰 때가 있다. 이때 openpyxl로 저장하는 부분을 df.to_excel("test.xlsx", engine='openpyxl') xlsxwriter로 바꿔서 사용하면 에러가 안뜬다. df.to_excel("test.xlsx", engine='xlsxwriter')

python 메모

[sqlite] cx.read_sql, pd.read_sql 속도비교

pandas로 sqlite3 파일에서 300백만개 정도 되는 row의 데이터를 읽어올 일이 있었다. 하지만 이건 속도가 너무 느리다. connectorx와 비교해보자. 1. 사용법 비교 (1) pandas import sqlite3 import pandas as pd local_file_path = "/absolute/path/to/sqlite3/db" conn = sqlite3.connect(local_file_path) to_read = pd.read_sql( "SELECT * FROM '{tbl_name}'".format(tbl_name=tbl_name), conn, parse_dates=['timestamp'] ) (2) connectorx import connectorx as cx local_f..

python 메모

[pandas] 모든 셀에서 찾고자 하는 string이 있는 row 찾기

다음과 같은 dataframe이 있다고 하자. import pandas as pd import numpy as np df = pd.DataFrame( { 'Zodiac' : ['Libra','Capricorn','Scorpio','January','Scorpio', 'Capricorn','Capricorn', 'Taurus'], 'Month' : ['January', 'February', 'February', 'April', 'January', 'March', 'April', 'April'], 'values' : [23, 45,89, 91, "january", "february", "april", "january"] } ) df >>>> 이때 어떤 컬럼도 상관없이 단어 Jan을 포함하고 있는 row들을 ..

python 메모

[pandas] duplicated()의 함정과 모든 중복 데이터 모으기

pandas를 쓰다가 중복된 데이터를 처리할 때 모든 중복 데이터를 확인하고 싶을 때가 있다. 이를 위한 방법을 정리하고자 한다. 1. duplicated()의 함정 아래와 같은 데이터가 있다고 하자. print(data.to_markdown()) >>>> | | class | age | good | |---:|:--------|------:|:-------| | 0 | a | 11 | True | | 1 | a | 10 | True | | 2 | b | 9 | True | | 3 | c | 9 | False | | 4 | c | 7 | False | | 5 | c | 7 | False | duplicated()를 사용하면 중복데이터 중 남겨둘 데이터 하나를 제외한 중복데이터만 보여준다. print(da..

python 메모

[pandas] 셀의 모든 내용 출력하기

1. 셀 모든 내용 출력 pandas를 사용할 때 셀의 내용이 길면 잘려서 나오는게 기본 세팅이다(truncated). 셀의 모든 내용을 출력하고 싶으면 아래 설정을 사용하면 된다. import pandas as pd pd.set_option('display.max_colwidth', None) 2. 모든 row, column 출력 pandas.set_option('display.max_rows', None) # 항상 모두 출력 pandas.set_option('display.max_rows', 10) # 항상 10개만 출력 pandas.set_option('display.max_columns', None) # 항상 모두 출력 pandas.set_option('display.max_columns', 10..

python 메모

[pandas] 특정 row들의 셀 병합하여 excel로 읽고 쓰기

pandas는 모든 데이터를 테이블 형태로 다루는데 엑셀에서 보기 편하게 특정 row들을 하나의 셀로 병합하여 저장하고 읽을 때가 있다. 1. row 병합 후 인덱스로 설정 ris = pd.read_csv('https://raw.githubusercontent.com/mwaskom/seaborn-data/master/iris.csv') not_merged = ris[['species']+ris.columns[:-1].tolist()].head() print(not_merged.to_markdown()) >>>> | | species | sepal_length | sepal_width | petal_length | petal_width | |---:|:----------|---------------:|--..

python 메모

[pandas] warning 메세지 출력 안하기

import warnings warnings.filterwarnings(action='ignore')

python 메모

[sklearn] classification_report 결과 파일로 저장하기

sklearn의 classification_report는 분류 결과값을 class별로 매우 잘 뽑아준다. from sklearn.metrics import classification_report y_true = [0, 1, 2, 2, 2] y_pred = [0, 0, 2, 2, 1] target_names = ['class 0', 'class 1', 'class 2'] print(classification_report(y_true, y_pred, target_names=target_names)) >>>> precision recall f1-score support class 0 0.50 1.00 0.67 1 class 1 0.00 0.00 0.00 1 class 2 1.00 0.67 0.80 3 accu..

python 메모

[pandas] apply + custom function을 사용한 다중 입력 및 출력

DataFrame에서 다중 입력을 받아 다중 출력을 계산하는 경우가 있으며, condition이 복잡한 경우 custom function을 만드는게 좋다. 다음과 같은 상황을 가정해보자. DataFrame의 multiple column을 활용하여 multiple output 계산 새로운 column을 만들어 해당 column을 원래 DataFrame 오른쪽에 append 이때 apply 함수에 result_type='expand' arguement을 사용하면 된다. 0. pandas apply + custom function 다중입출력 아래와 같은 DataFrame이 있을 때, 여러 개의 column을 입력으로 받아 여러개의 새로운 column을 만드는 함수를 적용하려고 한다. df = pd.DataFr..

python 메모

[pandas] DataFrame을 string으로 출력하기

dataframe을 이미지가 아닌 string으로 print하고 싶을 때 아래 코드로 출력 가능하다. 다음과 같은 데이터가 있다고 하자. jupyter notebook 등에서 print하는 방법은 다음과 같다. with pd.option_context('display.max_rows', None, 'display.max_columns', None): print(df) >>> col 0 a 1 a 2 b 3 a 4 a 5 a 6 b 7 a 8 a 9 b 10 b 11 c ...

python 메모

[pandas] 항목별 개수(value_counts) 그래프 생성

pandas에서 항목별 개수를 세고 matplotlib없이 바로 histogram을 그릴 수 있다. 다음과 같은 데이터가 있다고 하자. data.shape >>> (610292,1) data >>> col 0 a 1 a 2 a 3 a 4 a 5 a 6 b 7 a 8 b 9 a 10 c 11 b 12 a ... 아래 코드로 항목별 개수 그래프를 생성할 수 있다. CountStatus = pd.value_counts(data['col'].values, sort=True) CountStatus.plot.bar() CountStatus.plot.bar(grid=True, figsize=(10,8), fontsize=15) # figsize, fontsize 조정

python 메모

[pandas] 배열에 포함된 row만 남기기

pandas를 통해 특정 조건에 만족하는 값들을 남기는 경우 apply, lambda를 사용할 수도 있지만, 다른 방법도 있어서 정리하고자 한다. isin()을 활용한 배열에 포함된 row만 남기기 다음과 같은 데이터가 있다고 하자 data = pd.DataFrame( {'a':['A','A','B','B','B','C'], 'b':[1,2,5,5,4,6], 'c':[-1,3,-3,2,5,6] }) a b c 0 A 1 -1 1 A 2 3 2 B 5 -3 3 B 5 2 4 B 4 5 5 C 6 6 이때 항목 $a$의 값이 배열 $['B','C']$에 포함된 row만 남기고 싶다고 할때, isin()을 활용하면 된다. data['a'].isin(['B', 'C']) 0 False 1 False 2 True..

python 메모

[pandas] 다중 컬럼(multiple columns) apply 사용하기

pandas는 boolean 연산을 지원하기 때문에 column별 apply를 적용하여 데이터를 다루면 실행시간이 훨씬 빠르며 코드가 간단하다. 다중컬럼을 적용하는 방법은 몇 가지가 있지만 가장 직관적이며 기억하기 쉬운 방법을 소개하고자 한다. 1. 다중 컬럼(multiple columns)에 apply 사용하기 다음과 같은 데이터가 있다고 하자. data = pd.DataFrame( {'a':['A','A','B','B','B','C'], 'b':[1,2,5,5,4,6], 'c':[-1,3,-3,2,5,6] }) a b c 0 A 1 -1 1 A 2 3 2 B 5 -3 3 B 5 2 4 B 4 5 5 C 6 6 이때 항목 $b,c$가 모두 양수인 데이터만 남기고 싶다고 하자. $b$와 $c$ 컬럼을 모..

python 메모

[pandas] groupby를 활용한 그룹별 데이터 목록 리스트화

0. pandas groupby A groupby operation involves some combination of splitting the object, applying a function, and combining the results. This can be used to group large amounts of data and compute operations on these groups. pandas groupby 메소드는 전체 데이터를 그룹별로 나누고(splitting), 각 그룹별로 동일한 함수를 적용하고(applying), 그 결과를 하나로 합쳐(combine) 결과를 return 한다. - pandas groupby documentation - pandas groupby user gui..

Fine애플
'pandas' 태그의 글 목록