다양한 데이터 저장/읽기 - CSV 파일

이해하기 쉽고, 장황하지 않은 자료를 기반으로 강의를 진행합니다.
잔재미코딩 소식 공유
좀더 제약없이, IT 컨텐츠를 공유하고자, 자체 온라인 사이트와, 다음 두 채널도 오픈하였습니다
응원해주시면, 곧 좋은 컨텐츠를 만들어서 공유하겠습니다
●  잔재미코딩 뉴스레터 오픈 [구독해보기]
●  잔재미코딩 유투브 오픈 [구독해보기]

2. 다양한 데이터 저장/읽기 - CSV 파일

  • CSV(Comma-Separated Values): 스프레드시트 데이터를 저장할 때 가장 널리 쓰이는 파일 형식
  • 엑셀등 여러 응용프로그램에서도 지원
  • CSV 형식 (각 열은 콤마로 구분, 각 행은 줄바꿈 문자로 구분)

    dave, david
    apple, 2
    korea, japan, chian
    
  • 파이썬에서 CSV 파일로 저장/읽기 방법

    • csv 라이브러리 사용
In [6]:
# csv 파일 쓰기

import csv
with open('test.csv', 'w', encoding='utf-8', newline='') as writer_csv:    # with 와 함께 쓰면 close()를 별도로 해줄 필요 없음
    writer = csv.writer(writer_csv, delimiter=',')                         # delimiter 에 구분자로 콤마(,)를 넣어줌
    writer.writerow(['love']*3 + ['banana'])                               # 하나의 row 를 리스트 형태로 입력
    writer.writerow(['Spam', 'Lovely Spam', 'Wonderful Spam'])             # 하나의 row 를 리스트 형태로 입력

# open() 함수에 newline='' 를 넣어주는 이유는
# 윈도우의 경우 csv 모듈에서 데이타를 쓸 때 각 라인 뒤에 빈 라인이 추가되는 문제가 있기 때문
# 이를 없애기 위해 (파이썬 3 에서) 파일을 open 할 때 newline='' 와 같은 옵션을 지정
'''
love,love,love,banana
Spam,Lovely Spam,Wonderful Spam

'''
Out[6]:
'\nlove,love,love,banana\nSpam,Lovely Spam,Wonderful Spam\n\n'
In [22]:
import csv
In [29]:
with open('test.csv', 'w', encoding='utf-8', newline='') as writer_csv:    # with 와 함께 쓰면 close()를 별도로 해줄 필요 없음
    writer = csv.writer(writer_csv, delimiter=',')                         # delimiter 에 구분자로 콤마(,)를 넣어줌
    writer.writerow(['Spam', 'Lovely Spam', 'Wonderful Spam'])             # 하나의 row 를 리스트 형태로 입력    
    writer.writerow(['Spam', 'Lovely Spam', 'Wonderful Spam'])             # 하나의 row 를 리스트 형태로 입력        
In [31]:
import csv
with open('test.csv', 'w', encoding='utf-8', newline='') as writer_csv:    # with 와 함께 쓰면 close()를 별도로 해줄 필요 없음
    writer = csv.writer(writer_csv, delimiter=',')                         # delimiter 에 구분자로 콤마(,)를 넣어줌
    writer.writerow(['dave', 'david'])             # 하나의 row 를 리스트 형태로 입력    
    writer.writerow(['apple', 2])             # 하나의 row 를 리스트 형태로 입력     
    writer.writerow(['korea', 'japan', 'chian'])             # 하나의 row 를 리스트 형태로 입력         
In [ ]:
dave, david
apple, 2
korea, japan, chian
본 자료와 같이 IT 기술을 잘 정리하여, 온라인 강의로 제공하고 있습니다
체계적으로 전문가 레벨까지 익힐 수 있도록 온라인 강의 로드맵을 제공합니다
In [34]:
import csv

with open('test.csv', 'w', encoding='utf-8', newline='') as files:
    writer = csv.writer(files, delimiter=',')
    writer.writerow(['dave', 'david'])
    writer.writerow(['apple', 2])
    writer.writerow(['korea', 'japan', 'chian'])
In [38]:
# csv 파일 쓰기

import csv
with open('test.csv', 'r', encoding='utf-8') as reader_csv:
    reader = csv.reader(reader_csv, delimiter=',')
    
    for row in reader:
        print (row)
['dave', 'david']
['apple', '2']
['korea', 'japan', 'chian']
In [40]:
# csv 파일 쓰기 (사전 타입으로 파일 쓰기)

import csv

with open('test.csv', 'w', encoding='utf-8', newline='') as writer_csv:
    field_name_list =['First Name', 'Last Name']
    writer = csv.DictWriter(writer_csv, fieldnames=field_name_list)
    writer.writeheader()
    writer.writerow({'First Name': 'Dave', 'Last Name': 'Lee'})
    writer.writerow({'First Name': 'David', 'Last Name': 'Kim'})
    writer.writerow({'First Name': 'Robin', 'Last Name': 'Park'})
In [ ]:
Name1, Name2
In [ ]:
dave, david
apple, 2
korea, japan
본 자료와 같이 IT 기술을 잘 정리하여, 온라인 강의로 제공하고 있습니다
체계적으로 전문가 레벨까지 익힐 수 있도록 온라인 강의 로드맵을 제공합니다
In [13]:
# csv 파일 쓰기 (사전 타입으로 파일 읽기)

import csv

with open('test.csv', 'r', encoding='utf-8') as reader_csv:
    reader = csv.DictReader(reader_csv)
    for row in reader:
        print(row['First Name'], row['Last Name'])
Dave Lee
David Kim
Robin Park
In [41]:
# pandas 라이브러리에서 csv 파일 읽기1
# dataframe 을 csv 파일로 저장하기 위해서는 to_csv() 메서드를 사용함

import pandas as pd
doc = pd.read_csv("test.csv", quotechar=',')
doc
Out[41]:
First Name Last Name
0 Dave Lee
1 David Kim
2 Robin Park
In [19]:
# pandas 라이브러리에서 csv 파일 읽기2 (header 제거)

import pandas as pd
doc = pd.read_csv("test.csv", header=None)
doc
Out[19]:
0 1
0 First Name Last Name
1 Dave Lee
2 David Kim
3 Robin Park
In [20]:
# pandas 라이브러리에서 csv 파일 읽기2 (특정 필드만 읽기)

import pandas as pd
doc = pd.read_csv("test.csv", names=['First Name'])
doc
Out[20]:
First Name
First Name Last Name
Dave Lee
David Kim
Robin Park