NumPy
에서 서로 다른 크기의 배열 간의 연산을 가능하게 하는 기능1) 두 배열의 차원 수가 다르면, 더 작은 배열의 앞쪽(왼쪽)에 1을 추가하여 차원 수를 맞춤
import numpy as np
A = np.array([1, 2, 3])
B = 2
# 배열 A에 스칼라 B를 브로드캐스팅하여 덧셈
C = A + B
print(C) # 출력: [3 4 5]
2) 두 배열의 각 차원에서 크기가 다를 때, 어느 한쪽이 1이면 그 배열의 해당 차원은 다른 배열과 맞춰짐
import numpy as np
A = np.array([[1, 2, 3], [4, 5, 6]]) # (2, 3) 배열
B = np.array([10, 20, 30]) # (3,) 배열
# B가 A의 (2, 3) 크기로 브로드캐스팅되어 덧셈
C = A + B
print(C)
# 출력:
# [[11 22 33]
# [14 25 36]]
A = np.array([[1], [2], [3]]) # (3, 1) 배열
B = np.array([10, 20, 30]) # (3,) 배열
# A는 (3, 1), B는 (3,) 크기이므로 B가 (1, 3)으로 변환되어 연산 가능
C = A + B
print(C)
# 출력:
# [[11 21 31]
# [12 22 32]
# [13 23 33]]
3) 크기가 1이 아닌 차원에서 배열의 크기가 맞지 않으면 오류가 발생
1) set_index()
로 인덱스 설정
- inplace
: set_index()
메서드가 원본 데이터프레임 자체를 수정할 지 말지
- drop
: 지정된 열을 인덱스로 설정하면서 기존 열에서는 삭제할 지 말지
import pandas as pd
# 예시 데이터프레임 생성
data = {
'Name': ['Alice', 'Bob', 'Charlie'],
'Age': [25, 30, 35],
'City': ['New York', 'Los Angeles', 'Chicago']
}
df = pd.DataFrame(data)
# inplace=False (기본값): 원본 데이터프레임은 수정되지 않고, 새로운 데이터프레임을 반환
# drop=True (기본값): 지정된 열을 인덱스로 설정하면서 기존 열에서는 삭제
new_df = df.set_index('Name', inplace=False, drop=True)
print(new_df) # 'Name'이 새로운 인덱스
print(df) # 원본 데이터프레임은 변하지 않음
# inplace=True: 원본 데이터프레임이 수정됨
df.set_index('Name', inplace=True, drop=True)
print(df) # 'Name'이 인덱스가 된 원본 데이터프레임
# drop=False: 지정된 열이 인덱스로 설정되지만, 여전히 데이터프레임의 열로 남음
df.set_index('Age', inplace=True, drop=False)
print(df) # 'Age'가 인덱스가 된 원본 데이터프레임
-------------------------------------------------
# 출력
# new_df (inplace=False로 반환된 새로운 데이터프레임)
Age City
Name
Alice 25 New York
Bob 30 Los Angeles
Charlie 35 Chicago
# df (원본 데이터프레임은 변화 없음)
Name Age City
0 Alice 25 New York
1 Bob 30 Los Angeles
2 Charlie 35 Chicago
# df (inplace=True 후)
Age City
Name
Alice 25 New York
Bob 30 Los Angeles
Charlie 35 Chicago
# df (drop=False 후)
Age City
Age
25 25 New York
30 30 Los Angeles
35 35 Chicago
2) df.loc[]
를 사용해 인덱스로 데이터 선택
print(new_df.loc['Bob'])
------------------------
# 출력
Age 30
City Los Angeles
Name: Bob, dtype: object
1) 단일 열 선택
import pandas as pd
# 예시 데이터프레임 생성
data = {
'Name': ['Alice', 'Bob', 'Charlie'],
'Age': [25, 30, 35],
'City': ['New York', 'Los Angeles', 'Chicago']
}
df = pd.DataFrame(data)
print(df['Age']) # 단일 열 선택
-----------------------------------------------------
# 출력
0 25
1 30
2 35
Name: Age, dtype: int64
2) 여러 열 선택
print(df[['Age', 'City']])
--------------------------
# 출력
Age City
0 25 New York
1 30 Los Angeles
2 35 Chicago
1) df.loc[]
: 레이블(이름) 을 사용하여 행 선택
- 인덱스 라벨로 특정 행 선택
- 여러 행(열)을 선택할 때는 리스트나 슬라이싱을 통해 선택 (df.loc[행, 열]
구조)
data = {
'Name': ['Alice', 'Bob', 'Charlie'],
'Age': [25, 30, 35],
'City': ['New York', 'Los Angeles', 'Chicago']
}
df = pd.DataFrame(data)
df.set_index('Name', inplace=True)
print(df.loc['Bob']) # 단일 행 선택
-----------------------------------------------------
# 출력
Age 30
City Los Angeles
Name: Bob, dtype: object
print(df.loc[0:1, 'Age']) # df.loc에서 슬라이싱(a:b)은 a부터 b까지
--------------------------
0 25
1 30
2 35
Name: Age, dtype: int64
2) df.iloc[]
: 정수 인덱스(위치) 를 사용하여 행을 선택
- 정수 인덱스로 특정 행 선택
- 여러 행(열)을 선택할 때는 리스트나 슬라이싱을 통해 선택 (df.iloc[행, 열]
구조)
data = {
'Name': ['Alice', 'Bob', 'Charlie'],
'Age': [25, 30, 35],
'City': ['New York', 'Los Angeles', 'Chicago']
}
df = pd.DataFrame(data)
df.set_index('Name', inplace=True)
print(df.iloc[1]) # 단일 행 선택
-----------------------------------------------------
# 출력
Age 30
City Los Angeles
Name: Bob, dtype: object
print(df.iloc[0:1, [1, 2]]) # df.iloc에서 슬라이싱(a:b)은 a부터 b-1 까지
---------------------------
Age City
0 25 New York