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

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

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

2022. 1. 17

 

1. Series, DataFrame

-> ์“ฐ๊ธฐ ์ „์— pandas๋กœ ๋จผ์ € ๋ถˆ๋Ÿฌ์™€์•ผ ๋จ

*pandas

: Pandas๋Š” python์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ถ„์„ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ, ํ–‰๊ณผ ์—ด๋กœ ์ด๋ฃจ์–ด์ง„ ๋ฐ์ดํ„ฐ ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค์–ด ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ๊ฒŒ ๋˜๋ฉฐ ๋ณด๋‹ค ์•ˆ์ •์ ์œผ๋กœ ๋Œ€์šฉ๋Ÿ‰์˜ ๋ฐ์ดํ„ฐ๋“ค์„ ์ฒ˜๋ฆฌํ•˜๋Š”๋ฐ ๋งค์šฐ ํŽธ๋ฆฌํ•œ ๋„๊ตฌ

 

๋ญ, ๊ทธ๋ ‡๋‹ค๋„ค์š”.

 

1-1) Series

: ํ•˜๋‚˜์˜ ์—ด๋กœ ์ด๋ฃจ์–ด์ง„ ๋ฐ์ดํ„ฐ๋ฅผ ๋œปํ•จ ( ์‹œ๋ฆฌ์ฆˆ๋“ค์ด ๋ชจ์—ฌ์„œ ๋ฐ์ดํ„ฐ ํ”„๋ ˆ์ž„์ด ๋˜๋Š” )

 

1-2) DataFrame

: 3์š”์†Œ๋ฅผ ๊ฐ€์ง„๋‹ค(column, row, index)

 

 

2. Indexing, Slicing

1. ๋ฐ์ดํ„ฐ ํ”„๋ ˆ์ž„ ์ด๋ฆ„๋ช….iloc[,]

: index๊ธฐ์ค€์„ ๋”ฐ๋ฅธ๋‹ค ex) df.iloc[1:3] # 1๋ถ€ํ„ฐ 2์ธ ํ–‰ ์ถ”์ถœ+ ํŠน์ • ์—ด์„ ์ถ”์ถœํ•  ๋•Œ์—๋„ ๋งˆ์ฐฌ๊ฐ€์ง€.

 

2. ๋ฐ์ดํ„ฐ ํ”„๋ ˆ์ž„ ์ด๋ฆ„๋ช….loc[,]

: index ์ด๋ฆ„์„ ๊ธฐ์ค€์œผ๋กœ ๋”ฐ๋ฅธ๋‹ค. ex) df.loc[1:3] #1๋ถ€ํ„ฐ 3๊นŒ์ง€์ธ ํ–‰ ์ถ”์ถœ + ํŠน์ • ์—ด์„ ์ถ”์ถœํ•˜๋ ค๋ฉด ์—ด์˜ ์ด๋ฆ„์„ ์จ์•ผํ•œ๋‹ค.

 

3. boolean indexing/ query

๋‘˜๋‹ค ์“ฐ์ง€๋งŒ query ๋ฌธ์„ ๋” ์„ ํ˜ธ.

ex)

df.query('age>20') -> df ๋ฐ์ดํ„ฐ ํ”„๋ ˆ์ž„์—์„œ ๋‚˜์ด๊ฐ€ 20์‚ด ๋„˜์€ ์• ๋“ค๋งŒ ๋ณด์—ฌ์ค˜!

 

 

3. Merge, Concat

3-1) Merge

-> ์•„๋ฌด๊ฒƒ๋„ ์„ค์ •์„ ์•ˆํ•ด์ฃผ๋ฉด ๋””ํดํŠธ๊ฐ’์œผ๋กœ how='inner' ๊ต์ง‘ํ•ฉ ํ˜•ํƒœ๋กœ ๋‚˜ํƒ€๋‚ด์ค€๋‹ค.

 

3-2) Concat

-> ๋ฐ์ดํ„ฐ ๋‹จ์ˆœ ์—ฐ๊ฒฐ

* axis=0์ด๋ฉด ํ–‰์„ ์˜๋ฏธ

* axis=1์ด๋ฉด ์—ด์„ ์˜๋ฏธ

 

 

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

