๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
์–ธ์–ด/Python ๊ธฐ์ดˆ

ํŒŒ์ด์ฌ ๋ฌธ๋ฒ• 5

by ์ œ๋ฃฝ 2023. 7. 20.
728x90
๋ฐ˜์‘ํ˜•

2022. 1. 19

๊ฐœ์ธ์ ์œผ๋กœ ํ•จ์ˆ˜ ์ดํ•ด๋“ค์ด ์ข€ ์•ˆ๋œ ํŒŒํŠธ๋ผ๊ณ  ํ• ๊นŒ apply ํ•จ์ˆ˜ ์‘์šฉํ•˜๋Š”๊ฑฐ ์•„์ง ์ž˜ ๋ชจ๋ฅด๊ฒ ๋‹ค.

๋ฐ์ดํ„ฐ ํ”„๋ ˆ์ž„๋“ค์„ ๊ฐ€์ง€๊ณ  ๋ถ„์„ํ•˜๋Š” ๋ถ€๋ถ„์˜ ์—ฐ์žฅ์„ 

์•ž ๋ถ€๋ถ„์—์„œ ๋ฐฐ์› ๋˜ ๋‚ด์žฅํ•จ์ˆ˜๋“ค์„ ํ™œ์šฉํ•˜๊ณ , lambda ์ด๊ฒƒ์ €๊ฒƒ ์‘์šฉํ•˜๋Š” ์ฃผ์ฐจ์— ์ด๋ฅด๋ €๋‹ค๊ณ  ๋ณด๋ฉด ๋ ๋“ฏ.

ํ•˜์ง€๋งŒ! ์‘์šฉ์„ ํ•ด๋ณด๊ธฐ์—” ์•„์ง ์•ž ๋ถ€๋ถ„๋“ค์„ ์ž˜ ๋ชฐ๋ผ์„œ. ๋„ค..

 

 

1.Groupby Aggregation

1-1) groupby()

: ๋ฐ์ดํ„ฐ๋ฅผ ๊ทธ๋ฃน๋ณ„๋กœ ๋‚˜๋ˆ„๊ณ  ์ง‘๊ณ„ํ•จ์ˆ˜๋ฅผ ์ ์šฉํ•ด ๊ฒฐ๊ณผ๋ฅผ ํ•ฉ์ณ์ฃผ๋Š” ํ•จ์ˆ˜

: df.groupby(‘key’)[‘value’].aggregateํ•จ์ˆ˜

์ž, ์ด๊ฒŒ ๋ฌด์Šจ ๋ง์ผ๊นŒ. ์‚ฌ์ง„์„ ๋ณด๋ฉด ์‰ฝ๊ฒŒ ํŒŒ์•…์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

column์— ํ•ด๋‹นํ•˜๋Š” ๊ฐ’๋“ค์ด ๋ง‰ ์žˆ๊ฒ ์ฃ ? ๊ทธ๋Ÿผ ๊ทธ ๊ฐ’๋“ค์„ ๊ฐ€์ง€๊ณ  ๋งŒ๋“ค๊ณ  ์‹ถ์€ ๊ฐ’์— ๋Œ€ํ•œ ํ•จ์ˆ˜๋ฅผ ์ ์šฉ์‹œํ‚ค๋Š”๊ฑฐ์ž„.

์ง‘๊ณ„ํ•จ์ˆ˜๊ฐ€ (sum, std, ๋ญ ์ด๋Ÿฐ ๊ฒƒ๋“ค) -> ๋ง๊ทธ๋Œ€๋กœ ์ง‘๊ณ„ํ•ด์ฃผ๋Š” ํ•จ์ˆ˜. ํ†ต๊ณ„์—ฐ์‚ฐ๊ณผ ๊ด€๋ จ๋œ ํ•จ์ˆ˜๋ผ๊ณ  ๋ณด๋ฉด ๋จ.

 

ex) ๋‘๊ฐ€์ง€ ์˜ˆ์‹œ๋ฅผ ๋“ค์–ด๋ณด์ž๋ฉด

: df.groupby('CUS_ID')['SITE'].unique().reset_index()

-> cusid๋ณ„ , site์˜ ๋‹ค์–‘์„ฑ์„ ๊ตฌํ•ด๋ผ!์˜ ์˜๋ฏธ

: data.groupby('ID')['๊ตฌ๋งค๊ธˆ์•ก'].sum()

-> id๋ณ„ ๊ตฌ๋งค๊ธˆ์•ก์˜ ํ•ฉ์„ ๊ตฌํ•ด๋ผ

๋Œ€ํ‘œ์‚ฌ์ง„ ์‚ญ์ œ

์‚ฌ์ง„ ์„ค๋ช…์„ ์ž…๋ ฅํ•˜์„ธ์š”.

1-2) agg ํ•จ์ˆ˜

 

