[Pandas] DataFrame : Read&Update ํ–‰/์—ดpart


Contents

๋ณธ ํฌ์ŠคํŒ…์€ Pandas์˜ DataFrame : Read&Update๋ถ€๋ถ„ ์ค‘ ํ–‰๊ณผ ์—ด์˜ ์„ ํƒ/์ถ”๊ฐ€/์ˆ˜์ • ๋“ฑ์— ๊ด€ํ•˜์—ฌ ์ค‘์ ์ ์œผ๋กœ ์ •๋ฆฌํ•˜์˜€์Šต๋‹ˆ๋‹ค.



Index / columns / values ์ ‘๊ทผ

๋ฐ์ดํ„ฐํ”„๋ ˆ์ž„ ๊ฐ์ฒด๋Š” ๋‹ค์Œ์˜ ์†์„ฑ์„ ์ด์šฉํ•ด์„œ ํ–‰ ์ธ๋ฑ์Šค์™€ ์—ด ์ด๋ฆ„์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค.

  • index : DataFrame์˜ ํ–‰ ์ธ๋ฑ์Šค ์ ‘๊ทผ
  • columns : DataFrame์˜ ์—ด ์ด๋ฆ„ ์ ‘๊ทผ
  • values : DataFrame์˜ ๊ฐ’์— ์ ‘๊ทผ (2์ฐจ์› ๋ฐฐ์—ด ์ถœ๋ ฅ)
dict_data = { 'a0' : [1, 2, 3], 'a1' : [4, 5, 6], 'a2' : [7, 8, 9]}
df = pd.DataFrame(dict_data, index = ['c0', 'c1', 'c2'])
print('[ DataFrame ]\n', df)

index_data = df.index
print('\n[ DataFrame์˜ index ]\n', index_data)

columns_data = df.columns
print('\n[ DataFrame์˜ columns ]\n', columns_data)

values_data = df.values
print('\n[ DataFrame์˜ values ]\n', values_data)
[ DataFrame ]
     a0  a1  a2
c0   1   4   7
c1   2   5   8
c2   3   6   9

[ DataFrame์˜ index ]
 Index(['c0', 'c1', 'c2'], dtype='object')

[ DataFrame์˜ columns ]
 Index(['a0', 'a1', 'a2'], dtype='object')

[ DataFrame์˜ values ]
 [[1 4 7]
 [2 5 8]
 [3 6 9]]


ํ–‰ ์ธ๋ฑ์Šค์™€ ์—ด ์ด๋ฆ„ ์ˆ˜์ •

๋ฐ์ดํ„ฐํ”„๋ ˆ์ž„์˜ ํ–‰ ์ธ๋ฑ์Šค์™€ ์—ด ์ด๋ฆ„์€ ์œ„์˜ index์™€ columns ์†์„ฑ์œผ๋กœ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

print('[ ํ–‰ ์ธ๋ฑ์Šค/์—ด ์ด๋ฆ„ ์ˆ˜์ • ์ „ ]\n', df)

df_copy1 = df.copy()
df_copy1.columns = ['A0', 'A1', 'A2']
df_copy1.index = ['B0', 'B1', 'B2']
print('\n[ ํ–‰ ์ธ๋ฑ์Šค/์—ด ์ด๋ฆ„ ์ˆ˜์ • ํ›„ ]\n', df_copy1)
[ ํ–‰ ์ธ๋ฑ์Šค/์—ด ์ด๋ฆ„ ์ˆ˜์ • ์ „ ]
     a0  a1  a2
c0   1   4   7
c1   2   5   8
c2   3   6   9

[ ํ–‰ ์ธ๋ฑ์Šค/์—ด ์ด๋ฆ„ ์ˆ˜์ • ํ›„ ]
     A0  A1  A2
B0   1   4   7
B1   2   5   8
B2   3   6   9


