(978)

나의 소소한 AI 사용법

코딩에미나이 > 안되면 지피티 > 또 안되면 클로드 1. 앞에 둘이 가끔 오타나 탭같은 사소한 것 때문에 뻑나는 걸 못잡음. 2. 에미나이가 빠른모드 크레딧 제한이 없어서 1차적으로 오래걸리는건 얘를 쓰고, 소소한 버그같은건 클로드나 지피티 주로 씀.3. 커서는 써본 적 없고 안티그래비티는 가끔 자동완성이 뭐같을때가 있지만 쓸만함. 단, 안티그래비티 내부에서 물어보는건 너무 느려서 안 쓰는 편임. 4. 클로드 코드요? 애초에 저는 코딩하다 안 풀릴때 주로 쓰는데요?5. 파이썬 그래프나 함수같은거 코딩할때 매개변수를 자꾸 밑으로 내릴라고 하는데 이건 본인 스타일이랑 안맞음... (본인 파라미터 가로로 씀) 글쓸때지피티 혹은 클로드 1. 괴담수사대 플롯 짤 때는 지피티를 많이 씀. 소설 특성상 피튀기는 엔딩..

그래프 알아보기-트리맵

전에 테스트 본 데 결과 나왔는데 떨어짐... 근데 거기는 돼도 문제인게 업무에 대한 백그라운드가 아예 없음 내가… 막말로 도커? 걍 리눅스에서 오라클 깔때 필요하던데? 수준이고 쿠버네티스 이딴것도 모르는데 가서 뭘 할 수 있겠수…트리맵이란 무엇인가의사결정트리나 힙트리같은 거 들어보신 분들 있으십니까? 이진트리나. 트리맵은 그런 트리들의 지도…가 당연히 아니고. 얘도 그래프예요 그래프. 그래프 이론의 그 그래프 아니고 작대기 꺾은선같은 그래프요. 그런 트리들 보면 깊이 개념이 있잖아요. 그죠? 뭐 이진탐색 이런걸로 보면 와닿지 아니할테니 이걸 보자.얘는 Phylogenetic tree, 우리말로는 계통수다. 저거 뭐 동글뱅이 삼각형 많은데 왜 하필 저 형태를 갖고왔어요? 나중에 덴드로그램 설명할건데 이 ..

꼭 그렇게 확인사살을 해야만 속이 시원했냐!!!

보통 서류를 넣으면 전형 결과가 메일로 옵니다. 물론 회사에 따라서는 따로 카톡이나 문자로 알림이 오기도 하지만(읽어라고…) 보통은 메일로만 옵니다. 근데 합격발표도 아니고 떨어졌습니다를 메일 카톡 양방향으로 보내는건 티배깅도 아니고 뭐 하자는거임 대체? 확인사살이 취미신가? 그 인턴십도 한달이지만 월급 준대서 일단 지원은 했는데 연락이 없는 꼬라지를 보아 안된거같음… 하… 돈도 다 떨어졌는데 클났네… 왜 거절했다가 생각이 바꼈냐고요? 내 전공 맞춰서 가려고 랬는데 공고가 없어. 회사는 없고 어쩌다가 있어도 석사급만 찾음. 아니면 30년 경력의 25살을 찾습니다.

그래프 알아보기-버블 차트

산점도와 버블차트의 공통점은 하나다. 동그란거.버블 차트란?버블차트는 데이터의 3차원적 표현을 보여주는 차트 유형이다. 엥? 그럼 설마 xyz축으로 그리는건가요? 아니, 그건 아니고 2차원 좌표평면에 있는데 그 원들 크기가 제각각이다. XY 좌표축이 버블이 들어갈 자리가 되고, 어떤 데이터의 크기가 버블의 크기를 결정한다. 그 작년에 피카츄의 사계절 해서 장흥에서 여름 이벤트 했던거 아십니까? 누가 먼저 컨택한건지 의문이긴 했음... 아니 그보다 그거 하려면 군청 이런데서 허락도 받아야 할건데 그걸 한번에 OK한건지도 궁금하네 거... 아무튼. 이런 계절 이벤트를 예로 들어보자. 포켓몬고는 공식 SNS가 내가 아는것만 카톡채널(최근에 만듦), 인별, 트위터 이렇게 있어요. 그럼 장흥 이벤트 홍보도 공식 ..

그래프 알아보기-산점도(스캐터 플롯)

산점도가 뭐냐… 점은 점이다. 그리고 산은 散(흩어질 산)… 그러니까 한자를 풀면 흩어진 점 그림정도가 되겠다. 구글에서 스캐터 플롯 찾아보면 뭔 점들이 직교좌표계 위에 흩어져있는 걸 볼 수 있음.산점도는 언제 쓸까산점도 얘기하면서 직교좌표계 위에 흩어져 있다고 했는데, 일단 씨본의 스캐터플롯을 보자. seaborn.scatterplot을 보면 매개변수 중에 x랑 y가 있죠? 꺾은선이나 막대 이런거는 데이터프레임 주면 씨본이 알아서 이건가 하고 그려주기도 하지만, 산점도의 경우 x랑 y를 다 입력해줘야 한다. 둘 중 한쪽만 입력하면 씨본이 이런 씨본 이게뭐여 하면서 에러를 퉤 한다. 그 예전에 내가 바이러스 MSA 하면서 회색 안개같은거 그려진거 올렸었죠? 그게 스피어만 상관분석 결과를 산점도로 그린거다..

인턴십 제의를 받았다

부트캠프 사후지원으로다가 인턴십? 그런게 있습니다. 채용 전환형이고 두 가지 직무가 있는데 거절했음. 장비 문제? 당연히 그것도 있죠. 리눅스가 할배놋북이라 VScode만 돌려도 뻗습니다. 그러면 윈도우 노트북에서 걍 하면 안되나 하실 수도 있는데, 애초에 노트북을 두 대 돌리는 이유가 개발(+코딩)이랑 다른 일이랑 분리하려고 그런겁니다. 데이터 분석도 돌리다보면 그래프나 이런 산물들이 꽤 나와요. 그리고 태블로가 리눅스에서 돌아갈지도 모르겠음. 태블로는 웹용이 따로 없습니다. 이렇게 얘기하니까 장비 문제가 해결 안 되냐고 묻던데 그거 해결될라면 로또 1등은 돼야 함… 노트북을 새로 사야 하는거라 큰 돈이 들어와야 합니다. 그리고 두번째 이유는 도메인때문임. 내가 하고싶은 도메인이 생물학쪽이기도 하고, ..

두쫀쿠를 먹어보았다

유행할때는 뭐했냐고요? 구경이요. 1. 사진만 봤을때는 초코맛 범벅이라 피스타치오맛이 묻히는거 아닌가 했는데 의외로 초코맛은 약함. 저 겉면에 파우더가 초코 가루인데 그거만큼만 초코맛이 납니다. 2. 우리 동네에는 할랄마트가 하나 있음. 거기 문에 대문짝만하게 ‘카다이프 있습니다’라고 쓰여있습니다. 두쫀쿠 열풍 불 때 이게 막 거덜났다던데 그럴만 했음. 이건 카다이프가 킥임. 3. 이불 위에서 먹지 마십쇼. 가루 진짜 개같이 날리는데 이런 가루 특성상 잘 털리지도 않고 개같이 묻습니다. 침대나 이불 위에서 먹는다? 등짝스매싱 각오하셔야됨. 4. 피스타치오맛이 잘 안 느껴지는데 원래 이럼?

플랫폼/데이터 엔지니어링 과제 풀이 (도커가 뭐길래)

저번편 3줄요약1. 마! OOP다!2. 마! 이벤트 찍어낸다!3. 마! 후행 이벤트도 찍어낸다!도커가 뭐길래일단 본인은 도커가 뭔지는 모름. 근데 써봤습니다. 프롤로그에서 SQLD 준비할 때 리눅스에서 오라클 썼다고 했는데, 리눅스에서 오라클 돌리려면 도커를 설치해야 합니다. 그리고 도커는 컨테이너를 실행하고 뭘 해야 하기 때문에 컨테이너 키고 오라클 키고 으아악 오타 멈춰 가라 지에딧! 하면서 쿼리를 짰어요… 도커는 컨테이너를 활용하여 소프트웨어를 배포 및 구동하기 위한 오픈 소스 플랫폼입니다. 내가 맞게 이해한건지는 모르겠는데, 오라클을 도커에서 돌릴때 도커 컨테이너를 먼저 켰던것도 오라클이 들어있는 컨테이너를 열어서 적재된 오라클(과 관련된 모든 것들)을 다 꺼내는 절차를 거쳐야 하는거고, 여기에 ..

플랫폼/데이터 엔지니어링 과제 풀이 (구현)

저번 글 3줄요약1. 이렇게 된 이상 최소한의 설치로 간다2. 이렇게 된 이상 화합물 DB로 간다3. 이렇게 된 이상 VScode를 켜자저번 시간에는 이벤트를 만들기 위한 구상을 했고... 이번에는 그래서 어떻게 구현했는지를 얘기할거다. 도커는... 다음편에 얘기합시다... 제가 문외한이라고 했잖아요? 심지어 도커 컨테이너 만들줄도 모름… 이걸 혼자서 한 건 아니고, 일부는 구글 검색하고 일부는 채찍피티 부려먹었다. 제미나이는 사고모드 안 하면 에미나이 되더라고…테이블 생성import sqlite3 # SQLiteconn = sqlite3.connect("events.db")cursor = conn.cursor()전에도 얘기했지만 SQLite는 파이썬 깔 때 알아서 따라오는 친구라 설치를 할 필요가 없습..

플랫폼/데이터 엔지니어링 과제 풀이 (Prologue-문제 그리고 구상)

