59doit

[Python-Pandas] 파일경로설정 본문

Programming/Python(파이썬)

[Python-Pandas] 파일경로설정

yul_S2 2022. 11. 9. 11:23
반응형
import pandas as pd
import numpy as np

ex1.xlsx
0.01MB
ex5.csv
0.00MB

 

ex6.csv
0.60MB
ex2.csv
0.00MB

 

ex3.csv
0.00MB
ex4.csv
0.00MB

 

 

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
Comments