본문 바로가기

분류 전체보기242

집계 결과를 열로 만드는 방법 groupby + transform을 사용하면 집계 결과를 열로 만들 수 있다. 먼저 다음 예제 코드를 보자 import pandas as pd data = {'학생': ['김판다', '강승주', '조민영', '최진환', '박연준', '고준희'], '반': ['A', 'A', 'B', 'B', 'B', 'C'], '점수': [0, 100, 20, 40, 60, 30]} df = pd.DataFrame(data) 이 df를 활용해 그림처럼 소속반의 평균이 담긴 열을 만들어보자 예를 들어 A반의 학생은 첫번째 행의 김판다와 두번째 행의 강승주이다. 둘의 점수가 0점과 100점이니 A반의 평균은 50이 되고 A반 소속인 김판다와 강승주의 데이터는 반평균열에서 둘다 50이 된다 방법 groupby + trans.. 2023. 8. 30.
Timedelta 자료형을 실수(float)로 바꾸는 방법 판다스에서는 두 시점의 시간 차이를 Timedelta 자료형으로 나타낸다 다음 예를 보자 import pandas as pd date1 = pd.to_datetime('2023-01-02') date2 = pd.to_datetime('2023-03-10') date1 - date2 Timedelta('-67 days +00:00:00') 2023-01-02와 2023-03-10의 시간 차이는 '-67 days +00:00:00' 임을 의미한다 이것을 그냥 실수로 -67로 표현하고 싶을 때가 있을 것이다. 그때는 Timedelta로 표현된 1day로 나눠주면 된다 (date1 - date2) / pd.Timedelta('1 day') 결과: -67.0 손쉽게 실수(float)로 변환할 수 있다 유튜브에서 .. 2023. 8. 30.
[pandas] 영업일(business day)을 배열로 생성하는 방법 판다스에서 영업일(business day)을 배열로 생성하는 방법주말을 제외해 영업일 가져오기 판다스에서는 date_range 함수를 통해 날짜 배열을 얻을 수 있으며, 주기(freq)를 'B'로 지정하면 토요일과 일요일을 제외한 영업일을 얻을 수 있습니다. 다음 코드를 통해 2023-08-10부터 5개의 영업일을 추출해 보겠습니다.import pandas as pdpd.date_range('2023-08-10', periods=5, freq='B')DatetimeIndex(['2023-08-10', '2023-08-11', '2023-08-14', '2023-08-15', '2023-08-16'], dtype='datetime64[ns]', freq='B')  지정한 공휴일을 제.. 2023. 8. 28.
apply를 무분별하게 쓰면 안되는 이유 오늘은 수강생이 올려준 코드에서 apply를 무분별하게 쓰고 있는 것을 발견했다. 그러면 안되는 이유에 대해서 알아보자 다음 예제 코드를 보자 import pandas as pd data1 = {'날짜': ['2023-01-29', '2023-01-30', '2023-01-31', '2023-01-31', '2023-02-01'] * 200000} df1 = pd.DataFrame(data1) df1 df1은 100만행의 데이터이다 df1의 날짜열을 datetime 형식으로 바꾸려면 아래와 같은 코드로 가능하다 pd.to_datetime(df1['날짜']) 그런데 수강생이 (목적은 아마도 메서드로 쓰고 싶었던 것 같다) 아래와 같은 코드로 apply로 to_datetime을 적용했다 df1['날짜'].a.. 2023. 8. 25.
[pandas] 엑셀의 날짜가 숫자로 읽어질 때 datetime으로 변환하는 방법 종종 엑셀의 날짜가 숫자로 읽어질 때가 있다 그때 datetime으로 변환하는 방법을 살펴보겠다 예제 import pandas as pd s = pd.Series([44678, 45890]) s 0 44678 1 45890 dtype: int64 s는 엑셀에서 불러온 데이터는 아니지만 엑셀의 날짜가 숫자로 불러질때와 같은 데이터가 담겨 있다 이 숫자의 의미는 1899-12-30부터 몇번째 날인지를 숫자로 표현한 것이다. (만약 소수점이 있다면 그것은 시간이다) 이것을 datetime으로 변환하려면 to_datetime의 origin을 설정하고 단위를 날(day)에 해당하는 D로 설정하면 해결된다 pd.to_datetime(s, unit='D', origin='1899-12-30') output: 0 20.. 2023. 8. 25.
[pandas] 멀티 인덱스에서 특정 값 수정하기 판다스 멀티 인덱스에서 특정 값 수정하기이번 글에서는 판다스에서 멀티 인덱스 값을 일부 변경하는 다양한 방법을 다루겠습니다. 단계별로 예시를 통해 설명할 예정이니, 먼저 아래의 코드를 통해 예시 데이터프레임을 생성해 주세요.import pandas as pddata1 = {('A팀', '삼성전자'): [10, 20, 30, 30, 30], ('A팀', '카카오'): [20, 20, 40, 40, 40], ('B팀', '삼성전자'): [30, 30, 10, 10, 30], ('B팀', '카카오'): [40, 40, 20, 20, 40], ('C팀', '삼성전자'): [50, 50, 50, 50, 30], ('C팀', '카카오'.. 2023. 8. 23.