kaggle :ScatterLine (Q42)

kaggle dictation (08)




plotly.graph_objects as go_ Scatter + line plot

산점도

  • bivariate”이변수” 값을 시각화 하는 기본적인 그래프.
    • correlation: Positive, Negative, non
  • 두 개의 변수 각각의 분포과 변수간의 관계를 확인 할 수 있다.

ref.



0. data set

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



Subject : 가장 많이 이용하는 Media source

1. data 읽어오기

Q42로 시작하는 col을 읽어오기.
python의 for문을 이용.

1
media_cols = [col for col in df if col.startswith('Q42')]

media_cols



2. data Frame 만들어 주기

1
2
3
4
5
6
media = df[media_cols]

media.columns = ['Twitter', 'Email newsletters',
'Reddit', 'Kaggle', 'Course Forums',
'YouTube', 'Podcasts', 'Blogs',
'Journal Publications', 'Slack Communities', 'None', 'Other']

df_media_cols



3.표 설정.

1
2
3
4
5
6
7
8
9
10
media = (
media
.count()
.to_frame()
.reset_index()
.rename(columns={'index':'Medias', 0:'Count'})
.sort_values(by=['Count'], ascending=False)
)

media

media



4. 색 지정

1
2
3
4
5
6
7
8
9
10

colors = ['#033351',] * 12
colors[11] = '#5abbf9'
colors[10] = '#5abbf9'
colors[9] = '#5abbf9'
colors[8] = '#0779c3'
colors[7] = '#0779c3'
colors[6] = '#0779c3'
colors[5] = '#0779c3'
colors[4] = '#0779c3'


5. percent로 계산한 column 추가

i. add percent column

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

media

Q42_percent



ii. Count값 (column값으로 ) 정렬

1
2
3
4
5
6
media = (media
.sort_values(by = ['Count'])
.iloc[0:15]
.reset_index())

media

Q42_percent_sort


1. Default는 내림차순
2. iloc으로 0번부터 15까지 List로 긁어오기
3. reset index()



6.plotly.graph_objects.Scatter()

Scatter G 그리기

i. 산점도 점 찍기
1
2
3
4
5
6
7
8

fig = go.Figure(go.Scatter(x = media['Count'],
y = media["Medias"],
text = media['percent'],
mode = 'markers',
marker_color =colors,
marker_size = 12))
fig

Q42_graph




ii. 산점도에 for문을 이용하여 line 연결하기

1
2
3
4
5
6
7
for i in range(0, len(media)):
fig.add_shape(type='line',
x0 = 0, y0 = i,
x1 = media["Count"][i],
y1 = i,
line=dict(color=colors[i], width = 4))
fig

Q42_Scatter+line


  • for i in range(0~platform의 길이만큼)
  • fig. add_shape()
    • type = ‘line’
      • line모양의 grape shape add
    • x0 = 0, y0 = i,
      • 초기값 (0, i)에서 시작
      • (0, 0) = other Line Start
    • x1 = platform[“Count”][i],
      • x축 Index : count의 값만큼 x축방향으로 Line이 그어진다.
    • y1 = i,
      • y축 Index, 마지막 값
    • line=dict(color=colors[i], width = 4)
      • line의 세부 설정, 색과 두께



7. update_traces(hovertemplate)

1
2
3
fig.update_traces(hovertemplate='<b>Media Source</b>: %{y}<br><extra></extra>'+
'<b>Count</b>: %{x}<br>'+
'<b>Proportion</b>: %{text}')


8. Design

i. 축 grid

1
2
fig.update_xaxes(showgrid=True, gridwidth=1, gridcolor='#9f9f9f', ticklabelmode='period')
fig.update_yaxes(showgrid=False)

x 축의 grid만 보여줌. tick labe lmode : period

Q42_grid



plotly의 axes/En


ii. update_layout()
1
2
3
4
5
6
7
8
9
10
11
12

fig.update_layout(showlegend=False,
plot_bgcolor='#F7F7F7',
margin=dict(pad=20),
paper_bgcolor='#F7F7F7',
yaxis_title=None,
xaxis_title=None,
title_text="Most Commonly Used <b>Media Sources</b>",
title_x=0.5,
height=700,
font=dict(family="Hiragino Kaku Gothic Pro, sans-serif", size=17, color='#000000'),
title_font_size=35)

Q42_layout



9. 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.22,
showarrow=False,
text="@miguelfzzz",
xanchor='left',
xref="paper",
yref="paper"))

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

fig.show()

Q42_final



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.