[私もコードします]データ分析と可視化-Pandas 6

18240 ワード

13.関数の適用
import pandas as pd

df = pd.read_excel('score3.xlsx', index_col = '지원번호')
df
df['학교'] = df['학교'] + '등학교'
df
df['키'] = df['키'] +'cm'
df
# 에러남 = 정수 + 문자열

>>> Error
# for문 사용 방법
list = []
for i in df['키']:
    #print(str(i)+'cm')
    list.append(str(i)+'cm')
df['키'] = list
df

13-1. 関数をデータに適用(適用)
# 키 뒤에 cm을 붙이는 역할
def add_cm(height):
    return str(height)+'cm'
df['키'] = df['키'].apply(add_cm) 
# 키 데이터에 대해서 add_cm함수를 호출한 결과데이터를 반영
df
#첫번째 글자만 대문자로 바꾸는 함수
def capitalize(lang):
    if pd.notnull(lang): #NaN이 아닌지 
        return lang.capitalize() # 첫글자는 대문자로, 나머지는 소문자로 
    return lang

df['SW특기'] = df['SW특기'].apply(capitalize)
df
# 함수 제공해주는거라 그냥 쓰는게 편하긴함
df['SW특기'].str.capitalize()

14.グループ化
:統計値の計算
import pandas as pd

df = pd.read_excel('score3.xlsx', index_col = '지원번호')
df
df.groupby('학교') 

>>> <pandas.core.groupby.generic.DataFrameGroupBy object at 0x000001D14E5B8520>
df.groupby('학교').get_group('북산고')
df.groupby('학교').get_group('능남고')
df.groupby('학교').mean() # 계산가능한 데이터들의 평균값
df.groupby('학교').size() # 각 그룹의 크기
df.groupby('학교').size()['능남고'] 
# 학교로 그룹화를 한 뒤에 능남고에 해당하는 데이터의 수

>>> 3
df.groupby('학교')['키'].mean() 
# 학교로 그룹화를 한 뒤에 키의 평균 데이터
df.groupby('학교')[['국어', '영어', '수학']].mean()
# 학교로 그룹화를 한 뒤에 국어, 영어, 수학, 평균데이터
# 학년 추가
df['학년'] = [3,3,2,1,1,3,2,2] #학년 Column 추가
df
df.groupby(['학교', '학년']).mean()
# 학교별 학년별 평균 데이터
df.groupby('학년').mean() 
#학년별 평균 데이터
df.groupby('학년').mean().sort_values('키')
# 학년으로 그룹를 짓고 키를 기준으로 오름차순 정리
df.groupby(['학교', '학년']).sum()
df.groupby('학교')[['이름', 'SW특기']].count()
#학교로 그룹화를 한 뒤에 각 학교별 SW특기 데이터의 수를 가져옴
school = df.groupby('학교')
school['학년'].value_counts()
# 학교로 그룹화를 한 뒤에 학년별 학생 수를 가져옴
school['학년'].value_counts().loc['북산고'] 
#학년별 그룹화를 한 뒤에 북산고에 대해서 학년별 학생 수를 가져옴
school['학년'].value_counts().loc['능남고']
#학년별 그룹화를 한 뒤에 능남고에 대해서 학년별 학생 수를 가져옴
school['학년'].value_counts(normalize=True).loc['북산고']
# 학생들의 수 데이터를 퍼센트로 비교하여 가져옴