즐거운프로그래밍

[pandas] pandas HTML 웹 자료 읽어온 후 데이터 처리

수수께끼 고양이 2023. 11. 15. 17:52
728x90
반응형

GETTING HTML DATA

df = pd.read_html('https://www.livingin-canada.com/house-prices-canada.html')
df

 

자료가 리스트 형식(대괄호 [])으로 표시되었고, 웹페이지 내에 자료가 여러개 있어서 리스트화 되어 표시된 것!

리스트의 갯수를 확인하고 각각 데이터를 확인해야함

len(df) # 리스트의 갯수

 

리스트 갯수가 2개로 확인되어 하나씩 불러와 봄

df[0] # 데이터 프레임

 

df[1]

 

각 데이터 프레임 하단에 자료 데이터 외의 코드가 들어가 있고 
웹페이지 확인시 표 안에 광고 코드를 삽입한 것으로 확인되어 각 데이터에서 해당 부분을 제거함

df[0] = df[0].drop(8, axis=0)
df[0].loc[0:7,]

위 2가지 코드를 사용하여 데이터 가공하여 사용함(결과 값은 같음)

 

df[1] = df[1].drop(11, axis=0)
df[1].loc[0:10,]

 


Average House price의 평균을 구하세요

df[0]['Average House Price'].mean()

위와 같이 오류가 나는데 Average House price 부분이 문자열이라 평균을 계산할 수 없는 것
불필요한 문자를 제거한 뒤 숫자열로 바꿔서 계산할 수 있도록 함

df[0]['Average House Price']
df[0]['Average House Price'].str.replace('$','').str.replace(',','')

값에 '$'와 ',' 를 제거함

df[0]['Price'] = df[0]['Average House Price'].str.replace('$','').str.replace(',','').astype(int)

숫자만 남은 데이터를 숫자열(int 64)로 변경한 뒤 새로운 'price' 컬럼을 만들어 저장함

df[0]

 

Average House price의 평균 값을 구할 수 있게 되었고 값은 아래와 같음 

df[0]['Price'].mean()

 

 

728x90
반응형