주피터 노트북 껐다 켰을 때 restart & clear output해서 보기 권장
분양가격의 NA => 신규 분양이 없음으로 해석 가능
pd.options.display.max_columns = 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 옵션에서 정렬된 인덱스값 넣기
# 내림차순 정렬 방법 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
얕은 복사와 깊은 복사 => 나중에 살펴보기 ❓
.copy()
는 깊은 복사임판다스에서 과학적 표기법 표시 변경
pd.options.display.float_format = '{:.02f}'.format
pd.reset_option('display.float_format')
px.histogram
== seaborn
의 barplot
과 유사한 기능
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)
=> 이런 형태는 파생변수가 제대로 만들어지지 않음!