# agg()๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ณต์ˆ˜์˜ ํ•จ์ˆ˜ ์ ์šฉ

data.groupby('ID')['๊ตฌ๋งค๊ธˆ์•ก'].agg(['mean','count'])

-> mean๊ณผ count ๊ฐ’๋“ค์„ ๋‹ค ์•Œ๋ ค์ค˜์š”!

 

# agg()์•ˆ์—๋Š” ์ผ๋ฐ˜์ ์ธ ํ•จ์ˆ˜๊ฐ€ ๋ชจ๋‘ ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ์Œ

data.groupby('ID')['๊ตฌ๋งค๊ธˆ์•ก'].agg(lambda x : x.max()- x.min()).reset_index()

-> lambda ํ•จ์ˆ˜ ๋งŒ๋“ค์–ด์„œ ์ž๊ธฐ๊ฐ€ ์›ํ•˜๋Š”๋Œ€๋กœ ์ ์šฉ ๊ฐ€๋Šฅ.

 

# ์—ฌ๋Ÿฌ ํ•จ์ˆ˜๋ฅผ ์ ์šฉํ•  ๋•Œ column์˜ ์ด๋ฆ„์„ ์ •ํ•ด์ค„ ์ˆ˜ ์žˆ์Œ

#๊ตฌ๋งค๊ธˆ์•ก๋ณ„๋กœ max์™€ min์„ ์ ์–ด๋ผ

data.groupby('ID')['๊ตฌ๋งค๊ธˆ์•ก'].agg([('์ตœ๋Œ€๊ฐ’','max'),('์ตœ์†Œ๊ฐ’','min')]).reset_index()

-> ์ปฌ๋Ÿผ ์•ˆ์—์„œ ๋˜ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ์Œ. ๋ถ€์ œ๋ชฉ์œผ๋กœ ์ตœ๋Œ€๊ฐ’, ์ตœ์†Œ๊ฐ’์„ ๋งŒ๋“ค๊ณ  ๊ฑฐ๊ธฐ์— ํ•ด๋‹นํ•˜๋Š” ๊ฐ’์„ ์ ๋Š” ํ˜•์‹.

 

# column์„ ๋ฝ‘์•„์˜ค์ง€ ์•Š๊ณ  ๊ฐ๊ฐ์˜ column์— ๋‹ค๋ฅธ ํ•จ์ˆ˜๋ฅผ ์ ์šฉ ๊ฐ€๋Šฅ

#๊ตฌ๋งค์ˆ˜๋Ÿ‰์€ mean์œผ๋กœ ๊ตฌ๋งค๊ธˆ์•ก์€ max

data.groupby('ID').agg({'๊ตฌ๋งค์ˆ˜๋Ÿ‰' : 'mean', '๊ตฌ๋งค๊ธˆ์•ก' : 'max'}).reset_index()

 

 

 

2.Pivot Table

: ๊ทธ๋‹ˆ๊นŒ ๊ทธ๋ƒฅ ๋‚ด ๋งˆ์Œ๋Œ€๋กœ ํ‘œ๋ฅผ ๋‹ค์‹œ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ์ฝ”๋“œ์ž„.

์™”๋‹ค๋ฆฌ ๊ฐ”๋‹ค๋ฆฌ ์‘์šฉ์ด ๋œ๋‹ค๋Š” ๊ฒƒ.

 

pd.pivot_table(data, index = ํ–‰ column, columns = ์—ด column, values = ๊ณ„์‚ฐ column, aggfunc = ์ง‘๊ณ„ํ•จ์ˆ˜, fill_value = ๊ฒฐ์ธก๊ฐ’ ๋Œ€์ฒด)

์ด๊ฒŒ ๋ฌด์Šจ ๋ง์ด๋ƒ

๊ฐ„๋‹จํ•จ.

ex) ๊ณ ๊ฐ์˜ ๊ตฌ๋งค์ง€์—ญ๋ณ„ ์ด ๊ตฌ๋งค ์ˆ˜๋Ÿ‰์„ ๊ตฌํ•ด๋ผ

* ์—ฌ๊ธฐ์„œ ~์˜ ~๋ณ„๊ณผ ๊ด€๋ จํ•œ ๋ฌธ์ œ์ด๋ฉด pivot table์„ ์“ฐ๋ฉด๋˜๊ณ , ~๋ณ„์— ๊ด€ํ•œ ๋ฌธ์ œ์ด๋ฉด groupby๋ฅผ ์“ฐ๋ฉด ๋œ๋‹ค๊ณ  ํ•œ๋‹ค

์—ฌ๊ธฐ์„œ๋Š” ~์˜ ~๋ณ„์ด๋ฏ€๋กœ pivot table๋กœ ์ ‘๊ทผ์„ ํ•˜๋Š”๊ฑฐ๊ณ ,

1. index๋Š” ๊ณ ๊ฐ์„ ์˜๋ฏธ