ํ•˜์ง€๋งŒ, ์œ„์™€ ๊ฐ™์€ ๋ฐฉ๋ฒ•์˜ ๊ฒฝ์šฐ ๋ฐ์ดํ„ฐํ”„๋ ˆ์ž„์—์„œ ํŠน์ • ํ–‰ ์ธ๋ฑ์Šค ๊ฐ’ ํ˜น์€ ํŠน์ • ์—ด ์ด๋ฆ„ ๊ฐ’ ํ•˜๋‚˜๋งŒ ์ˆ˜์ •ํ•˜๊ธฐ์—๋Š” ๊ธธ์ด๊ฐ€ ๋Š˜์–ด๋‚ ์ˆ˜๋ก ๋ถˆํŽธํ•ด์ง„๋‹ค. ์ด์™€ ๊ฐ™์ด ํŠน์ • ๊ฐ’์„ ๋ณ€๊ฒฝํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” rename ๋ฉ”์†Œ๋“œ๋ฅผ ์ด์šฉํ•œ๋‹ค. ๋”๋ถˆ์–ด, ํ•ด๋‹น ๋ฉ”์†Œ๋“œ๋Š” inplace ์˜ต์…˜์„ ๊ฐ€์ง€๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ƒˆ๋กœ์šด ๋ฐ์ดํ„ฐํ”„๋ ˆ์ž„ ๊ฐ์ฒด๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ฑฐ๋‚˜ ์›๋ณธ ๊ฐ์ฒด๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ธฐ๋ณธํ˜•ํƒœ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

# ํ–‰ ์ธ๋ฑ์Šค ๋ณ€๊ฒฝ
DataFrame.rename(index = {๊ธฐ์กด ์ธ๋ฑ์Šค : ๋ณ€๊ฒฝ ์ธ๋ฑ์Šค, ...}, inplace = True)
# ์—ด ์ด๋ฆ„ ๋ณ€๊ฒฝ
DataFrame.rename(columns = {๊ธฐ์กด ์ธ๋ฑ์Šค : ๋ณ€๊ฒฝ ์ธ๋ฑ์Šค, ...}, inplace = True)
print('[ ํ–‰ ์ธ๋ฑ์Šค/์—ด ์ด๋ฆ„ ์ˆ˜์ • ์ „ ]\n', df)

df_copy2 = df.copy()
df_copy2.rename(columns = {'a0':'A', 'a2':'C'}, inplace = True)
print('\n[ ํŠน์ • ์—ด ์ด๋ฆ„ ์ˆ˜์ • ]\n', df_copy2)

df_copy3 = df.copy()
df_copy3.rename(index = {'c0':'A', 'c2':'C'}, inplace = True)
print('\n[ ํŠน์ • ํ–‰ ์ธ๋ฑ์Šค ์ˆ˜์ • ]\n', df_copy3)

df_copy4 = df.copy()
df_copy4.rename(columns = {'a0':'A', 'a2':'C'}, 
		index = {'c0':'A', 'c2':'C'}, inplace = True)
print('\n[ ๋™์‹œ ์ˆ˜์ • ]\n', df_copy4)
[ ํ–‰ ์ธ๋ฑ์Šค/์—ด ์ด๋ฆ„ ์ˆ˜์ • ์ „ ]
     a0  a1  a2
c0   1   4   7
c1   2   5   8
c2   3   6   9

[ ํŠน์ • ์—ด ์ด๋ฆ„ ์ˆ˜์ • ]
    A  a1  C
c0  1   4  7
c1  2   5  8
c2  3   6  9

[ ํŠน์ • ํ–‰ ์ธ๋ฑ์Šค ์ˆ˜์ • ]
     a0  a1  a2
A    1   4   7
c1   2   5   8
C    3   6   9

[ ๋™์‹œ ์ˆ˜์ • ]
    A  a1  C
A   1   4  7
c1  2   5  8
C   3   6  9


ํ–‰

3-1) ํ–‰ ์„ ํƒ