일단 데이터 관련해서도 직무가 크게 데이터 분석이랑 엔지니어링 있습니다. 둘이 하는 일이 아예 다른데 분석은 주어진 데이터를 지지고 볶아서 어떤 인사이트를 내는거고 데이터 엔지니어링은 데이터 분석, AI 모델링, 의사결정에 필요한 데이터를 안정적으로 수집, 저장, 처리, 변환하는 시스템(파이프라인)을 설계 및 구축하는거임. 그리고 내가 이력서 준비한거나 부트캠프 들었던건 다 분석쪽인데... 오 여기 근무조건 개꿀 이러고 이력서랑 포폴 냈던 직무가 엔지니어링인겁니다. 그러니까 데이터 분석 이력서랑 데이터 분석 포폴로 데이터 엔지니어링 직무에 냈는데 서류합격을 해서 과제를 받고 오늘 새벽 3시까지 해서 제출 완료한겁니다… 예… 둘이 하는 일이 아예 다르잖아요? 해보니까 분석이랑 엔지니어링이랑 둘이 공통점은..

알리발 밀키코튼 도착

왼쪽: 한번 써보고 괜찮아서 다른 색으로 산 것 오른쪽: 한번 써볼까 해서 산 것 근데 주인장… 이거 사진이랑 너무 다르잖아… 일단 이쁘니까 걍 쓰긴 하겠는데 이정도면 사람한테 써야 하는 뽀샤시 필터를 털실한테 갖다 쓴 수준이라고… 이렇게 얘기하면 대체 사진이 어떻길래? 하실 것 같은데 이래요 사진이. 처음 샀던 16번은 사진하고 동일했는데 얘는 색이 이래서 언박싱 하자마자요래됨. 이건 처음 사본건데 색감 괜찮습니다. 권장 바늘은 3밀리(모사용 기준 6호)임.

그래프 알아보기-꺾은선그래프

꺾은선그래프는 언제 쓰나요?꺾은선그래프는 점과 점을 선으로 잇는 그래프로, 어떤 시간 간격에 따른 변화량을 기록할 때 쓴다. 시간에 따른 기온의 변화나 시간에 따른 환율의 변화, 아니면 시간에 따른 삼전 주식 가격의 변화량같은거. 막대그래프 얘기 할 때 시계열을 막대그래프로 나타내서 혼난 팀이 있었다고 했는데, 시계열이 시간 변화에 따른 변화량을 가지는거라 꺾은선으로 표시하는 게 맞다. 아이폰 건강앱에서도 오늘 내가 시간대별로 얼마나 걸었는지는 꺾은선그래프로 나온다고 했잖아요? 얘는 내가 쓰면서 배리에이션은 못 봤고… 있다고 해도 선 아랫부분에 색깔을 채웠거나 점 모양이 다른게 다임… 아니면 선을 점선으로 그리는 정도? 내가 쓴 꺾은선그래프도 선 굵기랑 마커정도만 배리에이션을 줬다. 씨본에서 다 됩니다...

어... 이게... 되긴 됐는데...

나 사실 데이터 분석이랑 데이터 엔지니어링이랑 뭔 차인지 몰랐음… 그래서 오 여기 근무조건 개꿀 이러면서 걍 지원했는데 오늘 코테 이메일을 받았음다… 솔직히 메일 받자마자 제일 먼저 무슨 생각 들었냐고요? 이 생각이요. 나 이력서가 데이터 분석쪽인데 이게 왜 된거지? 스읍… 근데 도커가요… 내가 생각하는 도커는 걍 리눅스에서 오라클 돌리는 용도였음… 저 걔가 정확히 뭐 하는 애인지도 모릅니다, 예… 솔직히 그것도 오라클 아니면 깔 일이 없었습니다… 원래 하던 일이 분석쪽이라 과자 보자마자 일차적으로 대뇌 블루스크린 뜨면서 뭐지 이거 어카지 하는 생각이 제일 먼저 들었음. 일단 윈도우에서는 환경 준비가 안되어있고, 리눅스는 램이 8기가라 100% 저거 하다가 뻗을 것 같고… 음… 아니다. 간단한 로그 만들..

나의 소소한 AI 사용법

잡담/장문 2026. 5. 22. 01:25
반응형

코딩

에미나이 > 안되면 지피티 > 또 안되면 클로드

 

1. 앞에 둘이 가끔 오타나 탭같은 사소한 것 때문에 뻑나는 걸 못잡음. 

2. 에미나이가 빠른모드 크레딧 제한이 없어서 1차적으로 오래걸리는건 얘를 쓰고, 소소한 버그같은건 클로드나 지피티 주로 씀.

3. 커서는 써본 적 없고 안티그래비티는 가끔 자동완성이 뭐같을때가 있지만 쓸만함. 단, 안티그래비티 내부에서 물어보는건 너무 느려서 안 쓰는 편임. 

4. 클로드 코드요? 애초에 저는 코딩하다 안 풀릴때 주로 쓰는데요?

5. 파이썬 그래프나 함수같은거 코딩할때 매개변수를 자꾸 밑으로 내릴라고 하는데 이건 본인 스타일이랑 안맞음... (본인 파라미터 가로로 씀)

 

글쓸때

지피티 혹은 클로드

 

1. 괴담수사대 플롯 짤 때는 지피티를 많이 씀. 소설 특성상 피튀기는 엔딩이나 좀 찝찝한 결말이나 범죄 묘사같은게 나오는데 아무리 픽션이어도 클로드는 이걸 거절함.

2. 얘가 왜 그랬을까는 클로드한테 많이 물어봄. 아니면 그런거 있잖소. 이런 성격이라면 이 상황에서 어떻게 했을까 이런거. 

3. 플롯은 Craft 쓰는데 여기서는 AI 안 쓰고(플롯 짜면서 지피티랑 티키타가 많이 함) 가끔 글쓰다가 문구같은거 막히면 노벨라 AI 쓰는데 얘도 예전보다 너프먹었는지 원하는 대사 입력해도 그냥 줄글 인용만 해주더라...

 

뜨개질할때

주로 에미나이

 

1. 그 가끔 인별 릴스 보면 그런거 있음. 중간에 뜨는거 찔끔 올려놓고 유튜브에 튜토리얼 있음다 하는데 들어가보면 똑같은 영상인 dogshiki만도 못한 놈들. 그런거는 이미지검색 하거나 이미지 올려놓고 이거 어케뜸? 하고 물어보면 에미나이가 알려줍니다. (가끔 수편물 보고 직접 역설계 할 때도 있음)

2. 수편물 이미지 올려주고 이거 뜨려면 어떻게 검색해야 하는지 알려달라고 함. 이게 한번에 맞는 경우는 잘 없는데 빠르면 2~3트 안에 찾습니다.

3. 여기는 지피티 클로드를 안쓰는게 구글검색이 에미나이랑 연동돼서... 

4. 가끔 뜨개질 유튜브 보고 뜰 때 요약해달라고 해주면 타임라인도 같이 줘서 그거 써먹고 있음.

 

푸념

클로드

 

1. 예전에는 지피티가 우쭈쭈 클로드가 냉정스탈이었는데 둘이 바꼈음. 

반응형
Lv. 36 라이츄

Lv. 36 라이츄

광고 매크로 없는 청정한 블로그를 위해 노력중입니다. 근데 나만 노력하는 것 같음… ㅡㅡ

그래프 알아보기-트리맵

Statistics 2026. 5. 21. 20:20
반응형

전에 테스트 본 데 결과 나왔는데 떨어짐...

 

근데 거기는 돼도 문제인게 업무에 대한 백그라운드가 아예 없음 내가… 막말로 도커? 걍 리눅스에서 오라클 깔때 필요하던데? 수준이고 쿠버네티스 이딴것도 모르는데 가서 뭘 할 수 있겠수…


트리맵이란 무엇인가

의사결정트리나 힙트리같은 거 들어보신 분들 있으십니까? 이진트리나. 트리맵은 그런 트리들의 지도…가 당연히 아니고. 얘도 그래프예요 그래프. 그래프 이론의 그 그래프 아니고 작대기 꺾은선같은 그래프요.

 

그런 트리들 보면 깊이 개념이 있잖아요. 그죠? 뭐 이진탐색 이런걸로 보면 와닿지 아니할테니 이걸 보자.

얘는 Phylogenetic tree, 우리말로는 계통수다. 저거 뭐 동글뱅이 삼각형 많은데 왜 하필 저 형태를 갖고왔어요? 나중에 덴드로그램 설명할건데 이 그림을 모가지 왼쪽으로 90도 꺾고 보면 그게 덴드로그램임. 얘는 보통 진화관계 이런거 나타낼 때 그리는건데 MSA 했던 것들 중에서 군집분석 했던거 있죠? 그것도 계통수 그렸다가 그게 너무 길어서 군집분석 한 거다. 저게 영어라 뭔지는 모르겠는데 뭐 상어 있고 실러캔스 폐어 막 있고 위에 사람 있고 그렇잖아요. 트리는 이런식으로 계층이라는 개념이 있고, 트리맵 역시 계층이 존재하는 그래프다.

 

근데 트리맵은 저 트리처럼은 안 생겼습니다. 태블로나 Plotly에서 트리맵 그려보면 네모네모하게 나오죠?

오피스도 이게 되네. 아무튼... 얘는 왜 또 케이크를 잘랐는지 모르겠지만 플롯틀리에서 저거 그리면 아침식사 큰네모 있고 점심식사 큰네모 따로 뭔 밴다이어그램마냥 있음. 그게 계층이라서 얘 안에 뭐뭐 있고 뭐뭐 있고 이런거다. 물론 이 계층은 데이터에 따라서 당신이 정해야 하는 것이기도 하다. 우리 사이트를 이용하는 고객들의 성별별로 연령대를 볼건지, 아니면 연령대별로 성비를 볼건지 말이다.

 

네모난 파이차트?

트리맵은 저 네모가 정해진 공간을 다 채우고, 파이차트처럼 비중을 면적으로 보여주는거기때문에 음 이 정도 비율인가를 한눈에 볼 수 있다. 저 예시에 수치는 안 나와있지만 사람들이 와플이랑 겨란을 많이 먹고 그 다음에 팬케이크인가… 니네 이거 어디 아침밥임? 저걸 누구코에 붙여 아침에는 밥을 먹어야지 이사람들아… 그리고 점심식사는 샐러드랑 카스텔라가 면적이 제일 넓은데 대만 왕카스텔라 이런거면 인정. 아무튼 이런 식으로 음 아침식사는 뭘 이만큼 먹고 점심식사는 뭘 이만큼 먹는군 이렇게 볼 수 있다.

 

