59doit

[Python-Pandas] csv 파일 불러오기 본문

Programming/Python(파이썬)

[Python-Pandas] csv 파일 불러오기

yul_S2 2022. 11. 9. 12:18
반응형

csv 파일을 불러오는 경우

ex7.csv
0.00MB

 

 

import csv

pandas_read_table() 함수를 이용하여 대부분의 파일 형식을 불러 올 수 있다.

 

변수 reader에 담기

f = open('pandas_dataset2/ex7.csv')
reader = csv.reader(f)        
f
# <출력>
# <_io.TextIOWrapper name='pandas_dataset2/ex7.csv' mode='r' encoding='cp949'>

 

큰 따옴표가 제거된 튜플

for line in reader:
 print(line)
# <출력> 
# ['a', 'b', 'c']
# ['1', '2', '3']
# ['1', '2', '3']

 

 

with ; 실행문이 다 돌아가면 자동으로 닫기

with open('pandas_dataset2/ex7.csv') as f: lines = list(csv.reader(f)) 
# lines 에 리스트로 요소별로 담기

# 원하는 형태 저장
# 파일을 읽어 줄 단위 리스트로 저장

 

 

헤더와 데이터 구분

header, values = lines[0], lines[1:]
# ['a', 'b', 'c']
# [['1', '2', '3'], ['1', '2', '3']]

전치해주는 zip(*values)이용 데이터 컬럼 사전

data_dict = {h: v for h, v in zip(header, zip(*values))}
data_dict

# <출력>
# {'a': ('1', '1'), 'b': ('2', '2'), 'c': ('3', '3')}

head 를 키로 놓고 dic

 

 

 

 

구분자, 문자열을 둘러싸는 방법, 개행 문자

->csv.Dialect 를 상속받아 새로운 클래스를 정의해서 해결

class my_dialect(csv.Dialect):
    lineterminator = '\n'
    delimiter = ';'
    quotechar = '"'
    quoting = csv.QUOTE_MINIMAL

#클래스명 my_dialect / 받아오는것 csv.Dialect

 

 

# reader = csv.reader(f, dialect=my_dialect)
reader = csv.reader('pandas_dataset2/ex7.csv', dialect=my_dialect)

 

서브클래스를 정의하지 않고 csv.readr 에 키워드 인자로 각각의 csv 파일의 특징을 지정해서 전달해도 된다.

# reader = csv.reader(f, delimiter='|')
reader = csv.reader('pandas_dataset2/ex7.csv', delimiter='|')

 

 

with open('mydata.csv', 'w') as f:
 writer = csv.writer(f, dialect=my_dialect)
 writer.writerow(('one', 'two', 'three'))
 writer.writerow(('1', '2', '3'))
 writer.writerow(('4', '5', '6'))
 writer.writerow(('7', '8', '9'))

 

 

pd.options.display.max_rows = None

 

반응형

'Programming > Python(파이썬)' 카테고리의 다른 글

[Python-Pandas] 치환  (0) 2022.11.10
[Python-Pandas] 결측치  (0) 2022.11.10
[Python-Pandas] 파일경로설정  (0) 2022.11.09
[Python-Pandas] 수학메서드  (0) 2022.11.09
[Pandas] 넘파이에 의한 랜덤난수  (0) 2022.11.08
Comments