๋ฐ์ดํ„ฐํ”„๋ ˆ์ž„์˜ ํ–‰์„ ์„ ํƒํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” loc์™€ iloc๋ฉ”์†Œ๋“œ๋ฅผ ์ด์šฉํ•œ๋‹ค.

  • loc : ์ธ๋ฑ์Šค ๋ผ๋ฒจ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ–‰์„ ์„ ํƒํ•œ๋‹ค.
  • iloc : ์ •์ˆ˜ํ˜•(โ€œiโ€nteger) ์œ„์น˜ ์ธ๋ฑ์Šค๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ–‰์„ ์„ ํƒํ•œ๋‹ค.

๋‘ ๋ฉ”์†Œ๋“œ ๋ชจ๋‘ ๋ฆฌ์ŠคํŠธ์™€ ๋™์ผํ•˜๊ฒŒ ์Šฌ๋ผ์ด์‹ฑ์„ ์ด์šฉํ•˜์—ฌ ํ–‰์„ ์„ ํƒํ•  ์ˆ˜ ์žˆ๋‹ค.


๋‘ ๋ฉ”์†Œ๋“œ๋ฅผ ์ด์šฉํ•˜์—ฌ ๋‹จ์ผ ํ–‰์„ ์„ ํƒํ•  ๊ฒฝ์šฐ ๋‹ค์Œ๊ณผ ๊ฐ™์œผ๋ฉฐ,
Series ๊ฐ์ฒด๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

print('[ DataFrame ]\n', df)

first_row1 = df.loc['c0']
first_row2 = df.iloc[0]

print('\n[ loc๋กœ c0ํ–‰ ์„ ํƒ ]\n', first_row1)
print(type(first_row1)) # ์ถœ๋ ฅ ๊ฒฐ๊ณผ๊ฐ€ ์‹œ๋ฆฌ์ฆˆ ๊ฐ์ฒด์ธ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

print('\n[ iloc๋กœ 0๋ฒˆ์งธ ํ–‰ ์„ ํƒ ]\n', first_row2)
print(type(first_row2)) # ์ถœ๋ ฅ ๊ฒฐ๊ณผ๊ฐ€ ์‹œ๋ฆฌ์ฆˆ ๊ฐ์ฒด์ธ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.
[ DataFrame ]
     a0  a1  a2
c0   1   4   7
c1   2   5   8
c2   3   6   9

[ loc๋กœ c0ํ–‰ ์„ ํƒ ]
a0    1
a1    4
a2    7
Name: c0, dtype: int64
<class 'pandas.core.series.Series'>

[ iloc๋กœ 0๋ฒˆ์งธ ํ–‰ ์„ ํƒ ]
a0    1
a1    4
a2    7
Name: c0, dtype: int64
<class 'pandas.core.series.Series'>


ํŠน์ • ํ–‰๋งŒ ์„ ํƒํ•˜๊ณ  ์‹ถ์„ ๊ฒฝ์šฐ์—๋Š” ๋ฆฌ์ŠคํŠธ๋ฅผ ์ด์šฉํ•œ๋‹ค.
๋‹จ์ผ ํ–‰์„ ์„ ํƒํ•  ๋•Œ์™€ ๋‹ฌ๋ฆฌ DataFrame ๊ฐ์ฒด๋กœ ๋ฐ˜ํ™˜๋˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

print('[ DataFrame ]\n', df)

first_row1 = df.loc[['c0', 'c2']]
first_row2 = df.iloc[[0, 2]]

print('\n[ loc๋กœ c0, c2 ํ–‰ ์„ ํƒ ]\n', first_row1)
print(type(first_row1))

print('\n[ iloc๋กœ 0๋ฒˆ์งธ, 2๋ฒˆ์งธ ํ–‰ ์„ ํƒ ]\n', first_row2)
print(type(first_row2))
[ DataFrame ]
     a0  a1  a2
c0   1   4   7
c1   2   5   8
c2   3   6   9

[ loc๋กœ c0, c2 ํ–‰ ์„ ํƒ ]
     a0  a1  a2
c0   1   4   7
c2   3   6   9
<class 'pandas.core.frame.DataFrame'>

[ iloc๋กœ 0๋ฒˆ์งธ, 2๋ฒˆ์งธ ํ–‰ ์„ ํƒ ]
     a0  a1  a2