2. columns๋Š” ๊ตฌ๋งค์ง€์—ญ์„ ๋งํ•˜๊ฒ ์ฃ ?

3. values๋Š” ํ•ด๋‹น ๊ฐ’์„ ๋งํ•˜๋‹ˆ๊น '๊ตฌ๋งค ์ˆ˜๋Ÿ‰'์„ ์ ์œผ๋ฉด ๋œ๋‹ค.

4. aggfunc '์ด' =sum์„ ์จ์ฃผ๋ฉด ๋จ,

5. fill_value(x) ๊ฒฐ์ธก๊ฐ’์€ ๋ญ๋กœ ์จ์ค„๊ฑฐ๋ƒ์— ๋”ฐ๋ผ์„œ x์•ˆ์— ๊ฐ’์— ๋„ฃ์–ด์ฃผ๋ฉด ๋œ๋‹ค.

: pd.pivot_table(data, values = '๊ตฌ๋งค์ˆ˜๋Ÿ‰', index = 'ID', columns = '๊ตฌ๋งค์ง€์—ญ', aggfunc = np.sum, fill_value = 0)

๋Œ€ํ‘œ์‚ฌ์ง„ ์‚ญ์ œ

์‚ฌ์ง„ ์„ค๋ช…์„ ์ž…๋ ฅํ•˜์„ธ์š”.

* margins=True ์„ ์จ์ฃผ๋ฉด ์ด ํ•ฉ๊ณ„๋„ ๋‚˜์˜จ๋‹ค.

: pd.pivot_table(data, values = '๊ตฌ๋งค๊ธˆ์•ก', index = 'ID', columns = '์ƒํ’ˆ๋Œ€๋ถ„๋ฅ˜๋ช…', aggfunc = np.sum, fill_value = 0, margins = True)

์‚ฌ์ง„ ์‚ญ์ œ

์‚ฌ์ง„ ์„ค๋ช…์„ ์ž…๋ ฅํ•˜์„ธ์š”.

 

* divide ์จ์ฃผ๋ฉด ๋น„์œจ์ด ๋‚˜์˜ด.

: p = pd.pivot_table(data, values = '๊ตฌ๋งค๊ธˆ์•ก', index = 'ID', columns = '์ƒํ’ˆ๋Œ€๋ถ„๋ฅ˜๋ช…', aggfunc = np.sum, fill_value = 0, margins = True)

p.divide(p['All'],axis=0)

๋Œ€ํ‘œ์‚ฌ์ง„ ์‚ญ์ œ

์‚ฌ์ง„ ์„ค๋ช…์„ ์ž…๋ ฅํ•˜์„ธ์š”.

 

 

โ˜…โ˜…โ˜…โ˜…โ˜…โ˜…โ˜…โ˜…โ˜…โ˜… ๊ฐœ์ธ์ ์œผ๋กœ ์‘์šฉ ์ž˜ ๋ชปํ•˜๊ฒ ๋Š” ํ•จ์ˆ˜ โ˜…โ˜…โ˜…โ˜…โ˜…โ˜…โ˜…โ˜…โ˜…โ˜…

 

 

3.Apply์™€ Applymap

3-1) apply()

: dataframe์ด๋‚˜ series์— ๋Œ€ํ•ด์„œ ํ–‰ ๋˜๋Š” ์—ด ๋‹จ์œ„๋กœ ํ•จ์ˆ˜๋ฅผ ์ ์šฉํ•˜๋Š” ํ•จ์ˆ˜.

: dataframe.apply(function)

-> ์ฃผ๋กœ column ๋‹จ์œ„๋กœ ์‚ฌ์šฉ

 

๋Œ€ํ‘œ์‚ฌ์ง„ ์‚ญ์ œ

์‚ฌ์ง„ ์„ค๋ช…์„ ์ž…๋ ฅํ•˜์„ธ์š”.

์ด๋ ‡๊ฒŒ๋งŒ ๋ณด๋ฉด ์‰ฌ์›€. ๊ตฌ๋งค๊ธˆ์•ก์— ๋Œ€ํ•œ ํ‰๊ท ์„ ๋‚ด๊ณ , ์ด๊ฑฐ๋ฅผ int๋กœ applyํ•จ์ˆ˜์— lambda ํ•จ์ˆ˜ ์จ์„œ int๋กœ ๋‹ค ๋ฐ”๊ฟ”์ค˜๋ผ์˜ ์˜๋ฏธ.

ํ•˜์ง€๋งŒ? ์–˜๋ฅผ ์‘์šฉํ•˜๋ผ๊ณ  ํ•˜๋ฉด ๊ฑฐ๊ธฐ์„œ ๋ง‰ํžŒ๋‹ค๋Š”.. ๊ฒฐ๊ตญ ๊ณผ์ œ 2๋ฒˆ์„ ์ œ์‹œ๊ฐ„์— ํ•˜์ง€ ๋ชปํ–ˆ๋‹ค. apply๋ฅผ ์จ์„œ ํ•˜๋ผ๋Š” ํžŒํŠธ๋กœ ์‘์šฉ ๋ชปํ–ˆ์Œ. ใ… 

