본문 바로가기
멋쟁이사자처럼 AIS7/오늘코드

[1011] EDA

by YeonGun M 2022. 10. 11.

3-3. 서울시에서 공개한 코로나19 발생동향 분석

Pandas String Method 판다스 문자열 메소드

Pandas 공식문서: Series String handling
df.str.replace(a, b)

  • a가 포함된 모든 문자열을 b로 변경 (일부만 같아도 교체)
  • series에만 사용 가능
  • 정규표현식 사용 가능

df.replace(a, b)

  • a와 완전히 일치하는 데이터를 b로 변경 (완전히 같아야 교체)
  • dataframe, series에 사용 가능
  • 정규표현식 사용 가능, 정규표현식 사용 시 일부 교체 가능

둘의 차이가 나는 이유는?

  • .str은 접근자는 series 문자열 형식에만 사용할 수 있는 series accessor(접근자)이기 때문

Pandas Transpose 판다스 전치행렬

  • 전치행렬을 의미함.
  • 열과 행, raws와 columns를 전환하는 것을 의미
  • df
    제목 셀1 제목 셀2 제목 셀3
    내용 1 내용 2 내용 3
    내용 4 내용 5 내용 6
  • df.T
    제목 셀1 내용 1 내용 4
    제목 셀2 내용 2 내용 5
    제목 셀3 내용 3 내용 6

Pandas Crosstab

Pandas Style과 background_gradient(), bar()

Pandas 공식문서: Table Visualization

  • Builtin Styles 부분 참고

df[조건식] vs. df.loc[조건식]

결론 : 성능의 차이를 줄 뿐, 결과는 같음. 아래는 성능 순

  1. Best : df.loc[조건식, columns]
  2. df[조건식][columns]
  3. df에 두 번 접근하여 비효율적 : df[조건식].loc[:, columns]

pd.crosstab(normalize=True) vs. df[column] / df[columns]

Pandas 공식문서: pandas.crosstab

판다스 공식문서에 따르면 crosstab의 normalize는 "Normalize by dividing all values by the sum of values"로 진행된다.
df[column] / df[columns]와는 다른 계산방법으로 normalize와 달리 합이 1이 되지 않는다.

cf. Pandas Cheat Sheet


3주차 과제. 타이타닉 판다스

헷갈리는 부분의 코드만 정리함.

df.isnull() == df.isna()

Series.str.count vs. Series.str.contains


3-4. 전국 신규 민간 아파트 분양가격 동향

Tidy Data, 깔끔한 데이터?

Hadley Wickham의 논문에 따르면 깔끔한 데이터란 아래와 같다.

"각 변수가 열이고 각 관측치가 행이 되도록 배열된 데이터이다."
참고: Tidy Data(깔끔한 데이터)

==> melt가 필요하다!

dtype 변경에서의 errors 처리

데이터 타입을 변경할때, error를 처리하는 방법은 'ignore', 'raise', 'coerce'가 있다.

  • ignore: 무시하고 넘어간다, error가 발생한 데이터는 dtype이 변하지 않음.
  • raise: error를 표시하고 실행을 중단한다.
  • coerce: error가 난 부분을 없애고 dtype을 변경한다
    ex. "100,000"의 dtype을 float 바꾼다면 coerce의 경우만 변경된다.
    ==> "100,000", error 표시, 10000

만약 경고를 무시하고 데이터 타입을 숫자형으로 변경한다면 astype() 보다는 pd.to_numeric을 이용하는 것이 편하다.
astype()의 경우 errors의 argument에 'coerce가 존재하지 않아, 전처리 작업이 필요하기 때문이다.

댓글