·이론
세상은 우연의 연속인 것처럼 보이지만, 사실 대부분의 일에는 특정한 확률이 숨어있기 마련입니다. 어떤 이벤트에 당첨되는 것도, 출근길에 지하철을 놓치는 것도 완전한 우연이라고 말하기 어렵습니다.데이터 분석은 이런 '우연'을 수학적으로 계산하고, 그 안의 패턴을 찾아내는 일이라고 할 수 있습니다. 그 중에서도 확률은 데이터가 세상을 설명하는 방식 중에 하나입니다. 확률도 종류가 다양하던데 어떤 게 있나요?흔히 우리가 표현하는 P(A), P(B) 같은 확률은 비조건확률이라고 합니다. 한계 확률이라고도 불리는 이 확률은 이름대로 아무런 조건이 없는 상황에서 특정 사건(A, B)이 일어날 확률입니다.또 두 개 이상의 사건이 동시에 일어나는 확률은 결합 확률이라고 부릅니다. P(A∩B)로 표시해, 사건의 교집합이..
·이론
평균은 데이터를 대표하는 값이긴 하지만, 평균만으로는 데이터의 모든 것을 다 파악할 수는 없습니다.값들이 얼마나 흩어져 있는지, 한쪽으로 치우쳐 있는지, 그리고 얼마나 뾰족한 분포를 가지는지에 따라 데이터의 해석은 완전히 달라지게 됩니다.그래서 통계학에서는 평균을 시작으로 분산, 표준편차, 왜도, 첨도 등의 기술 통계적인 특성을 함께 살펴봅니다. 평균은 데이터를 얼마나 잘 대표할까요?우선 평균을 측정할 수 있는 방법은 상황의 특성에 따라 조금씩 다릅니다.먼저 저희가 흔히 알고 있는 평균은 산술 평균인데, 기본적인 평균의 측정 방법입니다. 산술 평균은 등간 척도나 비율 척도로 측정된 데이터를 통해 전체 변숫값을 모두 더한 뒤에 값들의 개수로 나눠 구할 수 있습니다.단순히 한 학급의 평균 몸무게나 키를 구하..
·이론
각 사람마다 MBTI로 표현되는 성향이 존재하듯이, 데이터에도 각자의 성격이 있습니다.어떤 데이터는 계산이 가능하기도 하지만, 그저 구분만 가능한 데이터들도 있습니다. 이렇게 데이터의 성격을 구분하는 기준이 바로 '변수와 척도'입니다. 변수는 무엇인가요?모든 데이터는 변수라는 이름 아래, 서로 다른 특징과 역할을 가지고 있습니다. 변수는 이처럼 데이터의 기본 단위 역할을 해줍니다.데이터 과학과 데이터 분석은 이 변수와 변수 간의 관계를 밝혀내는 활동이라고 할 수 있습니다.보통 연산을 하는 것이 의미가 있는지 없는지에 따라 양적 변수와 질적 변수로 구분이 됩니다.여기서 양적 변수는 정숫값만 취할 수 있는 이산 변수와 연속적인 모든 실숫값을 취할 수 있는 연속 변수로 나뉩니다.그리고 질적 변수는 속성을 숫자..
·이론
우리가 데이터를 분석할 때, 전체 데이터를 확인하는 것이 가장 정확하고, 좋다고 여기는 경향이 있습니다. 하지만 세상 모든 데이터를 확인하고 모으는 건 거의 불가능이라고 생각합니다.그래서 통계학은 이 문제를 '부분으로 전체를 추정하는' 표본 조사라는 방식으로 풀어줍니다. 이전 글에서도 언급했듯 통계학의 핵심은 표본에서 모집단으로 가는 과정입니다. 표본 조사는 왜, 어떻게 하나요?최종 데이터 분석에는 전체 데이터를 사용하더라도, 분석 모델이 완성될 때까지는 표본 데이터를 활용하는 것이 경제적으로, 시간적으로 훨씬 유리합니다.일반적으로 최소 200개 이상의 표본이 확보되면 분석이 가능하다고 합니다. 하지만 변수의 개수나 표본 분산에 따라서 더 많은 표본이 필요할 수도 있습니다. 통계적으로 변수 하나당 최소 ..
·이론
요즘에는 개인이든 어떤 기업이든 간에 데이터가 중요하다고 얘기합니다. 하지만 정작 데이터를 제대로 읽는 사람은 많지 않은 것 같습니다.그래서 제가 학부 시절, 그리고 그 이전 학창 시절에 배웠던 통계학이 그 빈틈을 채워주곤 했습니다. 데이터를 그저 확인하는 것에서 이해하는 것으로 바꿔주는 것이 통계학의 역할이었습니다. 왜 통계학을 알아야 하나요?이유는 간단합니다. 보통 데이터를 다루는 사람들은 먼저 가공(전처리 등)한 데이터를 EDA하면서 데이터를 이해하고 분석하는 과정을 거칩니다. 이 과정 안에 데이터의 분포, 연관성, 확률 등을 통계적으로 깊이 있게 분석하는 것도 포함됩니다.특히 사람들이 궁금해하는 현상의 원인을 찾아내고 미래를 예측하기 위해서는 먼저 나름대로의 가설을 설정해야하고, 통계적인 분석을 ..
·SQL 고득점 Kit
프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.krWITH CAR_FEE AS ( SELECT C.CAR_ID, C.CAR_TYPE, FLOOR(C.DAILY_FEE * 30 * (1 - P.DISCOUNT_RATE / 100)) AS FEE FROM CAR_RENTAL_COMPANY_CAR C JOIN CAR_RENTAL_COMPANY_DISCOUNT_PLAN P ON C.CAR_TYPE = P.CAR_TYPE WHERE C.CAR_TYPE IN ('세단', 'SUV') AND P.DURATION_TYPE = '30일 이상')SELECT F.CAR_ID, F.CAR_TYPE, F..
·SQL 고득점 Kit
프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr# 일단, 쿼리 구조를 세워보면,# HISTORY_ID와 가격을 구해야하는데,# 가격은 DAILY_FEE * DISCOUNT_RATE * (DATEDIFF(END_DATE, START_DATE) + 1)# SELECT START_DATE, END_DATE, DATEDIFF(END_DATE, START_DATE) + 1 AS DIFF# FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY# FEE는 DAILY_FEE * DIFF * 할인율# 할인율 같은 경우에는 DIFF에 따라 CASE로 나눠줘야하는데, BETWEEN으로 분기 처리해주자.# 그리고 CO..
👉🏻 12757번: 전설의 JBNU'''다음 M개의 줄에는 아래와 같은 명령이 주어진다.1 Key Value- 해당 Key와 Value를 가진 데이터를 추가한다. Key가 이미 존재하는 입력은 주어지지 않는다.2 Key Value- 해당 Key로 검색된 데이터를 Value로 변경한다. 조건을 만족하는 유일한 Key가 없는 경우 무시한다.3 Key- 해당 Key로 검색된 데이터를 출력한다. 조건을 만족하는 Key가 없는 경우 -1을 출력한다.- 만약 해당하는 Key가 두 개 이상 존재한다면 ?를 출력한다. 모든 출력은 개행을 포함해야 한다.'''import sys; input=sys.stdin.readlinefrom bisect import insortdef find_cloest(keys, target..
·SQL 고득점 Kit
프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.krSELECT ID,CASE WHEN NTILE(4) OVER (ORDER BY SIZE_OF_COLONY DESC) = 1 THEN 'CRITICAL' WHEN NTILE(4) OVER (ORDER BY SIZE_OF_COLONY DESC) = 2 THEN 'HIGH' WHEN NTILE(4) OVER (ORDER BY SIZE_OF_COLONY DESC) = 3 THEN 'MEDIUM' ELSE 'LOW'END AS COLONY_NAMEFROM ECOLI_DATAORDER BY ID왜 이렇게 풀었을까?크기에 따라 컬럼을 설정해주는 문제였습니다..
·SQL 고득점 Kit
프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr-- 드디어 고급 개념인 재귀 CTE를 사용할 차례인 것 같다 !WITH RECURSIVE HOUR_SERIES AS ( SELECT 0 AS HOUR UNION ALL SELECT HOUR + 1 FROM HOUR_SERIES WHERE HOUR 왜 이렇게 풀었을까?최종 결과 테이블을 살펴보면, 0시부터 23시까지의 데이터도 모두 출력해야 함을 확인할 수 있었습니다.간단히 변수 설정(@ 어노테이션 사용)해서 풀 수도 있었지만, 이번 문제에서는 CTE를 사용해보고 싶어서 선택하게 되었습니다.특히나 재귀 CTE를 사용해 먼저 0시를 설정해두고..
·LG U+
오늘은 Streamlit을 이용해서 간단한 대시보드를 만드는 법을 배우고 제작해보았습니다. 😀 간단한 레이아웃 잡기✨ 기본 준비물우선 필요한 라이브러리들부터 가져오겠습니다.import streamlit as stimport pandas as pdfrom PIL import Imageimport plotly.express as px그리고 의료비 데이터를 하나 불러옵니다.df = pd.read_csv('./datasets/medical_cost.csv')df = df.query('region == "northwest"') ✨ 메인 화면 및 사이드바Streamlit에서는 st.sidebar를 쓰면 왼쪽에 고정 메뉴를 만들 수 있습니다.st.title('메인 페이지예요!')with st.sidebar: ..
·LG U+
오늘은 e-learning 플랫폼을 Django로 구축하면서 알아두면 유용할 주요 개념들을 정리해보겠습니다. 💎 e-learning 플랫폼 구축을 위한 8가지 핵심 개념 🔑 1. CMS(Content Management System)CMS는 콘텐츠를 쉽고 효율적으로 관리할 수 있게 해주는 시스템을 말해요. 💡 주요 역할강의 자료, 공지사항, 사용자 관리 등 e-learning 플랫폼의 '콘텐츠'를 통합 관리비개발자(강사, 운영자)가 UI를 통해 손쉽게 추가/수정/삭제 가능 💡 실제 사례강의 PDF, 동영상 업로드 및 버전 관리수강생 리뷰/댓글 관리배너, 이벤트 페이지 등 자유 게시판 기능 django CMS - Enterprise Content Management with Django - djan..
ReJoy
InJoy