[리뷰] 20.05.19 화요일

밍키·2020년 5월 19일
0

오늘의 리뷰

목록 보기
1/3

CSV ( Comma Seperated Value)

  • 데이터들을 정화화된 형태로 저장하는 방식
  • 최종적으로 표 형태이다.
  • 하나의 데이터는 한줄에 표시. ( 데이터 구분자는 엔터 )
  • 하나의 데이터를 구성하는 값(속성)들은 , 로 구분
    • tab으로 구분하는 경우, TSV
    • 구분자로 쉼표와 탭을 많이 씀.
    • 각 속성값들은 " " 로 감싸기도 한다. 꼭 그런건 아니지만 이렇게 하는 경우도 있다.
  • 텍스트 기반 프로그램 상관없이 읽을 수 있다.
  • 파일 확장자는 '.csv', '.tsv' 로 준다. 정해진 건 아니다. 만드는 사람 마음~
  • 확장자라는 것은 그냥 무슨 파일인지 알려주는 것임.
  • 텍스트기때문에 뭘로 저장해도 상관없다.

pandas🐼

살짝 맛만 봤음. like 시식코너.

import pandas as pd

df = pd.read_csv('data/member.csv',encoding='cp949')
df['name']
df.iloc[3]

pickle🥒

  • 다 때려 넣는다고 해서 피클피클
  • 객체 직렬화 / 역직렬화 처리 기능 제공
    - 객체 직렬화 : 객체를 출력.
    - dump(출력할 객체, fw)
    • 객체 역직렬화 : 출력된 객체를 입력받아 다시 객체화.
      • load(fr)
  • 연결시, binary 모드를 사용해야 한다.
  • 그래서 이걸 사용하는 이유가 뭐야
    - 큰 작업시,작업 중간 데이터를 저장해야 하는데 변환없이 그대로 저장 가능!
    • 그니까 csv처럼 텍스트 형식으로 변환해서 저장되지만, 이 친구는 리스트면 리스트 튜플이면 튜플 변환없이 객체의 형태 그대로 저장해줌.
    • 저장하는 이유는 나중에도 다시 사용하기 위해서! 영구적 사용할거야
  • 확장자 pkl은 피클로 저장된 친구들이다. 보통. 항상은 아니야.
  • 그리고 이건 텍스트가 아니라 바이너리라는 걸 잊지마.

split, join, zip

그냥 다시 본김에 반가워서 적어봄.

Iterable / Iterator

  • iterable : 반복 조회가 가능한 객체. 한번 반복시마다 원소(값)를 하나씩 제공하는 역할.
    • 리스트, 튜플, 셋, 문자열 등
    • __iter(self)__ 특수 메서드를 정의
      • Iterator 객체를 반환한다.
    • __iter(self)__ 메서드는 iter(iterable) 함수 호출 시, 실행된다.
  • iterator라는 것은 뭐냐 : 자신을 생성한 iterable의 원소(값)들을 하나씩 제공하는 객체.
    • __next__(self) 특수 메서드를 정의
      • iterable 의 원소를 순서대로 하나씩 제공.
      • 더 이상 제공할 원소가 없을 경우 StopIteration 예외를 발생시킨다.
    • __next__(self) 특수 메서드는 next(itertor) 호출 시 실행된다.

일단 적긴 하는데... 다시 보는데도 낯설다. 친해지기 어려운 타입. 나중에 다시 한번 보자.

Generator (제너레이터)

  • Iterable + Iterator 의 함수 버전!!!!!
  • 제너레이터 함수에서 값을 반환할 때
    • yeild 반환값
      • 반환값을 가지고 호출한 곳으로 돌아간다.
      • 현재 상태 (돌아가기 직전 상태)를 기억하면서 돌아간다.
      • 다음 실행 시, yield 다음부터 실행된다. 새로 실행하는 것이 아님.
      • 잠깐 멈춤같은 느낌. pause 일시정지
    • return
      • generator 함수를 종료하겠다! 종료!!!!!
    • return 뿐만 아니라 일드도 사용 가능 일드가 나오면 얘는 제너레이터
  • 호출할 때 : next()를 이용해서 호출
# yield는 일단 끝났어~
# 리턴은 나 끝났다~~~
# 보통 제너레이터를 만들 때 리턴은 거의 쓰지 않는다. 일드로 보통 다 처리.

mr= my_range2(1,10)

# 함수를 호출한 것이 아님. 제너레이터를 생성한 것!
# 만들긴 함수처럼 만들었고, 함수 호출한 것처럼 작성했지만 아니다. 디스 이스 제너레이터

generator 표현식

# 컴프리헨션이 세 종류나 있었음 리스트, 셋, 딕셔너리
[i*10 for i in range(1,10)]
{i*10 for i in range(1,10)}
{i:i*10 for i in range(1,10)}

# 튜플 만들듯이 하면 제너레이터야 뿅
g1 = (i*10 for i in range(1,10))

# 문법은 컴프리헨션이랑 똑같음. 그저 튜플처럼 소괄호로 감쌀 뿐.
# 대신 복잡한 로직은 넣을 수 없이. 왜냐 컴프리헨션이니까
# 복잡한 거 쓰고싶으면 제너레이터 함수쓰고, 이것도 부족하다. 
# 이거보다 더 넣고싶다하면 이터레이블 이터레이터 써!
# 간단하고 쉬워지면 내가 할 수 있는게 적어진다. 인생사 공짜는 없다.
# 복잡하고 어려워지는 만큼 할 수 있는게 많아져.

# 그냥 리스트로 해도 되는거 아니야? 왜 제너레이터 쓰는데?
# 결과만 보자면 뭘 써도 상관없어

# 리스트 컴프리헨션은 객체가 만들어짐. 메모리 소모됨.
# 제너레이터라는 건. 실제 값을 가지고 있는 것이 아니라 
#어떻게 일할지만 가지고 있는 친구. 계획만 있음.
# 달라고 할 때마다 줌. 메모리 절약 가능.
# 리스트는 필요한 값을 다 만들어 놓음.
# 제너레이터는 미리 만들어놓지 않음. 게으른 친구임. 발등에 불떨어져야 하는 스타일.

# 미리 만들어 놓냐 아니면 필요할 때 만드냐 차이 차이차이 야야야
profile
대한민국 4차 산업의 역군을 꿈꾸며.

0개의 댓글