inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

단 두 장의 문서로 데이터 분석과 시각화 뽀개기

[12/25] 그래프에서 누적확진자수가 너무 커서 일별 확진자 수를 알아보기 어렵다면?

로그 스케일에 대한 질문드립니다.

5190

작성자 없음

작성한 질문수 0

1

강의 잘 보고 있습니다

로그 스케일에 대한 궁금증이 생겨 질문 드립니다.

1.

np.log는 자연로그 값을 반환한다고 알고 있습니다. 로그 스케일을 취할 때 자연로그를 취하는 것이 일반적인 관습인가요? 

2. log(x + 1)을 하게 되면 log 그래프를 좌측으로 1 만큼 평행이동해서 log값이 음의 무한으로 수렴하는 것을 막을 수 있다고 하셨는데, -1 보다 큰 마이너스 값이 있는 경우에는 어떻게 대처해야 하나요? 

미리 감사드립니다 ^^

pandas python

답변 3

1

user

흑흑 감사합니다. 너무 친절하셔요

1

박조은

안녕하세요. 좋은질문을 주셨네요.

1. 평소에 자연로그를 많이 사용하는 편이라 자연로그를 사용했는데 질문주신것 처럼 자연로그를 취하지 않고 np.log10으로 상용로그를 취해도 되겠다는 생각이 들어요. 다만 두 가지 방법에 대해 스케일이 달라지게 되니 전달하고자 하는 혹은 그래프 안에서 얻고자 하는 내용에 따라 다른 로그기법을 선택하면 될것 같아요.

로그와 관련된 건 아래 문서를 좀 더 참고해 보시면 좋을거 같아요.

[numpy.log — NumPy v1.19 Manual](https://numpy.org/doc/stable/reference/generated/numpy.log.html#numpy.log)

[numpy.log10 — NumPy v1.19 Manual](https://numpy.org/doc/stable/reference/generated/numpy.log10.html)

값의 스케일을 어떻게 줄이느냐에 따라 어떤 로그 방식을 취할지 결정을 하면 될것 같아요.

아래 링크는 "로그 그래프"라는 설명이 있는 위키피디아 로그 설명 링크에요. 이것도 참고해 보세요!

https://ko.wikipedia.org/wiki/%EB%A1%9C%EA%B7%B8

로그 그래프[편집]

로그는 범위를 줄여준다는 점에서 그래프에도 사용한다. 보통 십만이나 백만 단위의 그래프를 알기 쉽게 보여주기 위해 로그 그래프를 사용한다. 보통 수직 축에 로그 단위를 넣으나, 수평 축에만 혹은 둘 다 넣는 경우도 있다. 로그 그래프는 1부터 1000까지 증가하는 모습과 1000부터 백만까지 증가하는 모습을 동일한 거리 내에서 나타낼 수 있다는 점이다. y축이 로그인 수직 평면에서, 지수함수 f(x)= abx는 일반 평면에서의 일차함수와 같이 직선 형태를 나타낸다.

2. 로그는 지수함수의 역함수이기 때문에 음수에는 사용할 수가 없습니다. 그래서 음수에 사용하게 되면 다음과 같이 결측치가 반환되게 됩니다.

np.log10([1e-15, -3.])
array([-15.,  nan])
np.log([1, np.e, np.e**2, 0])
array([  0.,   1.,   2., -Inf])

하지만 음수 값에 스케일링을 적용하고 싶다면 가장 작은 값을 더해주는 방법이 있습니다.

np.log1p 도 로그가 1 이하의 값에서 -Inf (마이너스 무한대)로 수렴하는 것을 방지해 주게 됩니다.

https://numpy.org/doc/stable/reference/generated/numpy.log1p.html

그래서 가장 작은 마이너스 값이 -13 이라면 모든 데이터에 0 이상의 값이 나오도록 + 14 를 해주는 방법이 있을거 같습니다.

판다스의 Series 데이터에 + 값 을 해주시면 쉽게 더해볼 수 있습니다.

이 외에 오일러의 등식 등을 사용해 볼 수 있습니다. 오일러의 등식은 직접 찾아보시면 좋을 거 같습니다.

3. 그리고 그래프의 스케일을 줄이는 것 외에 보통 Scaling을 할 때 histogram 등의 분포를 그리고 그 분포가 한쪽으로 너무 치우쳐져 있을 때 정규분포를 이루도록 변환을 해줄 때도 log변환을 사용합니다. 이건 왜도, 첨도를 함께 알아보시면 좋을거 같아요.

감사합니다.

0

박조은

감사합니다 :)

날짜변환 에러

0

259

0

업로드자료 오류

1

373

1

20강 관련 문의드립니다.

1

299

1

17강 도입부 실습사이트 문의

2

298

1

4강 코드 오류메세지 관련 질의

1

374

2

merge와 그룹바이 관련 질문이 있습니다.

1

494

3

쉬운 도서 추천 좀 부탁드립니다.

2

393

2

1강2강에 있는 csv파일을 다운받으면 한글이 깨져서 나와요

1

251

1

주피터노트북 목록(contents) 만들기

1

632

1

df.loc[df["거주지"].isin(gu), "지역"] = df["거주지"] 질문있습니다

1

207

1

월 주 함꼐 value_counts()

1

224

1

day_count.iloc[i]와 day_count[i]의 차이 질문

1

350

1

df 인덱싱 질문입니다

1

184

1

그래프에 한글제목을 나타내고 싶습니다.

1

535

1

배운 것 기반으로 만들어보고 있는데 질문이 있습니다.

1

404

5

질문이요

1

300

1

set_index()

1

287

1

timeit 관련 질문

1

363

1

그래프 밑에 제목을 넣으려면 어떡해야하나요???

1

421

2

한글폰트 설치 후 나오지 않는 현상 문의

1

1171

3

CSV 파일 불러오기

1

573

1

크롤링으로 csv파일 가져오기

2

320

1

영상에서 소개해주시는 웹사이트

2

260

1

질문

1

229

2