수업(국비지원)/Python
[Python] drinks.csv 파일 분석하기1
byeolsub
2023. 4. 26. 21:43
📌
#################################
# 전세계 음주 데이터 분석하기 : 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"])
