여유로움
[11.22 월] 빅데이터 분석기사 실기 - Pandas (17~20강) 본문
1. 사용 라이브러리 import
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
|
2. 파일 준비하기
|
# [3-1] './data_01/data_day_2016.xlsx' 파일을 가져와 df2016이라는 이름을 부여합니다.
df2016 = pd.read_excel('./data_01/data_day_2016.xlsx')
[1번] temp1 = pd.DataFrame({'A': [1, 2],
'B': [3, 4]})
temp2 = pd.DataFrame({'A': [5, 6],
'B': [7, 8]})
pd.concat([temp1, temp2])
[2번] temp1 = pd.DataFrame({'A': [1, 2],
'B': [3, 4]})
temp2 = pd.DataFrame({'C': [5, 6],
'D': [7, 8]})
pd.concat([temp1, temp2], axis=1)
# [3-5] df2016, df2017, df2018, df2019를 합쳐 한 개의 DataFrame으로 만들어 df라는 이름을 지정합니다.
dfList = [df2016, df2017, df2018, df2019]
df = pd.concat(dfList, axis=0)
df
# df의 shape을 출력하여 전체 행, 열의 수를 확인합니다.
df.shape
|
[1번]
A | B | |
0 | 1 | 3 |
1 | 2 | 4 |
0 | 5 | 7 |
1 | 6 | 8 |
[2번]
A | B | C | D | |
0 | 1 | 3 | 5 | 7 |
1 | 2 | 4 | 6 | 8 |
3. 파일 정리
|
import glob
glob.glob('data_01/data_day_*.xlsx')
sorted(glob.glob('data_01/data_day_*.xlsx'))
import glob
dfList = []
for x in sorted(glob.glob('data_01/data_day_*.xlsx')):
temp = pd.read_excel(x)
dfList.append(temp)
df = pd.concat(dfList, axis=0)
df.shape
|
4. concat 후 인덱스가 맞지 않는 문제 해결
index, columns => 두 가지 방법 사용
1. 눈에 보이지 않는 integer 번호 (python에서의 index번호 개념) => 사용하고 싶음
2. 눈에 보이는 label (다양한 Index타입이 존재)
여러개 DataFrame을 합친 경우 index 번호를 RangeIndex로 새롭게 부여
|
# [3-10] 해결방법 1 : index 번호 정리하면서 합치기
dfList = [df2016, df2017, df2018, df2019]
df2 = pd.concat(dfList, ignore_index=True)
df2.tail(3)
# [3-11] 해결방법 2 : index를 만들어 사용하기
df.index = pd.RangeIndex(len(df))
df.tail(3)
|
5. 날짜 타입변경
날짜, 시간 타입 변경 (youtube 분석에서 했었어요!)
|
# [3-14] df의 '측정일시'에 대해서 format='%Y%m%d'을 지정하여 데이터 타입을 datetime으로 변경합니다.
# 올바르게 변경되는 것을 확인할 수 있습니다.
pd.to_datetime(df['측정일시'], format='%Y%m%d')
|
6. insert 함수
DataFrame.insert(위치, 이름, 데이터)
|
# [3-15] df의 '측정일시'에 대해서 format='%Y%m%d'을 지정하여 데이터 타입을 datetime으로 변경한 뒤
# '측정일시2' 컬럼을 '측정일시' 뒤에 삽입합니다
#df['측정일시2'] = pd.to_datetime(df['측정일시'], format='%Y%m%d') # 뒤에 추가
df.insert(1, '측정일시2', pd.to_datetime(df['측정일시'], format='%Y%m%d'))
|
7. accessor dt 함수
# [3-17] datetime 타입은 accessor - dt를 사용할 수 있습니다.
# df의 '측정일시2' 컬럼의 dt accessor를 사용하여 year 정보만 확인합니다.
df['측정일시2'].dt.year
|
# [3-20] df에 '년', '월', '일' 컬럼을 추가합니다.
df['년'] = df['측정일시2'].dt.year
df['월'] = df['측정일시2'].dt.month
df['일'] = df['측정일시2'].dt.day
df.head(2)
|
8. drop
DataFrame.drop([컬럼이름1, 컬럼이름2,...], axis=1)
|
# [3-21] '측정일시2' 컬럼이 필요 없으므로 제거합니다.
# 컬럼을 제거하기 위해서는 drop 함수에서 axis=1 을 사용해야 합니다.
# 삭제된 DataFrame을 df2 이름을 지정합니다.
#df.drop('측정일시2', axis=1) <=> 동일한결과
df.drop(columns=['측정일시2'])
df
df2.to_csv('fine_dust.csv', index=False)
df2 = pd.read_csv('fine_dust.csv')
df2.head(2)
|
출처 : 유튜브 채널 EduAtoZ
'셀프스터디 > 빅데이터 분석기사' 카테고리의 다른 글
[11.24 수] 빅데이터 분석기사 실기 - Pandas (24~29강) (0) | 2021.11.24 |
---|---|
[11.23 화] 빅데이터 분석기사 실기 - Pandas (21~23강) (0) | 2021.11.23 |
[11.21 일] 빅데이터 분석기사 실기 - Pandas (10~16강) (0) | 2021.11.21 |
[11.17 수] 빅데이터 분석기사 실기 - Pandas (6~9강) (0) | 2021.11.17 |
[11.16 화] 빅데이터 분석기사 실기 - Pandas (1~5강) (0) | 2021.11.16 |