- df.isnull() : ๊ฒฐ์ธก๊ฐ’์ด True๋กœ ๋ฐ˜ํ™˜

- df.notnull() : ๊ฒฐ์ธก๊ฐ’์ด False๋กœ ๋ฐ˜ํ™˜ ๊ฒฐ์ธก๊ฐ’ ์ฑ„์šฐ๊ธฐ

- df.fillna(๊ฐ’) ๊ฒฐ์ธก๊ฐ’ ์‚ญ์ œ - df.dropna()

 

+์ค‘๋ณต๋˜๋Š” ํ–‰ ํ™•์ธ

- df.duplicated() : ์ค‘๋ณต์ด๋ฉด True ๋ฐ˜ํ™˜

+์ค‘๋ณต๋˜๋Š” ํ–‰ ์ œ๊ฑฐ - df.drop_duplicates()

 

4. ๋ฐ์ดํ„ฐ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ, ๋‚ด๋ณด๋‚ด๊ธฐ

- csv ํŒŒ์ผ์„ ๋ถˆ๋Ÿฌ์˜ฌ ๋•Œ์—๋Š” `pd.read_csv()` ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

- ํ•œ๊ธ€ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์„ ๋•Œ ๊นจ์งˆ ํ™•๋ฅ ์ด ์žˆ๋Š”๋ฐ, ์ด๋Ÿด ๋•Œ `encoding = 'cp949` ์ธ์ž๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉด ๋œ๋‹ค.

- data = pd.read_csv('ํŒŒ์ผ๋ช…', encoding = 'cp949')

- ๋ฐ์ดํ„ฐ๋ฅผ ๋‚ด๋ณด๋‚ผ ๋•Œ์—๋Š” `data.to_csv()` ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

- ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ํ•œ๊ธ€ ๋ฐ์ดํ„ฐ๋ฅผ ์ž˜ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•ด์„œ `encoding = 'cp949'` ์ธ์ž๋ฅผ ๋„ฃ์–ด์ฃผ๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.

- data.to_csv('์ €์žฅํ•˜๊ณ ์ž ํ•˜๋Š” ํŒŒ์ผ๋ช…', encoding = 'cp949')

 

 

- excel ํŒŒ์ผ์„ ๋ถˆ๋Ÿฌ์˜ฌ ๋•Œ์—๋Š” `pd.read_xlsx()` ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

- ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ํ•œ๊ธ€ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์„ ๋•Œ์—” `encoding = 'cp949'` ์ธ์ž๋ฅผ ๋„ฃ์–ด์ฃผ์ž.

- excel ํŒŒ์ผ์€ csvํŒŒ์ผ๊ณผ ๋‹ค๋ฅด๊ฒŒ ๋ฐ์ดํ„ฐ ๊ตฌ๋ถ„์ž๋ฅผ ๋ชจ๋ฅด๊ธฐ ๋•Œ๋ฌธ์—, ์ง์ ‘ ๊ตฌ๋ถ„์ž๋ฅผ ์ž…๋ ฅํ•ด ์ฃผ์–ด์•ผ ํ•œ๋‹ค.

- ๊ตฌ๋ถ„์ž๋Š” `sep = ` ์ธ์ž๋ฅผ ํ†ตํ•ด ์„ค์ •ํ•ด ์ฃผ์–ด์•ผ ํ•œ๋‹ค.

- data = pd.read_excel('ํŒŒ์ผ๋ช…', encoding = 'cp949', sep = '\t')

- ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋‚ด๋ณด๋‚ผ ๋•Œ์—๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ•œ๋‹ค.

- data.to_excel('ํŒŒ์ผ๋ช…', encoding = 'cp949', sep = '\t')

 

-> ๊ฐ€์žฅ ๋งŽ์ด ์“ฐ๋Š” ํƒ€์ดํƒ€๋‹‰์„ ์˜ˆ๋กœ ๋“ค๊ฒ ์Œˆ

 

import pandas as pd #pandas๋ชจ๋“ˆ ๋ถˆ๋Ÿฌ์˜ค๊ณ 

data1= pd.read.csv('titanic',encoding='cp949');data1 #๋‚˜๋จธ์ง€ ์ž‘์„ฑ

 

 

 

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

