참조 :
한 권으로 끝내는 <판다스 노트>
https://e-koreatech.step.or.kr/
from IPython.display import Image
import numpy as np
import pandas as pd
import seaborn as sns
# 실습용 데이터셋(서울시대중교통) 다운로드
!pip install opendata-kr -q
from opendata import dataset
dataset.download('서울시대중교통')
# 유가정보 데이터 다운로드
dataset.download('유가정보')
gas1 = pd.read_csv('data/gas_first_2019.csv', encoding='euc-kr')
# titanic 데이터셋 로딩
df = sns.load_dataset('titanic')
# warning 무시
warnings.filterwarnings('ignore')
# e notation 표현 방식 변경
pd.options.display.float_format = '{:.2f}'.format
# 모든 컬럼 표시
pd.set_option('display.max_columns', None)
1. 엑셀 파일 읽기
pandas.read_excel(
io, # 파일위치
sheet_name=0, # 기본: 첫번째 sheet 불러옴
*,
header=0,
names=None,
index_col=None,
usecols=None,
dtype=None,
engine=None, # 읽기 실패시 - openpyxl 적용
converters=None,
true_values=None,
false_values=None,
skiprows=None,
nrows=None,
na_values=None,
keep_default_na=True,
na_filter=True,
verbose=False,
parse_dates=False,
date_parser=_NoDefault.no_default,
date_format=None,
thousands=None,
decimal='.',
comment=None,
skipfooter=0,
storage_options=None,
dtype_backend=_NoDefault.no_default,
engine_kwargs=None
)
1) 기본 명령어 : 첫번째 sheet읽기
df = pd.read_excel(
r"C:\dev\pandas\data\서울시대중교통\seoul_transportation.xlsx",
engine="openpyxl"
)
df
대중교통구분 노선명 년월 승차총승객수
0 지하철 1호선 201711 8633618
1 지하철 1호선 201712 8737235
2 지하철 1호선 201801 8145989
3 지하철 1호선 201802 7273309
4 지하철 1호선 201803 8692551
2) 모든 sheet를 dict로 읽기 : sheet_name=None
key -> sheet명, value -> DataFrame
dic = pd.read_excel(
r"C:\dev\pandas\data\서울시대중교통\seoul_transportation.xlsx",
sheet_name = None,
engine="openpyxl"
)
dic.keys() # dict_keys(['철도', '버스'])
dic['철도'].head()
대중교통구분 노선명 년월 승차총승객수
0 지하철 1호선 201711 8633618
1 지하철 1호선 201712 8737235
2 지하철 1호선 201801 8145989
3 지하철 1호선 201802 7273309
4 지하철 1호선 201803 8692551
2. 엑셀 파일 저장
# index=False : 엑셀파일의 A열에 index를 저장함
# sheet_name = '시트이름' :미지정시 - 'Sheet1'
dic['철도'].to_excel('test.xlsx') # 기본 index = False
3. 일보 파일 정리하기
import pandas as pd
import numpy as np
from pprint import pprint
from MyModule.base_func import listdir
import datetime
path = "E://종합운영일지//2023년//0. hmi_일보//나주"
list_dir = listdir(path)
SheetName = "일보"
column_name_start_row = 5
column_name_range = 3
data_value_start_row = 32
data_value_range = 4
row_interval = 37
columns_count = 16
rotate = 7
# column 정리
full_name = path + "//" + list_dir[0]
df = pd.read_excel(full_name, sheet_name=SheetName)
df_target = pd.DataFrame([])
for i in range(rotate):
df1 = df.iloc[
(row_interval * i + column_name_start_row) : (
row_interval * i + column_name_start_row
)
+ column_name_range,
:columns_count,
]
df1.index = [ii for ii in range(column_name_range)]
df1.columns = [iiii for iiii in range(columns_count * i, columns_count * (i + 1))]
df_target = pd.concat([df_target, df1], axis=1)
# value 정리
for j in range(len(list_dir)):
full_name = path + "//" + list_dir[j]
df = pd.read_excel(full_name, sheet_name=SheetName)
df_target1 = pd.DataFrame([])
for i in range(rotate):
df1 = df.iloc[
(row_interval * i + data_value_start_row) : (
row_interval * i + data_value_start_row
)
+ data_value_range,
:columns_count,
]
date_conv = pd.to_datetime(list_dir[j].split(".")[0])
df1.index = [date_conv - datetime.timedelta(1) for ii in range(data_value_range)]
df1.columns = [
iiii for iiii in range(columns_count * i, columns_count * (i + 1))
]
df_target1 = pd.concat([df_target1, df1], axis=1)
df_target = pd.concat([df_target, df_target1], axis=0)
df_target.to_excel("일보정리.xlsx")
[ result ]
4. 여러 개의 DataFrame 저장하기 : ExcelWriter 함수
여러 개의 엑셀 시트를 갖는 엑셀 파일을 생성
1) pandas.ExcelWriter( ) 객체를 생성
2) to_excel( ) 함수를 이용하여 시트를 추가
3) save 함수를 이용하여 저장
pandas.ExcelWriter(path_or_buf)
5. CSV 파일 읽기
pandas.read_csv(filepath, header, index_col, names)
- filepath: 가져올 csv 파일의 위치
- header: 헤더의 열이름으로 사용할 행 또는 열 지정
- index_col: DataFrame의 행 인덱스가 되는 열 지정
- names: 열이름으로 지정할 문자열
'pandas' 카테고리의 다른 글
데이터 전처리, 추가, 삭제, 변환 (0) | 2023.12.12 |
---|---|
복사와 결측치 (0) | 2023.12.12 |
통계 (0) | 2023.12.11 |
조회, 정렬, 조건필터 (0) | 2023.12.11 |
pandas 기본 (0) | 2023.11.30 |
댓글