데이터 로딩
import pandas as pd
import numpy as np
필요한 패키지 로딩
df = pd.read_csv('Seattle2014.csv')
pd.read_* 을 통해 csv 파일을 읽어온다.
1-1. 데이터 모양 및 정보 확인
df.shape
(365,17) # 365행 17열로 구성되어 있다.(1년간의 시애틀 분석이므로 365행이다.)
df.head()

df.info()

df.isna().sum()
결측치 행이 존재하는지 확인한다. isna() 는 논리형의 값으로 나오므로 sum() 을 하여 True 의 값을 합한다.
필요하지 않은 컬럼 삭제 (STATION, STATION_NAME)
df.drop(['STATION','STATION_NAME'],axis=1,inplace=True) # axis=1 컬럼삭제
# df = df.drop(['STATION','STATION_NAME'],axis=1)
DATE를 날짜 형식으로 수정
기존 DATE 컬럼의 타입 int -> str로 변경 후 날짜 형식으로 변경
df['DATE'] = df['DATE'].astype(str)
df['DATE'] = pd.to_datetime(df['DATE'])
# df['DATE'] = pd.to_datetime(df['DATE'].astype(str))
# df['DATE'] = pd.to_datetime(df['DATE'],format='%Y%m%d')
# 포맷을 지정하면 바로 데이트타임으로 가능
기존의 int 타입을 바로 datetime() 으로 변경하면 숫자가 이상하게 나오는 것을 확인할 수 있다.
때문에 string 타입으로 변환 후에 datetime 으로 변경하거나 아니면 int 타입에서 포맷을 지정하여 바로 데이트 타임으로 변경하는 방법이 있다.
날짜 컬럼을 인덱스로 변경
# df.set_index(df['DATE'],inplace= True)
df = df.set_index(df['DATE'])
df.head()
set_index() : 열 중에 한 데이터를 인덱스로 변경한다.
drop() 과 같이 set_index() 도 데이터 프레임을 변경시키는 것은 바로 원본에 적용되지 않기 때문에 inplace = True 를 사용하거나 또는 원본 데이터에 덮어씌워야 한다.

강수량('PRCP')이 많은 날 상위 10일 출력
df['PRCP'].sort_values(ascending= False).head(10)
# df.sort_values(by='PRCP', ascending= False)[['PRCP']].head(10) # 강수량만
sort_values() 값을 정렬한다. ascending = False 를 사용하여 내림차순 -> 오름차순으로 변경하여 상위 10개의 데이터만 뽑아 온다.

1월 강수량만 출력
prcp_jan =df[df.index.month==1]
prcp_jan['PRCP']
# df['PRCP'][df.index.month==1]
1년동안 강수량이 40미만으로 내린 날이 몇일인가?
len(df[df['PRCP']<40])
# np.sum(df['PRCP']<40) # 불린
# df[df['PRCP']<40]['PRCP'].count() # NOTNULL 값을 포함하지 않은 레코드의 개수만
# df[df['PRCP']<40]['PRCP'].shape[0]
len() 을 사용하여 데이터의 길이를 구함
sum(),count() 을 사용하여 True 의 합을 구함
df[df['PRCP']<40]['PRCP'].shape 이 (277,)인 튜플의 형태이므로 shape[0] True 인 것들의 개수만 출력한다.
1월에 내린 강수량의 합과 평균 강수량
print('합:' , prcp_jan['PRCP'].sum(axis=0))
print('평균:', prcp_jan['PRCP'].mean(axis=0))
df['PRCP'][df.index.month==1].agg(['sum','mean']).apply(lambda x: np.round(x,2))
# 반올림 : np.round()
# .apply() : 이유 넘어오는 값이 시리즈니까
apply() 안에 익명함수 lambda 를 이용하여 반올림 평균값을 반올림.

2월에 내린 강수량의 합과 평균 강수량
prcp_Feb = df[df.index.month ==2]
print('합:', prcp_Feb['PRCP'].sum(axis = 0))
print('평균:', prcp_Feb['PRCP'].mean(axis = 0))
위 1월과 같은 방식으로 풀이하면 된다.
'국비 교육 > 데이터' 카테고리의 다른 글
[데이터 분석] Pandas 문제 실습 - 3 품목별 수출입실적 분석 (0) | 2023.11.16 |
---|---|
[데이터 분석] Pandas 문제 실습 - 2 국가별 알콜 섭취량 데이터 분석 (0) | 2023.11.16 |
[데이터 분석] Padas - 4 (0) | 2023.11.11 |
[데이터 분석] Pandas - 3 (0) | 2023.11.11 |