56. Python Pandas 연습문제
문1) score.csv 파일을 읽어와서 다음과 같이 처리하시오.
조건1> tv 칼럼이 0인 관측치 2개 삭제 (조건식 이용)
조건2> score, academy 칼럼만 추출하여 DataFrame 생성
조건3> score, academy 칼럼의 평균 계산
<<출력 결과 >> 참고
<<출력 결과 >>
score academy
1 75 1
2 77 1
3 83 2
4 65 0
5 80 3
6 83 3
7 70 1
9 79 2
score 76.500
academy 1.625
import pandas as pd
import os
os.chdir("c:/ITWILL/4_Python-2/data") #file 경로 변경
score = pd.read_csv('score.csv')
print(score)
조건1> tv 칼럼이 0인 관측치 2개 삭제 (조건식 이용)
df = score[score.tv != 0]
print(df)
조건2> score, academy 칼럼만 추출하여 DataFrame 생성
df2 = df[['score', 'academy']] #복수 칼럼 : 중첩list
print(df2)
조건3> score, academy 칼럼의 평균 계산
print('score : %10.3f'%df2['score'].mean())
print('academy : %10.3f'%df2['academy'].mean())
문2) wdbc_data.csv 파일을 읽어와서 단계별로 x, y 변수를 생성하시오.
단계 1 : 파일 가져오기, 정보 확인
단계 2 : y변수 : diagnosis
x변수 : id 칼럼 제외 나머지 30개 칼럼
import pandas as pd
import os
os.chdir("c:/ITWILL/4_Python-2/data") #file 경로 변경
단계 1 : 파일 가져오기, 정보 확인
wdbc = pd.read_csv('wdbc_data.csv')
print(wdbc.info())
RangeIndex: 569 entries, 0 to 568
Data columns (total 32 columns):
단계 2 : y변수, x변수 선택
cols = list(wdbc.columns) #변수 list 가져오기
print(cols)
len(cols) #32
cols[1] #y변수
cols[2:] #x변수
subset
wdbc_y = wdbc[cols[1]] #wdbc['diagnosis']
wdbc_x = wdbc[cols[2:]] #30변수
type(wdbc_y) #pandas.core.series.Series
type(wdbc_x) #pandas.core.frame.DataFram
자료 모양 확인
wdbc_y.shape #(569,) : 1차원(변수 1개)
wdbc_x.shape #(569, 30) : 2차원(변수 30개)
변수 내용 확인
wdbc_y #Length: 569, dtype: object
범주형(질적변수) 변수 : 빈도수
wdbc_y.value_counts()
B 357
M 212
연속형 변수 : 통계 함수
wdbc_x.radius_mean
wdbc_x['radius_mean'].mean() #14.127291739894558
wdbc_x['radius_mean'].var() #12.418920129526732
wdbc_x['radius_mean'].std() #3.5240488262120793
문3) 다음 df를 대상으로 iloc 속성을 이용하여 단계별로 행과 열을 선택하시오.
단계1 : 1,3행 전체 선택
단계2 : 1~4열 전체 선택
단계3 : 1,3행 1,3,5열 선택
import pandas as pd
import numpy as np
data = np.arange(1, 16).reshape(3,5) #3x5
df = pd.DataFrame(data, index = ['one', 'two', 'three'],
columns = [1,2,3,4,5])
print(df)
1 2 3 4 5
one 1 2 3 4 5
two 6 7 8 9 10
three 11 12 13 14 15
열이름 : integer
행이름 : label
iloc 속성
단계1 : 1,3행 전체 선택
df.iloc[[0,2]] #df.iloc[[0,2], :]
단계2 : 1~4열 전체 선택
df.iloc[:, 0:4]
단계3 : 1,3행 1,3,5열 선택
df.iloc[[0,2], [0, 2, 4]]
loc 속성
단계1 : 1,3행 전체 선택
df.loc[['one','three']]
단계2 : 1~4열 전체 선택
df.loc[:, 1:4] #숫자 : label 인식
단계3 : 1,3행 1,3,5열 선택
df.loc[['one','three'], [1,3,5]] #숫자 : label 인식
문4) tips.csv 파일을 읽어와서 다음과 같이 처리하시오.
조건1> 파일 정보 보기
조건2> header를 포함한 앞부분 5개 관측치 보기
조건3> header를 포함한 뒷부분 5개 관측치 보기
조건4> 숫자 칼럼 대상 요약통계량 보기
조건5> 흡연자(smoker) 유무 빈도수 계산
조건6> 요일(day) 칼럼의 유일한 값 출력
import pandas as pd
import os
os.chdir("c:/ITWILL/4_Python-2/data") #file 경로 변경
tips = pd.read_csv('tips.csv')
조건1> 파일 정보 보기
print(tips.info())
조건2> header를 포함한 앞부분 5개 관측치 보기
tips.head()
조건3> header를 포함한 뒷부분 5개 관측치 보기
tips.tail()
조건4> 숫자 칼럼 대상 요약통계량 보기
tips.describe()
조건5> 흡연자(smoker) 유무 빈도수 계산
tips['smoker'].value_counts()
No 151
Yes 93
조건6> 요일(day) 칼럼의 유일한 값 출력
tips['day'].unique() #array(['Sun', 'Sat', 'Thur', 'Fri'], dtype=object)
문5) iris.csv 파일을 읽어와서 다음과 같이 처리하시오.
조건1> 1~4 칼럼 대상 vector 생성(col1, col2, col3, col4)
조건2> 1,4 칼럼 대상 합계, 평균, 표준편차 구하기
조건3> 1,2 칼럼과 3,4 칼럼을 대상으로 각 df1, df2 데이터프레임 생성
조건4> df1과 df2 칼럼 단위 결합 iris_df 데이터프레임 생성
import pandas as pd
import os
os.chdir("c:/ITWILL/4_Python-2/data") #file 경로 변경
iris = pd.read_csv('iris.csv')
조건1>
col1 = iris['Sepal.Length']
col2 = iris['Sepal.Width']
col3 = iris['Petal.Length']
col4 = iris['Petal.Width']
조건2>
col1.sum()
col1.mean()
col1.std()
col4.sum()
col4.mean()
col4.std()
조건3>
df1 = pd.DataFrame({'col1':col1, 'col2':col2})
df2 = pd.DataFrame({'col3':col3, 'col4':col4})
print(df1)
print(df2)
조건4>
iris_df = pd.concat([df1, df2], axis = 1)
print(iris_df.info())
Data columns (total 4 columns):
col1 150 non-null float64
col2 150 non-null float64
col3 150 non-null float64
col4 150 non-null float64