전에 파이차트 얘기하면서 썬버스트 차트 얘기했는데, 뭔지 아시죠? 썬버스트차트와 트리맵이 같이 공유하는 단점이 있다. 뭘거같습니까? 파이차트는 부채꼴 면적으로 비율을 표현하고 트리맵은 정해진 공간 안에서 네모네모 면적으로 비율을 표현하잖아요. 그죠. 데이터가 비중이 너무 적으면 파이차트나 썬버스트 차트에서도 시각을 포기하게 되니까 기타로 퉁치던가 하라고 했죠? 트리맵도 같은 문제를 공유합니다. 전체가 1000인데 어떤 항목의 비중이 10이면 포항공대 가서 주사터널현미경 빌려서 그래프 봐야됩니다.

반응형
Lv. 36 라이츄

Lv. 36 라이츄

광고 매크로 없는 청정한 블로그를 위해 노력중입니다. 근데 나만 노력하는 것 같음… ㅡㅡ

꼭 그렇게 확인사살을 해야만 속이 시원했냐!!!

잡담/단문 2026. 5. 21. 14:54
반응형

보통 서류를 넣으면 전형 결과가 메일로 옵니다. 물론 회사에 따라서는 따로 카톡이나 문자로 알림이 오기도 하지만(읽어라고…) 보통은 메일로만 옵니다.

근데 합격발표도 아니고 떨어졌습니다를 메일 카톡 양방향으로 보내는건 티배깅도 아니고 뭐 하자는거임 대체? 확인사살이 취미신가?

그 인턴십도 한달이지만 월급 준대서 일단 지원은 했는데 연락이 없는 꼬라지를 보아 안된거같음… 하… 돈도 다 떨어졌는데 클났네…

왜 거절했다가 생각이 바꼈냐고요? 내 전공 맞춰서 가려고 랬는데 공고가 없어. 회사는 없고 어쩌다가 있어도 석사급만 찾음. 아니면 30년 경력의 25살을 찾습니다.

반응형

'잡담 > 단문' 카테고리의 다른 글

다들 투표 하셨죠들?  (0) 2026.06.03
인턴십 월급이 7월에 들어온다뇨…  (0) 2026.05.27
별 문자가 다 온다  (0) 2026.05.20
이불 빨아야되는데…  (0) 2026.05.20
인턴십 제의를 받았다  (0) 2026.05.12
Lv. 36 라이츄

Lv. 36 라이츄

광고 매크로 없는 청정한 블로그를 위해 노력중입니다. 근데 나만 노력하는 것 같음… ㅡㅡ

별 문자가 다 온다

잡담/단문 2026. 5. 20. 18:35
반응형

문자 전문은 안 올리겠으나 일단 받자마자 뭔가 쎄했음.
업무 설명도 두루뭉술하고 시급도 수상하게 많이 쳐주는데 교육받아야 한다고 하고 회사가 어딘지도 안나옴.

난 떳떳하게 돈 벌 거니까 삭제.

반응형
Lv. 36 라이츄

Lv. 36 라이츄

광고 매크로 없는 청정한 블로그를 위해 노력중입니다. 근데 나만 노력하는 것 같음… ㅡㅡ

이불 빨아야되는데…

잡담/단문 2026. 5. 20. 14:13
반응형

이번주에 빨려고 했더니 비 실화냐고…

이게 빠는 이불이 극세사 이불도 있는데 까는 이불도 같이 빨아야됩니다… 누리끼리해요… 보기 안좋아… 발을씻자 들이부어야됨…

그래서 빨려고 했더니 비 실화임?

반응형
Lv. 36 라이츄

Lv. 36 라이츄

광고 매크로 없는 청정한 블로그를 위해 노력중입니다. 근데 나만 노력하는 것 같음… ㅡㅡ

그래프 알아보기-버블 차트

Statistics 2026. 5. 19. 20:20
반응형

산점도와 버블차트의 공통점은 하나다. 동그란거.


버블 차트란?

버블차트는 데이터의 3차원적 표현을 보여주는 차트 유형이다. 엥? 그럼 설마 xyz축으로 그리는건가요? 아니, 그건 아니고 2차원 좌표평면에 있는데 그 원들 크기가 제각각이다. XY 좌표축이 버블이 들어갈 자리가 되고, 어떤 데이터의 크기가 버블의 크기를 결정한다.

 

그 작년에 피카츄의 사계절 해서 장흥에서 여름 이벤트 했던거 아십니까? 누가 먼저 컨택한건지 의문이긴 했음... 아니 그보다 그거 하려면 군청 이런데서 허락도 받아야 할건데 그걸 한번에 OK한건지도 궁금하네 거... 아무튼. 이런 계절 이벤트를 예로 들어보자. 포켓몬고는 공식 SNS가 내가 아는것만 카톡채널(최근에 만듦), 인별, 트위터 이렇게 있어요. 그럼 장흥 이벤트 홍보도 공식 SNS를 통해서 했을거거든요? 그러면 이벤트 페이지를 들어오는 사람이 있을 거 아닙니까.

 

이벤트 페이지를 SNS를 경유해서 들어온건지, 아니면 다른 링크를 통해서 들어온건지(인게임 공지사항이라던가)를 버블차트로 만든다면 X축에는 접속 경로가 올 거고, Y축에는 GA4로 치자면 세션 스타트(들어온 사람)+유저 인게이지먼트(들어와서 10초 이상 체류한 사람) 이런게 들어올거다. 아니면 국가별로 본다던가. 그리고 버블차트의 크기는? 각 매체, 이벤트별 유저 수가 되겠죠. 그러면 그 버블 차트를 보고 장흥 이벤트에 관심 있는 사람이 한국 다음으로 어디가 많았구나, 국가별로 어떤 SNS를 통해 홍보하는게 효과가 있구나를 알 수 있겠죠.

 

물론 이 버블 차트도 데이터의 크기에 따라 점처럼 보이는 사태가 일어날 수는 있다. 근데 Plotly에는 그 라벨을 옆으로 빼는 기능이 있어서 배치만 적절하게 잘 해준다면 라벨을 옆으로 빼서 바둑판에 바둑돌 올라간것마냥 보여줄 수'는' 있다.

반응형
Lv. 36 라이츄

Lv. 36 라이츄

광고 매크로 없는 청정한 블로그를 위해 노력중입니다. 근데 나만 노력하는 것 같음… ㅡㅡ

그래프 알아보기-산점도(스캐터 플롯)

Statistics 2026. 5. 14. 20:20
반응형

산점도가 뭐냐… 점은 점이다. 그리고 산은 散(흩어질 산)… 그러니까 한자를 풀면 흩어진 점 그림정도가 되겠다. 구글에서 스캐터 플롯 찾아보면 뭔 점들이 직교좌표계 위에 흩어져있는 걸 볼 수 있음.


산점도는 언제 쓸까

산점도 얘기하면서 직교좌표계 위에 흩어져 있다고 했는데, 일단 씨본의 스캐터플롯을 보자. seaborn.scatterplot을 보면 매개변수 중에 x랑 y가 있죠? 꺾은선이나 막대 이런거는 데이터프레임 주면 씨본이 알아서 이건가 하고 그려주기도 하지만, 산점도의 경우 x랑 y를 다 입력해줘야 한다. 둘 중 한쪽만 입력하면 씨본이 이런 씨본 이게뭐여 하면서 에러를 퉤 한다.

 

그 예전에 내가 바이러스 MSA 하면서 회색 안개같은거 그려진거 올렸었죠? 그게 스피어만 상관분석 결과를 산점도로 그린거다. 그러니까 거기 있는 회색 안개가 다 점들임. 근데 그렇게 해서 뭘 보는데요? 내가 상관분석이라고 했잖아요… 상관분석은 얘랑 쟤랑 상관관계가 있는지, 있다면 얼마나 강한지를 보는거다. 거기서 좌상-우하로 나왔으니 음의 상관관계고, rho가 -0.95정도 나왔으니까 급나 강한 음의 상관관계인거다.

 

켐블 데이터갖고 그렸던 것들 중에는 HBA, HBD로 그린것도 있는데, 이거는 상관관계를 본다기보다는 분포를 보는 것에 가깝다. 왜 그렇게까지 하냐고? 산점도 그린 다음에 X, Y 둘 다 5보다 작은 애들 있으면 RO5 위반 안 하는 애들 분포가 이렇구나 하고 보는거다. HBA가 하나일때 HBD가 몇 개인 애들이 있는지 뭐 그런거다.

 

추세선

이 글 읽는 분들 중에 생물학 전공 계십니까? 생물학 전공이고 실험수업 들었다면 한번쯤은 들어봤거나 직접 해봤을 실험 중에 브래드포드 어세이(Bradford assay)라는 게 있다. 뭔지 아시죠? BSA 녹여서 OD 재갖고 뭐 곡선 그리잖아요. 그게 단백질의 농도를 보기 위한 실험인데, 그 실험에서 임의의 단백질 농도를 유추하기 위해서 standard curve라는 게 필요하다. 그리고 그것때문에 BSA 녹여서 다는거고. 근데 그 standard curve를 그릴 때는 엑셀로 그리니까 꺾은선그래프로 그리거든요? 그리고나서 추세선이라는 걸 그립니다. 그래갖고 그 식에 대입하면 미지 시약의 단백질 농도가 나오는거임.

 

근데 왜 선을 그려요? 그 작대기를 그려서 이 데이터의 추세를 보는겁니다. 그래서 추세선 그리고 R^2까지 내놓는데 그게 1에 가까울수록 좋은거고 반대로 1과 멀어지면 실험 시투더망인거다. 깊게 들어가자면 골아픈데 아무튼 그래요...

 

참고로 에미나이 피셜로는 이상치 찾을때도 쓴다는데 이상치 찾으실거면 걍 빡스플롯 그려보십쇼.

반응형
Lv. 36 라이츄

Lv. 36 라이츄

광고 매크로 없는 청정한 블로그를 위해 노력중입니다. 근데 나만 노력하는 것 같음… ㅡㅡ

인턴십 제의를 받았다

잡담/단문 2026. 5. 12. 21:44
반응형

