(시별 최근 3년 거래금액 top10 이어서 그대로 진행)

df1.head(20)

df2 = df1.groupby(['법정동']).count().sort_values(by='거래금액', ascending=False)[['거래금액']]
df2 = df2[df2['거래금액']>=1000]
df2

df2.columns = ['거래량']
df2

!pip install PublicDataReader
from PublicDataReader import HousingLicense
service_key = "키 입력"
api = HousingLicense(service_key)
dfa = api.get_data(
service_type="행위개요",
sigungu_code="41135",
bdong_code="11000",
bun="542",
ji="",
)
dfa.head(1)

df.columns

단지 기본정보 엑셀파일 다운로드
df02 = pd.readexcel('C:/Users/폴더~~~스/20240823단지_기본정보.xlsx', skiprows=1)
데이터프레임 확인하기
f02.head(20)

df02 = df02[['시도', '시군구', '읍면', '동리', '단지명', '세대수']]
df02.head(20)

df02 = df02.groupby(['동리']).sum()[['세대수']]
df02

df3 = pd.merge(df2, df02, how = 'inner', left_on = df2.index, right_on = df02.index)
df3

df3['거래량비중'] = round((df3['거래량'] / df3['세대수'])*100, 2)
df3

df3 = df3.sort_values(by='거래량비중', ascending = False)
df3.head()

plt.figure(figsize=(20, 9))
제목 설정
plt.title('세대수별 거래량비중')
바플롯 그리기
barplot = sns.barplot(x='key_0', y='거래량비중', data=df3, palette=sns.color_palette('deep'))
각 바 위에 텍스트 레이블 추가
for bar in barplot.patches:
# 바의 높이
height = bar.get_height()
# 바의 x 위치
x = bar.get_x() + bar.get_width() / 2
# 텍스트 추가
plt.text(x, height + 0.5, f"{height:.2f}", ha='center', va='bottom', fontsize=9, color='blue')
x축 레이블 회전
plt.xticks(rotation=45)
plt.ylim(0, 15)
그래프 보여주기
plt.show()
14. 계약연도가 2023년인 데이터프레임 확인
df

a1 = df[df['계약년도']=='2023']
a1

15. 전용면적으로 평수 만들기 & 거래금액 데이터 정제
a1['전용면적'] = a1['전용면적'].apply(lambda x : float(x))
a1['평수'] = a1['전용면적'].apply(lambda x : x*0.3025)
a1['거래금액'] = a1['거래금액'].apply(lambda x : float(x.replace(',','')))
15. 법정동코드 관련 데이터프레임 만들기
a2 = a1[['거래금액','법정동시군구코드','평수','계약월']]
a2= pd.merge(a1, city, how='left', left_on=a1['법정동시군구코드'], right_on=city['법정동코드'])
a2.head()

16. 법정동주소, 계약월 기준 평수, 거래금액 합계
a3 = a2.groupby(['법정동주소', '계약월']).sum()[['평수','거래금액']]
a3.head()

17. 평당실거래가 생성
a3 = a3.reset_index()
a3['계약월'] = a3['계약월'].apply(lambda x : '0' + str(x) if int(x) < 10 else str(x))
a3['평당실거래가'] = round(a3['거래금액']/a3['평수'], 0)
a3['평당실거래가'] = a3['평당실거래가'].apply(lambda x : int(x))
a3 = a3.sort_values(by = '계약월', ascending=False)
a3

18. 데이터프레임 잡기
a3 = pd.DataFrame(a3.pivot_table(values='평당실거래가', index='법정동주소', columns='계약월'))
a3 = a3.astype('int')
19. 연도별 구별 아파트 평당 실 거래금액 그래프 생성
plt.rcParams['font.size'] = 12
plt.figure(figsize=(20, 11))
plt.rcParams['font.family'] = 'Malgun Gothic'
#dfct = pd.DataFrame(a3.pivot_table(values='평당실거래가', index='법정동주소', columns = '계약월'))
sns.heatmap(a3, cmap = 'Blues', annot=True, fmt='d')
plt.title('2023년 1월 ~ 12월 구별 아파트 평당 실 거래금액', fontsize = 18)

19. 데이터프레임 확인
a2.head()

a1.head()

20. 법정동주소, 계약월 기준 거래 발생건 세기(거래금액 기준)
a4 = a2.groupby(['법정동주소', '계약월']).count()[['거래금액']]
a4

병합한 것을 풀기 위해 리인덱스 과정을 거쳐야 함
a4 = a4.reset_index()
a4

21. 법정동 주소별 계약월, 거래건수 확인
a4['계약월'] = a4['계약월'].apply(lambda x : '0' + str(x) if int(x) < 10 else str(x))
계약월 값이 10보다 작으면 앞에 '0'을 붙여 두 자리 숫자로 만듦
예를 들어, 1월은 '01', 9월은 '09'로 변환됨
이미 두 자리인 경우 그대로 유지됨
a4 = a4.rename(columns={'거래금액':'거래건수'})
a4

