본문 바로가기
학습 log (이론)/python

'데이터 분석'

by abbear25 2020. 3. 5.

탐색적 데이터 분석 (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