파이썬 pandas로 연도별 데이터를 집계하는 방법은?
_____A1: 먼저 날짜 컬럼을 datetime 타입으로 변환한 뒤, `dt.year` 속성을 사용해 연도 정보를 추출합니다. 이후 `groupby`와 집계 함수를 사용해 연도별로 데이터를 집계할 수 있습니다.
예시 코드:
```python
import pandas as pd
데이터 예제
df = pd.DataFrame({
'date': ['2021-01-15', '2021-03-20', '2022-02-10', '2022-06-25'],
'value': [10, 20, 30, 40]
})
날짜 컬럼을 datetime으로 변환
df['date'] = pd.to_datetime(df['date'])
연도 컬럼 생성
df['year'] = df['date'].dt.year
연도별 value 합계 집계
yearly_sum = df.groupby('year')['value'].sum().reset_index()
print(yearly_sum)
```
Q2: datetime 컬럼이 없고 문자열 형태로 연도가 있다면 어떻게 하나요?
A2: 문자열에서 연도만 추출해 새로운 컬럼으로 만들고 같은 방식으로 `groupby`를 사용하면 됩니다.
예시:
```python
df['year'] = df['date_str'].str[:4].astype(int)
yearly_sum = df.groupby('year')['value'].sum()
```
Q3: 연도별로 여러 집계 함수(합계, 평균, 건수)를 동시에 적용하려면?
A3: `agg()` 함수에 집계 함수를 딕셔너리 형태로 넣어 여러 집계를 적용할 수 있습니다.
```python
df.groupby('year')['value'].agg(['sum', 'mean', 'count']).reset_index()
```
Q4: 연도-월별 집계도 가능한가요?
A4: 네, `dt.to_period('M')`을 사용해 연-월 기간을 추출하고 그룹핑하면 됩니다.
예시:
```python
df['year_month'] = df['date'].dt.to_period('M')
monthly_sum = df.groupby('year_month')['value'].sum().reset_index()
```
Q5: 연도별 집계 후 결과를 datetime 타입으로 변환할 수 있나요?
A5: 연도별 데이터에서 연도만 있을 때는 `pd.to_datetime(df['year'], format='%Y')`를 사용하면 datetime 타입으로 변환됩니다.
Q6: 여러 컬럼 기준으로 연도별 집계를 하고 싶을 때는?
A6: `groupby` 안에 여러 컬럼을 리스트 형태로 넘기면 됩니다.
예시:
```python
df.groupby(['year', 'category'])['value'].sum().reset_index()
```
Q7: 연도별 집계 시 누락된 연도도 모두 표시하려면?
A7: 연도 범위를 먼저 생성해서 DataFrame으로 만들고, 집계 결과를 합치면 누락 연도도 표시할 수 있습니다.
예시:
```python
years = pd.DataFrame({'year': range(df['year'].min(), df['year'].max() + 1)})
yearly_sum = df.groupby('year')['value'].sum().reset_index()
complete = years.merge(yearly_sum, on='year', how='left').fillna(0)
```
이상으로 pandas에서 연도별 데이터를 집계하는 주요 방법들에 대해 안내해드렸습니다.
아래는 연도별 데이터를 집계하는 기본적인 방법과 예제입니다.
기본 단계 1. Pandas 라이브러리 설치 및 임포트 : 설치되어 있지 않다면 `pip install pandas` 명령어로 설치하세요.
2. 데이터 준비 : 연도별 집계를 수행할 데이터를 준비합니다.
데이터는 보통 DataFrame 형태로 저장되어 있습니다.
3. '연도' 추출 : `pd.to_datetime` 함수를 사용하여 날짜 형식의 데이터를 datetime 객체로 변환한 후, 연도를 추출합니다.
4. 그룹화 및 집계 : `groupby` 메서드를 사용하여 연도별로 데이터를 그룹화하고, 필요한 통계치를 계산합니다.
예제 코드 아래의 예제에서는 날짜와 함께 판매량 데이터를 가진 DataFrame을 생성하고, 연도별 판매량의 합계를 집계하는 방법을 보여줍니다.
```python import pandas as pd 예제 데이터 생성 data = { 'date': ['2021-01-15', '2021-05-25', '2022-03-10', '2022-07-20', '2023-02-15'], 'sales': [200, 150, 300, 250, 100] } df = pd.DataFrame(data) 'date' 열을 datetime 형식으로 변환 df['date'] = pd.to_datetime(df['date']) 연도별 데이터 집계 df['year'] = df['date'].dt.year 연도 추출 연도별 판매량의 합계 계산 yearly_sales = df.groupby('year')['sales'].sum().reset_index() 결과 출력 print(yearly_sales) ``` 출력 결과 ``` year sales 0 2021 350 1 2022 550 2 2023 100 ``` 설명 1. 데이터 생성 : `date`와 `sales`라는 두 가지 열을 가진 DataFrame을 생성합니다.
2. 날짜 변환 : `pd.to_datetime`을 통해 'date' 열을 날짜 형식으로 변환합니다.
3. 연도 추출 : `dt.year` 속성을 사용하여 새로운 'year' 열을 추가합니다.
4. 그룹화 및 집계 : `groupby('year')['sales'].sum()`를 사용하여 연도별 판매량의 합계를 계산합니다.
5. 결과 출력 : 연도별 판매량 합계를 출력합니다.
이 방법을 통해 Pandas를 활용하여 연도별 데이터를 쉽게 집계할 수 있습니다.
필요에 따라 평균, 최대값, 최소값 등의 다른 집계 함수도 사용할 수 있습니다.
작성자:
최윤아 [비회원]
| 작성일자: 1년 전
2025-02-10 05:31:10
조회수: 149 | 댓글: 0 | 좋아요: 0 | 싫어요: 0
조회수: 149 | 댓글: 0 | 좋아요: 0 | 싫어요: 0
내용이 부정확하다면 싫어요를 클릭해주세요.