Python/Pandas&Numpy

pandas Tricks_14๐Ÿ‘‰๐Ÿป 'styling a dataframe' (Kevin by DataSchool)

metamong 2022. 4. 18.

๐Ÿคณ ์ €๋ฒˆ pandas tricks ์‹œ๊ฐ„์—๋Š” display ํ˜•ํƒœ๋ฅผ ์–ด๋–ป๊ฒŒ ๋ณด์ด๊ฒŒ ํ•  ๊ฒƒ์ธ์ง€์— ๋Œ€ํ•ด ๋ฐฐ์› ์—ˆ๋‹ค. ์ข€ ๋” flexibleํ•œ ๊ฐ•๋ ฅํ•œ dataframe styling์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๋ ค ํ•œ๋‹ค!

 

→ pandas์—๋Š” ์ด๋ฏธ ์ฃผ์–ด์ง„ dataframe ๋˜๋Š” series๋ฅผ CSS๋ฅผ ์ด์šฉํ•˜์—ฌ cutomized๋œ, ๋‹ค์–‘ํ•œ ๋””์ž์ธ + ํ‘œ์‹œ ์˜ต์…˜์„ ์ œ๊ณตํ•ด์ค€๋‹ค. 

โ‘  dictionary ํ˜•ํƒœ๋กœ format์— ์›ํ•˜๋Š” column๋ช…๊ณผ ๋ฐ”๋€” style์„ ์ง€์ •ํ•œ ์—ฌ๋Ÿฌ pair๋“ค์„ ์ง‘์–ด๋„ฃ์„ ์ˆ˜ ์žˆ๋‹ค

โ‘ก dataframe ์ „์ฒด์—์„œ ์ ์šฉ์‹œํ‚ค๋Š” ์—ฌ๋Ÿฌ method๋“ค์„ ์ง‘์–ด๋„ฃ์„ ์ˆ˜ ์žˆ๋‹ค

(์˜ˆ๋ฅผ ๋“ค๋ฉด hide_index() ๋ผ๋˜๊ฐ€ set_caption(), bar() ๋“ฑ๋“ฑ)

 

 

pandas Tricks_13๐Ÿ‘‰๐Ÿป 'change display options' (Kevin by DataSchool)

