koreanize_matplotlib
: 한글폰트 이용
str.replace()
replace()
정규표현식(regular expression) : 특정한 규칙을 가진 문자열의 집합을 표현하는 데 사용하는 형식 언어
df["조건식"]
, df.loc["조건식"]
df["조건식"]
: 컬럼을 바로 인덱싱df.loc["조건식"]
: row와 column을 이용해 인덱싱%timeit
으로 비교했을 때 .loc
로 가져오는 것이 속도가 빠름str.contains
를 활용해서 특정 문자가 포함된 데이터를 찾는 조건식으로 만들 수 있음df.loc[df["접촉력_대문자"].str.contains("PC방"), "접촉력"]
isin
으로 여러 값을 찾는 조건식으로 만들 수 있음df.loc[df["거주구"].isin(["강남구", "서초구", "송파구"]), "접촉력"]
~
은 조건에 해당되지 않는 값들을 찾음df.loc[~df["접촉력"].str.contains("해외유입"), "해외유입"] = "국내"
pd.crosstab(normalize=True)
는 전체를 1로 해서 각각의 비율을 구함
pd.pivot_table
pivot
은 데이터의 형태만 바꾸지만 pivot_table
은 연산 가능unstack()
으로 마지막 인덱스를 칼럼으로 지정할 수도 있음unstack()
의 level 옵션을 지정해서 몇 번째 인덱스를 칼럼으로 올릴 것인지 지정 가능. 디폴트는 마지막 컬럼임(level=-1)pd.pivot_table(data=df, index=["거주구", "요일명"], aggfunc="count")["환자"].unstack()
pd.pivot_table(data=df, index="거주구", columns="요일명", values="환자", aggfunc="count")
df.groupby()
판다스 cheatsheet으로 내용 점검해보기
https://pandas.pydata.org/Pandas_Cheat_Sheet.pdf
df.컬럼명
이런 식의 서브셋은 컬럼명에 띄어쓰기가 있을 때 사용하지 못함
fancy indexing : 팬시 인덱싱은 정수나 불린(Boolean) 값을 가지는 다른 Numpy 배열로 배열을 인덱싱할 수 있는 기능을 의미
결측치의 수를 확인하며 결측치가 있는 열들은 어떻게 처리할지, 어떻게 해석할지 파악해보기
count()
는 결측치를 포함해서 셈
nlargest(n)
: 큰 순으로 정렬해서 n개를 뽑아옴
분석하기 좋은 깔끔한 데이터 => Tidy data
Tidy data란
1. 각 변수가 칼럼에 위치
2. 각 관측치가 행에 위치
3. 테이블 형태를 이뤄야 함
출처 : http://vita.had.co.nz/papers/tidy-data.pdf
pandas에서는 Tidy data를 만들기 위해 melt 기능 제공
long-form 형태의 데이터를 피봇하면 wide-form 형태로 만들 수 있음
2013~2015 데이터셋과 2015~ 데이터셋의 형태가 다름. 전처리해서 합쳐야 함
수도코드
1) 2013~2015 연도와 월을 컬럼으로 만들어 최근 2015~ 데이터와 같은 형태로 만들어 줌(melt로 컬럼에 있는 데이터를 행으로 녹임)
2) 2015~ 제곱미터당 평균 분양가격 => 3.3 제곱미터당 가격으로 변경해 가격 측정 기준을 통일시킴
3) 1), 2) 데이터를 concat 으로 병합하고 하나로 만들어 2013~ 최근까지의 분양가를 분석
pd.to_numeric()
errors="coerce"
: 에러(수치형으로 변경할 수 없는 부분)를 NAN 값으로 처리하고 강제로 변환astype()
은 에러에 대한 처리 옵션을 raise, ignore밖에 제공하지 않음. 여기서는 에러를 전처리 해야 함FutureWarning
: 추후 버전에서 변경되는 값을 알리는 경고메세지
df_last["규모구분"].str.replace("전용면적|제곱미터이하", "", regex=True)
> FutureWarning: The default value of regex will change from True to False in a future version.
df.drop()
labels
로 컬럼명 지정 시 axis 옵션 체크columns
로 컬럼명 지정 시 그냥 사용퀴즈 정리
숫자를 제외한 나머지 문자를 제거하는 정규표현식
df_last["분양가격"].str.replace("[^0-9]", "", regex=True)