1.

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

์•„๋ž˜ ๋ฐฉ๋ฒ•์„ ๋” ์„ ํ˜ธ

์ตœ๋นˆ๊ฐ’ ๊ตฌํ•˜๋Š” ์ฝ”๋“œ. ์ € 0์ด ๋ญ˜ ์˜๋ฏธํ•˜๋Š”์ง€ ๋ชฐ๋ผ์„œ ์งˆ๋ฌธํ•˜๋ ค๊ณ  ํ–ˆ๋Š”๋ฐ ๋”ฑ ๊นจ๋‹ฌ์Œ.

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

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

0์ด ์ธ๋ฑ์Šค ๊ฐ’ ๋งํ•˜๋Š”๊ฑฐ. ๊ทธ๋‹ˆ๊นŒ ์œ„์—๋Š” ์ธ๋ฑ์Šค 0๊ฐ’์ด ๋ญ๋ƒ! ํ•˜๋‹ˆ๊น '์—ฌ'๋งŒ ๋‚˜์˜จ๊ฑฐ๊ณ  ์•„๋ž˜์—๋Š” ์ ์€๊ฒŒ ์—†์œผ๋‹ˆ ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ์ธ๋ฑ์Šค์™€ ๊ทธ์— ํ•ด๋‹นํ•˜๋Š” ๊ฐ’์ด ๋‚˜์˜ค๋Š”๊ฑฐ์˜€๋‹ค.

์•ˆ๋ฌผ์–ด๋ณด๊ณ  ๊ณ ๋ฏผํ•ด์„œ ๋‚˜ ํ˜ผ์ž ๊นจ๋‹ฌ์€ ์  ์นญ์ฐฌํ•ด

 

2.

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

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

on์˜ ์˜๋ฏธ๋„ ํ—ท๊ฐˆ๋ ธ์—ˆ๋Š”๋ฐ,

on์— ํ•ด๋‹นํ•˜๋Š” ๊ฐ’๋“ค์— ๋งž์ถฐ์„œ ๋‚ด๊ฐ€ ๋ณ‘ํ•ฉํ•˜๊ณ ์ž ํ•˜๋Š” ๊ฐ’์„ ๋„ฃ์–ด๋ผ!์˜ ์˜๋ฏธ๋กœ ํ•ด์„ํ•˜๋ฉด ๋œ๋‹ค.

์ด๋ฅผ ์•Œ์•„๋‚ธ ๋‚ด ์ž์‹ , ๋˜ ์นญ์ฐฌํ•ด...

 

 

3.

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

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

platform ์ž๋ฆฌ์— = platform์„ most_platform ๋ฐ์ดํ„ฐ ๊ฐ’์œผ๋กœ ๋Œ€์ฒดํ•˜๊ฒ ๋‹ค์˜ ์˜๋ฏธ.

๋ฉ˜ํ†  ์˜ค๋น ์ฒ˜๋Ÿผ ํ•ด์„ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์ฝ”๋“œ๋ฅผ ๊ณต๋ถ€ํ•˜๋‹ˆ๊น ์ดํ•ด๊ฐ€ ์ž˜๋œ๋‹ค.

์–ด๋–ป๊ฒŒ ๋‹ค๊ฐ€๊ฐ€๊ณ  ์–ด๋–ป๊ฒŒ ํ•ด์„ํ•ด์•ผ๋˜๋Š”์ง€ ์•Œ๊ฒŒ๋จ!

์ฝ”๋”ฉ์€ ์ด๋ ‡๊ฒŒ ํ•˜๋Š”๊ฑฐ๊ตฌ๋‚˜.. ์ด๋Ÿฐ๊ฑฐ?

 

์ง„์งœ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค....

 

4.

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

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

๊ฒฐ์ธก๊ฐ’ ํ™•์ธ ์ฝ”๋“œ

 

โ˜…โ˜…โ˜…5.โ˜…โ˜…โ˜…

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

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

์ด๊ฒƒ๋„ ์˜์ƒ๋ณด๋ฉด์„œ ๋‹ค์‹œ ํ–ˆ๋Š”๋ฐ ์ดํ•ด ๋„ˆ๋ฌด ์ž˜๋จ.. ์„ค๋ช… ์™„์ „ ์งฑ

