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

Coastby·2022년 7월 10일
0

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

○ bar chart?

import matplotlib.pyplot as plt

바 차트는 Matplolib을 통해 plt.bar()를 이용하여 그린다.
바 차트를 그리기 위해서는 세가지 리스트를 사용한다.

  • 바의 위치를 결정하는 인덱스
  • 바 차트로 사용한 데이터의 이름이 담긴 리스트 (레이블)
  • 해당 이름에 해당하는 데이터의 값이 담긴 리스트 (실질적인 데이터)

👉bar chart 예제

# 여기서 index 값인 0, 1, 2는 순차적으로 어디에 배치될 것인지를 의미합니다.
# 어떤 의미인지 궁금하다면 0, 1, 5로 바꿔서 실행해보세요!

index = [0, 1, 2]
years = ['2017', '2018', '2019']
values = [100, 400, 900]

plt.bar(index, values, width=0.2, color='g')
plt.xticks(index, years)
plt.show()

index 값은 0, 1, 2 순차적으로 어디에 배치될 것이지를 의미한다.

index = [0, 1, 2, ....]

그러나 이를 일일히 작성하는 것은 비효율적으로 자동화하기 위해 numpy 패키지의 arange()라는 함수를 사용할 수 있다.

import numpy as np

index = np.arange(3)
print(index)
#result
[0, 1, 2]

○ 주류 데이터 bar chart

주류 데이터의 대륙 별 beer_servings의 평균, 최소, 최대, 합계에 대한 바 차트를 그려본다.

오류
groupby 함수는 SeriesGroupBy 타입으로 index 함수를 사용할 수 없다.

labels = drink_df.groupby('continent')['beer_servings'].index().tolist()
values = drink_df.groupby('continent')['beer_servings'].mean().tolist()
index = np.arange(len(labels))
#
plt.bar(index, values, width=0.2, color='g')
plt.xticks(index, labels)
plt.show()
#result
AttributeError: 'SeriesGroupBy' object has no attribute 'index'

beer_servings 관련 값들은 데이터 프레임으로 저장한다.

beer_servings_table = drink_df.groupby('continent').beer_servings.agg(['mean', 'min', 'max', 'sum'])

print(beer_servings_table)
#result
<class 'pandas.core.frame.DataFrame'>

인덱스, 레이블, 값들 리스트를 만든다

index = np.arange(len(beer_servings_table.index.tolist()))
continents = beer_servings_table.index.tolist()
values = beer_servings_table['mean'].tolist()

plt.ylabel('beer_servings')
plt.title('beer_servings by continent')

plt.bar(index, values, width=0.2, color='g')
plt.xticks(index, continents)
plt.show()

오류
값을 저장할 때
values = beer_servings_table['mean'].to_list()는 되지만,
values = beer_servings_table.mean.to_list()은 되지 않는다.
AttributeError: 'function' object has no attribute 'to_list'

profile
훈이야 화이팅

0개의 댓글