개인공부/Python

56. Python Pandas 연습문제

LEE_BOMB 2021. 11. 20. 16:17
문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