ํ”ผ๋“œ๋ฐฑ ๋ณด๊ธฐ ์ „์— ํ•œ๋ฒˆ ๋” ํ•ด๋ณผ๊ฑฐ์ž„.!!

 

 

3-2) applymap() -> ์ž˜ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Œ

: dataframe์˜ ์š”์†Œ ์ „์ฒด์— ์ผ๊ด„์ ์ธ ํ•จ์ˆ˜๋ฅผ ์ ์šฉํ•˜๋Š” ํ•จ์ˆ˜

: dataframe.applymap(function)

=> ์ฃผ๋กœ lambda์™€ ํ•จ๊ป˜ ์‚ฌ์šฉ

 

๋Œ€ํ‘œ์‚ฌ์ง„ ์‚ญ์ œ

์‚ฌ์ง„ ์„ค๋ช…์„ ์ž…๋ ฅํ•˜์„ธ์š”.

๋ชจ๋“  ์ปฌ๋Ÿผ์— ์ ์šฉ์‹œ์ผœ์ฃผ๋Š”๊ฑฐ๋ผ๊ณ  ๋ณด๋ฉด ๋จ. ๋ˆˆ์—๋Š” int๋กœ ๋ณด์ด๊ฒ ์ง€๋งŒ

data ํƒ€์ž…์„ ๋ณด๋ฉด?

 

๋Œ€ํ‘œ์‚ฌ์ง„ ์‚ญ์ œ

๋‹ค ๋ฐ”๋€ ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

4.Datetime

: pandas์—์„œ ์‹œ๊ณ„์—ด ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฃจ๊ธฐ ์œ„ํ•ด์„œ ๋งŒ๋“  ์ž๋ฃŒํ˜•

# datetime์œผ๋กœ ์ž๋ฃŒํ˜• ๋ฐ”๊ฟ”์ฃผ๊ธฐ

: data['๊ตฌ๋งค์ผ์ž'] = pd.to_datetime(data.๊ตฌ๋งค์ผ์ž, format = '%Y%m%d%h%m%s')

 

์ดˆ ๋‹จ์œ„๊นŒ์ง€๋กœ๋„ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๋‹ค.

๋Œ€ํ‘œ์‚ฌ์ง„ ์‚ญ์ œ

์˜ˆ๋ฅผ ๋“ค๋ฉด ์ด๋Ÿฐ๊ฑฐ.

 

+ ๋ถ€๊ฐ€์ ์ธ ๊ฒƒ๋“ค.

to_datetime(arg) : arg์˜ ์ž๋ฃŒํ˜•์„ datetime์œผ๋กœ ๋ฐ”๊ฟ”์ฃผ๋Š” ํ•จ์ˆ˜

data.dt.year : datetimeํ˜•์ธ data์˜ ์—ฐ๋„๋ฅผ ์•Œ๋ ค์ฃผ๋Š” ํ•จ์ˆ˜

data.dt.month : datetimeํ˜•์ธ data์˜ ์›”์„ ์•Œ๋ ค์ฃผ๋Š” ํ•จ์ˆ˜

data.dt.day : datetimeํ˜•์ธ data์˜ ์ผ์„ ์•Œ๋ ค์ฃผ๋Š” ํ•จ์ˆ˜

data.dt.dayofweek : datetimeํ˜•์ธ data์˜ ์š”์ผ์„ int๋กœ ์•Œ๋ ค์ฃผ๋Š” ํ•จ์ˆ˜

data.dt.day_name() : datetimeํ˜•์ธ data์˜ ์š”์ผ์„ str๋กœ ์•Œ๋ ค์ฃผ๋Š” ํ•จ์ˆ˜

ex)

 

๋Œ€ํ‘œ์‚ฌ์ง„ ์‚ญ์ œ

์‚ฌ์ง„ ์„ค๋ช…์„ ์ž…๋ ฅํ•˜์„ธ์š”.

 

 

-------------------------------5์ฃผ์ฐจ ๊ณผ์ œ ํ”ผ๋“œ๋ฐฑ--------------------------------

1.

๋Œ€ํ‘œ์‚ฌ์ง„ ์‚ญ์ œ

๋ชฐ๋ž๋˜ ์‚ฌ์‹ค

๊ฒฐ์ธก์น˜๋ฅผ 0์œผ๋กœ ๋ฐ”๊ฟ”์ค€๋‹ค๊ณ ํ•ด์„œ ๊ฒฐ์ธก์น˜๊ฐ€ ์‚ฌ๋ผ์ง€๋Š”๊ฒŒ ์•„๋‹ˆ์—ˆ๋‹ค.