c0   1   4   7
c2   3   6   9
<class 'pandas.core.frame.DataFrame'>


์Šฌ๋ผ์ด์‹ฑ์„ ์ด์šฉํ•˜์—ฌ ํ–‰์„ ์„ ํƒํ•  ๊ฒฝ์šฐ์—๋Š”
loc์™€ iloc๊ฐ€ ์„ ํƒํ•˜๋Š” ๋ฒ”์œ„์— ์ฐจ์ด๊ฐ€ ์žˆ๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

  • loc : ๋งŒ์•ฝ [โ€˜aโ€™, โ€˜cโ€™]์„ ์„ ํƒํ•  ๊ฒฝ์šฐ a, b, cํ–‰์„ ๋ชจ๋‘ ์„ ํƒํ•œ๋‹ค.
  • iloc : ๋งŒ์•ฝ [0, 2]๋ฅผ ์„ ํƒํ•  ๊ฒฝ์šฐ 0๋ฒˆ์งธ, 1๋ฒˆ์งธ ํ–‰๋งŒ ์„ ํƒํ•œ๋‹ค.
print('[ DataFrame ]\n', df)

first_row1 = df.loc['c0':'c1']
first_row2 = df.iloc[0:1]

print('\n[ loc๋กœ \'c0\':\'c1\' ์„ ํƒ ]\n', first_row1)
print(type(first_row1)) # c0, c1 ๋ชจ๋‘ ์ถœ๋ ฅ๋˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

print('\n[ iloc๋กœ 0:1 ์„ ํƒ ]\n', first_row2)
print(type(first_row2)) # c0๊นŒ์ง€๋งŒ ์ถœ๋ ฅ๋œ๋‹ค.
[ DataFrame ]
     a0  a1  a2
c0   1   4   7
c1   2   5   8
c2   3   6   9

[ loc๋กœ 'c0':'c1' ์„ ํƒ ]
     a0  a1  a2
c0   1   4   7
c1   2   5   8
<class 'pandas.core.frame.DataFrame'>

[ iloc๋กœ 0:1 ์„ ํƒ ]
     a0  a1  a2
c0   1   4   7
<class 'pandas.core.frame.DataFrame'>


3-2) ํ–‰ ์ถ”๊ฐ€/์ˆ˜์ •

๋ฐ์ดํ„ฐํ”„๋ ˆ์ž„์— ํ–‰์€ loc ๋ฉ”์†Œ๋“œ๋ฅผ ์ด์šฉํ•˜์—ฌ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ถ”๊ฐ€ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ํ–‰์„ ์ƒ‰์ธํ•˜๋Š” ๋ฐฉ๋ฒ•๊ณผ ๋˜‘๊ฐ™๋‹ค. ๋‹จ, ๋ฐ์ดํ„ฐ ํ”„๋ ˆ์ž„์—์„œ loc์™€ ๋‹ฎ์€ iloc์˜ ๋ฉ”์†Œ๋“œ๋Š” ๋ฐ์ดํ„ฐํ”„๋ ˆ์ž„์— ํ–‰์„ ์ถ”๊ฐ€์‹œํ‚ฌ ์ˆ˜ ์—†์Œ์„ ์œ ์˜ํ•˜์ž!

# ํ–‰์ถ”๊ฐ€
DataFrame.loc['์ƒˆ๋กœ์šด ํ–‰ ์ด๋ฆ„'] = ์ƒˆ๋กœ์šด ํ–‰์˜ ๋ฐ์ดํ„ฐ ๊ฐ’ or ์ƒˆ๋กœ์šด ํ–‰์˜ ๋ฐ์ดํ„ฐ ๋ฆฌ์ŠคํŠธ


