59doit
[Python-Pandas] 파일경로설정 본문
import pandas as pd
import numpy as np
df = pd.read_csv('pandas_dataset2/ex1.csv')
df
# <출력>
# a b c d message
# 0 1 2 3 4 hello
# 1 5 6 7 8 world
# 2 9 10 11 12 foo
▷
구분자 => ,
pd.read_table('pandas_dataset2/ex1.csv', sep=',')
# <출력>
# a b c d message
# 0 1 2 3 4 hello
# 1 5 6 7 8 world
# 2 9 10 11 12 foo
▷
type examples/ex2.csv
pd.read_csv('pandas_dataset2/ex2.csv', header=None)
# <출력>
# 0 1 2 3 4
# 0 1 2 3 4 hello
# 1 5 6 7 8 world
# 2 9 10 11 12 foo
▷
컬럼명 지정
pd.read_csv('pandas_dataset2/ex2.csv', names=['a', 'b', 'c', 'd', 'message'])
# <출력>
# a b c d message
# 0 1 2 3 4 hello
# 1 5 6 7 8 world
# 2 9 10 11 12 foo
▷
컬럼이름 지정
names = ['a', 'b', 'c', 'd', 'message']
pd.read_csv('pandas_dataset2/ex2.csv', names=names, index_col='message')
# <출력>
# a b c d
# message
# hello 1 2 3 4
# world 5 6 7 8
# foo 9 10 11 12
# message 컬럼을 색인으로 하는 DAtaFrame 을 반환하려면 index_col 인자에 4 번째 컬럼
# 또는 'message'이름을 가진 컬럼을 지정하여 색인으로 만듦
▷
parsed = pd.read_csv('pandas_dataset2/csv_mindex.csv', index_col=['key1', 'key2'])
parsed
# <출력>
# value1 value2
# key1 key2
# one a 1 2
# b 3 4
# c 5 6
# d 7 8
# two a 9 10
# b 11 12
# c 13 14
# d 15 16
# 계층적 색인 지정 시 컬럼 번호나 이름의 리스트를 넘긴다.
▷
구분자 없이 공백이나 다른 패턴으로 필드를 구분
list(open('pandas_dataset2/ex3.txt'))
# <출력>[' A B C\n',
# 'aaa -0.264438 -1.026059 -0.619500\n',
# 'bbb 0.927272 0.302904 -0.032399\n',
# 'ccc -0.264273 -0.386314 -0.217601\n',
# 'ddd -0.871858 -0.348382 1.100491\n']
▷
skiprows 를 이용
pd.read_csv('pandas_dataset2/ex4.csv', skiprows=[0, 2, 3])
# <출력>
# a b c d message
# 0 1 2 3 4 hello
# 1 5 6 7 8 world
# 2 9 10 11 12 foo
첫번째, 세번째, 네번째 로우를 건너뛴다.
▷
NA, NULL,
result = pd.read_csv('pandas_dataset2/ex5.csv')
result
# <출력>
# something a b c d message
# 0 one 1 2 3.0 4 NaN
# 1 two 5 6 NaN 8 world
# 2 three 9 10 11.0 12 foo
pd.isnull(result)
# <출력>
# something a b c d message
# 0 False False False False False True
# 1 False False False True False False
# 2 False False False False False False
텍스트파일에서 누락된 값은 표기되지 않거나(비어 있는 문자열)
▷
na_values 옵션 ; 리스트나 문자열 집합을 받아서 누락된 값 처리
result = pd.read_csv('pandas_dataset2/ex5.csv', na_values=['NULL'])
result
# <출력>
# something a b c d message
# 0 one 1 2 3.0 4 NaN
# 1 two 5 6 NaN 8 world
# 2 three 9 10 11.0 12 foo
▷
컬럼마다 다른 NA 문자를 사전값으로 넘겨서 처리
sentinels = {'message': ['foo', 'NA'], 'something': ['two']}
pd.read_csv('pandas_dataset2/ex5.csv', na_values=sentinels)
# <출력>
# something a b c d message
# 0 one 1 2 3.0 4 NaN
# 1 NaN 5 6 NaN 8 world
# 2 three 9 10 11.0 12 NaN
▷
큰 파일을 다루기 전에 pandas 의 출력 설정
pd.options.display.max_rows = 10
# 최대 10 개의 데이터 출력
쓰고서 풀어줄땐 '=None' 해주기
▷
처음 몇줄만 읽을 때 ; nrows
# <출력>
# one two three four key
# 0 0.467976 -0.038649 -0.295344 -1.824726 L
# 1 -0.358893 1.404453 0.704965 -0.200638 B
# 2 -0.501840 0.659254 -0.421691 -0.057688 G
# 3 0.204886 1.074134 1.388361 -0.982404 R
# 4 0.354628 -0.133116 0.283763 -0.837063 Q
▷
파일을 여러 조각으로 나누어서 읽고 싶다면 chunksize 옵션으로 로우 개수 설정,
chunker = pd.read_csv('pandas_dataset2/ex6.csv', chunksize=1000)
# 담는거라 display 되는건 없다
# 아래에서 하나씩 빼서 쓰려고 만든것
write
▷
데이터를 구분자로 구분한 형식으로 내보내기
data = pd.read_csv('pandas_dataset2/ex5.csv')
data
# <출력>
# something a b c d message
# 0 one 1 2 3.0 4 NaN
# 1 two 5 6 NaN 8 world
# 2 three 9 10 11.0 12 foo
# data.to_csv('out.csv')
data.to_csv('out.csv')
import sys
data.to_csv(sys.stdout, sep='|')
# <출력>
# |something|a|b|c|d|message
# 0|one|1|2|3.0|4|
# 1|two|5|6||8|world
# 2|three|9|10|11.0|12|foo
▷
누락된 값 > 원하는 값
data.to_csv(sys.stdout, na_rep='NULL')
# <출력>
# ,something,a,b,c,d,message
# 0,one,1,2,3.0,4,NULL
# 1,two,5,6,NULL,8,world
# 2,three,9,10,11.0,12,foo
▷
옵션명시x => 로우와 컬럼 기록
data.to_csv(sys.stdout, index=False, header=False)
# <출력>
# one,1,2,3.0,4,
# two,5,6,,8,world
# three,9,10,11.0,12,foo
로우와 컬럼 이름을 포함하지 않을 경우
▷
컬럼의 일부분만 기록, 순서 지정
data.to_csv(sys.stdout, index=False, columns=['a', 'b', 'c'])
# <출력>
# a,b,c
# 1,2,3.0
# 5,6,
# 9,10,11.0
▷
to_csv 메서드
dates = pd.date_range('1/1/2000', periods=7)
ts = pd.Series(np.arange(7), index=dates)
ts.to_csv('tseries.csv')
'Programming > Python(파이썬)' 카테고리의 다른 글
[Python-Pandas] 결측치 (0) | 2022.11.10 |
---|---|
[Python-Pandas] csv 파일 불러오기 (0) | 2022.11.09 |
[Python-Pandas] 수학메서드 (0) | 2022.11.09 |
[Pandas] 넘파이에 의한 랜덤난수 (0) | 2022.11.08 |
[Python] indexing (0) | 2022.11.08 |