inplace=True๋ฅผ ์“ฐ๋˜์ง€ df_ST_TIME=~์œผ๋กœ ํ•œ๋ฒˆ ๋” ์ •์˜๋ฅผ ํ•ด์ค˜์•ผ๋œ๋‹ค.

 

2.

๋Œ€ํ‘œ์‚ฌ์ง„ ์‚ญ์ œ

apply ํ•จ์ˆ˜ ์ ์šฉํ•˜๋Š” ๋ฌธ์ œ

์ด๊ฑฐ ์ฐธ ๋ญ”๊ฐ€ ๋ณต์žกํ•  ๊ฒƒ ๊ฐ™์•˜๋Š”๋ฐ ํ’€์ด๋ณด๋ฉด์„œ ํ’€์–ด๋ณด๋‹ˆ๊น ๊ฐ„๋‹จํ–ˆ๋‹ค.

gender๋ผ๋Š” ์—ด์„ ์ถ”๊ฐ€ํ• ๊ฑด๋ฐ, group์— ์žˆ๋Š” ์—ด๋“ค ์ค‘์—์„œ 0๋ฒˆ ์œ„์น˜์— ์žˆ๋Š” ์• ๋“ค์„ gender์— ๋„ฃ์„๊ฑฐ๋‹ค!์˜ ์˜๋ฏธ

๊ฐ„๋‹จํ–ˆ๋‹ค,

๊ทธ๋ฆฌ๊ณ  ๋‚˜๋จธ์ง€ age์˜ ๊ฒฝ์šฐ๋Š” 1:์ด์ƒ์ธ ์• ๋“ค์„ ๋„ฃ๊ฒ ๋‹ค!๋ผ๊ณ  ์ •์˜ํ•ด์ฃผ๊ณ , group์ด๋ผ๋Š” ์—ด์„ ์ง€์šฐ๋ผ๊ณ  ํ–ˆ์œผ๋‹ˆ inplace=True์จ์„œ ์—†์• ์ฃผ๋ฉด ๋์ž„.

๊ฐ„๋‹จํ•œ๊ฑธ ๋ช‡์‹œ๊ฐ„๋™์•ˆ ๊ณ ๋ฏผ๋งŒ ํ–ˆ๋‹ค.

 

๋Œ€ํ‘œ์‚ฌ์ง„ ์‚ญ์ œ

์‚ฌ์ง„ ์„ค๋ช…์„ ์ž…๋ ฅํ•˜์„ธ์š”.

๋‚ด๊ฐ€ ํ•˜๊ณ ์ž ํ–ˆ๋˜ ๋ฐฉ์‹์€ ํ•จ์ˆ˜์‹์„ ๋งŒ๋“ค๊ณ  ์ด๊ฑฐ๋ฅผ apply์— ์ ์šฉ์‹œํ‚ค๋ ค๊ณ  ํ–ˆ๋˜๊ฑด๋ฐ

์ €๊ธฐ์„œ ์ž˜๋ชป ์ ‘๊ทผํ•œ ์ด์œ ๋Š” ์ด๋ฏธ M40, ๊ทธ๋‹ˆ๊นŒ group์ด๋ผ๋Š” ์—ด์€ ๋ฌธ์žํ˜•์ด๊ธฐ ๋•Œ๋ฌธ์— str, int๋กœ ๋‚˜๋ˆ ์„œ ๋„ฃ์–ด๋ผ ๋ผ๋Š” ์˜๋ฏธ๊ฐ€ ํ•„์š” ์—†๋‹ค๋Š” ๊ฒƒ.

์ด ์ ์„ ๊ฐ„๊ณผํ–ˆ๋‹ค.

 

3.

๋Œ€ํ‘œ์‚ฌ์ง„ ์‚ญ์ œ

์‚ฌ์ง„ ์„ค๋ช…์„ ์ž…๋ ฅํ•˜์„ธ์š”.

์–œ ์ƒ๋žต

 

4.

๋Œ€ํ‘œ์‚ฌ์ง„ ์‚ญ์ œ

์‚ฌ์ง„ ์„ค๋ช…์„ ์ž…๋ ฅํ•˜์„ธ์š”.

groupby ํ™œ์šฉํ–ˆ๊ณ , (~๋ณ„)์ด๋ฏ€๋กœ?

๊ฑฐ๊ธฐ์„œ size ์•”์ˆ˜ ์‚ฌ์šฉํ•˜๋ผ๊ณ  ํ–ˆ์œผ๋‹ˆ ์ €๋ ‡๊ฒŒ ์จ์ฃผ๋ฉด ใ…‡ใ…‡

+ ์ถ”๊ฐ€์ ์œผ๋กœ ๋ฐ์ดํ„ฐ ๋ณด๋Š” ๋ฒ•

 