부트캠프 사후지원으로다가 인턴십? 그런게 있습니다. 채용 전환형이고 두 가지 직무가 있는데 거절했음.

 

장비 문제? 당연히 그것도 있죠. 리눅스가 할배놋북이라 VScode만 돌려도 뻗습니다. 그러면 윈도우 노트북에서 걍 하면 안되나 하실 수도 있는데, 애초에 노트북을 두 대 돌리는 이유가 개발(+코딩)이랑 다른 일이랑 분리하려고 그런겁니다. 데이터 분석도 돌리다보면 그래프나 이런 산물들이 꽤 나와요. 그리고 태블로가 리눅스에서 돌아갈지도 모르겠음. 태블로는 웹용이 따로 없습니다. 이렇게 얘기하니까 장비 문제가 해결 안 되냐고 묻던데 그거 해결될라면 로또 1등은 돼야 함… 노트북을 새로 사야 하는거라 큰 돈이 들어와야 합니다.

 

그리고 두번째 이유는 도메인때문임. 내가 하고싶은 도메인이 생물학쪽이기도 하고, 이번에 팀플 하면서 체감했던 게 도메인 지식이 중요하다였음. 이게 그 분석하는 건 기법이랑 방향만 알면 할 수는 있거든요? 근데 데이터 분석이라는 건 에 저희가 이 데이터에서 결측값을 이만큼 들어냈고 이렇게 지지고 볶아서 이런 결과가 나왔습니다 땡! 하고 끝이 아닙니다. 그 분석한 걸 갖고 인사이트를 내야돼요. 예를 들어서 갤럭시 막대기(S시리즈)랑 세로로 접는거(플립)랑 캐스터네츠 접는거(폴드) 판매량을 비교했어, 그러면 예 이렇게 나왔고 끝입니다가 아니고 저번 시리즈 대비 이만큼 팔렸고 뭐 이런 결과들을 엮어서 태문이횽 사람들이 주름때문에 걱정이 많던데 폴드랑 플립이랑 주름 확실하게 잡죠 이런 인사이트를 내야 한다.

 

그러면 또 인사이트랑 도메인 지식이랑 뭔 상관임? 하실수도 있는데 분석하고자 하는 분야에 지식이 없는거랑 있는거랑은 아예 인사이트 깊이가 다릅니다. 내가 몸담은 분야에 대해 모르면 놓치는게 많아요. GA4 할때는 이게 뭔지, 뭐 하는데 쓰는건지 몰라서 중간중간 찾아보고 세레브럼 블루스크린 여러번 보고 그럼에도 이해가 안되는 부분이 많았는데 바이러스 MSA는 섀넌 엔트로피랑 실루엣 계수 개판으로 나온거 빼면 결과 보면서 음 삐죽삐죽하지 않은 부분은 변이되면 X되는 부분이구나 이런 인사이트가 바로 나왔거든요? 이게 왜 그러냐면 내 전공이 그쪽이었거든.

 

물론 혼자서 일하는 게 아니라 팀원들이랑 하는거고, 재직자의 도움도 있긴 하지만 그럼에도 도메인지식이 없는거랑 있는거랑은 이해도가 달라요. 그러니까 이쪽으로 하게 된다면 최대한의 역량을 낼 수 없을거라고 생각해서 거절한거임. 사실 컴퓨터 사양 딸리는거요? 어쨌든 돌아가니까 오래 걸려도 그걸로 돌리면 됩니다. 그거 감안해서 받던가 한두시간 더 돌리던가... 근데 가장 큰 건 도메인이었음.

반응형

'잡담 > 단문' 카테고리의 다른 글

별 문자가 다 온다  (0) 2026.05.20
이불 빨아야되는데…  (0) 2026.05.20
본인쟝은 소분이라는 말을 써본적이 없음  (0) 2026.04.23
포폴... 만들고는 있는데요...  (0) 2026.04.20
팀플 근황  (0) 2026.03.24
Lv. 36 라이츄

Lv. 36 라이츄

광고 매크로 없는 청정한 블로그를 위해 노력중입니다. 근데 나만 노력하는 것 같음… ㅡㅡ

두쫀쿠를 먹어보았다

잡담/나야, 언박싱 2026. 5. 11. 18:21
반응형

유행할때는 뭐했냐고요? 구경이요.


1. 사진만 봤을때는 초코맛 범벅이라 피스타치오맛이 묻히는거 아닌가 했는데 의외로 초코맛은 약함. 저 겉면에 파우더가 초코 가루인데 그거만큼만 초코맛이 납니다.

2. 우리 동네에는 할랄마트가 하나 있음. 거기 문에 대문짝만하게 ‘카다이프 있습니다’라고 쓰여있습니다. 두쫀쿠 열풍 불 때 이게 막 거덜났다던데 그럴만 했음. 이건 카다이프가 킥임.

3. 이불 위에서 먹지 마십쇼. 가루 진짜 개같이 날리는데 이런 가루 특성상 잘 털리지도 않고 개같이 묻습니다. 침대나 이불 위에서 먹는다? 등짝스매싱 각오하셔야됨.

4. 피스타치오맛이 잘 안 느껴지는데 원래 이럼?

반응형

'잡담 > 나야, 언박싱' 카테고리의 다른 글

털실 도착쓰  (0) 2026.05.31
꼬북칩 바베큐&치미추리소스맛 먹어봄  (0) 2026.05.27
알리발 밀키코튼 도착  (0) 2026.05.08
트리헛 시어 슈가 바닐라 스크럽  (0) 2026.05.03
공화춘 짜장  (0) 2026.04.14
Lv. 36 라이츄

Lv. 36 라이츄

광고 매크로 없는 청정한 블로그를 위해 노력중입니다. 근데 나만 노력하는 것 같음… ㅡㅡ

플랫폼/데이터 엔지니어링 과제 풀이 (도커가 뭐길래)

Coding/Python 2026. 5. 11. 18:00
반응형

저번편 3줄요약

1. 마! OOP다!

2. 마! 이벤트 찍어낸다!

3. 마! 후행 이벤트도 찍어낸다!


도커가 뭐길래

일단 본인은 도커가 뭔지는 모름. 근데 써봤습니다. 프롤로그에서 SQLD 준비할 때 리눅스에서 오라클 썼다고 했는데, 리눅스에서 오라클 돌리려면 도커를 설치해야 합니다. 그리고 도커는 컨테이너를 실행하고 뭘 해야 하기 때문에 컨테이너 키고 오라클 키고 으아악 오타 멈춰 가라 지에딧! 하면서 쿼리를 짰어요…

 

도커는 컨테이너를 활용하여 소프트웨어를 배포 및 구동하기 위한 오픈 소스 플랫폼입니다. 내가 맞게 이해한건지는 모르겠는데, 오라클을 도커에서 돌릴때 도커 컨테이너를 먼저 켰던것도 오라클이 들어있는 컨테이너를 열어서 적재된 오라클(과 관련된 모든 것들)을 다 꺼내는 절차를 거쳐야 하는거고, 여기에 서술할 과정들이 컨테이너에 내가 코딩한거랑 뭐뭐 필요한지를 차곡차곡 적재하는 뭐 그런건가봄.

 

이거 한다고 어제 새벽까지 밤샜음… 그리고 여기는 아예 해본적이 없어서 채찍피티의 도움을 받아서 진행했음.


극한적재

저 깃이그노어는 딱히 도커에서만 쓰는 건 아니고, 이런이런 파일들은 바뀌어도 무시해~ 라고 적어두는거라고 이해하시면 되겠습니다. 여기서 봐야 할 건 DockerFile이랑 requirements.tst랑 docker-compose.yml 세개임.

 

저 도커파일을 만들라고 했을 때 처음 든 생각이 아니 뭔 파일? 파일이면 확장자가 있어야되는데 확장자는 없고 걍 만들라는데 뭐 어쩌라는겨? 였음... 근데 이름을 강 DockerFile로 하면 VScode에서는 아이콘이 고래(도커 아이콘이 고래 위에 컨테이너 있는거임)로 바뀝니다. docker-compose 저친구는 뭐 하는 앤지 모르겠는데 쟤 들어가면 좀 더 간단하다고 하더라고... 채찍피티 피셜이라 한번 찾아보기는 해야겠지만.

 

저 리콰이얼먼츠는 우리 이거 돌릴때 이거 필요해~ 하는 것들을 다 적어두는거다. 저기에는 matplotlib만 있지만 내가 씨본 썼으면 Seaborn, 플롯틀리 썼으면 Plotly, 오리클 썼으면 oracledb(맞나?)… 뭐 이런 것들 쓰면 된다. 아무튼 저렇게 구성하고 컨테이너를 만들려고 했는데 안돼! 이 컴퓨터에 도커가 안깔렸어! (리눅스에는 오라클때문에 도커 깔려있음)

 

그래서 설치를 다 하고 만들었는데 또 안돼! wml인가 뭔가 업데이트를 하래! 그걸 또 따로 깔고 재부팅을 또 해야돼! 그래서 도커 깔고 한번 쟤 깔고 한번 재부팅을 했죠... 그러고 나서 이제 컨테이너에 적재를 다 끝내고 깃헙에 db 지우고 올린 다음(어차피 돌리면 생성됨) 리눅스에서 실행을 했는데 이게 한번에 됐으면 제가 세시까지 밤을 안 샜습니다.


극한실행

아니 무사히 패킹하고 올렸으면 잘 된 거 아니예요? 아니죠. 이걸 받아서 실행했을 때 이상이 없는지를 확인해야 합니다. 컨테이너에 화물을 개판으로 실으면 그게 잘 적재되겠음? 개판으로 적재됐는데 그게 무사히 갈까요? 받아봤더니 포장 개박살나있고 화물 개작살나있고 썩어있거나 할 수도 있잖아요. 

 

여러분들 쿠팡에서 뭐 시켰는데 박스 찌그려져서 온 적 있죠? 포장 개박살나서 온 적은? 난 있어... 근데 박스 찌그러진거는 내용물에 문제 없으면 그 허브 컨테이너에 낑겨서 그렇게 되는겁니다. 내 경험담임... 사람이 옮기는 속도가 화물 쌓이는 속도를 못 따라잡아요. 특히 내 라인에 무거운거 걸리면... 아무튼 그런 사태가 일어나지 않을런지 리눅스로 미리 테스트를 해보다가 문제가 터진겁니다... 물론 버그가 터진다거나 하면 디버깅도 해야겠죠. 그 디버깅하고 아 이제 끗 제출하자까지 하느라 새벽 3시까지 밤샌거임...

 

