4 Fri

ํ˜„์—… ์‹ค๋ฌด์ž์—๊ฒŒ ๋ฐฐ์šฐ๋Š” Kaggle ๋จธ์‹ ๋Ÿฌ๋‹ ์ž…๋ฌธ

๊ณ ๊ธ‰ pandas ํ•จ์ˆ˜๋“ค - concat, groupby, query

concat

  • index๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์—ฌ๋Ÿฌ ๊ฐœ์˜ dataframe์„ ๋ณ‘ํ•ฉํ•œ๋‹ค

  • index๊ฐ€ ๋‹ค๋ฅผ ๊ฒฝ์šฐ df.rename() ์„ ์‚ฌ์šฉํ•ด ์ธ๋ฑ์Šค๋‚˜ ์ปฌ๋Ÿผ์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋‹ค

  • ๋‘ ๋ฐ์ดํ„ฐ ํ”„๋ ˆ์ž„์— ์„œ๋กœ ์—†๋Š” ๋ฐ์ดํ„ฐ๋Š” Nan ์œผ๋กœ ํ‘œํ˜„๋œ๋‹ค

  • axis = 0 : ๊ธฐ๋ณธ๊ฐ’์ด๋ฉฐ, ํ–‰ ๋ฐฉํ–ฅ โ†“ ์œผ๋กœ ๋ณ‘ํ•ฉํ•œ๋‹ค

  • axis = 1 : ์—ด ๋ฐฉํ–ฅ โ†’ ์œผ๋กœ ๋ณ‘ํ•ฉํ•œ๋‹ค

groupby(by=์ง‘๊ณ„๋Œ€์ƒ, axis=์ง‘๊ณ„์ถ•)

  • ์ธ๋ฑ์Šค๋‚˜ ์ปฌ๋Ÿผ์˜ ๊ฐ’ ๋ณ„๋กœ ๊ทธ๋ฃนํ•‘ํ•  ์ˆ˜ ์žˆ์œผ๋‚˜ ๋ณดํ†ต ์ธ๋ฑ์Šค๋กœ ๊ทธ๋ฃนํ•‘ํ•˜์—ฌ Aggregation(์ง‘๊ณ„)ํ•œ๋‹ค.

  • axis ๋Š” ์ƒ๋žต ๊ฐ€๋Šฅํ•˜๋ฉฐ ๊ธฐ๋ณธ ๊ฐ’์€ ํ–‰ ๋ฐฉํ–ฅ ์ง‘๊ณ„์ด๋‹ค.

  • ์ง‘๊ณ„ ์ดํ›„ sum, max, count, mean ๋“ฑ์˜ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

query(์ž‘์„ฑํ•œ ์ฟผ๋ฆฌ๋ฌธ)

  • dataframe์„ ์ฟผ๋ฆฌ๋ฌธ์œผ๋กœ ํ•„ํ„ฐ๋งํ•œ๋‹ค.

  • df.query('column == 5') ๋˜๋Š” df.query('column == "์šด์†ก"') ์ฒ˜๋Ÿผ ์“ธ ์ˆ˜ ์žˆ๋‹ค.

    • ์ˆซ์ž ๊ฐ™์€ ๊ฒฝ์šฐ๋Š” ๊ทธ๋ƒฅ ์“ฐ๋ฉฐ ๋ฌธ์ž์—ด์ธ ๊ฒฝ์šฐ๋Š” ํฐ ๋”ฐ์˜ดํ‘œ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

    • ์ž‘์€ ๋”ฐ์˜ดํ‘œ ์•ˆ and ๋‚˜ or ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๋ฌถ์„ ์ˆ˜ ์žˆ๋‹ค.

๊ณ ๊ธ‰ pandas ํ•จ์ˆ˜ ์‹ค์Šต

<์—ฐ์Šต๋ฌธ์ œ >

my_concat_df์—์„œ ์—…์ข…์ด '์Œ์‹๋ฃŒ ๋ฐ ๋‹ด๋ฐฐ'์ธ ๋ ˆ์ฝ”๋“œ๋ฅผ ์ถœ๋ ฅํ•ด๋ณด์„ธ์š”

my_concat_df.query('Sector == "์Œ์‹๋ฃŒ_๋ฐ_๋‹ด๋ฐฐ"')

๊ทธ๋ž˜ํ”„๋ฅผ ๊ทธ๋ฆฌ๋Š” plotting ๋„๊ตฌ - matplotlib, seaborn

ํŒ๋‹ค์Šค์—๋Š” matplotlib์œผ๋กœ ๊ทธ๋ž˜ํ”„๋ฅผ ๊ทธ๋ฆฌ๋Š” ๊ธฐ๋Šฅ์ด ๋‚ด์žฅ๋˜์–ด ์žˆ๋‹ค.

  • Series.plot()

  • DataFrame.plot()