๋Œ€์ฒด์ ์œผ๋กœ ๋‚จ์„ฑ์ด ์—ฌ์„ฑ๋ณด๋‹ค ์‚ฌ์ดํŠธ์— ๋” ๋งŽ์ด ๋“ค์–ด๊ฐ€๋ณธ๋‹ค๋Š”๊ฑธ ์•Œ ์ˆ˜ ์žˆ๊ณ ,

20๋Œ€ ์ค‘์—์„œ๋Š” ๋‚จ์„ฑ๋ณด๋‹ค ์—ฌ์„ฑ์ด ๋” ๋งŽ์ด ๋“ค์–ด๊ฐ€๋ณธ๋‹ค๋Š”๊ฑธ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค!

 

5.

๋Œ€ํ‘œ์‚ฌ์ง„ ์‚ญ์ œ

์‚ฌ์ง„ ์„ค๋ช…์„ ์ž…๋ ฅํ•˜์„ธ์š”.

agg ํ™œ์šฉํ•ด์„œ ํ•œ๋ฒˆ์— ๋ณผ ์ˆ˜ ์žˆ๋„๋ก.

 

๋Œ€ํ‘œ์‚ฌ์ง„ ์‚ญ์ œ

์—ฌใ…•๊ธฐ์„œ ์ด ๋ฐฉ๋ฒ• ์“ฐ๋Š”๊ฑฐ ํ•˜๋‚˜ ํš๋“

๋Œ€ํ‘œ์‚ฌ์ง„ ์‚ญ์ œ

์‚ฌ์ง„ ์„ค๋ช…์„ ์ž…๋ ฅํ•˜์„ธ์š”.

+ ๋‚ด๊ฐ€ ํ’€๊ณ ์ž ํ–ˆ๋˜ ๋ฐฉ์‹์—์„œ ํ”ผ๋“œ๋ฐฑ

 

#์ด๋ฏธ ๋‚ด๊ฐ€ ์ •์˜๋‚ด๋ฆฐ st_time์€ CUS_ID๋ณ„๋กœ ์ •๋ฆฌ๋˜์–ด์žˆ์Œ.

#ํ•˜์ง€๋งŒ ์ •๋ฆฌ๋˜์–ด์žˆ๋Š”๊ฑธ ํ•œ๋ฒˆ ๋” CUS_ID ๊ธฐ์ค€์œผ๋กœ ์ •๋ฆฌํ•˜๋ ค๊ณ  ํ–ˆ๊ธฐ์— ์˜ค๋ฅ˜!

 

6.

๋Œ€ํ‘œ์‚ฌ์ง„ ์‚ญ์ œ

์‚ฌ์ง„ ์„ค๋ช…์„ ์ž…๋ ฅํ•˜์„ธ์š”.

unique ํ•จ์ˆ˜๋Š” ๊ฐœ์ˆ˜๋ฅผ ์„ธ์–ด์ฃผ๋Š”๊ฒŒ ์•„๋‹ˆ๋ผ ๊ทธ ๊ฐ’์„ ๋ณด์—ฌ์ค€๋‹ค

 

๋Œ€ํ‘œ์‚ฌ์ง„ ์‚ญ์ œ

์‚ฌ์ง„ ์„ค๋ช…์„ ์ž…๋ ฅํ•˜์„ธ์š”.

๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— nunique๋ผ๋Š” ํ•จ์ˆ˜ ์‚ฌ์šฉํ•ด์„œ ๊ฐœ์ˆ˜ ํŒŒ์•…ํ•˜๊ธฐ.

 

7.

๋Œ€ํ‘œ์‚ฌ์ง„ ์‚ญ์ œ

์‚ฌ์ง„ ์„ค๋ช…์„ ์ž…๋ ฅํ•˜์„ธ์š”.

apply ํ•จ์ˆ˜ ์จ์ฃผ๊ณ , ์•ˆ์— lambda ํ•จ์ˆ˜๋กœ ๋งŒ๋“ค์–ด์คŒ.

์ € month ์—ด ์•ˆ์— 345๊ฐ€ ์žˆ์œผ๋ฉด ๋ด„์„ ์ถœ๋ ฅํ•˜๊ณ  678์ด๋ฉด ์—ฌ๋ฆ„,91011์ด๋ฉด ๊ฐ€์„, ๊ทธ๊ฒƒ๋„ ์•„๋‹ˆ๋ฉด ๊ฒจ์šธ ์ถœ๋ ฅํ•ด๋ผ!

๊ทธ๋ฆฌ๊ณ  ๊ทธ๊ฑฐ์˜ ํ‰๊ท ์„ ๋‚˜ํƒ€๋‚ด์„ธ์š”~

 

8.

๋Œ€ํ‘œ์‚ฌ์ง„ ์‚ญ์ œ

