본문 바로가기

판다스/판다스 팁50

[pandas] 날짜가 속한 분기의 마지막 날 구하기 예제 import pandas as pdidx = pd.to_datetime(['2023-01-03', '2023-06-28'])  주어진 배열인 2023-01-03과 2023-06-28가 소속된 분기의 마지막 날을 반환합니다.  1. period로 변환 뒤 다시 timestamp로 전환하면 됩니다. idx.to_period('Q').to_timestamp('Q')  DatetimeIndex(['2023-03-31', '2023-06-30'], dtype='datetime64[ns]', freq=None)       2. pd.offsets.QuarterEnd 함수를 사용합니다. idx + pd.offsets.QuarterEnd()  결과는 1번과 동일합니다. 판다스 책이 출판되었습니다. 교보문고 구매 .. 2024. 3. 30.
[pandas] 정렬시 매개 변수 key에 열마다 다른 함수 할당하기 예제import pandas as pddata1 = {'col1': ['b', 'a', 'B', 'c', 'a', 'a', 'a', 'B'], 'col2': ['ab', 'abc', 'aa', 'abcd', 'bbb', 'a', 'b', 'c'], 'col3': [7, 9, 2, 2, 2, 6, 7, 9]}df = pd.DataFrame(data1) df: col1은 대소문자를 가리지 않고 정렬하고,col2는 글자수에 따라 정렬하고,col3는 숫자에 따라 오름차순으로 정렬합니다. 정렬의 순서는 col1 → col2 → col3 열의 순서입니다.  물론 정렬용 열을 만들어 정렬을 수행 뒤 삭제를 할 수 있습니다.out = (df .assign(col4=df['co.. 2024. 3. 29.
[pandas] AAA → AA → A → BBB순으로 정렬하기 예제 import pandas as pddata1 = {'Grade': ['AAA', 'C', 'BB', 'AA', 'BBB', 'A'], 'Value': [10, 20, 30, 40, 50, 60]}df = pd.DataFrame(data1) df   정렬 문제 AAA → AA → A → BBB순으로 정렬하기     먼저 첫 글자로 정렬하고, 동일할 때 문자의 길이로 정렬을 수행합니다. sort_values 함수의 매개변수 key를 활용합니다. out = df.sort_values( 'Grade', key=lambda x: [(i[0], -len(i)) for i in x]) out:   혹은 Grade 열에 판다스의 문자열 함수를 적용해 두 개의 시리즈를 생성한 다음 zip 함수.. 2024. 3. 28.
[pandas] 특정 대상만 끌어 올려 정렬하기 예제 import pandas as pddata1 = {'col1': pd.Index(['B', 'C', 'A', 'E', 'D']).repeat([2, 3, 1, 1, 1]), 'col2': [5, 0, 3, 3, 7, 9, 3, 5]}df = pd.DataFrame(data1)  df:   정렬 예제  D를 가장 위에 올리고 E를 다음으로 올리고 나머지는 알파벳 순서로 정렬하라        sort_values 함수의 매개변수 key를 사용해 정렬을 수행합니다. # 정렬 대상order = {'D': 0, 'E': 1}# sort_values의 매개변수 key로 정렬out = df.sort_values( by="col1", key=lambda x: [(order.get(i,.. 2024. 3. 28.
[pandas] 정해진 임의 순서로 정렬 하기 예제 import pandas as pd data1 = { '지점': ['서초점', '서초점', '양재점', '양재점', '서초점', '양재점'], '제품': ['환타', '콜라', '콜라', '사이다', '사이다', '콜라'], '매출': [7000, 9000, 5000, 1000, 2000, 4000] } df = pd.DataFrame(data1) 정렬 문제 1. 지점을 서초→양재 순으로 먼저 정렬하고 2. 제품은 콜라→환타→사이다 순으로 정렬하고 3. 지점과 제품이 동일할 때는 매출이 적은 순서로 정렬하라 먼저 지점과 제품의 정렬 순서로 카테고리를 생성하는 코드를 만들어 지점과 제품 열에만 적용하면 됩니다. # 정렬 순서 order = ['서초점', '양재점', '콜라', '환타', '사이다'] .. 2024. 3. 28.
[pandsa] NaN 위치에 데이터를 끌어 올리는 방법 예제 import pandas as pd data = {'반': ['A', 'A', 'A', 'B', 'B', 'B'], '점수': [91, 90, 80, 90, 80, 70], '국어': ['김판다', float('nan'), float('nan'), '최진환', float('nan'), float('nan')], '영어': [float('nan'), '조민영', '안지선', float('nan'), '박연준', '권보아'], '수학': [float('nan'), float('nan'), '강승주', float('nan'), float('nan'), '임재범']} df = pd.DataFrame(data) NaN 위치에 데이터를 끌어 올려 다음과 같은 데이터를 만들어 보자. 이럴 때 transform .. 2024. 3. 19.