pandas

pandas

series

: μ‹œλ¦¬μ¦ˆ ν΄λž˜μŠ€λŠ” 1μ°¨μ›μ˜ λ°°μ—΄ ꡬ쑰λ₯Ό κ°€μ§„λ‹€. λ°°μ—΄κ³Ό λ‹€λ₯Έ 점은 인덱슀 λ ˆμ΄λΈ”(label)에 이름을 λΆ™μ—¬ 처리 ν•  수 μžˆλ‹€λŠ” 점이닀

μ‹œλ¦¬μ¦ˆ 객체 λ§Œλ“€κΈ°

import pandas as pd
s = pd.Series([1, 2, 3, 4], index=list("abcd"))

print(s)
# a    1
# b    2
# c    3
# d    4

# μ‹œλ¦¬μ¦ˆλŠ” λ‚΄λΆ€μ˜ 데이터λ₯Ό values μ†μ„±μœΌλ‘œ 쑰회 κ°€λŠ₯ν•˜λ‹€ 
print(s.values) 
# dtype: int64
# [1 2 3 4]

μ‹œλ¦¬μ¦ˆμ˜ 메타 정보 확인

: index의 속성확인, λ°°μ—΄μ˜ ν˜•μƒ, 차원, 크기 정보λ₯Ό μ†μ„±μœΌλ‘œ 관리할 수 μžˆλ‹€

import pandas as pd
s = pd.Series([1, 2, 3, 4], index=list("abcd"))

print(s.index) # Index(['a', 'b', 'c', 'd'], dtype='object')
print(s.shape) # (4,)
print(s.ndim) # 1
print(s.size) # 4

색인 검색

import pandas as pd
s = pd.Series([1, 2, 3, 4], index=list("abcd"))

print(s[0], s['a']) # 1 1

슬라이슀 검색

import pandas as pd
import numpy as np

s = pd.Series([1, 2, 3, 4], index=list("abcd"))

print(s[0:2]) 
# a    1
# b    2
# dtype: int64
print(s['a':'c'])
# a    1
# b    2
# c    3
# dtype: int64
sv = s['a':'c'] # 슬라이슀 κ²€μƒ‰ν•΄μ„œ λ³€μˆ˜μ— ν• λ‹Ή 
print(np.may_share_memory(sv, s)) # True

슬라이슀둜 μƒμ„±ν•œ κ°μ²΄λŠ” 사본객체가 μ•„λ‹ˆλ©°, μ›λ³Έμ˜ λ·°(view)λ₯Ό μ œκ³΅ν•˜λŠ” 것이닀 원본과 슬라이슀 κ²€μƒ‰ν•œ μ‚¬λ³Έμ˜ 데이터가 κ³΅μœ λ˜λŠ”μ§€ may_share_memoryν•¨μˆ˜λ‘œ 확인 νŒλ‹€μŠ€μ˜ λͺ¨λ“  κ°μ²΄λŠ” 슬라이슀 κ²€μƒ‰ν•˜λ©΄ 데이터λ₯Ό κ³΅νœ΄ν•˜λŠ” ν•˜λ‚˜μ˜ λ·°λ₯Ό 제곡

λ ˆμ΄λΈ”μ„ μ‚¬μš©ν•΄μ„œ 색인 μ—°μ‚°μœΌλ‘œ μ›μ†Œ μΆ”κ°€

import pandas as pd
s = pd.Series([1, 2, 3, 4], index=list("abcd"))

s['e'] = 100 # μ—†λŠ” λ ˆμ΄λΈ”μ„ 색인 연산에 λ„£κ³  μΆ”κ°€κ°€ κ°€λŠ₯ν•˜λ‹€ 
# s[5] = 300 # μ •μˆ˜ 인덱슀λ₯Ό μ‚¬μš©ν•΄μ„œλŠ” μ‹œλ¦¬μ¦ˆμ— μƒˆλ‘œμš΄ μ›μ†Œλ₯Ό μΆ”κ°€ν•  수 μ—†λ‹€ 
print(s) 

d = s.to_frame()
print(d)

μ‹œλ¦¬μ¦ˆλŠ” νŒλ‹€μŠ€ λͺ¨λ“ˆμ˜ κ°€μž₯ 기본적인 ν΄λž˜μŠ€μ΄λ‹€. μ‹œλ¦¬μ¦ˆλ₯Ό to_frameλ©”μ†Œλ“œλ‘œ λ°μ΄ν„°ν”„λ ˆμž„μœΌλ‘œ λ³€ν™˜ν•˜λ©΄ ν•˜λ‚˜μ˜ 열을 κ°€μ§„ 데이터 ν”„λ ˆμž„μœΌλ‘œ λ³€ν™˜ν•œλ‹€

λ°μ΄ν„°ν”„λ ˆμž„(DataFrame) ꡬ쑰

: μ‹œλ¦¬μ¦ˆλŠ” 1차원 λ°°μ—΄μ΄λ―€λ‘œ ν–‰ λ‹¨μœ„λ‘œ μ²˜λ¦¬ν•˜μ§€λ§Œ, λ°μ΄ν„°ν”„λ ˆμž„μ€ 2차원 배열이라 열을 κΈ°μ€€μœΌλ‘œ μ²˜λ¦¬ν•œλ‹€.

데이터 ν”„λ ˆμž„ 생성

import pandas as pd

df = pd.DataFrame([[1, 2, 3, 4], [5, 6, 7 ,8]], index=list('ab'), columns =list('abcd'))
print(df)
#    a  b  c  d
# a  1  2  3  4
# b  5  6  7  8
print(df.values) # [[1 2 3 4]  [5 6 7 8]]
print(type(df.values)) # <class 'numpy.ndarray'>