์‚ฌ์ง„ ์„ค๋ช…์„ ์ž…๋ ฅํ•˜์„ธ์š”.

value_counts๋ฅผ ์จ์ฃผ๋ฉด ์ข…๋ฅ˜๊ฐ€ ๋งŽ์€ ๊ฒƒ๋ถ€ํ„ฐ ์ญˆ๋ฃจ๋ฃฉ ๋‚˜์—ด๋จ!

 

+ 1. ๊ฑฐ๊ธฐ์„œ index 10๊ฐœ๋ฅผ ๋ฝ‘์•„์„œ ๋ฐ”๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ๊ณ 

+2. ์ผ๋‹จ ๋‹ค ์ •๋ ฌํ•œ ๋‹ค์Œ์— ๊ฑฐ๊ธฐ์„œ index 10๊ฐœ ์„ ์ •ํ•ด์ฃผ๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ๊ณ 

์ฝ”๋”ฉ์— ์ •๋‹ต์€ ์—†์œผ๋‹ˆ๊น

 

ํ•˜์ง€๋งŒ ์ผ๋‹จ ์˜์ƒ๋Œ€๋กœ ํ•ด๋ด„

 

๋Œ€ํ‘œ์‚ฌ์ง„ ์‚ญ์ œ

์‚ฌ์ง„ ์„ค๋ช…์„ ์ž…๋ ฅํ•˜์„ธ์š”.

์ผ๋‹จ ์œ„์ฒ˜๋Ÿผ pivot_table ์‚ฌ์šฉํ•ด์ค˜์„œ ๋ฐ์ดํ„ฐํ”„๋ ˆ์ž„ ํ•˜๋‚˜ ๋งŒ๋“ค์–ด์ฃผ๊ณ  ๋งŒ๋“ค์–ด์ง„ BACT_NM_SITE_CNT์„ ๋ณด๋ฉด

์ €๊ธฐ์— ๊ฐ€๋‚˜๋‹ค ์ˆœ์„œ๋กœ ์ •๋ ฌ์ด ๋˜์–ด์žˆ์„๊ฑฐ๋‹ค.

๊ทธ๊ฑฐ๋ฅผ value_counts ์ˆœ์„œ์ฒ˜๋Ÿผ ๋ฐ”๊ฟ”์ฃผ๊ธฐ ์œ„ํ•ด์„œ๋Š” reindex ์จ์„œ ๋ฆฌ์ŠคํŠธ ๋„ฃ์–ด์ฃผ๊ณ  ์ถœ๋ ฅํ•˜๋ฉด ๋จ.

+ 10๊ฐœ๋งŒ ์ถœ๋ ฅํ•˜๋ผ ํ–ˆ์œผ๋‹ˆ iloc์จ์„œ ํ–‰์€ ๋‹ค ์ถœ๋ ฅํ•˜๋˜ ์—ด์€ 10๊ฐœ [:,:11] ์“ฐ๋ฉด ๋!

 

9.

๋Œ€ํ‘œ์‚ฌ์ง„ ์‚ญ์ œ

์‚ฌ์ง„ ์„ค๋ช…์„ ์ž…๋ ฅํ•˜์„ธ์š”.

์ผ๋‹จ BACT_NM์ด ๊ฒŒ์ž„์ธ ์• ๋“ค์„ ์ถœ๋ ฅํ•ด๋ผ!์˜ ์˜๋ฏธ์—์„œ query ๋ฌธ ์ž‘์„ฑ

 

๋Œ€ํ‘œ์‚ฌ์ง„ ์‚ญ์ œ

์‚ฌ์ง„ ์„ค๋ช…์„ ์ž…๋ ฅํ•˜์„ธ์š”.

๊ทผ๋ฐ ๋ฌธ์ œ์—์„œ cus_id๋ณ„ ~์„ ๊ตฌํ•˜๋ผ ๋ผ๊ณ  ํ–ˆ์œผ๋‹ˆ groupby ์‚ฌ์šฉํ•ด์„œ ์ถœ๋ ฅ. ๊ทผ๋ฐ ๊ฒŒ์ž„์˜ sum๊ฐ’์„ ๋‚ด๋†“์œผ๋ผ ํ–ˆ์œผ๋‹ˆ agg ํ•จ์ˆ˜๋กœ ์จ์ฃผ๋ฉด ๋จ.

์‡ผํ•‘๋„ ๋งˆ์ฐฌ๊ฐ€์ง€.

๊ทธ๋Ÿผ ๋‘๊ฐœ์˜ ์ปฌ๋Ÿผ์ด ๋‚˜์˜ค๊ฒ ์ฃ ?

๊ฒŒ์ž„์ด๋ž‘ ์‡ผํ•‘.

๊ทธ๋Ÿฌ๋ฉด ๊ฑ”๋„ค๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ณตํ†ต ์—ด์ด ์žˆ๋‹ค.

