1. CSV 파일
- CSV 파일은 콤마(,)로 구분된 텍스트파일
- 한줄을 하나의 레코드(Record)라고 함
- 레코드는 콤마로 구분된 여러 필드(Field)로 구성
- 엑셀(xlsx)의 행은 CSV로 한줄로 표현, 열은 콤마로 구분
- 데이터분석 분야에는 엑셀보다 단순한 텍스트 파일인 CSV 파일을 더 선호함.
2. 데이터 다운로드
import gdown # gdown 패키지 모듈
# gdown 패키지는 구글 드라이브를 포함하여 웹에서 대용량 파일을 다운로드 할 수 있는 패키지
gdown.download('http://bit.ly/3eecMKZ','남산도서관 장서 대출목록 (2023년 03월).csv', quiet = False) # 가장 최신 데이터로 받음
3. csv 파일 출력
import chardet # 텍스트 파일 인코딩 방식 알아보기
with open('남산도서관 장서 대출목록 (2023년 03월).csv', mode = 'rb') as f: # open()함수의 기본 값은 읽기모드인 r
d = f.readline()
print(chardet.detect(d))
# open 함수는 기본적으로 UTF-8 인코딩 방식을 사용
- 인코딩은 문자를 바이너리 형태로 바꾸는 형식이다
- UTF-8은 전 세계 모든 문자를 표현하기 위해 유니코드를 인코딩하는 방식, 한 문자당 최대 4바이트 까지
- EUC-KR은 한글을 위한 완성형 인코딩, 2바이트를 사용
# CSV파일 출력
# with open(파일 경로, 모드) as 파일 객체 : 문장
# with 구문이 종료될 때 자동으로 파일이 닫힘
with open('남산도서관 장서 대출목록 (2023년 03월).csv',encoding='EUC-KR') as f: # encoding 방식을 ECU-KR로 지정
print(f.readline())
print(f.readline())
# 처음 두줄을 읽기
- open 함수에서 encoding 매개변수로 인코딩 형식을 수정할 수 있음
- readline() 메서드로 처음 몇 줄을 출력할 수 있음
4. 데이터프레임 : 판다스
- 데이터프레임은 표 형식의 데이터
- 데이터베이스의 테이블과 유사한 형식(행,열)으로 구성된 2차원 배열 구조
- 1차원 배열구조로 된 시리즈(Series) 구조도 있음
# 판다스 사용
import pandas as pd
df = pd.read_csv('남산도서관 장서 대출목록 (2023년 03월).csv',encoding='EUC-KR')
- 판다스는 CSV파일을 읽을 때 같은 열에 어떤 종류의 데이터가 저장되어 있는 지 자동으로 파악
- 판다스는 메모리를 효율적으로 사용하기 위해 자동으로 CSV파일을 조금씩 나누어 읽음
- 이때 자동으로 파악한 데이터 타입이 달라지면 경고가 발생함
df = pd.read_csv('남산도서관 장서 대출목록 (2023년 03월).csv',encoding='EUC-KR', low_memory=False ) # low_memory 매개변수를 False로 지정하여 파일을 나누어 읽지 않고 한번에 읽기
- low_memory 매개변수를 False로 지정하여 파일을 나누어 읽지 않고 한번에 읽을 수 있음
- dtype 매개변수로 데이터타입을 지정할 수도 있음
# 데이터프레임의 처음 다섯 개 행을 확인
df.head()
- 데이터프레임의 첫 번째 열은 인덱스(index)
- 판단스는 인덱스를 자동으로 추가함
- header매개변수를 None으로 지정하면 데이터 첫 행에 열 이름이 없다는것을 설정함
- names 매개변수에 열이름 리스트를 따로 전달함. names 매개변수에는 중복된 열 이름이 있으면 안됨
5. 데이터프레임을 csv/ xlsx로 저장
# 데이터프레임을 CSV 파일로 저장하기 : to_csv() 메서드
df.to_csv('df_20230416.csv')
# open 함수로 다시 읽어보기
with open('df_20230416.csv') as f:
for i in range(0,5):
print(f.readline())
# 다시 판다스 데이터프레임으로 읽어오면 인덱스 열이 새로 생기게된다.
ns_df = pd.read_csv('df_20230416.csv', low_memory = False)
ns_df.head()
ns_df = pd.read_csv('df_20230416.csv', index_col = 0 ,low_memory = False) #index_col 매개변수는 해당 csv 파일에 인덱스가 이미 있다는 것을 알려준다. 첫번째 열에 인덱스가 있으므로 인덱스 컬럼은 0
ns_df.head()
# to_csv로 저장시에 인덱스를 아예 포함하지 않으려면 index 매개변수를 False로 지정
df.to_csv('df_20230416.csv',index = False)
# 참고로 xlsx 형태로 저장도 가능함.
# 판다스는 엑셀 파일을 만들기 위해 기본적으로 openpyxl을 사용. 이 패키지로 한글데이터를 쓰면 오류발생.
# 대신에 xlsxwriter 패키지를 사용할 수 있음
# 초기 패키지 설치시 사용 : !pip install xlsxwriter
df.to_excel('df_20230416.xlsx',index = False, engine = 'xlsxwriter')
https://colab.research.google.com/drive/1E_8uVBz6NqmcJDgsHVu3UWGygJ3o47PL?usp=sharing
'AI > 데이터분석' 카테고리의 다른 글
회원별 당구 에버리지 데이터 분석 (feat. Pandas) (3) | 2024.09.16 |
---|---|
웹API (JSON, XML) (0) | 2023.04.17 |
데이터분석 파이썬 필수 라이브러리 (0) | 2023.04.15 |