일단 우분투 노트북을 켤 일이 잘 없습니다... 원래는 백준 풀 때나 분석 돌릴때(혹은 공부할때) 간간이 켰었는데 애가 할배노트북이라 공부하러 밖에 나가질 못해요... 켜놓고 숨쉬면 배터리 2%씩 빠짐. 완충해놓고 충전기 안 꼽고 3시간 글쓰면 2~30%까지 방전됩니다. 그거는 충전기를 들고 다니면 해결은 되는데 스카 가는것도 돈이잖아... 집에서 하면 그것도 해결은 되는데, 사양 문제때문에 분석 돌리면 뻗어요 애가... 그래서 캐글 데이터분석 할 거 남아있는것도 아예 올스톱됐음...

 

그리고 리눅스는요… 윈도우처럼 친절하지 않아… 업데이트 있으면 당신이 터미널 가서 있나 봐야됨… 근데 쟤를 거진 한달인가 두달만에 켰거든요? 밀린 업데이트가 쌓였어요. 그거 까는데도 시간이 들어요… 아니 그럼 그거 설치하면 되는거 아니예요? 그게 거기서 끝났으면 내가 새벽 3시까지 밤을 안 샜어요…

 

우분투에 도커를 작년에 깔았습니다. 그래서 버전이 낮아요. docker compose v2가 있어야되는데 우분투에 v1이 있었어. 아니 그럼 딸깍 업데이트 하면 안돼요? 리눅스에 그런 친절함 바라시면 안돼요. 애초에 리눅스는 뭐 깔때도 터미널에서 sudo 안 붙이면 권한 없다고 빠꾸먹이는 OS예요. 파이참도 윈도우 맥에서는 딸깍하면 열릴때 압축 푼 폴더 경로 찾아가서 직접 쉘 스크립트 열어야 되는 OS예요... 

 

그럼 업데이트를 안 하면요? 컨테이너가 신식 도어록인데 적재된거 풀어야되는 애가 구식 열쇠 갖고있으면 열려요? 도어락을 망치로 부실거야? 그래서 업데이트를 해야되는데 또 문제가 뭐냐... 리눅스에서 apt update && upgrade 돌릴 동안 dpkg가 잠깁니다. 그래서 업데이트 다 끝나고 잠김 풀릴때까지 또 대기해야돼요. 그 업데이트가 다 끝나고 도커 업데이트를 마무리했음... 그래서 v2로 바꿨습니다.

 

그러고 한 3~40분동안 디버깅했음... 업데이트는 됐으니까 적재하는데 문제는 없다, 그런데도 실행이 안되는건 화물... 그러니까 적재된 코드에 문제가 있다 해서 디버깅하고 올리고 실행하고 어씨 에러났다 디버깅하고 올리고 실행하고 뭐야 왜안돼 디버깅하고 올리고 실행하고 오씨 할렐루야 됐다 근데 그래프 글꼴을 왜 못찾지(그거 빼고 다 잘 돌아갔음) 에이씨 날려 걍 하고 끝난겁니다... 이 작업때문에 세시까지 밤샌거예요...


글꼴 아... 

본인이 제일 싫어하는게 기본글꼴하고 고딕입니다. 손글씨나 도트체 이런거 좋아하는데… (마비옛체 좋아함) 그렇다고 포폴용 그래프에 마비옛체나 손글씨체를 쓸 수는 없으니까 그나마 타협 보는 폰트가 나눔스퀘어랑 프리텐다드입니다. 그래서 본인이 데이터 분석 한 글 보시면 글씨가 다 손글씨 마비옛체 픽셀체 이런데 BI쪽으로 한건 다 나눔스퀘어죠? 포폴로 쓸라고 일부러 나눔스퀘어로 한 겁니다.

 

그럼 뭐가 문제예요? 리눅스에 글꼴이 안 깔렸음? 깔려있습니다. 근데 인식을 못해요. 저장된 이름이 다른건지 경로때문인건지 모르겠는데 디버깅이 필요하기도 하고, 리눅스에서 글꼴 깔 때는 윈도우처럼 딸깍... 이거 개별 설치(ttf 하나)는 되는데 보통은 터미널에서 특정 경로에 폴더 만들고 거기다가 ttf파일을 복사합니다. 안그랬다가 피본 적 있음...

 

그래서 글꼴 설정을 왜 뺐냐고요? 나눔스퀘어가 안 깔려있는 다른 컴퓨터에서도 이런 오류가 나면 어떡함? 막말로 사측 컴퓨터로 적재된 코드 내리면서 돌리다가 그 컴퓨터에 나눔스퀘어가 없어서 뭐여 이 폰트 몰라요 하고 중간에 오류메시지만 줄줄이 소시지마냥 한 열댓줄 떠봐요. 어유… 세상천지 그런 대참사도 없어…

반응형
Lv. 36 라이츄

Lv. 36 라이츄

광고 매크로 없는 청정한 블로그를 위해 노력중입니다. 근데 나만 노력하는 것 같음… ㅡㅡ

플랫폼/데이터 엔지니어링 과제 풀이 (구현)

Coding/Python 2026. 5. 10. 18:00
반응형

저번 글 3줄요약

1. 이렇게 된 이상 최소한의 설치로 간다

2. 이렇게 된 이상 화합물 DB로 간다

3. 이렇게 된 이상 VScode를 켜자


저번 시간에는 이벤트를 만들기 위한 구상을 했고... 이번에는 그래서 어떻게 구현했는지를 얘기할거다. 도커는... 다음편에 얘기합시다...

 

제가 문외한이라고 했잖아요? 심지어 도커 컨테이너 만들줄도 모름… 이걸 혼자서 한 건 아니고, 일부는 구글 검색하고 일부는 채찍피티 부려먹었다. 제미나이는 사고모드 안 하면 에미나이 되더라고…


테이블 생성

import sqlite3 # SQLite

conn = sqlite3.connect("events.db")
cursor = conn.cursor()

전에도 얘기했지만 SQLite는 파이썬 깔 때 알아서 따라오는 친구라 설치를 할 필요가 없습니다. 저 conn… 저거 내가 오라클 할 때도 봤던 것 같음… 이게 오라클이요… 리눅스에서 SQLD 할 때는 터미널로 돌렸습니다. 근데 이 터미널이 한글 쓰다가 오타가 나면 아주 괴랄한 문자가 나오기도 하고, 다른 입력기처럼 뭐 위로 가서 수정해야징 이런게 안 돼서 따라가기 힘든 것도 있어서 파이썬이랑 연결해서 했었음…

 

저거 그리고 MySQL 파이썬에서 돌릴때도 나옵니다.

 

create_table_query = """
CREATE TABLE IF NOT EXISTS events (
    event_id INTEGER PRIMARY KEY AUTOINCREMENT,
    search_id INTEGER NOT NULL,
    user_id INTEGER NOT NULL,
    event_type TEXT NOT NULL,
    query TEXT,
    result_count INTEGER,
    compound_id INTEGER,
    error_type TEXT,
    timestamp DATETIME DEFAULT CURRENT_TIMESTAMP
);
"""

cursor.execute(create_table_query)

conn.commit()

근데 쟤가 파이썬 설치할 때 따라온거지 엄연히 언어라 다르기때문에 쿼리 막 갖다 쓰면 VScode가 님아 이거 틀렸어염 합니다. 착한 코더 여러분들은 파이썬에서 SQL 쓸 때 쿼리를 따옴표 세 개로 감싸주시길 바랍니다.

 

엥? 근데 저 NOT EXISTS는 뭐예요? 테스트를 한번 하고 끝이 아니라 디버깅하고 돌리고 하면 여러번 돌릴 수도 있음. 근데 도커 패킹하면서 쟤를 같이 패킹하면서 걍 CREATE 주면 두번째부터는 아이 있는데 왜 또 만들래! 하면서 에러를 퉤잇합니다. 그러니까 표가 '없으면' 만들라는 얘기를 하는거다. 저 밑에 커밋이요? 저거 안 하면 CREATE문 실행만 하고 기껏 만든 테이블이 반영 안 돼서 있었는데 없어질 수 있음.

 

table_view_query = 'PRAGMA table_info(events);'
cursor.execute(table_view_query)

rows = cursor.fetchall()

for row in rows:
    print(row)

뭐야 셀렉트문 어디감? 저 테이블은 테이블만 있고 인스턴스들이 없어서 셀렉트문 써도 암것도 안 나옵니다. 근데 테이블이 만들어졌으면 정보는 어쨌든 있을 거 아니예요? 그러니까 정보 주십쇼 하는거다.

 

이벤트 생성

def __init__(self):
    self.conn = conn
    self.cursor = cursor
    self.search_id = 0 # 일단은 0 
    # 여기 있는 분자들은 약으로 쓰고 있는 분자들입니다. (진세노사이드는 인삼에 들어있는 사포닌)
    # 오타는 일부러 넣은겁니다. 대신 오타의 경우 후속 이벤트도 없고, 검색 결과 수도 0입니다. 
    # artemisinin: 오타입니다. artemisinin이 맞아요. 
    # nafroxen: 얘도 오타입니다. naproxen이 맞아요. 
    # acetaminopen: acetaminophen이 맞습니다. 
    # gentamycin: gentamicin이 맞습니다. 
    self.compounds = ["aspirin","ibuprofen","acetaminopen","acetaminophen","arteminisin","artemisinin","imatinib","nafroxen","ginsenoside","salicylic acid","naproxen","fluoxetine","thalidomide","duloxetine","gentamycin","gentamicin","rifampicin"]
    self.compound_results = { # 검색 결과 고정해야 합니다. 똑같은 검색어로 똑같은 DB 뒤져서 누구는 100건 누구는 200건 이건 에바입니다. 
        "aspirin": 120,
        "ibuprofen": 85,
        "acetaminophen": 143,
        "artemisinin": 67,
        "imatinib": 41,
        "ginsenoside": 23,
        "salicylic acid": 98,
        "naproxen": 74,
        "fluoxetine": 56,
        "thalidomide": 12,
        "duloxetine": 37,
        "gentamicin": 29,
        "rifampicin": 44
    }
    self.typo_corrections = { # 룰 7. 오타의 경우 검색 결과가 0개/룰 8. 오타때문에 결과가 0이 나왔다면, 그 사용자는 제대로 된 철자를 사용해서 다시 검색한다. (하다가 추가됨)
        "acetaminopen": "acetaminophen",
        "arteminisin": "artemisinin",
        "nafroxen": "naproxen",
        "gentamycin": "gentamicin"
    }
    self.current_search_id = 1

