[3주차 목표]
1. 데이터프레임 사용법을 익힌다.
2. 👉파이썬을 이용해서 데이터를 각종 차트로 시각화해본다.👈
3. 상관 관계 분석에 대해서 이해한다.
결측값을 제거할 때는 dropna()
를 사용하고, 채워줄 때는 fillna()
를 사용한다. 앞의 continenet 열에 결측치를 채운다.
# 결측 데이터를 특정값으로 채우는 방법은 .fillna()를 사용하는 것이다.
# 이 경우 기타 값이라는 의미에서 'ETC'를 넣어준다.
drink_df['continent'] = drink_df['continent'].fillna('ETC')
drink_df.sample(10)
결측값이 없는 지 확인해본다.
drink_df.isnull().sum()
파이차트를 그릴려면
가 필요하다.
현재 데이터의 continent별 데이터 갯수에 대해서 파이차트를 그린다.
# 해당 열에 존재하는 각 종류의 값에 대해서 카운트를하여 시리즈로 리턴.
drink_df['continent'].value_counts()
#result
AF 53
EU 45
AS 44
ETC 23
OC 16
SA 12
Name: continent, dtype: int64
위의 series에서 인덱스는 .index
, 값은 .values
로 접근하여 리스트로 변환시켜준다.
pie_labels = drink_df['continent'].value_counts().index.tolist()
pie_values =
drink_df['continent'].value_counts().values.tolist()
plt.pie(pie_values, labels=pie_labels, autopct = '%.02f%%')
plt.title('Percentage of each continent')
plt.show()
Group by
는 특정 값을 기준으로 그룹핑한 후에 그룹별로 통계적인 수치 정보를 구할 수 있도록 하는 방법이다.
데이터프레임이름.groupby('그룹핑 기준이 되는 열')['보고자 하는 열'].통계 함수
👉 대륙 별 평균 맥주 소비량은 어떻게 될까?
dinrk_df.groupby('continent')['beer_servings'].mean()
#result
continent
AF 61.471698
AS 37.045455
ETC 145.434783
EU 193.777778
OC 89.687500
SA 175.083333
Name: beer_servings, dtype: float64
👉 각 대륙 별 모든 종류의 알콜의 평균 소비량을 보고싶다면?
보고자하는 열을 별도로 명시하지 않으면 된다.
dinrk_df.groupby('continent').mean()
👉 총 알콜 소비량 평균보다 더 많이 알콜을 섭취하는 대륙은?
# 전체 평균
total_mean = drink_df.total_litres_of_pure_alcohol.mean()
# 각 대륙별 total_litres_of_pure_alcohol 소비량 계산
continent_mean = drink_df.groupby('continent')['total_litres_of_pure_alcohol'].mean()
# 전체 평균으로 조건을 걸어준다.
continent_over_mean = continent_mean[continent_mean >= total_mean]
print(continent_over_mean)
#result
continent
ETC 5.995652
EU 8.617778
SA 6.308333
Name: total_litres_of_pure_alcohol, dtype: float64
👉평균 wine_servings가 가장 높은 대륙은?
idxmax()
는 series에서 가장 높은 값을 리턴해준다.
wine_continent = drink_df.groupby('continent')['wine_servings'].mean().idxmax()
print(wine_continent)
#result
EU
👉각 대륙 별로 wine_servings 소비에 대해서 평균, 최소, 최대값, 합을 출력하자
agg
를 사용하면 여러 통계 함수를 동시에 사용할 수 있다.
drink_df.groupby('continent')['wine_servings'].agg(['mean', 'min', 'max', 'sum'])