데과 수업 듣기 전에 이걸 들었더라면...
좀 더 과제가 쉽지 않았을까..
1. CSV 데이터
CSG 데이터는 Comma Separated Value, 즉 콤마로 나뉘어진 데이터 형식이다.
콤마가 data의 각 column을 가리킨다고 보면 된다. (콤마말고 다른 구분문자도 사용가능)
주로 엑셀 파일로 나타내며 용량이 작은 이점이 있다고 한다.
(json과 비교하면 용량이 작다는 걸 쉽게 확인할 수 있다.)
하지만 그만큼 데이터 오염이 쉽기 때문에 주의하자.
2. csv 데이터 읽기
파일을 열어서 csv 모듈을 사용한다. delimiter뒤에 구분자가 들어간다.
import csv
with open('movies.csv') as file:
reader = csv.reader(file, delimiter=',') # 구분자 delimiter
for row in reader:
title = row[0]
author = row[1]
pages = row[3]
3. csv -> json 변환하기
csv를 읽어서 json으로 변환하는 실습을 진행했다.
books = []
# 1. csv 파일을 읽어옵니다.
with open(src_file) as src:
reader = csv.reader(src, delimiter=',')
# json 파일로 변환하기 위해 딕셔너리 형태로 만듭니다.
for row in reader:
book = {
"title": row[0],
"author": row[1]
}
books.append(book)
# json 형식으로 파일을 저장합니다.
with open(dst_file, "w") as dst:
dst.write(json.dumps(books))
4. 람다 lambda 사용하기
lambda를 사용하면 간편하게 함수를 작성할 수 있다.
def square(x):
return x*x
# 람다로 바꿔보자
square = lambda x: x*x
lambda 인수: f(x) 라는 걸 확인할 수 있다.
또 다른 예시1
get_eng_title = lambda row: row.split(',')[1]
sorted(movies, key=get_eng_title)
또 다른 예시 2
string의 첫 번째 글자를 리턴한다. 빈문자열이면 빈문자열 리턴
first_letter = lambda string: string[0] if string else ''
cf) assert(조건식)
조건식이 true이면 통과하지만 false이면 error를 발생시킨다.
5. 함수를 리턴하는 함수
파이썬에서 함수를 리턴하는 함수로는 map()과 filter()가 있다. 두 함수 모두 실행하면 리스트나 튜플 같은 자료 구조가 리턴되는 것이 아니라 함수가 리턴된다.
무슨 의미냐면
eng_titles = map(get_eng_title, movies)
print(eng_titles)
# map object가 리턴된다.
# eng_titles[0]을 할 때 값이 리턴된다.
맵은 데이터가 필요해질 때 연산을 수행한다.
또 다른 예시로는 itemgetter가 있다.
itemgetter(n)은 n번째 값을 리턴하는 함수를 리턴한다.
>>> from operator import itemgetter
>>> get_zeroth = itemgetter(0) # 0번째 함수 리턴하는 함수 만들기
>>> numbers = [1, 2, 3]
>>> print(get_zeroth(numbers))
1
5-1. map()
map(func 매핑 함수, x 인풋) 형태이다.
앞에는 함수를 인자로 받고 뒤에는 함수에 들어갈 input을 인자로 받는다.
titles=[]
for row in reader:
titles.append(row[0])
# map으로 구현
get_title = lambda row: row[0]
titles = map(get_title, reader)
직관적인 이해는 어렵지만 map을 사용하니 코드를 잘 짜는 것처럼 보인다.
5-2. filter()
filter(func 체크 함수, 체크할 인자 x)
is_long = lambda row: int(row[3]) > 250
long_books = filter(is_long, reader)
'Data Science > Data Science' 카테고리의 다른 글
[Data Science] 데이터 형변환 (0) | 2021.01.17 |
---|---|
[Data Science] 텍스트 파일 분석 (2) | 2021.01.12 |
[Data Science] 파이썬 크롤링 - 워드 클라우드 만들기 (0) | 2021.01.12 |
[Data Science] API 크롤링 (0) | 2021.01.07 |
[Data Science] 파이썬 크롤링 2 (0) | 2021.01.07 |
댓글