๋‚ด๊ฐ€ ์„ ํ˜ธํ•˜๋Š” ๋ฐฉ์‹์˜ ์„ค๋ช…์ด๋ผ์„œ ์ดํ•ดํ•˜๋Š”๋ฐ ๋„ˆ๋ฌด ์ˆ˜์›”ํ–ˆ๋‹ค.

 

๋ฐ์ดํ„ฐ์˜ type์„ ๋ฐ”๊ฟ”์ฃผ๋Š”๊ฑฐ astype

# info_login['login_id'] =dice['b'] ์„ ๋งํ•˜๋Š”๊ฑฐ๊ณ (key๊ฐ’) ์—ฌ๊ธฐ๋Š” ์ปฌ๋Ÿผ

# info_login['login_id'].astype(int) = 2๋ฅผ ๋งํ•จ (value๊ฐ’) ๊ฐ’ ์ž์ฒด

 

6.

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

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

# window8: window8์— ํ•ด๋‹นํ•˜๋Š” user_id์˜ ํ‰๊ท ,

# windows: window์— ํ•ด๋‹นํ•˜๋Š” user_id ํ‰๊ท ๊ฐ’...+

-> ๋‚ด๊ฐ€ ์ƒ๊ฐํ–ˆ๋˜ ๋ฐฉํ–ฅ์„ฑ ๋งž์•˜๋‹ค. ๋ฌผ๋ก  ๊ฑด๋“ค์ง€๋Š” ๋ชปํ•ด๋ด์„œ,,

์ด ํƒœ๋„์— ๋Œ€ํ•ด์„œ๋Š” ์Šค์Šค๋กœ ์ข€ ์‹ค๋ง์ด์ง€๋งŒ ์•Œ๋ฐ”ํ•˜๋ฉด์„œ ์ง‘์ค‘ํ•˜๊ธฐ๊ฐ€ ์‰ฝ์ง€ ์•Š์•˜๋‹ค

๋ผ๊ณ  ํ•˜๋ฉด ํ•‘๊ณ„๊ฒ ์ฃ ? ์‹œ๊ฐ„์ด ์žˆ์—ˆ์ง€๋งŒ ์•ˆํ•œ๊ฑฐ๋‹ค...^^....

 

 

dict={} #๋นˆ ๋”•์…”๋„ˆ๋ฆฌ ์ƒ์„ฑ

def boss_question(x): #3. pf ๊ฐ’์ด ์—ฌ๊ธฐ๋กœ ๋„˜์–ด์˜ด

m=info_login.query('platform==@x')['user_id'].mean() #4. windows8์ธ ๋ฐ์ดํ„ฐ ํ”„๋ ˆ์ž„๋งŒ ๋‚˜์˜ค๋Š”๋ฐ, user _id ํ–‰ ์ค‘์—์„œ ํ‰๊ท ๊ฐ’์„ ๊ตฌํ•ด๋ผ

dict[x]=int(m) #5. window8์ด๋ผ๋Š” key๊ฐ’์„ ๊ฐ€์งˆ ๋•Œ window8์˜ useri์˜ ํ‰๊ท ์„ value ๊ฐ’์œผ๋กœ ๊ฐ–๊ฒŒ๋œ๋‹ค.

 

platforms=info_login['platform'].unique()

for pf in platforms: #1. platform์— ์žˆ๋Š” window8๋ถ€ํ„ฐ ์ฐจ๋ก€๋Œ€๋กœ ์‹คํ–‰

boss_question(pf) # 2. ์ผ๋‹จ์€ window8์ด๋ผ๋Š” ์ธ์ž๋ฅผ ๋ฐ›์•„์„œ ์‹คํ–‰์ด ๋จ.

 

 

print(dict) #6. dict์˜ ๋”•์…”๋„ˆ๋ฆฌ๋ฅผ ์ถœ๋ ฅํ•ด์ค˜๋ผ!

์ถœ์ฒ˜ ์ž…๋ ฅ

 

 

728x90
๋ฐ˜์‘ํ˜•

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

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