kaggle :HorizontalBar (Q7)

kaggle dictation (06)




plotly.graph_objects as go: 를 이용한 bar graph

HorizontalBar plot /가로 막대 차트

0. data set

https://www.kaggle.com/miguelfzzz/the-typical-kaggle-data-scientist-in-2021



Subject : 가장 많이쓰는 programming 언어_Horizontal bar

1. data 읽어오기


Q7에는 sub가 많기 때문에 python 구문을 이용하여
‘Q7’ 이 붙어있는 컬럼 불러오기.


languages_cols = [col for col in df if col.startswith(‘Q7’)]

col 1부터 df 끝까지

Q7로 시작하는지 확인하여 true 일 때만 데이터 가져오기

1
languages_cols = [col for col in df if col.startswith('Q7')]



2. data Frame 만들어 주기

algorithms 에 data frame을 씌워서 표를 만들고, 이름을 다음과같이 바꿔줌.

1
2
3
4
5
languages = df[languages_cols]

languages.columns = ['Python', 'R', 'SQL', 'C', 'C++', 'Java',
'Javascript', 'Julia', 'Swift', 'Bash',
'MATLAB', 'None', 'Other']

languages.columns



3.표 설정.
1
2
3
4
5
6
7
8
languages = (
languages
.count()
.to_frame()
.reset_index()
.rename(columns={'index':'Languages', 0:'Count'})
.sort_values(by=['Count'], ascending=False)
)

languages


  1. .count() :coulumn 수 세기
  2. .to_frame() : frame 생성
  3. .reset_index() : 원본과 상관없는 Index 생성
  4. .rename()
    1. columns의 이름을 지정 : ‘index’:’Languages’, 0:’Count’
  5. .sort_values()
    1. by=[‘Count’], ascending=False
    2. Count 기준으로 내림차순으로 정렬


3. percent 추가

1
languages['percent'] = ((languages['Count'] / len(df))*100).round(2).astype(str) + '%'


표에 ‘percent’를 추가
algorithms의 count에 df의 length로 나누고 *100을 하는 전형적인 % 나타내기

값자체에 %를 입력하여 나중에 %를 추가 입력하지 않아도 됨

소숫점 자리 2까지 반영(반올림).
type 자체를 String으로 하여 추가 계산은 불가능.



4. 색 지정

1
2
3
4
5
6
7
8
9
10
11
colors = ['#033351',] * 13
colors[0] = '#5abbf9'
colors[1] = '#5abbf9'
colors[2] = '#0779c3'
colors[3] = '#0779c3'
colors[4] = '#0779c3'
colors[5] = '#0779c3'
colors[6] = '#0779c3'
colors[7] = '#05568a'
colors[8] = '#05568a'
colors[9] = '#05568a'


5. bar Graph 만들기

1
2
3
4
5
6
7
fig = go.Figure(go.Bar(
x=algorithms['Count'],
y=algorithms['Algorithms'],
text=algorithms['percent'],
orientation='h',
marker_color=colors
))

horizontal과 vertical Graph의 차이는 x, y axis를 바꾸어 주는 것과

orientation=’h’ 을 넣어 주는 것의 차이.

Leng_go.Bar




6. update_traces()

traces() 수정 : Trace에 대한 설정

1
2
3
4
5
6
fig.update_traces(texttemplate='%{text}', 
textposition='outside',
cliponaxis = False,
hovertemplate='<b>Lenguage</b>: %{y}<br><extra></extra>'+
'<b>Count</b>: %{x}',
textfont_size=12)
  1. texttemplate : text type
  2. textposition : ‘outside’ _ 설정 해 주지 않은 경우 칸에 따라 적당히 들어감.
  3. cliponaxis = False : text가 칸이 작아서 짤리는 경우를 막아주는 기능 (off)
  4. hovertemplate :
    1. 마우스 On하면 (커서를 위에 대면) 나오는 Hovert에대한 설정.
  5. textfont_size : 폰트 size



7. Design

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

fig.update_xaxes(showgrid=False)
fig.update_yaxes(showgrid=False)

fig.update_layout(showlegend=False,
plot_bgcolor='#F7F7F7',
margin=dict(pad=20),
paper_bgcolor='#F7F7F7',
height=700,
xaxis={'showticklabels': False},
yaxis_title=None,
xaxis_title=None,
yaxis={'categoryorder':'total ascending'},
title_text="Most Commonly Used <b>Programming Languages</b>",
title_x=0.5,
font=dict(family="Hiragino Kaku Gothic Pro, sans-serif", size=17, color='#000000'),
title_font_size=35)
  1. Grid Delete

  1. update_layout
    1. showlegend=False,
    2. plot_bgcolor=’#F7F7F7’
    3. margin=dict(pad=20),
      1. padding20
    4. paper_bgcolor=’#F7F7F7’,
    5. xaxis={‘showticklabels’: False},
      1. x 축 labels을 삭제.
    6. yaxis_title=None,
    7. xaxis_title=None, yaxis={‘categoryorder’:’total ascending’},
      1. y 축 title을 categoryorder : 정렬
    8. title_text=”Most Commonly Used Algorithms“,
    9. title_x=0.5,
    10. font=dict(family=”Hiragino Kaku Gothic Pro, sans-serif”, size=15, color=’#000000’),
             title_font_size=35)
      


8. Annotation

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
fig.add_annotation(dict(font=dict(size=14),
x=0.98,
y=-0.13,
showarrow=False,
text="@miguelfzzz",
xanchor='left',
xref="paper",
yref="paper"))

fig.add_annotation(dict(font=dict(size=12),
x=0,
y=-0.13,
showarrow=False,
text="Source: 2021 Kaggle Machine Learning & Data Science Survey",
xanchor='left',
xref="paper",
yref="paper"))

fig.show()

Leng_Final_HB

Author

YoonHwa

Posted on

2021-11-09

Updated on

2021-11-09

Licensed under

You need to set install_url to use ShareThis. Please set it in _config.yml.
You forgot to set the business or currency_code for Paypal. Please set it in _config.yml.

댓글

You forgot to set the shortname for Disqus. Please set it in _config.yml.