ν–‰κ³Ό μ—΄μ˜ 인덱슀 정보와 λ°°μ—΄μ˜ 메타 정보 확인

import pandas as pd
df = pd.DataFrame([[1, 2, 3, 4], [5, 6, 7 ,8]], index=list('ab'), columns =list('abcd'))

print(df.index) # Index(['a', 'b', 'c', 'd'], dtype='object')
print(df.columns) # Index(['a', 'b', 'c', 'd'], dtype='object')
print(df.shape) # (2, 4)
print(df.ndim) # 2
print(df.size) # 8

색인 검색

import pandas as pd
df = pd.DataFrame([[1, 2, 3, 4], [5, 6, 7 ,8]], index=list('ab'), columns =list('abcd'))

# print(df[0]) # 주의 

print(df['a'])
# a    1
# b    5
# Name: a, dtype: int64
  • λ°μ΄ν„°ν”„λž˜μž„μ„ 색인 검색 ν•  λ•ŒλŠ” μ£Όμ˜ν•΄μ•Ό ν•œλ‹€.

    λ°μ΄ν„°ν”„λž˜μž„μ€ 색인 검색할 λ•Œ μ—΄μ˜ λ ˆμ΄λΈ”μ„ κ²€μƒ‰ν•˜λŠ” λ°©μ‹μ΄λ―€λ‘œ, μ •μˆ˜ 0을 μ§€μ •ν•΄μ„œ κ²€μƒ‰ν•˜λ©΄ 아무것도 μ‘°νšŒλ˜μ§€ μ•ŠλŠ”λ‹€

  • 첫번째 μ—΄μ˜ 이름을 λ„£κ³  색인 연산을 μˆ˜ν–‰ν•˜λ©΄ 2개의 행을 좜λ ₯ν•œλ‹€.

λ°μ΄ν„°ν”„λ ˆμž„μ˜ ν–‰μœΌλ‘œ 검색

: 데이터 ν”„λ ˆμž„μ˜ 행을 κ²€μƒ‰ν•˜λ €λ©΄ λ³„λ„μ˜ μΈλ±μ„œ(indexer)λ₯Ό μ‚¬μš©, ν–‰μ˜ λ ˆμ΄λΈ”λ‘œ 색인 μ—°μ‚­ν• λ•ŒλŠ” loc μΈλ±μ„œλ₯Ό μ‚¬μš©

import pandas as pd
df = pd.DataFrame([[1, 2, 3, 4], [5, 6, 7 ,8]], index=list('ab'), columns =list('abcd'))

print(df.loc['a'])
print(df.loc['a', :]) # ν•˜λ‚˜μ˜ 행을 μ‘°νšŒν•˜λŠ” 것은 ν–‰μ˜ 이름 ν•˜λ‚˜μ™€ λͺ¨λ“  열을 슬라이슀 ν•˜λŠ” 것과 κ°™λ‹€ 
# a    1
# b    2
# c    3
# d    4
# Name: a, dtype: int64
print(df.loc['a': ,'b': 'c'])
#    b  c
# a  2  3
# b  6  7
  • λͺ¨λ“  행을 μŠ¬λΌμ΄μŠ€ν•˜κ³ , 열은 b와 cλ₯Ό μŠ¬λΌμ΄μŠ€ν•˜λ©΄ λ ˆμ΄λΈ” 이름에 ν•΄λ‹Ήν•˜λŠ” 열이 λͺ¨λ‘ μ‘°νšŒλœλ‹€

슬라이슀 검색을 ν†΅ν•œ λΆ€λΆ„ 집합일 λ•Œ λ©”λͺ¨λ¦¬ 곡유

import pandas as pd
import numpy as np
df = pd.DataFrame([[1, 2, 3, 4], [5, 6, 7 ,8]], index=list('ab'), columns =list('abcd'))

dfv = df.loc['a': ,'b': 'c']
print(np.may_share_memory(dfv, df)) # true
  • 데이터 ν”„λ ˆμž„λ„ μ‹œλ¦¬μ¦ˆμ™€ λ§ˆμ°¬κ°€μ§€λ‘œ 슬라이슀 검색은 λ·°λ₯Ό μ œκ³΅ν•΄μ„œ 원과 λ™μΌν•œ λ©”λͺ¨λ¦¬λ₯Ό κ³΅μœ ν•œλ‹€

인덱슀 숫자 μ •λ³΄λ‘œ 검색

: 데이터 ν”„λ ˆμž„μ˜ 행을 μ‘°νšŒν•  λ•Œ μ •μˆ˜ 인덱슀둜 색인 연산을 ν•  수 μžˆλ‹€. 이 λ•ŒλŠ” μ •μˆ˜ 인덱슀둜 검색할 수 μžˆλŠ” μΈλ±μ„œ ilocλ₯Ό μ‚¬μš©ν•΄μ•Ό ν•œλ‹€

import pandas as pd
import numpy as np
df = pd.DataFrame([[1, 2, 3, 4], [5, 6, 7 ,8]], index=list('ab'), columns =list('abcd'))

print(df.iloc[0])
# a    1
# b    2
# c    3
# d    4
# Name: a, dtype: int64
print(df.iloc[0,0])
# 1
s = df.iloc[:, 0]
print(np.may_share_memory(s, df)) # True
  • μ •μˆ˜ 인덱슀λ₯Ό μ²˜λ¦¬ν•  λ•Œλ„ λ©”λͺ¨λ¦¬λ₯Ό κ³΅μœ λ˜λŠ” 것을 μ•Œ 수 μžˆλ‹€

Last updated

Was this helpful?