๋ฆฌ์ŠคํŠธ๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ ํ”„๋ ˆ์ž„์— ํ–‰์„ ์ถ”๊ฐ€ํ•  ๊ฒฝ์šฐ, ๋ฆฌ์ŠคํŠธ์˜ ๊ธธ์ด๋Š” ๋ฐ์ดํ„ฐ ํ”„๋ ˆ์ž„์˜ ์—ด ๊ฐœ์ˆ˜์™€ ๋™์ผํ•ด์•ผ๋งŒ ํ•œ๋‹ค. ๋งŒ์•ฝ ๋ฆฌ์ŠคํŠธ๊ฐ€ ์•„๋‹Œ ๊ฐ’(์˜ˆ์ œ์—์„œ๋Š” 999)์„ ๊ธฐ์ž…ํ•  ๊ฒฝ์šฐ, ๋ชจ๋“  ์—ด์— ๋™์ผํ•œ ๊ฐ’์ด ์ถ”๊ฐ€๋œ๋‹ค.

๊ธฐ์กด ๋ฐ์ดํ„ฐํ”„๋ ˆ์ž„์— ์กด์žฌํ•˜๋Š” ์ธ๋ฑ์Šค ๋ผ๋ฒจ ๊ฐ’์„ loc๋ฉ”์†Œ๋“œ์— ๋„˜๊ฒจ์ฃผ๋ฉด ๊ธฐ์กด ๋ฐ์ดํ„ฐํ”„๋ ˆ์ž„์˜ ์›์†Œ๊ฐ’์„ ๋ณ€๊ฒฝ์‹œํ‚จ๋‹ค.

print('[ DataFrame ๋ณ€๊ฒฝ ์ „ ]\n', df)

print('\n==========================================')

df.loc['c3'] = 999
print('\n[ c3ํ–‰ ์ถ”๊ฐ€ ]\n', df)

df.loc['c4'] = [100, 200, 300]
print('\n[ c4ํ–‰ ์ถ”๊ฐ€ ]\n', df)

print('\n==========================================')

df.loc['c0'] = [11, 22, 33]
print('\n[ c0ํ–‰ ์ˆ˜์ • ]\n', df)

# ๋ฆฌ์ŠคํŠธ ํ˜•ํƒœ๋กœ ํŠน์ • ํ–‰๋“ค๋งŒ ์„ ํƒํ•ด์„œ ๋™์‹œ์— ์ˆ˜์ •ํ•  ์ˆ˜๋„ ์žˆ๋‹ค.
# ํ•˜์ง€๋งŒ, ํ•ด๋‹น ๋ฐฉ๋ฒ•์œผ๋กœ๋Š” ๋™์‹œ์— ํ–‰์„ ์ถ”๊ฐ€ํ•  ์ˆ˜๋Š” ์—†๋‹ค.
df.loc[['c1', 'c2']] = [44, 55, 66], [77, 88, 99]
print('\n[ c1ํ–‰, c2ํ–‰ ๋™์‹œ ์ˆ˜์ • ]\n', df)
[ DataFrame ๋ณ€๊ฒฝ ์ „ ]
     a0  a1  a2
c0   1   4   7
c1   2   5   8
c2   3   6   9

==========================================

[ c3ํ–‰ ์ถ”๊ฐ€ ]
      a0   a1   a2
c0    1    4    7
c1    2    5    8
c2    3    6    9
c3  999  999  999

[ c4ํ–‰ ์ถ”๊ฐ€ ]
      a0   a1   a2
c0    1    4    7
c1    2    5    8
c2    3    6    9
c3  999  999  999
c4  100  200  300

==========================================

[ c0ํ–‰ ์ˆ˜์ • ]
      a0   a1   a2
c0   11   22   33
c1    2    5    8
c2    3    6    9
c3  999  999  999
c4  100  200  300

[ c1ํ–‰, c2ํ–‰ ๋™์‹œ ์ˆ˜์ • ]
      a0   a1   a2
c0   11   22   33
c1   44   55   66
c2   77   88   99
c3  999  999  999
c4  100  200  300


3-3) ์›์†Œ ์„ ํƒ/์ˆ˜์ •

