
import pandas as pd
import numpy as np
# 리스트를 이용한 시리즈 생성
s1 = pd.Series([10, 20, 30, 40])
print(s1)
# 0 10
# 1 20
# 2 30
# 3 40
# dtype: int64
# 넘파이 배열을 이용한 시리즈 생성
arr = np.array([100, 200, 300])
s2 = pd.Series(arr)
print(s2)
# 0 100
# 1 200
# 2 300
# dtype: int64
# 딕셔너리를 이용한 시리즈 생성 (Key가 인덱스로 설정됨)
s3 = pd.Series({'a': 10, 'b': 20, 'c': 30})
print(s3)
# a 10
# b 20
# c 30
# dtype: int64
.values: 시리즈의 값(ndarray) 반환.index: 시리즈의 인덱스(Index 객체) 반환.name: 시리즈의 이름 설정 및 반환s = pd.Series([1, 2, 3], index=['a', 'b', 'c'], name='Sample Series')
print(s.values)
# [1 2 3]
print(s.index)
# Index(['a', 'b', 'c'], dtype='object')
print(s.name)
# Sample Series
in 연산자 활용.values를 활용해야 함.print('a' in s)
# True (인덱스에 존재)
print('d' in s)
# False (인덱스에 없음)
print(2 in s.values)
# True (값에 존재)
.index는 Index 객체로 저장되며, 직접 수정이 불가능함 (Immutable 속성)list()로 변환 후 수정하거나, reindex()를 사용해야 함.s.index[0] = 'x' # TypeError 발생 (Index 객체는 변경 불가)
reindex()를 사용하여 새로운 인덱스를 지정할 수 있음.s_reindexed = s.reindex(['a', 'b', 'c', 'd'])
print(s_reindexed)
# a 1.0
# b 2.0
# c 3.0
# d NaN
# dtype: float64
method 키워드: 보간(interpolation) 방식 지정 (ffill: 이전 값 채우기, bfill: 이후 값 채우기)fill_value 키워드: 특정 값으로 채움nearest: 가장 가까운 값으로 대체# fill_value를 이용하여 결측값을 0으로 대체
s_filled = s.reindex(['a', 'b', 'c', 'd'], fill_value=0)
print(s_filled)
# a 1
# b 2
# c 3
# d 0
# dtype: int64
# method='ffill'을 사용하여 이전 값으로 채움
s_ffill = s.reindex(['a', 'b', 'c', 'd'], method='ffill')
print(s_ffill)
# a 1.0
# b 2.0
# c 3.0
# d 3.0 # 이전 값(c=3)이 채워짐
# dtype: float64
# method='bfill'을 사용하여 이후 값으로 채움
s_bfill = s.reindex(['a', 'b', 'c', 'd'], method='bfill')
print(s_bfill)
# a 1.0
# b 2.0
# c 3.0
# d NaN # 이후 값이 없어서 NaN 유지
# dtype: float64
axis=1은 열 기준으로, axis=0은 행 기준으로 결합됨.import pandas as pd
df1 = pd.DataFrame({'A': [1, 2]})
df2 = pd.DataFrame({'B': [3, 4]})
result = pd.concat([df1, df2], axis=1) # 열 기준 결합
print(result)
출력:
A B
0 1 3
1 2 4
import numpy as np
data = np.array([[1, 2], [3, 4]])
df = pd.DataFrame(data, columns=['A', 'B'])
print(df)
출력: A B
0 1 2
1 3 4
data = {'A': [1, 2], 'B': [3, 4]}
df = pd.DataFrame(data)
print(df)
출력: A B
0 1 3
1 2 4
data = {'A': {0: 1, 1: 2}, 'B': {0: 3, 1: 4}}
df = pd.DataFrame(data)
print(df)
출력: A B
0 1 3
1 2 4
Series 객체의 이름을 설정하거나 가져올 수 있음.s = pd.Series([1, 2, 3])
s.name = 'numbers'
print(s)
출력: 1
1 2
2 3
Name: numbers, dtype: int64
DataFrame 또는 Series의 값을 ndarray 형태로 반환.
df = pd.DataFrame({'A': [1, 2], 'B': [3, 4]})
print(df.values)
출력:[[1 3]
[2 4]]
출력:
```python
df = pd.DataFrame({'A': [1, 2], 'B': [3, 4]})
print(df.columns) # 열 이름 확인
df.columns = ['X', 'Y'] # 열 이름 변경
print(df)
```
```
Index(['A', 'B'], dtype='object')
X Y
0 1 3
1 2 4
```
출력:
```python
df = pd.DataFrame({'A': [1, 2], 'B': [3, 4]})
print(df.index) # 인덱스 확인
df.index = ['a', 'b'] # 인덱스 변경
print(df)
```
```
RangeIndex(start=0, stop=2, step=1)
A B
a 1 3
b 2 4
```
출력:
```python
df = pd.dataFrame({'A': [1, 2], 'B': [3, 4]})
df.rename(columns={'A': 'alpha', 'B': 'beta'}, inplace=True)
print(df)
```
```
alpha beta
0 1 3
1 2 4
```
출력:
```python
df = pd.DataFrame({'A': [1, 2], 'B': [3, 4]})
print('A' in df.columns) # 'A' 컬럼이 있는지 확인
print('C' in df.columns) # 'C' 컬럼이 있는지 확인
```
```
True
False
```
df = pd.DataFrame({'A': [1, 2], 'B': [3, 4]})
print(df.index) # 인덱스 객체 확인
df = pd.DataFrame({'A': [1, 2], 'B': [3, 4]})
df_reindexed = df.reindex([0, 1, 2], method='ffill') # 결측치는 이전 값으로 채움
print(df_reindexed)
출력: A B
0 1 3
1 2 4
2 2 4
reindex() 메소드에서 결측치를 채우기 위해 사용.df_reindexed = df.reindex(columns=['A', 'B', 'C'], fill_value=0)
print(df_reindexed)
출력:
A B C
0 1 3 0
1 2 4 0
출력:
```python
df = pd.DataFrame({'A': [1, 2], 'B': [3, 4]})
df_reset = df.reset_index()
print(df_reset)
```
```
index A B
0 0 1 3
1 1 2 4
```
출력:
```python
df = pd.DataFrame({'A': ['apple', 'banana'], 'B': ['cherry ', ' date']})
df['A'] = df['A'].str.lower() # 소문자화
df['B'] = df['B'].str.strip() # 양 끝 공백 제거
df['B'] = df['B'].str.replace(' ', '_') # 공백을 언더스코어로 대체
print(df)
```
```
A B
0 apple cherry_
1 banana date
```
df = pd.read_csv('data.csv')
print(df)
df = pd.read_excel('data.xlsx')
print(df)
df.to_csv('output.csv', index=False)
df.to_excel('output.xlsx', index=False)