본문 바로가기
수업(국비지원)/Python

[Python] drinks.csv 파일 분석하기1

by byeolsub 2023. 4. 26.

📌

#################################
# 전세계 음주 데이터 분석하기 : drinks.csv
import pandas as pd
drinks = pd.read_csv("data/drinks.csv")
drinks.info()
'''
  country : 국가명
  beer_servings : 맥주소비량
  spirit_servings : 음료소비량
  wine_servings : 와인소비량   
  total_litres_of_pure_alcohol : 순수 알콜량
  continent : 대륙명
'''
drinks.head()

# 변수 = 컬럼 = 피처
# 상관계수 : 두개의 연속적인 데이터의 상관관계를 수치로 표현
beer_wind_corr =\\
    drinks[["beer_servings","wine_servings"]].corr()
beer_wind_corr    

#1  피어슨 상관계수 : 기본값으로 설정됨. 가장 많이 사용.
beer_wind_corr =\\
    drinks[["beer_servings","wine_servings"]].\\
		corr(method="pearson")
beer_wind_corr

#2 켄달 상관계수 : 샘플사이즈가 작은 경우.
#            동률데이터의 확율이 높은경우
beer_wind_corr =\\
    drinks[["beer_servings","wine_servings"]].\\
		corr(method="kendall")
beer_wind_corr

#3 스피어만 상관계수 : 정규화가 되지 않는 데이터에 많이 사용
beer_wind_corr =\\
        drinks[["beer_servings","wine_servings"]].\\
				corr(method="spearman")
beer_wind_corr


📌

drinks.columns #drinks데이터의 컬럼들 조회
cols = drinks.columns[1:-1] #1(가장처음)부터 -1(마지막에 위치)사이의 컬럼 cols에 저장
corr = drinks[cols].corr()#cols에 저장된 데이터의 상관계수를 corr로 저장
corr
corr.values # 상관계수에 해당하는 값을 알 수 있다.

# 상관계수 시각화 하기
# 히트맵을 이용하여 시각화 하기
import seaborn as sns
cols_view = ["beer","spirit","wine","alcohol"]
sns.set(font_scale=1.5) # 글자크기
hm = sns.heatmap(corr.values, # 데이터
                  cbar=True, # 색상맴
                  annot=True, # 데이터값
                  square=True, # 히트맵을 사각형으로 출력
                  yticklabels=cols_view, # y축 표시 라벨
                  xticklabels=cols_view) # y축 표시 라벨

# seaborn 모듈의 산점도를 이용하여 시각화 하기
sns.pairplot(drinks[cols])
plt.show()

#회귀그래프 작성하기
sns.regplot\\
    (x="beer_servings",y="total_litres_of_pure_alcohol",
     data=drinks)

# 각 변수의 결측값 갯수 조회하기
drinks.isnull().sum() # continet(대륙변수)에만 23개의 결측값이 있다.

# 대륙별 국가 수 조회하기

#1 value_counts() 사용
drinks["continent"].value_counts()  
drinks["continent"].value_counts(dropna=False) #결측값 따로 포함하여 조회

#2 gruopby() 사용
drinks.groupby("continent")["country"].count()

# continent 컬럼의 결측값을 OT로 변경하기
# fillna : 결측값을 다른 값으로 치환하는 함수

#1
drinks['continent'] = drinks['continent'].fillna('OT')
drinks.info()

# 대륙별 국가 수를 파이그래프로 작성하기
sns.set(font_scale=1)
# tolist() : 리스트로 형변환
labels = drinks['continent'].value_counts().index.tolist()
# 'AF','EU','AS','OT','OC','SA'
explode = (0,0,0,0.1,0,0)
plt.pie(drinks['continent'].value_counts(), # 데이터값
        labels=labels, # 라벨명. 대륙명
        autopct='%.0f%%', # 비율표시. %.0f :소숫점 이하 없음. %% : %문자
        explode = explode, # 파이의 위치지정. 0.1 : 1/10만큼 밖으로 표시
        shadow=True) 
plt.title('null data to \\'OT\\'')

# 대륙별 spirit_servings의 평균, 최소, 최대, 합계를 출력

#1
# 평균
drinks.groupby("continent")["spirit_servings"].mean()

# 최소
drinks.groupby("continent")["spirit_servings"].min()

# 최대
drinks.groupby("continent")["spirit_servings"].max()

# 합계
drinks.groupby("continent")["spirit_servings"].sum()

#2
drinks.groupby("continent")["spirit_servings"].agg\\
		(["mean","min","max","sum"])