탐색적 데이터 분석 (EDA, ExploratoryDataAnalysis)
주어진 데이터를 다양한 관점에서 살펴보고 탐색하여 인사이트 도출
%matplotlib inline
import pandas as pd
import seaborn as sb
df = pd.read_csv('survey.csv')
pd.options.display.max_rows #모든 행 다 보기
#pd.options.display.max_rows = 999 #999개 보기
data = df.iloc[:, :19] #모든 행, 19개 컬럼에 대해서 데이터 가져오기
df.corr()['Age'].sort_values(ascending=False) #나이만 내림차순으로 정렬하여 출력
sb.heatmap(data.corr()) #각 컬럼의 히트맵 그리기
클러스터 분석 (CA, ClusterAnalysis)
데이터를 분류하여 분석
%matplotlib inline
import pandas as pd
import seaborn as sb
df = pd.read_csv('young_survey.csv')
pd.options.display.max_rows
data = df.loc[:, 'History':'Pets']
corr = data.corr() #상관 관계 확인
corr['History'].sort_values(ascending=False) #히스토리만 내림차순으로 정렬하여 출력
sb.clustermap(corr) #클러스터 맵 그리기 (연관성 있는 것끼리 연결시켜 보여줌)
데이터 변환과 인사이트 도출
데이터를 다양한 방법으로 그려보고 인사이트 도출
필터링
%matplotlib inline
import pandas as pd
df = pd.read_csv('albums.csv', index_col=0)
df['Genre'].unique()
df[df['Genre'] == 'Blues'] #장르가 딱 Blues인 데이터만 출력
df[df['Genre'].str.contains('Blues')] #장르가 Blues를 포함하는 데이터 출력
df[df['Genre'].str.startswith('Blues')] #장르가 Blues가 첫번째로 포함된 데이터 출력
#장르가 Blues이면 새로운 컬럼에 True, 아니면 False
df['ContainsBlues'] = df['Genre'].str.contains('Blues')
문자열 다루기
%matplotlib inline
import pandas as pd
df = pd.read_csv('parks.csv')
#해당 컬럼명 값 가져오기, 띄어쓰기 1개만 구분하여 해당 컬럼 값 분류, 새로운 프레임 생성 True
addr = df['소재지도로명주소'].str.split(n=1, expand=True)
df['관할구역'] = addr[0] #기존 테이블에 관할구역 칼럼 추가
데이터 분류하여 다루기
%matplotlib inline
import pandas as pd
df = pd.read_csv('laptops.csv')
#카테고리 분류 만들기
brand = {
'Dell':'US',
'Apple': 'US',
'HP': 'US',
'Asus':'Taiwan'
}
origin = df['brand'].map(brand) #map을 사용하여 brand 왼쪽 값을 : 오른쪽 값으로 치환
df['origin'] = origin #기존 테이블에 원산지 컬럼 추가
origin_group = df.groupby('origin') #비교를 위한 그룹지정
origin_group.count() #개수 파악
origin_group.max() #최대값
origin_group.mean() #평균값
origin_group.first() #제일 처음에 위치한 값
origin_group.last() #제일 마지막에 위치한 값
origin_group.plot(kind='box', y='price')
데이터 합치기
#join 4가지: inner join, left outer join, right outer join, full outer join
%matplotlib inline
import pandas as pd
price_df = pd.read_csv('vegetable_price.csv')
quantity_df = pd.read_csv('vegetable_quantity.csv')
pd.merge(price_df, quantity_df, on='Product') #default, inner join
pd.merge(price_df, quantity_df, on='Product', how='left') #left outer join
pd.merge(price_df, quantity_df, on='Product', how='right')#right outer join
pd.merge(price_df, quantity_df, on='Product', how='outer')#full outer join
다양한 방법으로 관찰하여 인사이트 도출
%matplotlib inline
import pandas as pd
df = pd.read_csv('broad.csv', index_col=0)
df.plot() #방송사별 시청률 추이
df['Tatal'] = df.sum(axis='columns')
df.plot(y='Tatal') #전체 시청률 추이
df['Group1'] = df.loc[:, 'KBS':'SBS'].sum(axis='columns') #지상파 시청률 추이
df['Group2'] = df.loc[:, 'TV CHOSUN':'MBN'].sum(axis='columns') #공중파 시청률 추이
df.plot(y=['Group1','Group2']) #지상파와 공중파 시청률 추이 비교
반응형
'학습 log (이론) > python' 카테고리의 다른 글
'웹 크롤링' 기본 (0) | 2020.03.15 |
---|---|
'데이터 분석 2' (0) | 2020.03.10 |
'통계 분석' (0) | 2020.03.04 |
'Seaborn' (0) | 2020.03.04 |
'시각화' (0) | 2020.03.03 |