반응형
Notice
Recent Posts
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
Today
Total
관리 메뉴

H-Log

[python] pandas 파일 저장 및 열기 본문

dev-log/python

[python] pandas 파일 저장 및 열기

hong6v6 2023. 1. 17. 18:29
반응형

출처 : 나도코딩 https://www.youtube.com/watch?v=PjhlUzp_cU0&t=10533 

 

Data Frame 객체를 excel, csv, txt 등 형태의 파일로 저장 및 열기

import pandas as pd

data = {
    '이름' : ['채치수', '정대만', '송태섭', '서태웅', '강백호', '변덕규', '황태산', '윤대협'],
    '학교' : ['북산고', '북산고', '북산고', '북산고', '북산고', '능남고', '능남고', '능남고'],
    '키' : [197, 184, 168, 187, 188, 202, 188, 190],
    '국어' : [90, 40, 80, 40, 15, 80, 55, 100],
    '영어' : [85, 35, 75, 60, 20, 100, 65, 85],
    '수학' : [100, 50, 70, 70, 10, 95, 45, 90],
    '과학' : [95, 55, 80, 75, 35, 85, 40, 95],
    '사회' : [85, 25, 75, 80, 10, 80, 35, 95],
    'SW특기' : ['Python', 'Java', 'Javascript', '', '', 'C', 'PYTHON', 'C#']
}

# dictionary를 data frame으로 변환
# df의 index를 1번~8번으로 변환
df = pd.DataFrame(data, index=['1번', '2번', '3번', '4번', '5번', '6번', '7번', '8번'])

# df의 index column에 이름 할당
df.index.name = '지원번호'
       이름   학교    키   국어   영어   수학  과학  사회  SW특기
지원번호
1번    채치수  북산고  197   90   85  100  95  85      Python      
2번    정대만  북산고  184   40   35   50  55  25        Java      
3번    송태섭  북산고  168   80   75   70  80  75  Javascript      
4번    서태웅  북산고  187   40   60   70  75  80
5번    강백호  북산고  188   15   20   10  35  10
6번    변덕규  능남고  202   80  100   95  85  80           C      
7번    황태산  능남고  188   55   65   45  40  35      PYTHON      
8번    윤대협  능남고  190  100   85   90  95  95          C#

저장하기

csv 파일로 저장

  • 저장할객체**.to_csv**(’파일명.csv’, encoding='utf-8-sig')
df.to_csv('score.csv', encoding='utf-8-sig')

# index 없이 저장하기
df.to_csv('score.csv', encoding='utf-8-sig', index=False)

txt 파일로 저장

  • 저장할객체**.to_csv**(’파일명.txt’, sep=’\t’)
# txt 파일로 저장
# sep = 구분자
# \\t = tab으로 구분된 덱스트 파일
df.to_cvs('score.txt', sep='\\t')

Excel 파일로 저장

  • pip install openpyxl
  • 저장할객체**.to_excel**(’파일명.xlsx’)
df.to_excel('score.xlsx')

파일 열기

csv 파일 열기

df = pd.read_csv('score.csv')
print(df)
   이름   학교    키   국어   영어   수학  과학  사회  SW특기
0  채치수  북산고  197   90   85  100  95  85      Python
1  정대만  북산고  184   40   35   50  55  25        Java
2  송태섭  북산고  168   80   75   70  80  75  Javascript
3  서태웅  북산고  187   40   60   70  75  80         NaN
4  강백호  북산고  188   15   20   10  35  10         NaN
5  변덕규  능남고  202   80  100   95  85  80           C
6  황태산  능남고  188   55   65   45  40  35      PYTHON
7  윤대협  능남고  190  100   85   90  95  95          C#

txt 파일 열기

df = pd.read_csv('score.txt', sep='\\t')
print(df).

excel 파일 열기

df = pd.read_excel('score.xlsx')
print(df)

인덱스 번호 지정

df = pd.read_csv('score.txt', sep='\\t', index_col='지원번호')
print(df)

df = pd.read_excel('score.xlsx', index_col='지원번호')
print(df)

파일을 불러오면 index가 0,1,2,3 … 으로 재생성되어있다

index를 다시 ‘지원번호’로 지정해주자

row 무시하기

  • skiprows = n : 지정된 갯수만큼의 row를 건너뜀여기에서는 이름, 학교, 키 등 제목열부터 1번 줄러 인식되기 때문에 아래처럼 출력된다.
  • 위에서 한줄이 없어지고, 그 아랫줄부터 출력된다.
df = pd.read_csv('score.csv', skiprows=1)
print(df)
   채치수  북산고  197   90   85  100  95  85.1      Python        
0  정대만  북산고  184   40   35   50  55    25        Java        
1  송태섭  북산고  168   80   75   70  80    75  Javascript        
2  서태웅  북산고  187   40   60   70  75    80         NaN        
3  강백호  북산고  188   15   20   10  35    10         NaN        
4  변덕규  능남고  202   80  100   95  85    80           C        
5  황태산  능남고  188   55   65   45  40    35      PYTHON        
6  윤대협  능남고  190  100   85   90  95    95          C#
  • skiprow=[] : 리스트 형태로 주면 해당하는 줄을 모두 무시
df = pd.read_csv('score.csv', skiprows=[1, 3, 5])
print(df)
   이름   학교    키   국어   영어  수학  과학  사회    SW특기    
0  정대만  북산고  184   40   35  50  55  25    Java
1  서태웅  북산고  187   40   60  70  75  80     NaN
2  변덕규  능남고  202   80  100  95  85  80       C
3  황태산  능남고  188   55   65  45  40  35  PYTHON
4  윤대협  능남고  190  100   85  90  95  95      C#

원하는 row만 출력

  • nrows : 입력한 줄 만큼만 출력
df = pd.read_csv('score.csv', nrows=4)
print(df)
   이름   학교    키  국어  영어   수학  과학  사회  SW특기 
0  채치수  북산고  197  90  85  100  95  85      Python
1  정대만  북산고  184  40  35   50  55  25        Java
2  송태섭  북산고  168  80  75   70  80  75  Javascript
3  서태웅  북산고  187  40  60   70  75  80         NaN

skiprows와 nrows 같이 사용하기

df = pd.read_csv('score.csv', skiprows=2,  nrows=4)
print(df)
   정대만  북산고  184  40   35  50  55  25        Java
0  송태섭  북산고  168  80   75  70  80  75  Javascript
1  서태웅  북산고  187  40   60  70  75  80         NaN
2  강백호  북산고  188  15   20  10  35  10         NaN
3  변덕규  능남고  202  80  100  95  85  80           C
반응형

'dev-log > python' 카테고리의 다른 글

[python] pandas 데이터 선택  (0) 2023.01.17
[python] pandas 데이터 확인  (0) 2023.01.17
[python] pandas 시작하기  (0) 2023.01.17
[python] 모듈 연습 - glob, os, datetime  (0) 2023.01.12
내장함수와 외장함수  (0) 2023.01.12
Comments