[TIL] 22.10.12

문종현·2022년 10월 12일
0

TIL

목록 보기
14/119
post-custom-banner

👉 오늘 한 일

  • 서울 아파트 분양가 실습 이어서
  • kosis 실습(국가 및 권역별 전산업·소재부품장비산업별 수출·수입)

서울 아파트 분양가 분석

주피터 노트북 껐다 켰을 때 restart & clear output해서 보기 권장

분양가격의 NA => 신규 분양이 없음으로 해석 가능

  • 이런 식으로 결측치에 대한 해석을 해보고, 어떻게 처리할지 고민하기

pd.options.display.max_columns = None

  • pandas의 옵션 중 컬럼 표시 개수 지정
  • None일 경우 모두 표시. 열의 개수가 너무 많을 경우 메모리 사용량 때문에 다운될 수 있음

pd.melt() : 열에 있는 데이터를 행으로 녹임

  • id_vars : 남겨둘 칼럼
  • value_vars : 행으로 녹일 칼럼
    • 남은 칼럼들은 버림
  • var_name : 열로 녹인 칼럼의 이름
  • value_name : 행으로 녹인 칼럼의 이름

기간을 년월로 분리
df_first_melt["연도"] = df_first_melt["기간"].map(lambda x : int(x.split("년")[0])) -> 년
df_first_melt["월"] = df_first_melt["기간"].map(lambda x : int(x.split("년")[1].replace("월", ""))) -> 월

.copy()는 서브셋을 사용할 것이 아니라면 쓰지 않아도 됨

plt.legend(bbox_to_anchor=(1,1)) : 범례 위치 조정

seaborn의 fmt

  • ,.0f : 천 단위마다 , 표시 및 소수점 표시 안함

swarmplot : scatterplot, stripplot의 단점을 보완하기 위해 사용. 어디에 데이터가 많고 적은지 확인 가능

barplot, pointplot은 대푯값(e.g. 평균)만을 표현한다는 단점이 있음
boxplot은 데이터 분포를 알기 힘들다는 단점이 있음

그래프에서 sort 하고 싶다면 데이터프레임 자체를 정렬하거나 order 옵션에서 정렬된 인덱스값 넣기

  • e.g.
# 내림차순 정렬 방법 1
local_table = pd.pivot_table(df, index="지역명", values="평당분양가격").sort_values("평당분양가격", ascending=False)
sns.barplot(local_table, x=local_table.index, y="평당분양가격")
# 내림차순 정렬 방법 2
sns.barplot(df, x="지역명", y="평당분양가격", order=local_table.index)

long-form 데이터일 때 x, y, hue를 각각의 컬럼으로 지정하는 형식
wide-form 데이터는 가공 되어있기 때문에 필요한 컬럼만 지정해서 사용 혹은 재가공

국가 및 권역별 전산업·소부장 산업별 수출·수입 분석

kosis(통계청) 데이터의 행렬전환 기능으로 melt 가능(표두 <=> 표측)

정규표현식

  • [ ] : 일치시킬 문자 세트의 패턴
  • [가나다] : 가 or 나 or 다 중에 하나를 포함하고 있는지
  • [가-힣] : 한글 가부터 힣까의 문자 중 하나를 포함하고 있는지
  • [0-9] : 0~9까지의 숫자 중 하나를 포함하고 있는지
  • [^0-9] : 숫자를 포함하고 있지 않음
  • [^가-힣] : 한글이 포함되어 있지 않음
  • [가-힣+] : 한글이 하나 이상 포함되는지

python 문자열의 기본 메서드 replace는 기본적으로 정규표현식을 지원하지 않음(keyword arg가 없음)

등등.. 이해만 하고 그때그때 문서를 확인해서 사용하는 것을 권장

파이썬 공식문서 정규표현식 참고하기 :
https://docs.python.org/ko/3.10/library/re.html#re.sub

얕은 복사와 깊은 복사 => 나중에 살펴보기 ❓

https://wikidocs.net/16038

  • 객체에는 mutable과 immutable 객체가 있음
  • 슬라이싱은 얕은 복사에 해당됨
  • 리스트안에 리스트(mutable객체 안에 mutable객체)를 할당할 경우 문제
  • 데이터프레임의 .copy()는 깊은 복사임

판다스에서 과학적 표기법 표시 변경

  • pd.options.display.float_format = '{:.02f}'.format
  • 소수점 둘째짜리까지만 나타냄
  • 원래대로 변경 : pd.reset_option('display.float_format')

plotly express

px.histogram == seabornbarplot과 유사한 기능

  • 용어의 차이에 주의(seaborn의 estimate == plotly express의 histfunc)

px.histogram

  • color : hue 옵션과 비슷한 기능. 범주에 따라 다른 색상 지정
  • barmode="group" : 막대 옵션. 범주에 따라 옆으로 막대 생성
  • facet_col , facet_col_wrap : seaborn과 동일(facet_col, col_wrap)

퀴즈 정리
df["월"] = df["기간"].str.split("년", expand=True)[1].str[1:].astype(int) => 이런 형태는 파생변수가 제대로 만들어지지 않음!

profile
자라나라 새싹새싹🌱
post-custom-banner

0개의 댓글