๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

Data analysis/๋ฐ์ดํ„ฐ ๋ถ„์„

Pandas ์‚ฌ์šฉ๋ฒ• - ๋ฐ์ดํ„ฐ์—์„œ ์ •๋ณด ํ™•์ธํ•˜๊ธฐ [๊ธฐ๋ณธ]

์ด์ „์— ์‚ฌ์šฉํ–ˆ๋˜ DataFrame์„ ๊ฐ€์ง€๊ณ  ๋ฐ์ดํ„ฐ์˜ ์ •๋ณด๋ฅผ ํ™•์ธํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ณด์ž.

data = {
    '์ด๋ฆ„' : ['์ฑ„์น˜์ˆ˜', '์ •๋Œ€๋งŒ', '์†กํƒœ์„ญ', '์„œํƒœ์›…', '๊ฐ•๋ฐฑํ˜ธ', '๋ณ€๋•๊ทœ', 'ํ™ฉํƒœ์‚ฐ', '์œค๋Œ€ํ˜‘'],
    'ํ•™๊ต' : ['๋ถ์‚ฐ๊ณ ', '๋ถ์‚ฐ๊ณ ', '๋ถ์‚ฐ๊ณ ', '๋ถ์‚ฐ๊ณ ', '๋ถ์‚ฐ๊ณ ', '๋Šฅ๋‚จ๊ณ ', '๋Šฅ๋‚จ๊ณ ', '๋Šฅ๋‚จ๊ณ '],
    'ํ‚ค' : [197, 184, 168, 187, 188, 202, 188, 190],
    '๊ตญ์–ด' : [90, 40, 80, 40, 15, 80, 55, 100],
    '์˜์–ด' : [85, 35, 75, 60, 20, 100, 65, 85],
    '์ˆ˜ํ•™' : [100, 50, 70, 70, 10, 95, 45, 90],
    '๊ณผํ•™' : [95, 55, 80, 75, 35, 85, 40, 95],
    '์‚ฌํšŒ' : [85, 25, 75, 80, 10, 80, 35, 95],
    'SWํŠน๊ธฐ' : ['Python', 'Java', 'Javascript', '', '', 'C', 'PYTHON', 'C#']
}
df = pd.DataFrame(data,index =['1๋ฒˆ','2๋ฒˆ','3๋ฒˆ','4๋ฒˆ','5๋ฒˆ','6๋ฒˆ','7๋ฒˆ','8๋ฒˆ'])
df

์ˆซ์žํ˜•์œผ๋กœ ๋‚˜ํƒ€๋‚œ ๋ฐ์ดํ„ฐ๋“ค์— ๋Œ€ํ•ด ๊ฐฏ์ˆ˜, Mean ๊ฐ’, std, Max ๊ฐ’ ๋“ฑ์„ ์‰ฝ๊ฒŒ ํ•œ๋ˆˆ์— ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ๋Š” ๋ฉ”์„œ๋“œ๊ฐ€ ์žˆ๋‹ค. ๊ณ„์‚ฐ์ด ๊ฐ€๋Šฅํ•œ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•ด์„œ๋Š” ์—ด(Column) ๋ณ„๋กœ ์ •๋ณด๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค.

df.describe() #๊ณ„์‚ฐ์ด ๊ฐ€๋Šฅํ•œ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•ด์„œ๋Š” column ๋ณ„๋กœ ์ •๋ณด๋ฅผ ์„ค๋ช…ํ•ด์คŒ

์ˆซ์žํ˜• ๋ฐ์ดํ„ฐ๋ณด๋‹ค ๋ฐ์ดํ„ฐ์˜ ํƒ€์ž…์ด๋‚˜ null์˜ ๊ฐฏ์ˆ˜ ๋“ฑ์˜ ์ •๋ณด๋ฅผ ํ•œ ๋ˆˆ์— ํ™•์ธํ•˜๊ณ  ์‹ถ์„ ๋•Œ๋Š” info() ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค.

df.info() #๊ฐ column์— ๋Œ€ํ•ด์„œ Dtype,NUll๊ฐ’์˜ ๊ฐฏ์ˆ˜ ๋“ฑ...

์ด์ œ ๋ฐ์ดํ„ฐ์˜ ๊ฐ’๋“ค์„ ํ™•์ธํ•ด๋ณด์ž.

๊ต‰์žฅํžˆ ๋งŽ์€ ๋ฐ์ดํ„ฐ๋ฅผ ํ•œ ๋ฒˆ์— ๋ณด๋Š” ๊ฒƒ๋ณด๋‹ค, ์ผ๋‹จ ๋งจ ์œ„๋ถ€ํ„ฐ 5๊ฐœ๋งŒ ๋ณด๊ณ  ์‹ถ์„ ๋•Œ ํ˜น์€ ์•„๋ž˜๋ถ€ํ„ฐ 5๊ฐœ ๋“ฑ (๊ฐฏ์ˆ˜๋Š” ์„ค์ •๊ฐ€๋Šฅ) ๋ณด๊ณ ์‹ถ์„ ๋•Œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