๋ฐ์ดํ„ฐํ”„๋ ˆ์ž„์—์„œ loc ์™€ iloc ๋ฉ”์†Œ๋“œ์— ํŠน์ • ์›์†Œ์˜ ์ขŒํ‘œ([ํ–‰ ์ธ๋ฑ์Šค, ์—ด์ด๋ฆ„])๋ฅผ ์ „๋‹ฌํ•˜๋ฉด ํ•ด๋‹น ์œ„์น˜์— ์žˆ๋Š” ์›์†Œ๊ฐ€ ๋ฐ˜ํ™˜๋œ๋‹ค. ์ด๋Š” ํŠน์ • ์›์†Œ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ํŠน์ • ๋ฒ”์œ„์˜ ์›์†Œ, ํŠน์ • ๋‹ค์ค‘ ์›์†Œ ๋“ฑ ๋ชจ๋‘ ๋ฐ˜ํ™˜์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค.

# loc ์ด์šฉ
DataFrame.loc[ํ–‰ ์ธ๋ฑ์Šค, ์—ด ์ด๋ฆ„]
DataFrame.loc[ํ–‰ ์ธ๋ฑ์Šค][์—ด ์ด๋ฆ„]

# iloc ์ด์šฉ
DataFrame.iloc[ํ–‰ ๋ฒˆํ˜ธ, ์—ด ๋ฒˆํ˜ธ]
DataFrame.iloc[ํ–‰ ๋ฒˆํ˜ธ][์—ด ๋ฒˆํ˜ธ]


1ํ–‰ n์—ด ํ˜น์€ nํ–‰ 1์—ด์˜ ์›์†Œ๋“ค์„ ์„ ํƒํ•  ๊ฒฝ์šฐ์—๋Š” series ๊ฐ์ฒด๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

print('[ DataFrame ]\n', df)

a = df.loc['c0', ['a0', 'a1']]
print('\n[ 1ํ–‰ 2์—ด ์„ ํƒ ]\n', a)
print(type(a))

b = df.loc[['c0', 'c1'], 'a0']
print('\n[ 2ํ–‰ 1์—ด ์„ ํƒ ]\n', b)
print(type(b))
[ DataFrame ]
     a0  a1  a2
c0   1   4   7
c1   2   5   8
c2   3   6   9

[ 1ํ–‰ 2์—ด ์„ ํƒ ]
a0    1
a1    4
Name: c0, dtype: int64
<class 'pandas.core.series.Series'>

[ 2ํ–‰ 1์—ด ์„ ํƒ ]
c0    1
c1    2
Name: a0, dtype: int64
<class 'pandas.core.series.Series'>


์Šฌ๋ผ์ด์‹ฑ์„ ์ด์šฉํ•ด์„œ ๋‹ค์ค‘ ๋ฒ”์œ„ ์›์†Œ๋ฅผ ๋ฐ˜ํ™˜ํ•  ์ˆ˜๋„ ์žˆ๋‹ค.

# ๋”•์…”๋„ˆ๋ฆฌ ๋ฐ์ดํ„ฐ
df = pd.DataFrame({ 'a0' : [1, 2, 3, 4], 'a1' : [5, 6, 7, 8], 'a2' : [9, 10, 11, 12], 'a3' : [13, 14, 15, 16]}, 
		    index = ['c0', 'c1', 'c2', 'c3'])

print('[ DataFrame ]\n', df) # ๋‹ค๋ฅธ ์˜ˆ์ œ์™€๋Š” ๋‹ค๋ฅธ 4x4๋ฐ์ดํ„ฐํ”„๋ ˆ์ž„

a = df.loc['c1':'c2', 'a1':'a2']
print('\n[ loc : 1~2ํ–‰, 1~2์—ด ์„ ํƒ ]\n', a)
print(type(a))

b = df.iloc[:, :4]
print('\n[ iloc : ์ „์ฒด ํ–‰, 0~3์—ด ์„ ํƒ ]\n', b)
print(type(b))
[ DataFrame ]
     a0  a1  a2  a3
c0   1   5   9  13
c1   2   6  10  14
c2   3   7  11  15
c3   4   8  12  16

[ loc : 1~2ํ–‰, 1~2์—ด ์„ ํƒ ]
     a1  a2
c1   6  10
c2   7  11
<class 'pandas.core.frame.DataFrame'>