전체 코드 올려드리고 싶은데 이거 전체 코드 올리면 5000자 넘어가서 네이버에서는 짤립니다...

 

일단 저 오타는 일부러 넣은거고… 쟤들 다 뭐냐고? 일단 다들 알법한 아세트아미노펜, 이부프로펜, 아스피린은 생략하고… 아르테미시닌은 개똥쑥(풀때기 이름이 그럼)에 들어있는 성분인데 말라리아 잡는 데 쓰는 성분이고, 이마티닙은 글리벡이라고 하면 어? 그거? 하는 분들도 있을거다. 나프록센은 진통제인데 NSAID 계열이고, 플루옥세틴(=프로작)은 항우울제고, 탈리도마이드는 예전에 입덧에 직방이라고 해서 먹었는데 이성질체가 혈관 생성을 억제하는 효과가 있어서 기형아를 유발했던 약이다. 지금은 이 성질을 이용해서 제한적으로 항암제로 쓰는 중이다. 둘록세틴(=심발타)은 항우울제고, 젠타마이신이랑 리팜피신은 항생제. 진세노사이드는 사포닌 중에서도 특히 인삼에 들어있는 사포닌을 이르는 말이고(인삼 들어간거 광고할때 많이 나옴), 살리실산… 아스피린이랑 다릅니다. 아스피린은 '아세틸'살리실산이고 살리실산은 식물 호르몬임. 각질 없애는데 들어갑니다.

 

저게 사실은 그냥 코드 쭉 쓰면서 했다가 OOP 서타일로 클래스 안에 함수 넣어서 걍 이벤트 찍어내게 만든거다. 이렇게 하면 뭐 문제 생겼을 때 클래스만 건들면 걔가 찍어내는 객체가 바뀌잖아요.

 

# 시간 랜덤 생성기 
def random_timestamp(self):
    start_date = datetime(2026, 5, 1)
    end_date = datetime(2026, 5, 8)
    delta = end_date - start_date
    random_seconds = random.randint(0, int(delta.total_seconds()))
    random_time = start_date + timedelta(seconds=random_seconds)
    return random_time.strftime("%Y-%m-%d %H:%M:%S")

이건 이벤트 시간 랜덤 생성기인데, 문제가 하나 있다. 전에 룰 얘기하면서 모든 이벤트는 검색이 선행되고 그 다음에 후행으로 진행된다고 했잖아요? 근데 시간을 랜덤으로 짜면서 거기에 대한 처리를 안 했다... ㅋㅋㅋㅋㅋㅋ 순서는 후행인데 시간이 먼저 나올 수도 있음... 하...

 

# 이벤트 생성기
def insert_event(self,search_id,user_id,event_type,query=None,result_count=None,compound_id=None,error_type=None):
    event = {
        "search_id": f"{search_id:06d}",
        "user_id": f"{user_id:06d}",
        "event_type": event_type,
        "query": query,
        "result_count": result_count,
        "compound_id": (
            f"{compound_id:06d}"
            if compound_id is not None
            else None
        ),
        "error_type": error_type,
        "timestamp": self.random_timestamp()
    }

    # SQL에 넣으려면 INSERT INTO가 필요합니다. 
    insert_query = """
        INSERT INTO events (
            search_id,
            user_id,
            event_type,
            query,
            result_count,
            compound_id,
            error_type,
            timestamp
        )
        VALUES (?, ?, ?, ?, ?, ?, ?, ?)
        """

    self.cursor.execute(
        insert_query,
        (
            event["search_id"],
            event["user_id"],
            event["event_type"],
            event["query"],
            event["result_count"],
            event["compound_id"],
            event["error_type"],
            event["timestamp"]
        )
    )

    # 지금은 과제니까 하나하나 커밋하는거지만, 착한 엔지니어 여러분들은 batch commit을 써주세요 
    # 커밋 한땀한땀 하는것도 다 시간 걸려요. 
    self.conn.commit()

이게 이벤트 생성하는 애다. 밑에 매개변수까지 만드는 애는 따로 있고 얘는 매개변수 입력받아서 이벤트 찍어내는 애라고 보시면 됩니다. 그 INSERT문 밑에 또 커밋이 있죠? 이거 원래 이렇게 하면 안됩니다... 지금이야 뭐 한 만개 나오고 땡이지만 실제로는 한 백만개 천만개 쌓일수도 있는데 이걸 일일이 커밋한다?

 

상사한테 이 소리 들을 수 있음.

 

# 검색에서 후행 이벤트 파생시킬 애 
def generate_search_flow(self):
    user_id = random.randint(1, 999999) # 사용자 아이디: 랜덤입니다. 마치 포켓몬 게임의 트레이너 아이디같은 것... (랜덤임)
    query = random.choice(self.compounds) # 사용자의 검색어 
    search_id = self.current_search_id # 검색 아이디
    self.current_search_id += 1
    if query in self.typo_corrections: # 오타났으면 
        result_count = 0 # 결과 0개 (룰 7에 의거함)
    else:
        result_count = self.compound_results[query] # 아니면 개수 출력하시고 
    event = self.insert_event(search_id,user_id,"search",query=query,result_count=result_count) # 이벤트 생성
    events = [event]

    if result_count > 0:
        self.generate_followup_events(events, search_id, user_id, query, result_count) # 후행 이벤트 따로 뺐습니다 
    else:
        result_view_event = self.insert_event(search_id, user_id, "result_view", query=query, result_count=0)
        events.append(result_view_event)

    # 룰 8. 오타때문에 결과가 0이 나왔다면, 그 사용자는 제대로 된 철자를 사용해서 다시 검색한다.
    if query in self.typo_corrections:

        corrected_query = self.typo_corrections[query] # 오타때문에 결과가 안 떴으니 철자를 교정해서 재검색을 해줍니다 

        corrected_search_id = self.current_search_id
        self.current_search_id += 1 # 사용자는 같지만 검색은 다시 하는거라서 아이디는 다름 

        corrected_result_count = self.compound_results[corrected_query] # 철자 정정했으니까 다시 결과가 나오겠죠? 
        corrected_event = self.insert_event(corrected_search_id, user_id, "search", query=corrected_query, result_count=corrected_result_count) # 그럼 다시 생성해야겠죠? 
        events.append(corrected_event)
        self.generate_followup_events(events, corrected_search_id, user_id, corrected_query, corrected_result_count)
    
    return events

주석이 잘못됐는데 얘가 모든 이벤트의 시발점같은 애임. 욕 아님.

 

주석에 포켓몬 아이디는 뭔 소리냐고요? 포켓몬 게임에 보면 트레이너 아이디라는 게 있습니다.

이 이미지에서 IDNo. 라고 쓰여있는 게 트레이너의 아이디인데, 구세대는 5자리였고(쟤는 리프그린이라 5자리) 6세댄가 7세대부터 6자리로 늘어났어요. 저기서 세이브파일을 날리고 다시 처음부터 시작하면 저 아이디 바뀝니다. 저게 랜덤이라 저 아이디 번호 12345나 23456같은 걸로 맞추려고 리셋하는 사람도 있어요.

 

근데 나는 검색 아이디도 난수로 하려고 했는데 채찍피티가 순차적으로 생성하게 만들었네... if query in self.typo_corrections 밑에 있는 건 오타났으니 정해서 찾는거다. gentamycin으로 찾았으면 0일거고, 아 철자 틀렸구나 하고 gentamicin으로 다시 검색한다는 얘기.

 

# 원래 한 덩어리였던 후행 이벤트를 따로 뺐습니다. 
def generate_followup_events(self, events, search_id, user_id, query, result_count):
    if random.random() < 0.95: # 5% 확률로 에러가 당신을 반깁니다 
        # 검색 결과 조회
        result_view_event = self.insert_event(search_id, user_id, "result_view", query=query, result_count=result_count)
        events.append(result_view_event)

        # 검색 결과에서 개별 화합물 결과를 보겠죠? 
        chemical_view_count = random.randint(1, min(result_count, 5))
        for _ in range(chemical_view_count):
            # 하지만 1번만 보라는 법은 없죠? 
            compound_id = random.randint(1, result_count)
            chemical_event = self.insert_event(search_id, user_id, "chemical_view", query=query, compound_id=compound_id)
            events.append(chemical_event)

        # 다운로드(CSV로)->다운로드는 한번만 합니다. 
        if random.random() < 0.7: # 실패할 확률 있음(30%)
            csv_event = self.insert_event(search_id, user_id, "csv_download", query=query)
            events.append(csv_event)
        else:
            error_event = self.insert_event(search_id, user_id, "error", error_type="csv_download_failed")
            events.append(error_event)
    else: 
        error_event = self.insert_event(search_id, user_id, "error", error_type="result_page_timeout")
        events.append(error_event)

원래 한 덩어리였는데 왜 뺐냐를 먼저 말씀드리겠음... 이벤트 순서상 검색이 시발점이고 그 뒤에 후행 이벤트가 온다고 했는데, 이게 검색어 오타나서 정정하고 다시 검색한 검색어에도 적용이 돼야 합니다. 근데 안되는거야. 되게 하려면 저 코드부분을 if 오타 고 투 정정 밑에 또 넣으라는데 이렇게 되면 문제가 뭐게요? 100줄이 넘는 코드에서 위쪽 수정하면 아래쪽도 찾아서 수정해야됩니다. 그리고 내가 제일 싫어하는게 쓸데없이 복잡한거거든...

 