์ฃผ์š” Plot ์˜ต์…˜

  • figsize : ๊ทธ๋ž˜ํ”„ ํฌ๊ธฐ

  • kind : ๊ทธ๋ž˜ํ”„ ์ข…๋ฅ˜

    • ex) scatter, bar

  • title : ์ œ๋ชฉ

  • xlabel : x์ถ• ์ œ๋ชฉ

  • ylabel : y์ถ• ์ œ๋ชฉ

  • legend : ๋ฒ”๋ก€

  • grid : ๊ฒฉ์ž

    • grid=True : ๊ทธ๋ž˜ํ”„ ๋’ค์— ๋ฐฑ์ง€๊ฐ€ ์•„๋‹Œ ๊ฒฉ์ž๊ฐ€ ์ƒ๊ธด๋‹ค

  • rot : ๋ˆˆ๊ธˆ ํšŒ์ „

  • subplots : ๋ณต์ˆ˜ ๊ทธ๋ž˜ํ”„

    • subplots=True : ์›๋ž˜๋Š” ํ•œ ๊ทธ๋ž˜ํ”„์•ˆ์— ์—ฌ๋Ÿฌ ์„ ์ด ๊ทธ์–ด์ง€๊ฒŒ ๋˜๋Š”๋ฐ, subplots์ด True๊ฐ€ ๋˜๋ฉด ๊ฐ์ž์˜ ๊ทธ๋ž˜ํ”„์— ํ•œ ์„ ์ด ๊ทธ์–ด์ง€๊ฒŒ ๋œ๋‹ค

seaborn์œผ๋กœ ๋ฐ์ดํ„ฐ ๋ถ„ํฌ ์‚ดํŽด๋ณด๊ธฐ

  • ๋ฐ์ดํ„ฐ์˜ ํ†ต๊ณ„์ ์ธ ๋ถ€๋ถ„์„ ์‚ดํŽด๋ณผ ๋•Œ matplotlib์— ๋น„ํ•ด ์‰ฝ๊ณ  ๊ฐ„ํŽธํ•˜๋‹ค.

  • ๋ณดํ†ต sns ์ด๋ผ๋Š” ์•ฝ์–ด๋กœ ์‚ฌ์šฉํ•œ๋‹ค

    • import seaborn as sns

  • sns.load_dataset('tips')

    • ๋‚ด์žฅ ๋ฐ์ดํ„ฐ์…‹ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ

  • sns.countplot

    • ๋ฐ์ดํ„ฐ ์ˆ˜๋ฅผ ์„ธ๋Š” countplot

  • sns.boxplot

    • 4๋ถ„์œ„ ๋„ํ‘œ

  • sns.scatterplot

    • ๋‘ ๋ณ€์ˆ˜ ๊ด€๊ณ„๋ฅผ ์ ์ฐ์–ด ๊ทธ๋ฆฌ๊ธฐ

  • sns.jointplot

    • ๋‘ ๋ณ€์ˆ˜ ๊ด€๊ณ„๋ฅผ ์ ๊ณผ ๋ถ„ํฌ๋กœ ๋ณด๊ธฐ

  • hue ์ธ์ž ์‚ฌ์šฉ

    • ๊ทธ๋ž˜ํ”„ ๋‚ด์—์„œ ๋˜ ๋‹ค๋ฅธ group์œผ๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๋‹ค.

  • sns.violinplot

    • ๋ฐ”์ด์˜ฌ๋ฆฐ ๋ชจ์–‘์˜ ๊ทธ๋ž˜ํ”„

  • sns.distplot

    • ๋ฐ์ดํ„ฐ์˜ ๋ถ„ํฌ๊ฐ€ ๊ทธ๋ ค์ง„ ๋ง‰๋Œ€ ๊ทธ๋ž˜ํ”„

    • kde=True : ์„ ๊ทธ๋ž˜ํ”„๊ฐ€ ์ถ”๊ฐ€๋œ๋‹ค

    • rug=True : ๋ฐ์ดํ„ฐ์˜ ๋ถ„ํฌ๋„๊ฐ€ ์ถ”๊ฐ€๋œ๋‹ค.

matplotlib, seaborn ์‹ค์Šต

<์—ฐ์Šต๋ฌธ์ œ>

trafic_data์—์„œ '์ค‘๊ณ ๋‚˜๋ผ'์˜ ์ผ์ž๋ณ„ Bar ๊ทธ๋ž˜ํ”„๋ฅผ ๊ทธ๋ ค๋ณด์„ธ์š”

trafic_data.loc[:,'์ค‘๊ณ ๋‚˜๋ผ'].plot(kind='bar')

<์—ฐ์Šต๋ฌธ์ œ>

์„ฑ๋ณ„ ๋ณ„๋กœ, ํŒ์„ ์ค€ ํšŸ์ˆ˜๋ฅผ ์ฐจํŠธ๋กœ ๊ทธ๋ ค๋ณด์„ธ์š”

sns.countplot(data=tips, x='sex');

Last updated

Was this helpful?