본문 바로가기

판다스/판다스 팁50

[pandas] datetime을 연도와 쿼터를 표기하는 문자열로 변환하고 싶을 때 datetime을 연도와 쿼터를 표기하는 문자열로 변환하고 싶을 때 예제 import pandas as pd df = pd.DataFrame(['2022-01-03', '2023-05-04'], columns=['date']) df['date'] = pd.to_datetime(df['date']) 쿼터를 의미하는 strftime의 %q 지시자는 datetime 자료형을 대상으로 사용할 수 없다. 해결1 to_period 함수로 period 자료형으로 변환하면 연도와 쿼터의 조합으로 표기된다. 문자열로 만들려면 결과에 astype 함수를 적용해 문자열로 변환하자 df['date'].dt.to_period('Q').astype('str') 0 2022Q1 1 2023Q2 Name: date, dtype: o.. 2024. 3. 18.
[pandas] NaN이 포함된 열에서 정수를 유지하는 방법 판다스 NaN이 포함된 열에서 정수를 유지하는 방법 데이터 분석 과정에서, NaN 값을 포함한 열은 dtype이 실수(float)로 변환됩니다. 그 결과, 정수로 입력된 값이 실수 형태로 변환되어 표현됩니다. 예제:import pandas as pds = pd.Series([1, 2, 3, float('nan')]) s:0 1.0   NaN 값을 포함하는 열은 자동으로 실수형으로 변환되기 때문에, 정수를 유지할 수 없습니다. 일반적으로 NaN은 결측값을 의미하기에 반드시 NaN을 사용할 필요는 없습니다. NaN 대신 다른 null 값을 사용하면 정수를 유지할 수 있습니다. 판다스에서 제공하는 Int64 자료형을 사용하면 가능합니다. s.astype('Int64') out:0 11 .. 2024. 2. 27.
[pandas] 문자열에서 정규 표현식으로 그룹을 활용하는 방법 예제 import pandas as pd data1 = ['Home: 롯데, Away: 한화', 'Home: 삼성, Away: 기아'] s = pd.Series(data1) s 0 Home: 롯데, Away: 한화 1 Home: 삼성, Away: 기아 dtype: object 홈팀과 어웨이팀을 맞교환하자. 다양한 방법이 있겠지만, 정규 표현식으로 그룹을 나눠 해당 그룹을 맞바꾼 결과로 해결할 수 있다. 문자열 대체를 위해 str.replace 함수를 정규 표현식으로 사용하자. df['팀'].str.replace(r'Home: (.+), Away: (.+)', r'Home: \2, Away: \1', regex=True) out: 0 Home: 한화, Away: 롯데 1 Home: 기아, Away: 삼성 .. 2024. 2. 27.
[pandas] 각 열을 고윳값의 순서대로 정렬하기 예제: import pandas as pd data = { '지점': ['양재점', '관악점', '서초점', '관악점', '서초점', '양재점', '서초점', '양재점', '관악점'], '제품': ['콜라', '환타', '환타', '사이다', '콜라', '환타', '사이다', '사이다', '콜라'], '매출': [5000, 3000, 7000, 2000, 9000, 6000, 8000, 4000, 1000] } df = pd.DataFrame(data) df의 지점 열의 고윳값의 순서인 양재점-> 관악점-> 서초점 순서로 정렬하고 지점 안에서 제품을 정렬할 때도 제품 열의 고윳값 순서인 콜라-> 환타-> 사이다 순으로 정렬합니다 # 카테고리 자료형을 활용해 정렬합니다. out = df.sort_value.. 2024. 2. 20.
[pandas] 그룹내에서 정렬하기 예제: import numpy as np import pandas as pd data1 = {'지점' : ['관악점', '관악점', '관악점', '양재점', '양재점', '양재점', '서초점', '서초점', '서초점'], '제품' : ['콜라', '사이다', '환타', '사이다', '콜라', '환타', '환타', '사이다', '콜라'], '매출' : np.arange(1, 10) * 1000} df = pd.DataFrame(data1) 지점의 정렬상태는 그대로 두고 제품만 콜라-> 사이다 -> 환타 순으로 정렬해 보겠습니다. Category 데이터를 활용해 정렬 순서를 정할 수 있습니다. # 정렬 순서 정하기 order = df['지점'].unique().tolist() + ['콜라', '사이다', '.. 2024. 2. 20.
[pandas] 멀티 인덱스의 각 레벨의 유일 값 찾기 예제. import pandas as pddata1 = {('김판다', '영어'): [50, 20, 35], ('김판다', '국어'): [60, 5, 45], ('강승주', '영어'): [70, 10, 60], ('강승주', '국어'): [100, 30, 50]}df = pd.DataFrame(data1)  df:     columns의 첫 번째 레벨의 값을 반환해 보자. df.columns.unique(0)  Index(['김판다', '강승주'], dtype='object')  김판다, 강승주 두 유일 값을 반환한다. 판다스 책이 출판되었습니다. 교보문고 구매 페이지, 알라딘 구매 페이지, yes24 구매 페이지 2024. 2. 20.