어쨌든 검색 이벤트에서 분기가 있다뿐이지 후행 이벤트는 같으니까 걍 저거 밖으로 빼서 덩어리 만들고 검색 이벤트에서 그 덩어리를 연결한거다. 그러면 저 덩어리만 수정하면 되니까 편하죠. 코드 줄 수가 줄어드는 건 아니겠지만.

 

if random.random() < 0.7… 에러 이벤트가 확률빨입니다…

반응형
Lv. 36 라이츄

Lv. 36 라이츄

광고 매크로 없는 청정한 블로그를 위해 노력중입니다. 근데 나만 노력하는 것 같음… ㅡㅡ

플랫폼/데이터 엔지니어링 과제 풀이 (Prologue-문제 그리고 구상)

Coding/Python 2026. 5. 9. 23:08
반응형

일단 데이터 관련해서도 직무가 크게 데이터 분석이랑 엔지니어링 있습니다. 둘이 하는 일이 아예 다른데 분석은 주어진 데이터를 지지고 볶아서 어떤 인사이트를 내는거고 데이터 엔지니어링은 데이터 분석, AI 모델링, 의사결정에 필요한 데이터를 안정적으로 수집, 저장, 처리, 변환하는 시스템(파이프라인)을 설계 및 구축하는거임. 그리고 내가 이력서 준비한거나 부트캠프 들었던건 다 분석쪽인데... 오 여기 근무조건 개꿀 이러고 이력서랑 포폴 냈던 직무가 엔지니어링인겁니다. 

 

그러니까 데이터 분석 이력서랑 데이터 분석 포폴로 데이터 엔지니어링 직무에 냈는데 서류합격을 해서 과제를 받고 오늘 새벽 3시까지 해서 제출 완료한겁니다… 예… 둘이 하는 일이 아예 다르잖아요? 해보니까 분석이랑 엔지니어링이랑 둘이 공통점은 파이썬을 쓴다밖에 없는거같음. 물론 분석쪽에서도 전처리를 하긴 하는데 보통은 결측값이나 이상치같은거 분석하기 전에 쳐내는거지 이렇게 본격적으로 한 적은 없었음… 물론 쳐내고 다듬을게 많아서 골아팠던 적은 있습니다만.

 

니콜라스형... 미안...ㅋㅋㅋㅋㅋㅋ

그래서 메일 받고나서 본인 표정은 이거였음. 사측에서도 내 이력서 보고 저 표정 지었을거임... 솔직히 두 직무가 뭔 차인지 몰라서 오 근무조건 개꿀 하고 넣은거긴 한데, 그렇다고 해서 또 과제를 대충 할 순 없잖아요? 그러니까 풀라고 준 건 최대한 성심성의껏 풀었음... 하던게 아닌것도 있고, 아예 처음 보는것도 있어서 아마 사측에서 깃헙 보면서 이건 또 뭐여 하고 계실겁니다...


과제를 제출하고 문의 메일을 보냈을 때 회사명이랑 문제를 공개해도 된다고 답변을 받았습니다. 근데 사실 허락을 받았어도 회사명은 원래 공개 잘 안해서… 문제도 100% 공개하는 건 아니고 큰 틀만 공개할거임.

 

문제

Step 1. 이벤트 생성기 작성

Python, Go, Java 중 하나를 이용해 웹 서비스에서 발생할 수 있는 이벤트를 랜덤하게 생성하는 스크립트를 작성하는 것. 단, 이벤트는 최소 두가지 이상이어야 한다.

Step 2. 로그 저장

생성한 이벤트를 본인이 적합하다고 생각하는 저장소에 자유롭게 저장할 것. JSON을 통째로 저장하지 말고, 필드를 구분하여 저장해야 한다. (JSON: 그 파이썬 딕셔너리같이 생긴거 있음)

Step 3. 데이터 집계 분석

저장된 데이터를 분석하는 쿼리(또는 코드)를 최소 2개 작성할 것. 아래 예시에서 해도 되고, 다른거 해도 된다. 

 

1) 이벤트 타입별 발생 횟수
2) 유저별 총 이벤트 수
3) 시간대별 이벤트 추이
4) 에러 이벤트 비율

Step 4. Docker로 실행 가능하게 만들기

docker-compose.yml을 작성해서 docker compose up 한 번으로 전체 스택이 실행되게 구성할 것. (앱+DB까지)

Step 5. 결과 시각화

SQL 집계 결과를 시각화하면 됩니다. 차트 생성해서 그걸 이미지로 저장하거나 BI툴(태블로)을 쓰거나 편한걸로 하시면 됨.


이게 문제인데… 일단 보자마자 대뇌 커널패닉이 온 것도 있고… 문제가 하나 더 있었음. 제가 몇 번 얘기하지 않았습니까? 리눅스 노트북이 할배노트북이라(램 8기가임…) 분석 돌리다가 뻗는다고… 윈도우에도 파이썬이 깔려는 있는데, 딱 백준 풀 용도로 파이썬만 깔아둔거라 넘파이 판다스 폴라스 플롯틀리 이딴거 하나도 안 깔려있다. 그래서 JS는 윈도우에서 하고 파이썬은 리눅스에서 돌렸다가 컴퓨터 사양 문제로 스톱했어요… 맥북은 집으로 갔고.

 

그니까 선택지가 할배노트북에서 사리적립하면서 하기 vs 게이밍 놋북(윈도)에서 최소한의 설치만으로 진행하기 두개였고 데드라인이 3일이라 나는 후자를 골랐음. 그래서 이거 도커 돌리면서 까는거 딱 하나 있습니다. matplotlib. SQL 돌리긴 돌리는데 SQLite는 파이썬 깔 때 딸려오는 친구라 별도로 설치는 안 해도 됨. 근데 내가 예전에도 한번 얘기했던... 이놈들 표준을 합치긴 했는데 그럼에도 불구하고 지네들꺼에만 되는 기능이 있다고 했죠? 오라클의 롤업 큐브 그루핑셋 이런거. 그런게 SQLite에도 좀 있으니까 문법은 한번 찾아보십셔... 합칠거면 아예 통일하든가 해야되는데 이놈들이 논의를 어떻게 한 건지 모르겠음.

 

아무튼 그래서 사만팔천가지 모듈이 다 깔렸지만 돌리다가 뻗을지도 모를 리눅스는 나중에 도커 패킹한거 테스트하는 용도로만 썼습니다. 도커 얘기는 나중에 또 털어드리겠음…


서비스 구상

서비스를 구상하는 과정에서도 뭐하지… 하다가 그래도 많이 접했던+익숙한거 하는 게 좋을 것 같아서 ChEMBL같은 데이터베이스로 하자 했음. 내가 개인적으로 다뤄봤던 데이터는 캐글 데이터 말고는 NCBI 창고 탈탈 털어서 DNA 이런거 가져온게 다였음… 그리고 마케팅 이런쪽은 아예 문외한이라(본인 뼛속까지 이과) 전에 팀플할때도 GA4 다루면서 진짜 스트레스 엄청 심했거든… 쇼핑몰 이런게 무난하긴 한데 내가 그런거 잘 몰라서 놓치는 부분도 분명 있을거란 말이죠. 그래서 DB로 하자! 하고 정했다. 그리고 웹 서비스에서 발생할 수 있는 이벤트라고 했지 뭐 하라고 딱 정해주진 않았잖아요?

 

데이터베이스에서 이벤트를 뽑아낼 수 있냐고? ChEMBL에서는 일단 1) 검색하고 2) 결과 보고 3) CSV파일로 받는것만 해도 3개 나온다. 거기다가 하나 더 추가해서 개별 화합물 정보 조회까지 하면 일단 네 개 나온다. 근데 이 이벤트를 그냥 막 갖다가 생성하면 안된다. 이 이벤트들에는 일련의 규칙들이 존재해야 한다. 생각해봐요. 화합물 검색도 안 했는데 CSV부터 받을거임? 검색 결과 띄우다가 502떴는데 CSV파일 다운로드가 되겠어요? 안됨. 이런 일련의 규칙들을 정해야 하고, 생성할 때 저장할 데이터들도 정해야 한다. 모델링 드가자 

 

Rule

1. 각 아이디는 6자리 정수형으로, 6자리가 안 될 경우 앞에 비는 만큼 0으로 채운다. (예: 1234->001234) 단, 저장할때는 걍 저장함.
2. 화합물 정보 확인, 검색 결과 조회, csv 다운로드는 검색이 반드시 선행되어야 한다.
3. 같은 검색 아이디 내에서 csv 다운로드는 한 번만 하는 것으로 한다. (보통 필요한 것만 한번에 받죠...?) 단, 화합물 조회는 검색 결과가 여러개라면 여러 번 진행될 수 있다.
4. 같은 사용자가 여러 개의 화합물을 검색할 수 있다. 예를 들어서, 한 사용자가 아세트아미노펜과 이부프로펜을 검색할 수 있다. 물론 검색 결과와 후행 이벤트 역시 다른 검색 ID에 대해서는 별개이다.
5. 검색 ID가 같다면 검색어도 같다.
6. 에러가 생겼을 때는 이벤트 아이디와 검색 아이디, 유저 아이디, 이벤트 타입, 에러 타입만 기록된다.
7. 검색하다가 오타가 났을 경우, 결과 개수가 0이 된다.
8. 오타때문에 결과가 0이 됐을 경우, 결과를 확인하고 재검색한다.
9. 검색어별 검색 결과 개수는 항상 일정해야 한다.

 

원래는 6번까지 있었는데 구현하면서 7~9번이 추가됐다. 이 규칙들이 이렇게 놓고 보면 이게 뭐여 싶지만 사실 하나하나 보다보면 어 이거구나 할 것들이긴 합니다. 아이디... 사용자랑 검색 아이디는 6자리 되는데 이벤트 ID는 안되데...

 

화합물 정보 확인, 검색 결과 조회, csv 다운로드는 검색이 반드시 선행되어야 한다. ->검색했더니 이만큼 있더라를 보려면 검색을 먼저 해야 한다. 그리고 이만큼 있었군 하고 나서 개별 화합물 정보를 보거나(안 볼 수도 있지만) 정보를 받을 화합물을 선택하고 CSV 파일을 받는다.

 