๐Ÿ•บ pandas & dataframe์€ ๋—„๋ ˆ์•ผ ๋—„ ์ˆ˜ ์—†๋Š” ๊ด€๊ณ„! ๐Ÿ•บ โ‰ช์ฃผ์–ด์ง„ dataframe์ด ์œก์•ˆ์ƒ ์–ด๋–ป๊ฒŒ ๋ณด์ด๊ฒŒ ํ•˜๋Š” ์ง€ ์—ฌ๋Ÿฌ ์„ค์ •์„ ํ†ตํ•ด ๋ฐ”๊ฟ”๋ณด์žโ‰ซ โ€ป ์—ฌ๊ธฐ์„œ ์ค‘์š”ํ•œ๊ฑด, data๋Š” internallyํ•˜๊ฒŒ ๋ฐ”๋€Œ์ง€ ์•Š๋Š”๋‹ค๋Š” ์  (์œก

sh-avid-learner.tistory.com

 

๐Ÿคน๐Ÿฟ‍โ™‚๏ธ ๊ด€๋ จ docu ๐Ÿคน๐Ÿฟ‍โ™‚๏ธ

.formats.style.Styler() docu

https://pandas.pydata.org/docs/reference/api/pandas.io.formats.style.Styler.html

 

- ์ด๋ฒˆ์—๋„ ์–ด๊น€์—†์ด titanic ์˜ˆ์ œ -

 

โ‘  ๋จผ์ € ์ธ์ž์— ์ง‘์–ด๋„ฃ์„ format_dict ํ˜•ํƒœ๋ฅผ ๋งŒ๋“ค์–ด ๊ฐ ์„ธ๋ถ€ column๋ณ„ ์–ด๋–ป๊ฒŒ ํ‘œํ˜„ํ•  ์ง€ ์„ค์ •ํ•œ๋‹ค

 

format_dict = {'age': '{:.0f}', #๋‚˜์ด๋Š” ์ž์—ฐ์ˆ˜๋กœ
               'fare': '${:.3f}',
               'class': lambda x:x.lower()
}

 

โ‘ก ์ง์ ‘ dataframe.style.format()์ดํ›„์— chaining method๋กœ ์ง‘์–ด๋„ฃ์„ ์—ฌ๋Ÿฌ method๋ฅผ ๊ฐ–๋‹ค ๋ถ™์ž„

 

(titanic.style.format(format_dict)
 .hide(axis='index')
 .background_gradient(subset ='fare', cmap='YlOrBr')
 .highlight_max('pclass', color='yellow')
 .highlight_null(subset = 'age', null_color='black')
 .bar('age', color='lightyellow', align='zero')
 .set_caption('Titanic Passengers data')
)

 

- ์™„์„ฑ! -

 

 

→ age๋Š” ์ •์ˆ˜ํ˜•, fare๋Š” ์•ž์— $๋ฅผ ๋ถ™์ด๊ณ  ์†Œ์ˆ˜์  ์…‹์งธ ์ž๋ฆฌ๊นŒ์ง€ ํ‘œํ˜„, class๋Š” ๋ชจ๋“  ๋ฌธ์ž ์†Œ๋ฌธ์žํ˜•์œผ๋กœ ๋ฐ”๊ฟˆ (dict ํ˜•ํƒœ๋กœ ์ง‘์–ด๋„ฃ์Œ)

hide๋กœ index column์€ display ์•ˆํ•˜๊ฒŒ ์„ค์ •

background_gradient๋กœ fare๊ฐ€ ๋†’์„์ˆ˜๋ก ์ข€ ๋” ์ง„ํ•œ ๋…ธ๋ž€์ƒ‰์œผ๋กœ ํ‘œํ˜„

highlight_max๋กœ pclass ์ œ์ผ ๋‚ฎ์€ ๋“ฑ๊ธ‰(์ˆซ์ž๋กœ๋Š” ๋†’์€๊ฒŒ ์—ฌ๊ธฐ์„œ๋Š” ์ œ์ผ ๋‚ฎ์€ ๋“ฑ๊ธ‰)์€ ๋…ธ๋ž€์ƒ‰ ์ƒ‰์น 

highlight_null๋กœ age๊ฐ€ ํ‘œ์‹œ๋˜์ง€ ์•Š์€ ์Šน๊ฐ์€ ๊ฒ€์ •์ƒ‰ ๋ฐฐ๊ฒฝ

bar๋กœ age ์ ๊ณ  ๋งŽ์Œ์„ ๋’ท๋ฐฐ๊ฒฝ ์ƒ‰๊น” ๊ธธ์ด๋กœ ํ‘œํ˜„

set_caption์œผ๋กœ ํ•ด๋‹น dataframe์˜ ์„ค๋ช…์„ ์œ„์— ๋ถ™์ž„

 

- ์ด ์™ธ์—๋„ ์ •๋ง ๋งŽ์€ ์„ค์ • option๋“ค์ด ์žˆ์œผ๋ฏ€๋กœ ์œ„ docu()์—์„œ ๋“ค์–ด๊ฐ€ ์ž…๋ง›์— ๋งž๊ฒŒ displayํ•ด๋ณด์ž! -

 

โ€ป ์‹ค์ œ data๋ฅผ internallyํ•˜๊ฒŒ ๋ฐ”๊พธ์ง€๋Š” ๋ชปํ•˜์ง€๋งŒ, โ‘ EDA๊ณผ์ •์—์„œ ์ง๊ด€์ ์œผ๋กœ data๋ฅผ ์ดํ•ดํ•˜๋Š” ๊ณผ์ •, โ‘ก๋ฐœํ‘œ์ž์˜ ์ž…์žฅ์—์„œ ์ข€ ๋” ์„ค๋“๋ ฅ์žˆ ์žˆ๋Š”, ์ „๋‹ฌ๋ ฅ ์žˆ๊ฒŒ ์„ค๋ช…์„ ์ „๋‹ฌํ•˜๋Š” ๊ณผ์ • - ์ด ๋‘ ๊ณผ์ •์„ ์œ„ํ•ด styling์€ ์ ์žฌ์ ์†Œ๋กœ ์“ฐ์ผ ์ˆ˜ ์žˆ์Œ โ€ป

 

* ์ถœ์ฒ˜1) https://towardsdatascience.com/style-pandas-dataframe-like-a-master-6b02bf6468b0

* ์ถœ์ฒ˜2) https://www.youtube.com/watch?v=RlIiVeig3hc 

๋Œ“๊ธ€