🌡 이번 ν¬μŠ€νŒ…κ³Ό λ‹€μŒ ν¬μŠ€νŒ…μ„ 톡해 λ°μ΄ν„°ν”„λ ˆμž„μ˜ ν–‰/열에 μ ‘κ·Όν•˜λŠ” 방법에 λŒ€ν•΄ μ•Œμ•„λ΄…μ‹œλ‹€.
🌡 μ‹œμž‘ 전에 df λΌλŠ” λ°μ΄ν„°ν”„λ ˆμž„μ„ ν•˜λ‚˜ λ§Œλ“€μ–΄λ‘˜κ²Œμš”!!

import pandas as pd

df = pd.DataFrame({"κ΅­μ–΄" : [85, 92, 88, 80],
                   "μˆ˜ν•™" : [100, 92, 84, 90],
                   "μ˜μ–΄" : [90, 90, 90, 82]}, 
                   index = ["A","B","C","D"])
df
>>
        κ΅­μ–΄	μˆ˜ν•™	μ˜μ–΄
A	85	100	90
B	92	92	90
C	88	84	90
D	80	90	82


1. DataFrame 행에 μ ‘κ·Ό


1.1. loc / iloc ν•¨μˆ˜

🌡 df.loc[index_name] : 인덱슀의 이름을 λ°›μ•„μ„œ 행에 μ ‘κ·Όν•˜λŠ” ν•¨μˆ˜μž…λ‹ˆλ‹€.

df.loc["A"]
>>
κ΅­μ–΄     85
μˆ˜ν•™    100
μ˜μ–΄     90
Name: A, dtype: int64

🌡 df.iloc[μΈλ±μŠ€μˆœμ„œ] : 인덱슀의 μˆœμ„œλ₯Ό λ°›μ•„μ„œ 행에 μ ‘κ·Όν•˜λŠ” ν•¨μˆ˜μž…λ‹ˆλ‹€.

df.iloc[1]
>>
κ΅­μ–΄    92
μˆ˜ν•™    92
μ˜μ–΄    90
Name: B, dtype: int64

행을 κ°€μ Έμ˜€λŠ” λͺ¨μŠ΅μ„ 확인할 수 μžˆμŠ΅λ‹ˆλ‹€.


1.2. κ°’ λ³€κ²½ν•˜κΈ°

🌡 df.loc[ ] / df.iloc[ ] λ₯Ό μ‚¬μš©ν•΄ 행에 μ ‘κ·Όν•˜κ³  값을 λ°”κΏ€ μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€.

df.loc['A'] = [85,100,92]
df
>>
        κ΅­μ–΄	μˆ˜ν•™	μ˜μ–΄
A	85	100	92
B	92	92	90
C	88	84	90
D	80	90	82

A의 μ˜μ–΄μ„±μ μ΄ 90 μ—μ„œ 92둜 바뀐것을 확인할 수 μžˆμŠ΅λ‹ˆλ‹€!!


1.3. ν–‰ μ‚­μ œν•˜κΈ°

🌡 drop([index_name]) : ν•΄λ‹Ή 인덱슀의 행을 μ‚­μ œν•©λ‹ˆλ‹€.

df = df.drop(["D"]).copy()
df
>>
        κ΅­μ–΄	μˆ˜ν•™	μ˜μ–΄
A	85	100	90
B	92	92	90
C	88	84	90

D행이 μ‚­μ œλœ 것을 확인해 λ΄…μ‹œλ‹€.


1.4. ⭐⭐쑰건에 λ§žλŠ” ν–‰ κ°€μ Έμ˜€κΈ°

🌡 데이터λ₯Ό μ „μ²˜λ¦¬ν•˜λŠ” κ³Όμ •μ—μ„œ ν•„μš”ν•œ 뢀뢄을 κ°€μ Έμ™€μ•Όν•˜λŠ” κ²½μš°κ°€ λΉˆλ²ˆν•˜κΈ° λ•Œλ¬Έμ— 자주 μ‚¬μš©ν•˜λŠ” κ΅¬λ¬Έμž…λ‹ˆλ‹€!!

🌡 df [df[column] ~ condition] : λ°μ΄ν„°ν”„λ ˆμž„μ„ λ°˜ν™˜ν•©λ‹ˆλ‹€.

