1. 데이터 불러오기:주어진 csv 파일 "아파트(매매)_실거래가_서울_2022.csv"를 활용하여 데이터프레임(DataFrame)을 생성하고
"df_trade" 변수에 저장한 후 아래의 결과를 확인하시오.
(파일의 내용을 확인하여 불필요 데이터는 제외하고 데이터프레임을 만들어야 합니다.)
- df_trade에 저장된 데이터프레임의 전체 관측치(행)와 변수(열)의 개수를 출력하시오.
- df_trade에 저장된 데이터프레임의 변수(열) 별 데이터유형을 확인 및 출력하시오.
df_trade = pd.read_csv('./아파트(매매)_실거래가_서울_2022.CSV', encoding='CP949',skiprows=16) display(df_trade)
- 'CP949' 인코딩을 사용하여 CSV 파일을 읽어들이고, 처음 16행은 건너뜁니다.
- 데이터프레임 df_trade에 저장합니다.
display(df_trade) print(df_trade.shape) print(df_trade.dtypes)
- 데이터프레임의 내용을 출력합니다.
- 데이터프레임의 행과 열의 개수를 출력합니다.
- 데이터프레임의 각 열의 데이터 유형을 출력합니다.
2. 결측값 및 파생 변수 생성:위 1번의 **"df_trade"**의 데이터프레임에 **"선택조건"**의 관측치(행)만을 선택하여 **"df_trade"**에 저장한 후 "평당거래금액(만원)" 변수(열)를 추가하하고 "df_trade" 데이터프레임을 출력하시오.
- 선택조건: "해제사유발생일"이 "결측값"인 데이터 (결측값이 아닌 경우 취소된 거래 건)
- 산 술 식: "평당거래금액(만원)" = "거래금액(만원)" / "전용면적(㎡)"
cond = df_trade['해제사유발생일'].isnull() df_trade['평당거래금액(만원)'] = df_trade['거래금액(만원)'] / df_trade['전용면적(㎡)'] df_trade = df_trade[cond] df_trade.head(10)
- '해제사유발생일' 열이 비어있는 행을 선택합니다.
- '평당거래금액(만원)' 열을 추가하여 '거래금액(만원)'을 '전용면적(㎡)'로 나눕니다.
- 위에서 선택한 행만 남기고 데이터프레임을 업데이트합니다.
3. 데이터 집계 및 부분선택:위 2번의 **"df_trade"**의 데이터프레임을 대상으로 "시군구" 별 "평당거래금액(만원)" 의 평균이 높은 5개 지역을 target 으로 지정한 후 아래의 결과를 확인하시오.
- "df_trade" 데이터프레임의 관측치(행) 중 "시군구" 변수가 target 에 속하는 관측치만을 선택하여 출력하시오.
- "df_trade" 데이터프레임의 관측치(행) 중 "거래유형" 이 "중개거래" 인 관측치만을 선택하여 출력하시오.
- 위 두개의 조건을 모두 만족하는 관측치(행)를 선택하고 "df_sub" 변수에 결과를 저장하시오
target_mean = df_trade.groupby('시군구',as_index=False)['평당거래금액(만원)'].mean() target = target_mean.nlargest(5,'평당거래금액(만원)')['시군구']
- '시군구' 별 '평당거래금액(만원)'의 평균을 계산합니다.
평균이 가장 높은 5개 '시군구'를 선택합니다.cond1 = df_trade['시군구'].isin(target) cond2 = df_trade['거래유형'].isin(['중개거래']) cond_comb = cond1 & cond2 df_sub = df_trade[cond_comb]
- '시군구'가 target에 속하는 행을 선택합니다.
- '거래유형'이 '중개거래'인 행을 선택합니다.
- 두 조건을 모두 만족하는 행만 선택하여 df_sub에 저장합니다.
4. 데이터 집계 및 데이터처리 2:위 3번의 **"df_sub"**의 데이터프레임을 대상으로 "단지명" 별 "거래건수", "평당평균거래금액(만원)", "최대거래금액(만원)", **"최소전용면적(㎡)"**을 집계한 후 아래의 조건에 따른 15개 **관측치(행)**을 선택하여 df_result에 저장한 후 결과를 확인하시오.
- 선택조건: **"거래건수"**가 많은 15개의 관측치 선택 (거래건수가 동일할 경우 "평당평균거래금액(만원)"이 높은 순)
- 출력변수: "단지명", "거래건수", "평당평균거래금액(만원)", "최대거래금액(만원)", " 최소전용면적(㎡)"
df_sub2 = df_sub['단지명'].value_counts(ascending=False).nlargest(15)
'단지명' 별 거래 건수를 내림차순으로 정렬하고, 상위 15개 단지를 선택합니다.
df_sub6 = df_sub.groupby('단지명',as_index=False).agg({'평당거래금액(만원)':'mean', '거래금액(만원)' : 'max','전용면적(㎡)':'min'})
- '단지명' 별로 '평당거래금액(만원)'의 평균, '거래금액(만원)'의 최댓값, '전용면적(㎡)'의 최솟값을 계산합니다.
df_result = pd.merge(df_sub2,df_sub6,how='inner',on = '단지명') df_result = df_result.rename(columns={'count' : '거래건수', '평당거래금액(만원)': '평당평균거래금액(만원)','거래금액(만원)':'최대거래금액(만원)', '전용면적(㎡)':'최소전용면적(㎡)'})
- df_sub2와 df_sub6를 '단지명'을 기준으로 inner join합니다.
- 열 이름을 변경합니다.
5. 데이터프레임 저장: 위 4번의 "df_result"데이터프레임을 "agg_result.csv" 이름의 파일로 저장하시오.
df_result.to_csv('./agg_result.csv', index=True, encoding='CP949')
- 최종 결과 데이터프레임 df_result를 'agg_result.csv' 파일로 저장합니다.
주요 메소드와 함수:
- pd.read_csv(): CSV 파일을 데이터프레임으로 불러옵니다.
- display(): 데이터프레임을 화면에 출력합니다.
- df.shape: 데이터프레임의 행과 열의 개수를 반환합니다.
- df.dtypes: 데이터프레임의 각 열의 데이터 유형을 반환합니다.
- df['열이름'] = 계산식: 데이터프레임의 새로운 열을 생성합니다.
- df[조건]: 데이터프레임에서 조건에 해당하는 행을 선택합니다.
- df.groupby('열이름').agg({'열이름':'집계함수'}): 데이터프레임을 특정 열로 그룹화하고 집계 함수를 적용합니다.
- df.nlargest(n, '열이름'): 데이터프레임의 특정 열에서 상위 n개 값을 반환합니다.
- df.isin(['값1', '값2']): 데이터프레임의 특정 열에서 특정 값이 포함된 행을 선택합니다.
- pd.merge(df1, df2, how='inner', on='열이름'): 두 개의 데이터프레임을 지정된 열을 기준으로 병합합니다.
- df.rename(columns={'기존열이름':'새로운열이름'}): 데이터프레임의 열 이름을 변경합니다.
- df.to_csv('파일명.csv', index=True, encoding='CP949'): 데이터프레임을 CSV 파일로 저장합니다.
'ABC 부트캠프 데이터 탐험가 4기' 카테고리의 다른 글
[12 일차] ABC 부트캠프 : ESG 특강 (2) (0) | 2024.07.21 |
---|---|
[11 일차] ABC 부트캠프 : 크롤링 및 데이터 시각화 (0) | 2024.07.21 |
[9 일차] ABC 부트캠프 : 데이터 집계와 시각화(1) (0) | 2024.07.16 |
[8일차] ABC 부트캠프 : pandas 기초 , 데이터 전처리 기초(2) (0) | 2024.07.16 |
[7일차] ABC 부트캠프 : pandas 기초 , 데이터 전처리 기초(1) (0) | 2024.07.14 |