Pandas 패키지를 이용한 데이터분석 기본적인 활용 코드 정리
분석 환경
- AWS Sagemaker Notebook Instance 생성
- Jupyter Notebook 실행
패키지 설치
import pandas as pd
DataFrame() 활용
#dict 자료 구조 데이터를 dataframe으로 변환
data = {
'이름' : ['채치수', '정대만', '송태섭', '서태웅', '강백호', '변덕규', '황태산', '윤대협'],
'학교' : ['북산고', '북산고', '북산고', '북산고', '북산고', '능남고', '능남고', '능남고'],
'키' : [197, 184, 168, 187, 188, 202, 188, 190],
'국어' : [90, 40, 80, 40, 15, 80, 55, 100],
'영어' : [85, 35, 75, 60, 20, 100, 65, 85],
'수학' : [100, 50, 70, 70, 10, 95, 45, 90],
'과학' : [95, 55, 80, 75, 35, 85, 40, 95],
'사회' : [85, 25, 75, 80, 10, 80, 35, 95],
'SW특기' : ['Python', 'Java', 'Javascript', '', '', 'C', 'PYTHON', 'C#']
}
df = pd.DataFrame(data)
pandas에서의 CSV 파일 읽기
# Path of the file to read dc_path = "./input/dc-wikia-data.csv" # Read the file into a variable flight_data dc_data = pd.read_csv(dc_path) dc_data.head(10)
DataFrame() 데이터 정제
df['이름']
df[['이름','키']]
df = pd.DataFrame(data, columns=['이름', '키', '학교'] )
df.set_index('이름', inplace=True) # index를 지정 컬럼으로 설정, 실제 데이터에 바로 반영
df.reset_index(drop=True, inplace=True) # index 초기화, 실제 데이터에 바로 반영
df.sort_index(ascending=False) # index 기준 내림차순으로 정렬
데이터 확인
df.describe()
df.head()
df.tail()
df.columns
df.shape
df['키'].describe()
df['키'].min() #max(), sum(), mean(), count(), unique(), nlargest(5)
df.sort_values('개봉 연도', ascending=False)
DataFrame() 활용
#컬럼 선택 df['이름'] # =df[df.columns[0]] df['SW특기'] # =df[df.columns[-1]], -1은 제일 마지막 의미 #Slicing #df[컬럼(들)][row범위] df['영어'][0:5] df[['이름', '키']][4:] df[df.columns[4:6]][1:5] #loc df.loc['6번', '영어'] #index 6번의 영어 값 df.loc[['6번', '2번'], ['영어','수학', '과학']] df.loc['1번':'5번', '국어':'사회'] #iloc df.iloc[1:4, 2:5] df.iloc[[5,7], [1,2,3]]
조건 선택
df.loc[df['키']>=185,['이름', '수학', '사회']] # 조건이 True인 row들, 선택된 컬럼 데이터값
df.loc[(df['키']>=185) & (df['학교'] == '북산고'), ['이름','수학', '영어']] # 괄호 사용 주의
df.loc[df['이름'].str.startswith('송')]
df.loc[df['이름'].str.contains('태')]
langs = ['python', 'java']
filt = df['SW특기'].str.lower().isin(langs)
df[filt]
apply
def add_cm(height):
return str(height)+'cm'
df['키'] = df['키'].apply(add_cm)
def fn_capitalize(lang):
if pd.notnull(lang):
return lang.capitalize()
return lang
df['SW특기'] = df['SW특기'].apply(fn_capitalize)
df