๐ Pandas ์๊ฐํ 3 - plotly์์ for๋ฌธ ์ฌ์ฉํ๊ธฐ
๐ ๊ฐ๊ฐํ๋๋ ์ผํ๋ ์ด๋ผ๊ณ ํ๊ธฐ ์ด๋ถํฐ ์์ฃผ ๋ฐ์ฉ๋๋ค!! ์ ๊ณต๊ณผ๋ชฉ์ ๋์ด๋๊ฐ ์ ๋ง 2ํ๋ ๋์๋ ๋น๊ตํ ์ ์๊ฒ ์ฌ๋ผ๊ฐ์ต๋๋ค(๋ฌผ๋ก 2๋ ๋์ ๊ตณ์ ์ ๋จธ๋ฆฌ๋ ํ๋ชซํ๊ฒ ์ง๋งโฆ๐). ๋ฐฐ์ด ๊ฑด ๊ทธ๋ ๊ทธ๋ ๋ณต์ตํ๋ ค๋ ์ต๊ด์ ๋ค์ด๊ณ ์๋๋ฐ ๊ฐ๊ฐ ์ฒซ์ฃผ๋ถํฐ ์์ฃผ ์์ฌ์์ฌํฉ๋๋ค. ๊ทธ๋๋ ์งฌ์งฌ์ด ๊ณต๋ถํ ๋ด์ฉ๋ค์ ์ต๋ํ ๋ธ๋ก๊ทธ์ ์ฌ๋ ค๋ณผ ์๊ฐ์ ๋๋ค!!
๐ ์ค๋์ plotly์์ for loop๋ฅผ ์ฌ์ฉํ๋ ๋ฒ์ ์์๋ด ์๋ค.
๐ ๋จ์ํ ์ฌ๋ฌ๊ฐ์ ๊ทธ๋ํ๋ฅผ ๊ทธ๋ฆฌ๋ ๊ฒ์ด ์๋ ๊ฐ๊ฐ์ ๋ฐ์ดํฐ ์์๋ค์ ๋ผ์ด์์ ๊ทธ๋ฆด๋, ์ผ์ผ์ด figure๋ค์ ์ ์ํด์ค์ผํ๋ ๋ฒ๊ฑฐ๋ก์์ด ์์ต๋๋ค. ์ด๋ฅผ ์ด๋จ๊ฒ ํด๊ฒฐํ ์ ์์๊น ๊ณ ๋ฏผํ๋ค๊ฐ for๋ฌธ์ ์ฌ์ฉํ๊ธฐ๋ก ๊ฒฐ์ ํ๋๋ฐ, ์๊ฐ๋ณด๋ค ์ด๋ ค์ ๋ ๊ฒ ๊ฐ์ต๋๋ค. ํ๋ฒ ์ดํด๋ด ์๋ค๐!!
3.1 for๋ฌธ์ ์ฌ์ฉํ์ง ์์ plotly
๐ ๋จผ์ ๋ฐ์ดํฐํ๋ ์์ ํ๋ ์ ์ํด๋ด ์๋ค.
#pandas ์ํฌํธ
import pandas as pd
#plotly ์ํฌํธ
import plotly.graph_objects as go
import plotly.offline as pyo
pyo.init_notebook_mode()
score_df = pd.DataFrame({'test' : ['score1','score2','score3','score4','score5','score6'],
'A' : [95, 100, 90, 88, 92, 94],
'B' : [87, 92, 95, 93, 88, 86],
'C' : [92, 92, 86, 95, 90, 84],
'D' : [78, 80, 82, 86, 80, 82],
'E' : [80, 76, 84, 80, 78, 84]})
score_df = score_df.set_index('test')
score_df
>>
A B C D E
test
score1 95 87 92 78 80
score2 100 92 92 80 76
score3 90 95 86 82 84
score4 88 93 95 86 80
score5 92 88 90 80 78
score6 94 86 84 82 84
ํ์ A,B,C,D,E ์ 6๊ฐ์ ์ํ ์ฑ์ ์ ๋ํ๋ธ ๋ฐ์ดํฐํ๋ ์์ ๋๋ค.
๐ ์ผ๋จ for ๋ฌธ์ ์ฌ์ฉํ์ง ์๋ ์ํ์์ ์๊ฐํ๋ฅผ ์งํํด๋ณด๊ฒ ์ต๋๋ค.
fig = go.Figure()
fig.add_trace(
go.Scatter(
x = score_df.index, y = score_df['A'], name = 'A'))
fig.add_trace(
go.Scatter(
x = score_df.index, y = score_df['B'], name = 'B'))
fig.add_trace(
go.Scatter(
x = score_df.index, y = score_df['C'], name = 'C'))
fig.add_trace(
go.Scatter(
x = score_df.index, y = score_df['D'], name = 'D'))
fig.add_trace(
go.Scatter(
x = score_df.index, y = score_df['E'], name = 'E'))
fig.show()
๐ for๋ฌธ์ ์ฌ์ฉํ์ง ์๋ ๊ฒฝ์ฐ์๋ fig . add_trace( )
๋ฅผ ๋ค์ฏ๋ฒ ๋ชจ๋ ํธ์ถํด์ ๊ฐ ํ์์ ์ํ ์ฑ์ ๋ค์ ๊ทธ๋ฆฝ๋๋ค. ์ด๋ ๊ฒ ๋ฐ์ดํฐ์ ์๊ฐ ๋ง์ง ์์ ๊ฒฝ์ฐ์๋ ๊ตณ์ด ๋ฐ๋ณต๋ฌธ์ ์ฌ์ฉํ์ง ์์๋ ํฐ ๋ถ๋ด์ด ์์ง๋ง, ๋ง์ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃจ๋ ค๋ฉด ์์ ๋ฐฉ๋ฒ๋ง์ผ๋ก๋ ์ข ๋ฌด๋ฆฌ๊ฐ ์์ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ์ด ํฌ์คํ
์ ์์ฑํ ์ด์ ์ด๊ธฐ๋ ํฉ๋๋ค!!
๊ทธ๋ฌ๋ฉด ์ด๋ฒ์๋ for ๋ฌธ์ ์ฌ์ฉํด๋ด ์๋ค.
3.2 for๋ฌธ์ผ๋ก plotly ๊ทธ๋ ค๋ณด๊ธฐ
๐ ๋ฐ์ดํฐ๋ ์์์ ๋ง๋ score_df ๋ฐ์ดํฐํ๋ ์์ ๊ทธ๋๋ก ์ฌ์ฉํ๊ฒ ์ต๋๋ค.
score_df
>>
A B C D E
test
score1 95 87 92 78 80
score2 100 92 92 80 76
score3 90 95 86 82 84
score4 88 93 95 86 80
score5 92 88 90 80 78
score6 94 86 84 82 84
๐ ์ด๋ฒ์๋ for ๋ฌธ์ ๊ฐ์ง๊ณ ์๊ฐํํด๋ด ์๋ค!!
col = len(score_df.columns)
fig = go.Figure()
for i in range(col):
fig.add_trace(
go.Scatter(
x = score_df.index, y = score_df[score_df.columns[i]], name = score_df.columns[i]))
fig.show()
๐ ๋ณ์ col
์ ๋ฐ์ดํฐ์ ์ด ๊ฐ์๋ฅผ ๋ฃ์ด์ฃผ๊ณ , ๊ทธ ๊ฐ์๋งํผ for๋ฌธ
์ ๋๋ฆฌ๋ฉด์ fig . add_trace( )
๋ฅผ ํธ์ถํด์ค๋๋ค. ๊ทธ ๋ค๋ถํฐ๋ ๋ฐ์ดํฐ์ ์ด์ ์ธ๋ฑ์ค๋ก ์ ๊ทผํด์ค์ผ๋ก์จ x์ถ๊ณผ y์ถ์ ๋ฐ์ดํฐ๋ฅผ ์ ํด์ค๋๋ค. ์ด๋ ๊ฒ ํ๊ณ ๋๋ฉด ์๊ฐํ๋ ์๋์ ๊ฐ์ด ๋ํ๋ฉ๋๋ค.
for ๋ฌธ์ ์ฌ์ฉํ์ง ์์ ๊ฒฝ์ฐ์ ๊ฐ์ ๊ฒฐ๊ณผ๊ฐ ๋ํ๋ฉ๋๋ค.
๐ ๋น์ฐํ for ๋ฌธ์ ์ฌ์ฉํ๋ฉด ์ผ์ผ์ด ํธ์ถํด์ฃผ๋ ๊ฒ๋ณด๋ค ์ฝ๋๋ฅผ ์ง๋ ์๊ฐ์ ์ธก๋ฉด์์ ํจ์จ์ ์ป์ ์ ์์ง๋ง, ์์ ๋ค๋ฅธ ํฌ์คํ ์์๋ ์ธ๊ธํ๋ฏ์ด ์ด ๋ฐฉ๋ฒ์ ์์ธ๋ก ๋ณ์๊ฐ ๋ง์ด ๋ฐ์ํ๋ ์์ ์ ๋๋ค(๋น์ฐํ ๋ด๊ฐ ์ ๋ชจ๋ฅด๋ ๋ถ๋ถ์ผ ์๋ ์๋ค. ์ฌ๋ฌ๊ฐ์ง ํํ๋ก ์๋ํด๋ณด๋ค๊ฐ ์ฑ๊ณตํ๋ฉด ์ง !!ํ๊ณ ํฌ์คํ ํ ์๊ฐ์ ๋๋คโฆ๐ )
๐ ๋ฐ์ดํฐ๋ถ์ ๊ณต๋ถ๋ฅผ ํ๋ค๋ณด๋ฉด ๋๋๊ณ ํ์ด์ฌ ๊ณต๋ถ๋ฅผ ํ๋ ๊ฒ์ด ์๋๋๋ผ๋ ์ด๋ฐ์ ๋ฐ ์ํฉ ์์์ ์์ฐ์ค๋ฝ๊ฒ ์์ฉํ๋ ๊ฒ ์กฐ๊ธ์ฉ ์ต์ํด์ง๋ ๊ฒ ๊ฐ์ต๋๋ค. ์ด๋ ๊ฒ ์ ๋ ๊ฒ ๊ณต๋ถํ๋ฉด์ ์ค๋ ฅ์ด ๋์์ผ๋ฉด ์ข๊ฒ ์ต๋๋ค๐.
Leave a comment