[ iloc : ์ „์ฒด ํ–‰, 0~3์—ด ์„ ํƒ ]
     a0  a1  a2  a3
c0   1   5   9  13
c1   2   6  10  14
c2   3   7  11  15
c3   4   8  12  16
<class 'pandas.core.frame.DataFrame'>


์—ด

4-1) ์—ด ์„ ํƒ

๋ฐ์ดํ„ฐํ”„๋ ˆ์ž„์—์„œ ์—ด์„ ์„ ํƒํ•  ๋•Œ๋Š” [](๋Œ€๊ด„ํ˜ธ)๋ฅผ ์ด์šฉํ•˜๊ฑฐ๋‚˜, ๋ฉ”์†Œ๋“œ์ฒ˜๋Ÿผ .(๋„ํŠธ)๋ฅผ ์ด์šฉํ•˜์—ฌ ์—ด ์ด๋ฆ„์„ ์„ ํƒํ•  ์ˆ˜ ์žˆ๋‹ค. ๋‹จ, .(๋„ํŠธ)๋ฅผ ์ด์šฉํ•œ ๋ฐฉ๋ฒ•์˜ ๊ฒฝ์šฐ ๋‹จ์ผ ์—ด์„ ์„ ํƒํ•  ๋•Œ๋งŒ ์‚ฌ์šฉํ•œ๋‹ค.

๋‹ค์Œ์€ ๋‹จ์ผ ์—ด์„ ์ถœ๋ ฅํ•˜๋Š” ์˜ˆ์ œ์ด๋‹ค. ๋‹จ์ผ ํ–‰์„ ์ถœ๋ ฅํ•  ๋•Œ์™€ ๋™์ผํ•˜๊ฒŒ series ๊ฐ์ฒด๊ฐ€ ๋ฐ˜ํ™˜๋˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

print('[ DataFrame ]\n', df)

first_col1 = df['a0']
first_col2 = df.a0 # ๋”ฐ์˜ดํ‘œ๋ฅผ ์•ˆ๋ถ™์ด๋Š” ๊ฒƒ์ด ํฌ์ธํŠธ์ด๋‹ค!

print('\n[ a0์—ด ์„ ํƒ by [] ]\n', first_col1)
print(type(first_col1))

print('\n[ a0์—ด ์„ ํƒ by . ]\n', first_col2)
print(type(first_col2))
[ DataFrame ]
     a0  a1  a2
c0   1   4   7
c1   2   5   8
c2   3   6   9

[ a0์—ด ์„ ํƒ by [] ]
c0    1
c1    2
c2    3
Name: a0, dtype: int64
<class 'pandas.core.series.Series'>

[ a0์—ด ์„ ํƒ by . ]
c0    1
c1    2
c2    3
Name: a0, dtype: int64
<class 'pandas.core.series.Series'>


ํŠน์ • ๋‹ค์ค‘ ์—ด์„ ์ถœ๋ ฅํ•  ๋•Œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์œผ๋ฉฐ, DataFrame ๊ฐ์ฒด๊ฐ€ ๋ฐ˜ํ™˜๋˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

print('[ DataFrame ]\n', df)

first_col1 = df[['a0', 'a2']]

print('\n[ a0, a2์—ด ์„ ํƒ ]\n', first_col1)
print(type(first_col1))
[ DataFrame ]
     a0  a1  a2
c0   1   4   7
c1   2   5   8
c2   3   6   9

[ a0, a2์—ด ์„ ํƒ ]
     a0  a2
c0   1   7
c1   2   8
c2   3   9
<class 'pandas.core.frame.DataFrame'>


4-2) ์—ด ์ถ”๊ฐ€/์ˆ˜์ •

๋ฐ์ดํ„ฐํ”„๋ ˆ์ž„์— ์—ด์„ ์ถ”๊ฐ€ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋ฐ์ดํ„ฐํ”„๋ ˆ์ž„์˜ ์—ด์„ ์ƒ‰์ธํ•˜๋Š” ๋ฐฉ๋ฒ•๊ณผ ๋˜‘๊ฐ™๋‹ค.

