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