'cus_id'

๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— on=cus_id ์จ์ฃผ๊ณ  ๋ณ‘ํ•ฉํ•จ์ˆ˜ ์จ์ค˜์„œ ์™„์„ฑ.

 

+๋ฌธ์ œ์—์„œ

(๋‹จ, BACT_NM์ด ๊ฒŒ์ž„/์‡ผํ•‘์ธ ๊ฐ’์˜ ๊ฒฐ์ธก์น˜๋Š” ํ‰๊ท ๊ฐ’์œผ๋กœ ๋Œ€์ฒดํ•˜๊ณ  ๋‘˜์„ ๋‚˜๋ˆˆ ๊ฐ’์˜ ๊ฒฐ์ธก์น˜๋Š” 0์œผ๋กœ, inf ๊ฐ’์€ 1๋กœ ๋Œ€์ฒดํ•˜์‹œ์˜ค.)

์กฐ๊ฑด์ด ์žˆ๋‹ค.

 

๊ฒŒ์ž„/์‡ผํ•‘์˜ ์—ด์„ ์ถ”๊ฐ€ํ•ด์คŒ.

 

 

 

๋Œ€ํ‘œ์‚ฌ์ง„ ์‚ญ์ œ

์‚ฌ์ง„ ์„ค๋ช…์„ ์ž…๋ ฅํ•˜์„ธ์š”.

tolist ์จ์ค˜์„œ ๋ฆฌ์ŠคํŠธ๋กœ ๊ฐ’๋“ค ํ™•์ธ

isposinf ํ•จ์ˆ˜๋Š” ๋ฌดํ•œ๋Œ€๊ฐ’์„ ํ™•์ธํ•ด์ฃผ๋Š” ํ•จ์ˆ˜๋ผ๊ณ  ํ•œ๋‹ค.

๊ทธ ๋‹ค์Œ ๊ทธ ๋ฌดํ•œ๋Œ€ใ… ์–ด๋Š ์œ„์น˜์— ์žˆ๋Š”์ง€ ํ™•์ธํ•ด๋‹ฌ๋ผ ํ•˜๋ฉด where์„ ์จ์ฃผ๋ฉด ๋œ๋‹ค.

๊ฒฐ์ธก์น˜๋Š” ์—†์ง€๋งŒ ๋ฌดํ•œ๋Œ€๊ฐ€ ์žˆ๋„ค?

1922 ์ธ๋ฑ์Šค์—.

 

๊ทธ๋ž˜์„œ ๋ฐ๋ ค์™”๋”๋‹ˆ inf๋ผ๊ณ  ์จ์ ธ์žˆ์Œ

 

๋Œ€ํ‘œ์‚ฌ์ง„ ์‚ญ์ œ

์‚ฌ์ง„ ์„ค๋ช…์„ ์ž…๋ ฅํ•˜์„ธ์š”.

๊ทธ๋ž˜์„œ 1๋กœ ๋Œ€์ฒด ์™„๋ฃŒ.

 

+ ๊ฒฐ์ธก์น˜ ํ™•์ธ

๋Œ€ํ‘œ์‚ฌ์ง„ ์‚ญ์ œ

์‚ฌ์ง„ ์„ค๋ช…์„ ์ž…๋ ฅํ•˜์„ธ์š”.

 

+ ๊ฒŒ์ž„๊ณผ ์‡ผํ•‘์—๋Š” ์—†์œผ๋ฏ€๋กœ ํ‰๊ท ๊ฐ’ ๋Œ€์ฒด๋Š” ํŒจ์Šค

๊ฒŒ์ž„/์‡ผํ•‘์— ๊ฒฐ์ธก์น˜๊ฐ€ ์žˆ์œผ๋ฏ€๋กœ 0์œผ๋กœ ์ฑ„์›Œ์คŒ.

 

10.

๋Œ€ํ‘œ์‚ฌ์ง„ ์‚ญ์ œ

์‚ฌ์ง„ ์„ค๋ช…์„ ์ž…๋ ฅํ•˜์„ธ์š”.

์ •๊ทœํ™” ํ•˜๊ธฐ

 

728x90
๋ฐ˜์‘ํ˜•

'์–ธ์–ด > Python ๊ธฐ์ดˆ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

ํŒŒ์ด์ฌ ๋ฌธ๋ฒ• 6  (0) 2023.07.20
ํŒŒ์ด์ฌ ๋ฌธ๋ฒ•4  (0) 2023.07.20
ํŒŒ์ด์ฌ ๋ฌธ๋ฒ• 3  (0) 2023.07.20
ํŒŒ์ด์ฌ ๋ฌธ๋ฒ• 2  (0) 2023.07.20
ํŒŒ์ด์ฌ ๋ฌธ๋ฒ• 1  (0) 2023.07.20