BSA04_ReadWrite-Speed
필요한 패키지
import numpy as np # NaN 처리할 때 많이 사용하는 라이브러리
import pandas as pd
데이터프레임 생성
pd.options.display.float_format = '{:,.4f}'.format # 소수점 넷째자리까지 표현하도록 설정
# random으로 100,000개 관측개체 * 10 변수
난수개수 = 100000
변수개수 = 10
values = np.random.random((난수개수,변수개수))
df = pd.DataFrame(values) # 데이터프레임 형태로 만듦
# 현재 df의 행과 열의 이름인 0~9, 0~99999는 숫자처럼 보이지만 문자열임
판다스 데이터프레임 관련 함수
- info() : df에 대한 기본 정보 (행과 열의 수, 각 열의 데이터 타입 등)
- shape : 행과 열의 수
- dtypes : 변수(열)의 데이터 형식
- columns : 변수(열)명
- 전체 열 이름 변경 : df.columns=[...]
- 열 이름 부분 변경 : df.rename(columns={'0':'A','1':'B'}, inplace=True)
- head() : 앞부분 5개 return (개수 조정 가능) -> 앞 부분 데이터 선택
- tail() : 뒷 부분 5개 return (개수 조정 가능) -> 뒷 부분 데이터 선택
- loc : index(행) 이름 해당 또는 T/F 값에 따른 데이터 선택
- iloc : 번호로 행/열의 데이터 선택
- query() : 열들에 대해 boolean 연산결과로 rows 선택
- ex) df.query('A>B') # df[df.A>df.B]와 동일
df.columns = ["A","B","C","D","E","F","G","H","I","J"]
df.info()
test = df.head(n=10)
test.tail()
작업 속도 비교
# timeit으로 실행 측정한 시간을 비교
# 결과를 저장할 빈 데이터프레임 생성
df_result = pd.DataFrame(columns=['read', 'write']) # 컬럼명만 지정
df_result.head()
# !pip install openpyxl (패키지를 설치하기만 하면 됨, 패키지를 불러올 필요는 없음)
# 시간이 많이 걸리기 때문에 실습에서는 제외
# 1. excel
tm = %timeit -o df.to_excel('test_data.xlsx')
df_result.loc['excel', 'write'] = tm.best
tm = %timeit -o df = pd.read_excel('test_data.xlsx')
df_result.loc['excel', 'read'] = tm.best
# 2. CSV
tm = %timeit -o df.to_csv('test_data.csv') # 7번 정도 반복 작업(저장하는 작업)한 결과를 tm에 저장
df_result.loc['csv', 'write'] = tm.best # tm 중 best값을 df_result에 저장함
tm = %timeit -o pd.read_csv('test_data.csv') # 저장한 것을 읽어들이는 작업 (7번 정도 반복 작업)한 결과를 tm에 저장
df_result.loc['csv', 'read'] = tm.best # tm 중 가장 빠른 값을 df_result에 저장함
# 3. pickle
tm = %timeit -o df.to_pickle('test_data.pickle')
df_result.loc['pickle', 'write'] = tm.best
tm = %timeit -o pd.read_pickle('test_data.pickle')
df_result.loc['pickle', 'read'] = tm.best
# 4. feather
tm = %timeit -o df.to_feather('test_data.ftr')
df_result.loc['feather', 'write'] = tm.best
tm = %timeit -o pd.read_feather('test_data.ftr')
df_result.loc['feather', 'read'] = tm.best
# 5. parquet(파케이)
# 많은 빅데이터 처리 프레임 워크 및 플랫폼 지원
# 다양한 I/O 최적화를 제공하는 오픈소스 칼럼 기반 파일 형식
tm = %timeit -o df.to_parquet('test_data.parquet')
df_result.loc['parquet', 'write'] = tm.best
tm = %timeit -o pd.read_parquet('test_data.parquet')
df_result.loc['parquet', 'read'] = tm.best
spark 기본 데이터 소스
- Parquet files
- ORC files
- JSON files
- CSV files
- Text files
- Hive tables
- JDBC to other databases
- Avro files
- Binary file: Ex, image file
작업 속도 비교
df_result
%matplotlib inline
import matplotlib.pyplot as plt
plt.rcParams["axes.grid"] = True
plt.rcParams["figure.figsize"] = (10,5)
plt.rcParams["font.size"] = 20
df_result
df_result.plot(kind='bar')
plt.show()
'Statistics > BSA' 카테고리의 다른 글
230329 / BSA04. 오디오 데이터 처리하기 (0) | 2023.04.02 |
---|---|
230329 / BSA04. 다양한 형식의 데이터 파일 읽고 저장하기 (0) | 2023.04.02 |
230322 / BSA03. 데이터 분석 주요 과정 살펴보기 (0) | 2023.03.26 |
230320 / BSA03. 가상환경에서 주피터랩 설치하기, 주피터노트북에서 자동완성 기능 구현하기 (0) | 2023.03.26 |
230320 / BSA03. 효율적인 메모리 관리와 프로그램 작성 (0) | 2023.03.26 |