검색 ID가 같다면 검색어도 같다. ->이건 3, 4, 5를 같이 설명해드림. 일단 3번... 물론 선택을 다르게 해서 다운로드를 여러번 할 수는 있겠지만, 기본적으로 여기서는 한 번의 검색당 한 번의 다운로드를 하는 걸로 정했다. 4번은 구글 검색을 예로 들어보자... 코바늘로 텀블러백 도안도 찾고 코스터 도안도 찾고 액막이 명태 도안도 찾고 할 수 있잖아요? 인공지능 크레딧은 한도가 있겠지만 검색은 하루에 하나만 되는거 아니잖음. 5번은 2번이랑 연결해서 보면 바로 이해가 되실건데, 일련의 이벤트들이 검색이 먼저 선행되어야 합니다. 그리고 A라는 유저가 이부프로펜을 검색하고(이부프로펜의 검색 아이디 생성) 이부프로펜의 결과를 보고 이부프로펜의 결과를 다운로드 받는거니까 한 사용자가 한 검색어에 대해서 진행하는 후행 이벤트의 검색어는 모두 동일하다.

 

7번~8번은… 사실 이건 생각 못 했던건데 구현하다가 추가했음… 여러분 젠타마이신은 gentamicin인 거 아십니까? 항생제는 대부분 어쩌고마이신 어쩌고실린 이렇게 끝나는데, 마이신 들어가면 보통 접미어가 mycin입니다. 반코마이신도 Vancomycin이고 카나마이신도 Kanamycin이잖아요. 근데 젠타마이신은 Gentamicin입니다. 이런 식으로 철자를 헷갈린다거나, 모 게임의 모 대장장이마냥 손이 미끄러진다던가, 키보드가 뻑난다던가 하는 등의 이유로 오타가 날 수 있잖아요? 그러면 결과가 제대로 안 나오니까(여기서는 결과 개수가 0) 뭐여? 아 철자 틀렸네 하고 다시 검색한다 이겁니다.

 

9번은 어떻게 보면 당연한거다. 누구는 이부프로펜 찾았는데 결과 100개 나오고 누구는 똑같이 이부프로펜 찾았는데 200개 나오면 안되잖아요? 그거다. 그래서 얘는 구현단에서 아예 검색 결과 수를 매핑했다.


스키마

콜아웃 배경을 노란색으로 해서 저런거니 양해 바람... 그리고 저 에러타입은 구현단에서 값 바뀐다.

 

이거 뭐 여기 들어오시는 분들은 대부분 뭔지 알테니까 기본적인 건 생략하겠음. AI는 Auto Increment의 줄임말이고(별도로 값을 써주지 않아도 자동으로 값이 증가한다), 따로 명시하지 않았지만 event_id는 PK(프라이머리 키)이기때문에 unique & !null이 추가로 붙는다. !null이 낫 널임. 저기 열쇠는 뭐냐고? 프라이머리 키라는 얘기다.

반응형
Lv. 36 라이츄

Lv. 36 라이츄

광고 매크로 없는 청정한 블로그를 위해 노력중입니다. 근데 나만 노력하는 것 같음… ㅡㅡ

알리발 밀키코튼 도착

잡담/나야, 언박싱 2026. 5. 8. 18:38
반응형

왼쪽: 한번 써보고 괜찮아서 다른 색으로 산 것
오른쪽: 한번 써볼까 해서 산 것

근데 주인장… 이거 사진이랑 너무 다르잖아… 일단 이쁘니까 걍 쓰긴 하겠는데 이정도면 사람한테 써야 하는 뽀샤시 필터를 털실한테 갖다 쓴 수준이라고…

이렇게 얘기하면 대체 사진이 어떻길래? 하실 것 같은데

이래요 사진이. 처음 샀던 16번은 사진하고 동일했는데 얘는 색이 이래서 언박싱 하자마자

요래됨.

이건 처음 사본건데 색감 괜찮습니다. 권장 바늘은 3밀리(모사용 기준 6호)임.

반응형

'잡담 > 나야, 언박싱' 카테고리의 다른 글

꼬북칩 바베큐&치미추리소스맛 먹어봄  (0) 2026.05.27
두쫀쿠를 먹어보았다  (0) 2026.05.11
트리헛 시어 슈가 바닐라 스크럽  (0) 2026.05.03
공화춘 짜장  (0) 2026.04.14
제 13차 알리 천원마트깡  (0) 2026.04.12
Lv. 36 라이츄

Lv. 36 라이츄

광고 매크로 없는 청정한 블로그를 위해 노력중입니다. 근데 나만 노력하는 것 같음… ㅡㅡ

그래프 알아보기-꺾은선그래프

Statistics 2026. 5. 7. 20:20
반응형

꺾은선그래프는 언제 쓰나요?

꺾은선그래프는 점과 점을 선으로 잇는 그래프로, 어떤 시간 간격에 따른 변화량을 기록할 때 쓴다. 시간에 따른 기온의 변화나 시간에 따른 환율의 변화, 아니면 시간에 따른 삼전 주식 가격의 변화량같은거. 막대그래프 얘기 할 때 시계열을 막대그래프로 나타내서 혼난 팀이 있었다고 했는데, 시계열이 시간 변화에 따른 변화량을 가지는거라 꺾은선으로 표시하는 게 맞다. 아이폰 건강앱에서도 오늘 내가 시간대별로 얼마나 걸었는지는 꺾은선그래프로 나온다고 했잖아요?

 

얘는 내가 쓰면서 배리에이션은 못 봤고… 있다고 해도 선 아랫부분에 색깔을 채웠거나 점 모양이 다른게 다임… 아니면 선을 점선으로 그리는 정도? 내가 쓴 꺾은선그래프도 선 굵기랑 마커정도만 배리에이션을 줬다. 씨본에서 다 됩니다.

 

꺾은선그래프를 써도 될 때

시간에 따른 변화량을 볼 거면 써도 된다. (예: 시간에 따른 삼전 주식 주가 변화량) 쉽게 말하자면 경향을 파악하고 싶다 그러면 꺾은선이다. 

 

꺾은선그래프를 쓰면 안될때

아이폰 건강앱에서도 최근 일주일간 요일별 걸음 수는 막대그래프로 나온다고 했는데 그게 왜 그러냐… 어제보다 오늘 더 걸었나를 비교하기 위해서다. 아니 우리 꺾은선 얘기하는데 작대기가 왜 나옴? 봐봐요. 꺾은선그래프는 변화량을 보는 거라고 했잖아요? 그리고 건강앱에서 막대그래프로 나오는 건 어제보다 오늘 더 걸었는지 '비교'해보기 위한거고.

 

시계열 시각화할 때 막대그래프를 쓰변 안되듯이, 어떤 범주에 대해 뭘 비교하고싶을 때 꺾은선그래프를 쓰면 안 된다. 내가 아이폰 15, 16, 17의 판매량을 비교할거면 막대그래프를 쓰죠? 환율을 예로 들어보자. 오늘 오후 5시를 기준으로 엔화랑 달러랑 유로화 환율이 어떤지를 보여줄거면 막대그래프를 쓰면 되지만, 최근 3개월간의 변화를 같이 비교하고 싶으면 각 화폐의 최근 3개월간 변화량을 꺾은선그래프로 보여주는 방법도 있다. 물론 선 색깔을 다르게 해야겠죠?

 

그리고 막대때도 얘기했던건데, 전체에서 얘가 차지하는 비율을 보고싶으면 파이차트나 도나쓰 차트를 쓰십쇼.

반응형
Lv. 36 라이츄

Lv. 36 라이츄

광고 매크로 없는 청정한 블로그를 위해 노력중입니다. 근데 나만 노력하는 것 같음… ㅡㅡ

어... 이게... 되긴 됐는데...

잡담/그림있음 2026. 5. 6. 22:14
반응형

나 사실 데이터 분석이랑 데이터 엔지니어링이랑 뭔 차인지 몰랐음… 그래서 오 여기 근무조건 개꿀 이러면서 걍 지원했는데 오늘 코테 이메일을 받았음다… 솔직히 메일 받자마자 제일 먼저 무슨 생각 들었냐고요?

 

이 생각이요. 나 이력서가 데이터 분석쪽인데 이게 왜 된거지?

 

스읍… 근데 도커가요… 내가 생각하는 도커는 걍 리눅스에서 오라클 돌리는 용도였음… 저 걔가 정확히 뭐 하는 애인지도 모릅니다, 예… 솔직히 그것도 오라클 아니면 깔 일이 없었습니다… 원래 하던 일이 분석쪽이라 과자 보자마자 일차적으로 대뇌 블루스크린 뜨면서 뭐지 이거 어카지 하는 생각이 제일 먼저 들었음. 일단 윈도우에서는 환경 준비가 안되어있고, 리눅스는 램이 8기가라 100% 저거 하다가 뻗을 것 같고… 음… 아니다. 간단한 로그 만들고 하는거면 안 뻗을 가능성도 있긴 있겠다만… 스읍…

 

데드라인이 3일인데 문제가 뭐냐면 내용을 메일에서 안 알려줍니다. 그래서 들어가서 보긴 봐야되거든요? 근데 보면 데드라인 카운트가 됨. 그래서 지금 비상걸렸습니다…ㅋㅋㅋㅋㅋㅋ 구축도 안됐는데 뭘 어떻게 해야 하는겨…

 

뭐 그래도 일단 해봐야지 어카겠음. 저쪽에서도 오 이사람 한번 볼까 해서 이런 제안을 준건데 어 이거 내가 생각한거랑 다른데 하고 GG칠 순 없잖음. 

반응형

'잡담 > 그림있음' 카테고리의 다른 글

아...니...  (0) 2026.06.08
빗 뽀사짐…  (0) 2026.06.05
뭐 어쩌라는겨 대체  (0) 2026.05.04
5일에 온다…  (0) 2026.05.02
밀린 일 클리어  (0) 2026.04.16
Lv. 36 라이츄

Lv. 36 라이츄

광고 매크로 없는 청정한 블로그를 위해 노력중입니다. 근데 나만 노력하는 것 같음… ㅡㅡ

방명록