df.head() #์ฒ˜์Œ 5๊ฐœ์˜ row๋ฅผ ๊ฐ€์ ธ์˜ด
df.head(7) #์ฒ˜์Œ 7๊ฐœ์˜ row๋ฅผ ๊ฐ€์ ธ์˜ด
df.tail() #๋งˆ์ง€๋ง‰ 5๊ฐœ์˜ row๋ฅผ ๊ฐ€์ ธ์˜ด
df.tail(10) #๋งˆ์ง€๋ง‰ 10๊ฐœ row๋ฅผ ๊ฐ€์ ธ์˜ด

df์•ˆ์˜ ๊ฐ’๋“ค์„ ๋ชจ๋‘ ํ™•์ธํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด? values๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์ž

df.values

๊ธฐ๋ณธ์ ์œผ๋กœ index๋‚˜ columns, shape ๋“ฑ ๊ธฐ๋ณธ์ ์ธ Data์˜ ์ •๋ณด๋„ ์ถœ๋ ฅ์œผ๋กœ ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค.

>>> df.index
Index(['1๋ฒˆ', '2๋ฒˆ', '3๋ฒˆ', '4๋ฒˆ', '5๋ฒˆ', '6๋ฒˆ', '7๋ฒˆ', '8๋ฒˆ'], dtype='object', name='์ง€์›๋ฒˆํ˜ธ')

>>> df.columns
Index(['์ด๋ฆ„', 'ํ•™๊ต', 'ํ‚ค', '๊ตญ์–ด', '์˜์–ด', '์ˆ˜ํ•™', '๊ณผํ•™', '์‚ฌํšŒ', 'SWํŠน๊ธฐ'], dtype='object')

>>> df.shape #row,column
(8, 9)

Series์˜ ๋ฐ์ดํ„ฐ ์ •๋ณด ํ™•์ธ

DataFrame ์ „์ฒด์— ๋Œ€ํ•œ ์ •๋ณด ๋ง๊ณ ๋„ ๊ฐ Series(Column ๋“ฑ)๋ฅผ ์„ ํƒํ•ด์„œ ์ •๋ณด๋ฅผ ํ™•์ธํ•  ์ˆ˜๋„ ์žˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด 'ํ‚ค'์— ๋Œ€ํ•œ ์ •๋ณด๋งŒ ๋ณด๊ณ  ์‹ถ๋‹ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ฝ”๋“œ๋ฅผ ๊ตฌ์„ฑํ•˜๋ฉด ๋œ๋‹ค.

 

>>> df['ํ‚ค'].describe()
count      8.000000
mean     188.000000
std        9.985704
min      168.000000
25%      186.250000
50%      188.000000
75%      191.750000
max      202.000000
Name: ํ‚ค, dtype: float64

>>> df['ํ‚ค'].max()\
202

>>> df['ํ‚ค'].nlargest(3) #ํ‚ค ํฐ์‚ฌ๋žŒ ์ˆœ์„œ๋Œ€๋กœ 3๋ช… ๋ฐ์ดํ„ฐ

์ง€์›๋ฒˆํ˜ธ
6๋ฒˆ    202
1๋ฒˆ    197
8๋ฒˆ    190
Name: ํ‚ค, dtype: int64

>>> df['ํ‚ค'].mean()
188.0

>>> df['ํ‚ค'].sum()
1504

>>> df['SWํŠน๊ธฐ'].count()
1504

>>> df['ํ•™๊ต'].unique() #uniqueํ•œ ๊ฐ’์˜ list๋ฅผ ๋ณด์—ฌ์คŒ
array(['๋ถ์‚ฐ๊ณ ', '๋Šฅ๋‚จ๊ณ '], dtype=object)

>>> df['ํ•™๊ต'].nunique() #uniqueํ•œ ๊ฐ’์˜ ๊ฐฏ์ˆ˜๋ฅผ ๋ณด์—ฌ์คŒ
2

Column ์„ ํƒ

์ด๋ฏธ ํ–ˆ์ง€๋งŒ, DataFrame์—์„œ ์—ด๋งŒ ๋”ฐ๋กœ ์„ ํƒํ•  ์ˆ˜ ์žˆ๋‹ค.

