Lecture 강의

Undergraduates 학부 Graduates 대학원 Lecture 역학 Lecture 설계 Lecture IT(IoT, AI) Lecture SAP2000 Lecture 아바쿠스 Lecture 파이썬 Lecture 엑셀 VBA Lecture 마이다스 Lecture 이탭스

[박주민][파이썬과 아두이노] 8. 데이터 결측 정렬 수정 그룹화

작성자 : 박주민

(2024-04-28)

조회수 : 119

[YouTube]https://www.youtube.com/watch?v=uoVgBnBrE5I

[Code] 8.결측치.py [Link]

[데이터] 지역 데이터.xlsx [Link]

 

용어

. NaN = Not a Number 숫자가 아님. 예) 어떤 값을 0으로 나눈 값

. Null = Void. 어떤 값이 없이 비어 있음

 

 

13. 데이터  결측치
    13.1 기본 
    13.2 조건부 출력
14. 데이터  정렬
    14.1 기본 

15. 데이터  수정 및 추가
    15.1 수정
    14.1 기본 

14.그룹화

 

[1] 데이터 

import pandas as pd
df = pd.read_excel('지역 데이터.xlsx')

#행열 옵션
pd.set_option('display.max_rows', 1000)
pd.set_option('display.max_columns', 20)

#인덱스 순서 지정
new_index = [str(i) for i in range(1, len(df) + 1)]
df.index = new_index

df

[2] 결측치 확인 및 수정

#위치에 해당하는 컬럼 공백값 수정
df['위치'].fillna('발생안함', inplace=True)
df

#규모부터 위치까지 데이터 범위지정 수정
df.loc[:, '규모':'위치'] = df.loc[:, '규모':'위치'].fillna('확인중').astype(str)
df

#데이터가 비었을경우 데이터 탈락 후 출력
df.dropna(inplace=True)
df

#인덱스와 컬럼을 지정해 탈락 후 출력(인덱스 지정)
df = df.dropna(axis='index', how='any')
df

#인덱스와 컬럼을 지정해 탈락 후 출력(컬럼 지정)
df = df.dropna(axis='columns', how='any')
df

[3] 데이터 정렬

#평균기온 데이터 오름차순정렬
df.sort_values('평균기온(°C)') 

#평균기온 데이터 내림차순정렬
df.sort_values('평균기온(°C)', ascending=False)

#컬럼 다중 선택 후 정렬(평균기온(°C) 정렬 후 월합강수량 순 정렬)
df.sort_values(['평균기온(°C)','월합강수량(00~24h만)(mm)'], )

#평균기온은 오름차순 월합강수량은 내림차순정렬
df.sort_values(['평균기온(°C)','월합강수량(00~24h만)(mm)'], ascending=[True,False], inplace=True)

[4] 데이터 수정

경기도이천의 데이터를 경기도로 변경 충청남도(천안)경우 충청남도로 변경
df['지역'].replace({'경기도(이천)':'경기도','충청남도(천안)':'충청남도'},inplace=True)
df

#년월 데이터에 1일 추가
df['년월'] = df['년월'] + '1일'
df

#오류발생(숫자형에 문자형을 더해주기때문)
df['월합강수량(00~24h만)(mm)'] = df['월합강수량(00~24h만)(mm)'] + 'mm'
df

#함수를 사용한 오류 해결
def add_mm(value):
    return str(value) + 'mm'

df['월합강수량(00~24h만)(mm)'] = df['월합강수량(00~24h만)(mm)'].apply(add_mm)
df

#컬럼의 추가
#총합 이라는 새로운 데이터 추가
df['총합']=df['평균상대습도(%)']+df['월합강수량(00~24h만)(mm)']
df

#결과라는 컬럼 추가
df['결과'] = 'Fail'
df

#총합 결과에 따른 결과 컬럼 수정
df.loc[df['총합']>100,'결과']= 'pass'
df


#컬럼 삭제
#총합과 결과라는 컬럼 삭제
df.drop(columns=['총합',''결과])

#1번 로우 삭제
df.drop(index=['1'])

#조건을 사용한 출력
filt= df['평균기온(°C)']<0
df[filt]

[5] 그룹화

그룹화
#충청북도(청주) 데이터만 출력
df.groupby('지역').get_group('충청북도(청주)')

#데이터 사이즈
df.groupby('지역').size()

#데이터 평균
df.groupby('').mean()

#데이터 갯수
df.groupby('').counts()

#그룹에서 지정된 값 평균
df.groupby('')[''].mean()