1주차 필기록 통합본

김다피·2026년 1월 26일

SKN-25 필기본

목록 보기
1/14

Day1

🟢환경구축

cloud → scale in out 시대

[Powershell에 입력]

Invoke-WebRequest -Uri "https://repo.anaconda.com/miniconda/Miniconda3-latest-Windows-x86_64.exe" -OutFile ".\miniconda.exe"
Start-Process -FilePath ".\miniconda.exe" -ArgumentList "/S" -Wait
del .\miniconda.exe

환경 구축, anaconda 말고 miniconda 설치

C:\Users\rosie>python
Python 3.12.12 | packaged by Anaconda, Inc. | (main, Oct 21 2025, 20:05:38) [MSC v.1929 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>>

mini 설치 후 cmd에서

conda install anaconda

지웠다 깔지 말걸. 환경변수가 꼬였다.

해결했다. 알고보니 전에도 미니콘다를 깔았던 것이다.

인간의 기억력이 이렇게나 간사하다.

🟢Jupyter 명령어

🔵Cell 만들기

b : 아래 만들기

a : 위에 만들기

dd : 삭제

m : markdown 으로 변경

y : code 변경

🔵실행하기

Ctrl + enter  -> 현재 셀 실행

shift + enter -> 현재 셀을 실행하고 밑으로 이동

alt + enter -> 현재 셀을 실행하고 아래 셀을 생성

🟢파이썬 기초지식1

🔵Boolean 불대수

True, False…

🔵sequence 데이터

리스트 , 문자열 모두 해당

  • 중요한 것은 결국 인덱스!

🔵반복문 이야기를 시작

indent…(들여쓰기를 이야기하나봄.)

🔵딕셔너리

딕셔너리 개념은 똑바로 하자!

json은 딕셔너리 형태. 그렇게 json을 많이 봐놓고 둘이 머리에서 연결되었던 적이 없다.

리스트 컴프리헨션으로 하기.

tmp2 = [x for x in range(1,11) if x%2==1] 

print(tmp2) 
# 변수를 왼쪽, 조건문을 오른쪽에.

🟢크롤링 초기

🔵스타벅스 데이터 키 값 보는 방법

리스트와 딕셔너리를 섞어서 사용하는 형태.

현재까지는 데이터 분석을 위해 데이터 값 뽑는 중.

데이터 타입을 중첩해서 쓰는 게 효율적이라는 걸 인지하고 있다.

🔵구별로 결과 보기(로직 외우기)

gu_counts = {}

for s in star['list']:
    gu_name = s['gugun_name']

    if gu_name in gu_counts:
        gu_counts[gu_name] +=1
    else:
        gu_counts[gu_name]=1

for gu, count in gu_counts.items():
    print(f"{gu}:{count}")

🔵스타벅스 가게문 연 날짜 모으기

import datetime

week_counts={}

for s in star['list']:
    storeopen= s['open_dt']
    storeopen= datetime.datetime.strptime(storeopen,'%Y%m%d').weekday()

    if storeopen in week_counts:
        week_counts[storeopen]+=1
    else:
        week_counts[storeopen]=1

for weekday, counts in week_counts.items():
    print(f"{weekday} : {counts}")

🟢데이터 분석 때 필요한 지식은 총 3가지

  1. 코딩
  2. 통계
  3. 도메인 지식

🔵WSL

Windows Subsystem for Linux

  • 추후 공부 예정

🔵면접

  • 운도 실력…?
  • 중고신입보다는 잘해야함
  • 리눅스 ….

Day2

🟢환경 구축 및 기능 확인 명령어

cmd에 pip 입력 시 가능한 command 리스트 출력됨

오늘은 selenium을 설치하였다.

pip install [package]
pip uninstall [package]
pip list 

🔵dir, help에 대한 설명

빅분기 준비할 때 나오는 꿀팁이 나오고 있다.

기능 보기 : dir()

함수 설명서 : help()

리스트 컴프리헨션으로 윤년 문제 풀이하기

leak_year = [year   for year in range(1900, 2101) if (year % 4 == 0  and   year % 100 != 0)  or  (year % 400 == 0)]

🟢파이썬 기초지식1

🔵예외 처리

try:
    text.index('엔코아')
except:
    print("error")
print("hi")

큰 코드 돌려놓고 꺼지면 비통해짐.

예외 처리로 해결

예외 처리에 대한 직관력이 늘었다.

🔵함수 선언

  • 코드 매번 사용할 때마다 큰 코드를 불러오는 것보다 훨씬 효율적.

🔵리스트 vs 튜플

  • 둘의 차이 = 순서 보유 or not
tuple[1]='abc' #오류 발생
list[1] = 'abc' 

🔵지역 변수와 전역 변수

함수 내부 내에 있으면 지역 변수.

🔵람다 함수

  • 데이터 분석에서 많이 사용
  • 피쳐 엔지니어링
  • 하나의 변수에만 적용하고 싶을 때
  • 분산처리할 때 사용
(lambda x, y : x+y)(10,20)

🔵언패킹 & sorting

for key, val in gugun.items(): # 여기 적용되는 것이 unpacking
    print(key,val)
sorted(gugun.items(), key= lambda x :x[1],reverse=True)
#type hint(강제성 없음)
def myfunc3(a : int, b : int):
    return a+b

🔵if는 입력 값이 True일 때만 아래 종속문 실행

아 그래서 if문이 말이 짧았구나.

함수형 언어 → 함수의 결과를 또 함수가 받아내는 것

파이썬도 이와 같이 활용할 수 있음

함수형 언어의 장점 → 배달 사고 나지 않음.

🟢크롤링

애초에 url에 api로 데이터 옮기는 주소로 접근하는 방법이 있었다니 그 생각을 못했다.

web crawling 수업이 기대된다.

find를 존재여부 체크용으로 쓸 수 있다는 점이 깔끔하게 느껴짐

def get_code(company_name):
        for com in krx['OutBlock_1']:
            if com['ISU_ABBRV'].find(company_name)>-1:
                return com['ISU_SRT_CD']
            
def get_code(company_name):
        return [com['ISU_SRT_CD'] for com in krx['OutBlock_1'] if com['ISU_ABBRV'].find(company_name)>-1]

🔵모듈 생성

stock.py로 함수 묶어서 import로 내보내기

🟢파일 읽고 쓰기

🔵아스키 코드와 16진법

ord("H") # 16*4 = 64 +8 

PS C:\skn> Format-Hex -Path "./a.txt"

       경로: C:\\skn\\a.txt

       00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
        00000000   48                H

한글이 영어보다 용량이 크다.

🔵보통 아래 방법론을 사용함.

## 전체 리딩
f1=open("./b.txt","r",encoding="utf-8") ## 용량 상관없이 전체를 읽어야함
## 줄마다 리딩
with open("./b.txt",'r',encoding='utf-8') as f: ## 한 줄씩 읽음 -> 메모리 이슈 상대적으로 적음
    print(f.read())

이유 : 메모리를 사용할 때마다 allocate함

🔵map → 분산처리

즉, 동시에 함수 적용 가능

' '.join(list(map(str,(x.values()))))

🔵OS 다루기

with open("./filelist.txt","w",encoding='utf-8') as f:
    for roots, dirs, files in os.walk("c:/windows"):
        for file in files:
            print(f"{roots}/{file}")

파일 없으면 만들기

if not os.path.isdir("./stock"):
    os.mkdir("./stock")

Day3

🟢배경지식 소개

🔵라이브러리

  • numpy → 선형대수
  • scipy
    • 통계, 공학 알고리즘
    • fft, 라플라스변환 등 제공

ipynb → interactibe python notebook

🔵딥시크가 C 기반이었다고?

  • 굉장히 충격적이네….
  • 효율, 속도 최적화

🔵Duck typing

  • 동적 타이핑의 한 종류

print의 기본 상태 ⇒ 엔터

end를 파라미터로 정해줄 수 있다

for x in range(1,11):
    print(x, end='-')

🔵퓨리에 변환

  • 가청주파수 범위 외 데이터는 삭제 해도 됨 → mp3
  • 무손실 음원
    • 영동발전소 뭐임 → 여기 전기로 들으면 음질이 좋음

🔵문자열 다루기

  • upper()
  • lower()
  • strip()
  • split()
  • join()
  • find(index)

🔵바다코끼리 연산자

사용과 동시에 할당 (3.8 이후부터 적용)

if a :=input("입력 : "):
    print(a)
else:
    print("입력이 없음")

아 귀엽다. 전에 본 적은 있는 것 같은데 사용해본 적이 없음

Pythonic → 파이썬스러운, 너무 짧게 쓰는.

🔵numpy

import numpy
numpy.pi

자연상수 e 만들기

for x in range(1,1001,100):
    print((1 + 1/x)**x) 
    ## 자연상수 수렴시키는 걸 만들어보기

🔵format 활용 방법

print("{:,}값 출력".format(19945232345678))

19,945,232,345,678값 출력

print("{:02d}값 출력".format(1))

01값 출력

🔵양적, 질적 데이터

  • 12,4,5,6,2334 → 양적 데이터
  • ‘istp’,’isfj’ → 질적 데이터
    • 순위 유무로 또 나뉨
    • 질적 데이터는 인코딩 해줄 필요가 있다.
    • 원핫 인코딩 등등…………………………..

🟢크롤링

🔵포맷 순서 전환

url = "https://api.stock.naver.com/chart/domestic/item/{1}/day?startDateTime={2}&endDateTime={0}"

url.format('005930',202501010000,202512310000)

🔵자동화를 위한 날짜 import

from datetime import datetime, date, timedelta

url = "https://api.stock.naver.com/chart/domestic/item/{}/day?startDateTime={}&endDateTime={}"

url.format('005930',datetime.now().strftime("%Y%m%d")+'0000',datetime.now().strftime("%Y%m%d")+'0000')

🔵날짜 다루기

date(2026,12,24) - timedelta(days=100)

datetime.date(2026, 9, 15)

date.today()-date(2002,10,25)

datetime.timedelta(days=8470)

이만큼 살았음!!

import os
if not os.path.isdir("/test"):
    os.mkdir('./test')

🟢AI 배경지식

🔵and, or , xor

and, or → 선형 방정식으로 그리기 가능

xor → 인공지능의 겨울

제프리 힌튼의 해결…

선형에서 비선형으로 넘어가는 함수 → 활성화 함수

비선형 ⇒ LLM

🔵라이브러리

numpy

scipy

matplotlib

seaborn

streamlit

scikit-learn

xgboost

tensorflow

pytorch

opencv

🔵추가적으로 해봐야할 것.

fastapi, django ,flask, qt5,6
,
airflow → 스케쥴 관리 → apache(무료 접근) airbnb

spark, database, linux, container,network

🔵오류 일부러 발생

import sys
sys.version_info

sys.version_info(major=3, minor=12, micro=7, releaselevel='final', serial=0)

import sys
if sys.version_info.minor >=14:
    print(200)
else:
    raise ValueError("u need to version check")

🔵리스트 다루기

a = [1,1.0,(lambda x : x**2)]
a.insert(2,'text') ## 특정 위치에 요소 삽입

[1, 1.0, 'text', <function main.(x)>]

b =[5,6]
a.extend(b)

[1, 1.0, 'text', <function main.(x)>, 5, 6]

a+=[7,8]

[1, 1.0, 'text', <function main.(x)>, 7, 8]


a = [1 , 1.0, (lambda x : x ** 2)]
a.insert(2, 'text')
b = [5,6]
a.extend(b)
a += [7,8]
c = a
c[-1]=1000
print(a)

[1, 1.0, 'text', <function at 0x0000021959EF02C0>, 5, 6, 7, 1000]

  • 왜 c를 바꿨는데 a가 바뀌는가?
  • shadow copy 되기 때문에 사실상 이름만 바뀐 상태
print(id(a)==id(c)) ## True
tmp = a.pop(-1) #1000

🔵이스터에그

import this ## Tim peters가 sort 알고리즘 .. ^^

해피해킹, 허먼밀러

🔵시간복잡도

for문은 절대 2중까지만.

#n * n =n*2
for a in range(2,10):
    if a ==3:
        continue ## 3단만 돌아가지 않음
        #break ## 3단 전에 멈춤
    for b in range(1,10):
        print(f"{a}X{b}={a*b}") 

🔵문자열 가공

sum(map(lambda x : x==x[::-1],lyrics.split()))

🔵hash

딕셔너리 → 해시 값으로 구성되어있음

  • 속도에 장점이 있음
  • 75%30

번호표 만들어주기 ^~^

for x in enumerate("안녕하세요"):
    print(x) # 튜플로 출력
    
for i, x in enumerate("안녕하세요"):
    print(i, x) # 언패킹돼서 출력
    
for _, x in enumerate("안녕하세요"):
    print(_, x) #안쓰는 변수

tqdm → 시간 체크

from tqdm import tqdm
import time

for x in tqdm(range(100)):
    time.sleep(1)

🔵함꾸.(함수꾸미기) 데코레이터(처음 배우는 내용)

숟가락 얹기.

  • pytorch
  • 꾸미기 코드
def my_deco(func):# 함수라는 자료형을 받음
    def wraper():
        print("wraper 실행")
        func()
        print("wraper 실행 이후")
    print("my_deco 실행")
    return wraper
@my_deco
def hi():
    print("hi")

my_deco 실행

hi()

wraper 실행
hi
wraper 실행 이후

def repeat(num_times):
    def decorator_repeat(func):
        def wrapper(args):
            for _ in range(num_times):
                result = func(args)
            return result
        return wrapper
    return decorator_repeat

@repeat(num_times=10)
def myprint(name):
    print(f"바보,{name}")
    
myprint("알ㄹ야")

🔵가변 변수

def myfunc(tmp, *a, **b):
    print(tmp)
    print(a)

myfunc(10, 1,2,3,4)

def myfunc(tmp, *a, **b):
    print(tmp)
    print(a)
    print(b)

myfunc(10, 1,2,3,4, text ="5교시")

10
(1, 2, 3, 4)
{'text': '5교시'}

SAP → ERP 시스템 판매…시가총액 1위

a, b, *_ = (1,2,3,4)

_ 는 걍 쓰레기통에 넣어버림.

def myfunc(a,b=10,c): #오류남
    print(a)
    print(b)
    print(c)

왜? 기본값 부여 시 뒤쪽부터 채워줘야 함.

DP 문제 해결 → 재귀 함수

def factorial(n):
    output=1
    for i in range(1, n+1):
        output*=i
    return output
def factorial(n):
    if n==0:
        return 1
    else:
        return n*factorial(n-1)

🔵자료구조 얘기를 해봐요

^~^

재귀함수는 내부적으로 stack에 더하여 연산

데이터 분석에 쓰이는 자료구조 → queue

데이터 손실 방지에 좋음.

코테 책 외우기…………?

🔵AI

  • y = ax+b(기울기, 절편)
  • y= wx+b(절편, 편향)

H200 → 아주 좋은 클라우드 ^~^.

코테 → 디버깅 기능 꼭 활용.

정설 → 앨런 튜링이 먹은 사과의모양이 애플 마크……?

튜링 테스트(=이미테이션 게임)

애니악에 벌레 껴서 디버깅.

🔵피보나치 수열

def fibo(n):
    if n==1:
        return 1
    if n==2:
        return 1
    else:
        return fibo(n-1)+fibo(n-2)
        
%%time #내부 명령어.
fibo(30)

CPU times: total: 141 ms
Wall time: 144 ms
832040

🔵yield

  • pytorch가 제너레이터로 구현.
  • 제너레이터, co-routine
# 제너레이터, co-routine
def fib():
    a,b=0,1
    while True:
        yield a # routine 짜는.
        a,b = b, a+b

yield로 우선 기다리고, next 실행 때 넘김

%%time
fib_gen = fib()
first_10 = [next(fib_gen)for _ in range(40)]

CPU times: total: 0 ns
Wall time: 0 ns

  • 실행속도에서 월등히 유리함.

+)
코딩테스트 → 암기에 가까움

profile
지루하게 선명하기보다는 흐릿해도 흥미롭게

0개의 댓글