[3주차_데이터분석] 개발일지 (pie chart, groupby)

Coastby·2022년 7월 10일
0
post-custom-banner

[3주차 목표]
1. 데이터프레임 사용법을 익힌다.
2. 👉파이썬을 이용해서 데이터를 각종 차트로 시각화해본다.👈
3. 상관 관계 분석에 대해서 이해한다.

[목차]

  • 결측값 채우기
  • Pie chart
  • groupby

○ 결측값 채우기

결측값을 제거할 때는 dropna()를 사용하고, 채워줄 때는 fillna()를 사용한다. 앞의 continenet 열에 결측치를 채운다.

# 결측 데이터를 특정값으로 채우는 방법은 .fillna()를 사용하는 것이다.
# 이 경우 기타 값이라는 의미에서 'ETC'를 넣어준다.
drink_df['continent'] = drink_df['continent'].fillna('ETC')
drink_df.sample(10)

결측값이 없는 지 확인해본다.

drink_df.isnull().sum()

○ Pie chart

파이차트를 그릴려면

  • 파이 차트로 사용할 데이터의 이름이 담긴 리스트 (레이블),
  • 그리고 해당 이름에 해당하는 데이터 값이 담긴 리스트 (실질적 데이터)

가 필요하다.

현재 데이터의 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()

○ groupby

Group by는 특정 값을 기준으로 그룹핑한 후에 그룹별로 통계적인 수치 정보를 구할 수 있도록 하는 방법이다.

데이터프레임이름.groupby('그룹핑 기준이 되는 열')['보고자 하는 열'].통계 함수

예제1)

👉 대륙 별 평균 맥주 소비량은 어떻게 될까?

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

예제2)

👉 각 대륙 별 모든 종류의 알콜의 평균 소비량을 보고싶다면?

보고자하는 열을 별도로 명시하지 않으면 된다.

dinrk_df.groupby('continent').mean()

⭐️ 예제3)

👉 총 알콜 소비량 평균보다 더 많이 알콜을 섭취하는 대륙은?

# 전체 평균
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

예제4)

👉평균 wine_servings가 가장 높은 대륙은?

idxmax()는 series에서 가장 높은 값을 리턴해준다.

wine_continent = drink_df.groupby('continent')['wine_servings'].mean().idxmax()
print(wine_continent)

#result
EU

예제5)

👉각 대륙 별로 wine_servings 소비에 대해서 평균, 최소, 최대값, 합을 출력하자

agg를 사용하면 여러 통계 함수를 동시에 사용할 수 있다.

drink_df.groupby('continent')['wine_servings'].agg(['mean', 'min', 'max', 'sum'])
profile
훈이야 화이팅
post-custom-banner

0개의 댓글