# ์—ด์ถ”๊ฐ€ 
DataFrame['์ƒˆ๋กœ์šด ์—ด ์ด๋ฆ„'] = ์ƒˆ๋กœ์šด ์—ด์˜ ๋ฐ์ดํ„ฐ ๊ฐ’ or ์ƒˆ๋กœ์šด ์—ด์˜ ๋ฐ์ดํ„ฐ ๋ฆฌ์ŠคํŠธ


๋ฆฌ์ŠคํŠธ๋กœ ๊ฐ’์„ ๊ธฐ์ž…ํ•  ๊ฒฝ์šฐ, ๋ฆฌ์ŠคํŠธ์˜ ๊ธธ์ด๋Š” ๋ฐ์ดํ„ฐํ”„๋ ˆ์ž„์˜ ํ–‰์˜ ๊ธธ์ด์™€ ๋™์ผํ•ด์•ผ๋งŒ ํ•œ๋‹ค. ๋งŒ์•ฝ ๋ฆฌ์ŠคํŠธ๊ฐ€ ์•„๋‹Œ ๊ฐ’(์˜ˆ์ œ์—์„œ๋Š” 999)์„ ๊ธฐ์ž…ํ•  ๊ฒฝ์šฐ, ๋ชจ๋“  ํ–‰์— ๋™์ผํ•œ ๊ฐ’์ด ์ถ”๊ฐ€๋œ๋‹ค.

ํ–‰๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ, ๊ธฐ์กด ๋ฐ์ดํ„ฐํ”„๋ ˆ์ž„์— ์กด์žฌํ•˜๋Š” ์—ด์„ ๋Œ€๊ด„ํ˜ธ ์•ˆ์— ๊ธฐ์ž…ํ•  ๊ฒฝ์šฐ ํ•ด๋‹น ์—ด์˜ ๊ฐ’๋“ค์ด ์ˆ˜์ •๋œ๋‹ค. ๋”๋ถˆ์–ด, ์—ฌ๋Ÿฌ ์—ด๋„ ๋™์‹œ์— ์ˆ˜์ •๊ฐ€๋Šฅํ•˜๋‹ค.

print('[ DataFrame ๋ณ€๊ฒฝ ์ „ ]\n', df)

print('\n==========================================')

df['a3'] = 999
print('\n[ a3์—ด ์ถ”๊ฐ€ ]\n', df)

df['a4'] = [100, 200, 300]
print('\n[ a4์—ด ์ถ”๊ฐ€ ]\n', df)

print('\n==========================================')

df['a0'] = [11, 22, 33]
print('\n[ a0์—ด ์ˆ˜์ • ]\n', df)

df[['a1', 'a2']] = [[44,55], [66, 77], [88, 99]] 
# [44, 55], [66, 77], [88, 99]๋กœ ๊ธฐ์ž…๊ฐ€๋Šฅ
print('\n[ a1์—ด, a2์—ด ์ˆ˜์ • ]\n', df)
[ DataFrame ๋ณ€๊ฒฝ ์ „ ]
     a0  a1  a2
c0   1   4   7
c1   2   5   8
c2   3   6   9

==========================================

[ a3์—ด ์ถ”๊ฐ€ ]
     a0  a1  a2   a3
c0   1   4   7  999
c1   2   5   8  999
c2   3   6   9  999

[ a4์—ด ์ถ”๊ฐ€ ]
     a0  a1  a2   a3   a4
c0   1   4   7  999  100
c1   2   5   8  999  200
c2   3   6   9  999  300

==========================================

[ a0์—ด ์ˆ˜์ • ]
     a0  a1  a2   a3   a4
c0  11   4   7  999  100
c1  22   5   8  999  200
c2  33   6   9  999  300

[ a1์—ด, a2์—ด ์ˆ˜์ • ]
     a0  a1  a2   a3   a4
c0  11  44  55  999  100
c1  22  66  77  999  200
c2  33  88  99  999  300





ยฉ 2022. by Yejin Ha

Powered by JihyunRyu