CSV는 Comma Seperated Value의 약자이며, ,
로 구분된 파일을 말한다.
CSV파일을 쓰는 법부터 알아보자.
이영자씨가 추천한 맛집리스트를 CSV파일로 만들어봤다...
맛있ㅆ....
foodfightlist = {
1 : ["돈까스잔치","서울 용산구 서빙고로 297"],
2 : ["한남동한방통닭", "서울 용산구 대사관로34길 38"],
3 : ["진대감", "서울 마포구 마포대로12길 54-2"],
4 : ["홍미닭발", "서울 강남구 강남대로 628"],
5 : ["연타발", "서울 강남구 도산대로 231"]
}
with open("FOODFIGHTLIST.csv","w") as f:
for i in foodfightlist.values():
data = ",".join(i)
f.write(data+"\n")
파일이 생성된 것을 확인하면 된다.
그런데 만약 내가 table의 header부분을 넣고 싶어졌다.
간단하다. 새로운 파일에 header를 만들어서 foodfightlist의 내용을 이어붙여나가면 된다.
import csv
header = ["name", "address"]
with open("FOODFIGHTLIST.csv","r") as inputfile:
with open("FOODFIGHTLIST_with_header.csv","w", newline='\n') as outputfile:
fi = csv.reader(inputfile, delimiter=',')
fo = csv.writer(outputfile, delimiter=',')
fo.writerow(header)
for row in fi:
fo.writerow(row)
보통 데이터 분석에서 pandas
+ .csv
조합을 많이 쓴다.
.xlsx
을 안쓰는 이유는 데이터의 양이 많을 경우 GUI 기반 확장자인 엑셀은 느리기 때문이다.
pandas에서는 read_csv
,to_csv
라는 메소드를 지원하기 때문에 csv
파일을 읽고 쓸 때 굉장히 간편하다.
[to_csv]
# 맛집 리스트들을 준비한다.
header = ["name", "address"]
rows = [
["돈까스잔치","서울 용산구 서빙고로 297"],
["한남동한방통닭", "서울 용산구 대사관로34길 38"],
["진대감", "서울 마포구 마포대로12길 54-2"],
["홍미닭발", "서울 강남구 강남대로 628"],
["연타발", "서울 강남구 도산대로 231"],
]
# pandas로 csv파일 형태로 저장한다.
import pandas as pd
df = pd.DataFrame(rows, columns=header)
df.to_csv('foodfightlist_pd.csv', index=False) # index를 제외하겠다는 뜻이다.
읽어오는 방법도 매우 간단명료하다.
[read_csv]
import pandas as pd
df = pd.read_csv('foodfightlist_pd.csv')
df.head() # df.head()를 통하여 데이터를 잘 읽어왔는지 확인한다.