df[df['κ΅­μ–΄']==92]
>>
        κ΅­μ–΄	μˆ˜ν•™	μ˜μ–΄
B	92	92	90
df[df['μ˜μ–΄']==90]
>>
        κ΅­μ–΄	μˆ˜ν•™	μ˜μ–΄
B	92	92	90
C	88	84	90

1.5. 포함관계 νŒŒμ•…ν•˜κΈ°

🌡 isin([list]) : Boolean λ°˜ν™˜

ex) df[β€˜κ΅­μ–΄β€™].isin([92]) : 92κ°€ df[β€˜κ΅­μ–΄β€™] 에 μžˆλŠ”μ§€ ν™•μΈν•©λ‹ˆλ‹€.

df['κ΅­μ–΄'].isin([92])
>>
A    False
B     True
C    False
Name: κ΅­μ–΄, dtype: bool


1.6. ν–‰ κ°€μ Έμ˜€κΈ°

🌡 df.sample(frac): frac λΉ„μœ¨λ§ŒνΌ λžœλ€ν•˜κ²Œ 행을 κ°€μ Έμ˜΅λ‹ˆλ‹€.

df.sample(frac = 0.5)
>>

        κ΅­μ–΄	μˆ˜ν•™	μ˜μ–΄
A	85	100	90
B	92	92	88
df.sample(frac = 0.5)
>>
	κ΅­μ–΄	μˆ˜ν•™	μ˜μ–΄
C	88	84	90
A	85	100	90

λžœλ€ν•˜κ²Œ κ°€μ Έμ˜€κΈ° λ•Œλ¬Έμ— 같은 μ½”λ“œμ— λŒ€ν•΄ 리턴값이 λ‹€λ₯Έ 것을 확인할 수 μžˆμŠ΅λ‹ˆλ‹€!!


🌡 df.sample(n) : n 개수만큼 λžœλ€ν•˜κ²Œ 행을 κ°€μ Έμ˜΅λ‹ˆλ‹€.

df.sample(n = 2)
>>
        κ΅­μ–΄	μˆ˜ν•™	μ˜μ–΄
A	85	100	90
C	88	84	90
df.sample(n = 2)
>>
        κ΅­μ–΄	μˆ˜ν•™	μ˜μ–΄
B	92	92	88
A	85	100	90

sample() ν•¨μˆ˜λ„ λžœλ€ν•˜κ²Œ κ°€μ Έμ˜€κΈ° λ•Œλ¬Έμ— 같은 μ½”λ“œμ— λŒ€ν•΄ 리턴값이 λ‹€λ₯Έ 것을 확인할 수 μžˆμŠ΅λ‹ˆλ‹€.


🌡 df.nlargest(n, column) : column κΈ°μ€€ 큰 μˆœμ„œλŒ€λ‘œ n개의 행을 κ°€μ Έμ˜΅λ‹ˆλ‹€.

df.nlargest(2, 'κ΅­μ–΄')
>>
        κ΅­μ–΄	μˆ˜ν•™	μ˜μ–΄
B	92	92	88
C	88	84	90


🌡 df.smallest(n, column) : column κΈ°μ€€ μž‘μ€ μˆœμ„œλŒ€λ‘œ n개의 행을 κ°€μ Έμ˜΅λ‹ˆλ‹€.

df.nsmallest(2, 'μˆ˜ν•™')
>>
        κ΅­μ–΄	μˆ˜ν•™	μ˜μ–΄
C	88	84	90
B	92	92	88



🌡 μ΄λ ‡κ²Œ κ°„λ‹¨ν•œ 데이터λ₯Ό 톡해 행에 μ ‘κ·Όν•˜λŠ” 법을 μ•Œμ•„λ³΄μ•˜μŠ΅λ‹ˆλ‹€.
🌡 데이터λ₯Ό μ „μ²˜λ¦¬ν•˜λŠ” κ³Όμ •μ—μ„œ 행을 μ€‘μ‹¬μœΌλ‘œ ν•˜λŠ” κ²½μš°λŠ” μ μ§€λ§Œ, μ•Œμ•„λ‘λŠ” 것도 λ‚˜μ˜μ§€ μ•Šλ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€!!


Leave a comment