์—ด์„ ์„ ํƒํ•˜๋Š” ๋ฐฉ๋ฒ•์—๋Š” ์—ด์˜ ์ด๋ฆ„(label)์„ ์ง์ ‘ ์‚ฌ์šฉํ•ด๋„ ๋˜๊ณ , ์ •์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค.

>>> df['์ด๋ฆ„']
์ง€์›๋ฒˆํ˜ธ
1๋ฒˆ    ์ฑ„์น˜์ˆ˜
2๋ฒˆ    ์ •๋Œ€๋งŒ
3๋ฒˆ    ์†กํƒœ์„ญ
4๋ฒˆ    ์„œํƒœ์›…
5๋ฒˆ    ๊ฐ•๋ฐฑํ˜ธ
6๋ฒˆ    ๋ณ€๋•๊ทœ
7๋ฒˆ    ํ™ฉํƒœ์‚ฐ
8๋ฒˆ    ์œค๋Œ€ํ˜‘
Name: ์ด๋ฆ„, dtype: object

>>> df['ํ‚ค']
์ง€์›๋ฒˆํ˜ธ
1๋ฒˆ    197
2๋ฒˆ    184
3๋ฒˆ    168
4๋ฒˆ    187
5๋ฒˆ    188
6๋ฒˆ    202
7๋ฒˆ    188
8๋ฒˆ    190
Name: ํ‚ค, dtype: int64

>>> df[['์ด๋ฆ„','ํ‚ค']]

ํ•œ๊ฐœ์˜ ์—ด์„ ์„ ํƒํ•  ๋•Œ๋Š” df['์ด๋ฆ„']๊ณผ ๊ฐ™์ด ์ž…๋ ฅํ•˜๋ฉด ๋˜์ง€๋งŒ, ์—ฌ๋Ÿฌ๊ฐœ์˜ ์—ด์„ ์„ ํƒํ• ๋•Œ์—๋Š” listํ˜•ํƒœ๋กœ ์ž…๋ ฅํ•ด์•ผ ํ•œ๋‹ค.

 

๋‹ค์Œ์€ ์ •์ˆ˜ index๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ column์„ ์„ ํƒํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค. ์‚ฌ์‹ค ์œ„ ๋ฐฉ๋ฒ•๊ณผ ์ผ๋งฅ์ƒํ†ตํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.

>>> df.columns
Index(['์ด๋ฆ„', 'ํ•™๊ต', 'ํ‚ค', '๊ตญ์–ด', '์˜์–ด', '์ˆ˜ํ•™', '๊ณผํ•™', '์‚ฌํšŒ', 'SWํŠน๊ธฐ'], dtype='object')

>>> df.columns[0]
'์ด๋ฆ„'

df.columns์˜ 0๋ฒˆ์งธ ์›์†Œ๋Š” '์ด๋ฆ„'์ด ์„ ํƒ๋˜๋ฏ€๋กœ df[df.columns[0]]๋Š” df['์ด๋ฆ„']๊ณผ ๋™์ผํ•œ ๋™์ž‘์„ ํ•˜๊ฒŒ ๋œ๋‹ค.

 

>>> df[df.columns[-1]] #๋งจ ๋์— ์žˆ๋Š” ๊ฐ’์„ ๊ฐ€์ ธ์˜ด
์ง€์›๋ฒˆํ˜ธ
1๋ฒˆ        Python
2๋ฒˆ          Java
3๋ฒˆ    Javascript
4๋ฒˆ           NaN
5๋ฒˆ           NaN
6๋ฒˆ             C
7๋ฒˆ        PYTHON
8๋ฒˆ            C#
Name: SWํŠน๊ธฐ, dtype: object

์Šฌ๋ผ์ด์‹ฑ

์Šฌ๋ผ์ด์‹ฑ์€ ๋ฐ์ดํ„ฐ ๋ถ„์„์ด ์•„๋‹ˆ๋”๋ผ๋„ ๋งŽ์ด ์“ฐ์ด๊ธฐ ๋•Œ๋ฌธ์— ์ž˜ ์•Œ์•„๋‘๋ฉด ์ข‹๋‹ค.

>>> df['์˜์–ด'][0:5] #0,1,2,3,4 ์˜์–ด ๋ฐ์ดํ„ฐ ๊ฐ€์ ธ์˜ด
์ง€์›๋ฒˆํ˜ธ
1๋ฒˆ    85
2๋ฒˆ    35
3๋ฒˆ    75
4๋ฒˆ    60
5๋ฒˆ    20
Name: ์˜์–ด, dtype: int64

>>> df[['์ด๋ฆ„','ํ‚ค']][:3] #์ฒ˜์Œ 3๋ช…์˜ ์ด๋ฆ„, ํ‚ค ์ •๋ณด๋ฅผ ๊ฐ€์ ธ์˜ด

df[3:]

 

728x90