import pandas as pd
pd.Series(
data = [시리즈의 데이터],
index = [시리즈의 인덱스 (디폴트 인덱스는 0, 1, 2, ...)],
dtype = [요소의 데이터 타입 정의],
name = [시리즈의 이름]
)
ex 1 ) 딕셔너리 형태로 시리즈 생성
score = {
'국어': 90,
'영어': 89,
'수학': 67
}
pd.Series(data=score, name='김개똥')
국어 90
영어 89
수학 67
Name: 김개똥, dtype: int64
ex 2 ) 리스트 형태로 시리즈 생성
subject = ['국어', '영어', '수학']
score = [90, 89, 67]
pd.Series(data=score, index=subject, name='김개똥')
국어 90
영어 89
수학 67
Name: 김개똥, dtype: int64
※ 인덱스를 새로 지정할 경우 정수형으로 하는 것은 좋지 않아 보임
# 0번째 데이터를 가져오기
index = ['one', 'two', 'three']
data = ['hello', 'i am', 'ulala']
series = pd.Series(data=data, index=index)
print(series[0])
# hello
index = [1, 2, 3]
data = ['hello', 'i am', 'ulala']
series = pd.Series(data=data, index=index)
print(series[0])
# KeyError: 0
> 내부적으로 인덱스를 뭐로 해야하는지 헷갈려 하는 듯
score = {
'국어': 90,
'영어': 89,
'수학': 67
}
series = pd.Series(data=score, name='김개똥')
print(series[0])
print('-' * 30)
print(series[:2])
print('-' * 30)
print(series.get('수학'))
print('-' * 30)
print(series.get('사회', None))
90
------------------------------
국어 90
영어 89
Name: 김개똥, dtype: int64
------------------------------
67
------------------------------
None
※ series[0]
과 series[[0]]
의 차이점
series[0]
: series
의 0번 인덱스에 있는 값series[[0]]
: series
의 0번 행print(series[0])
print('-' * 30)
print(series[[0]])
90
------------------------------
국어 90
Name: 김개똥, dtype: int64
import pandas as pd
pd.DataFrame(
data = [데이터프레임의 데이터],
index = [데이터프레임의 인덱스 (디폴트 인덱스는 0, 1, 2, ...)],
columns = [데이터프레임의 열 이름]
)
ex 1 ) 딕셔너리 형태로 데이터프레임 생성 (행 단위)
data = {
'김개똥': [90, 89, 67],
'임꽃님': [100, 100, 100],
'유말년': [50, 45, 84]
}
index = ['국어', '영어', '수학']
pd.DataFrame(data=data, index=index)
김개똥 | 임꽃님 | 유말년 | |
---|---|---|---|
국어 | 90 | 100 | 50 |
영어 | 89 | 100 | 45 |
수학 | 67 | 100 | 84 |
ex 2 ) 리스트 형태로 데이터프레임 생성 (열 단위)
data = [
{'김개똥': 90, '임꽃님': 100, '유말년': 50},
{'김개똥': 89, '임꽃님': 100, '유말년': 45},
{'김개똥': 67, '임꽃님': 100, '유말년': 84}
]
index = ['국어', '영어', '수학']
pd.DataFrame(data=data, index=index)
김개똥 | 임꽃님 | 유말년 | |
---|---|---|---|
국어 | 90 | 100 | 50 |
영어 | 89 | 100 | 45 |
수학 | 67 | 100 | 84 |
초기 데이터프레임:
김개똥 | 임꽃님 | 유말년 | |
---|---|---|---|
국어 | 90 | 100 | 50 |
영어 | 89 | 100 | 45 |
수학 | 67 | 100 | 84 |
insert
사용df.insert(3, '박인자', [60, 60, 60])
df
김개똥 | 임꽃님 | 유말년 | 박인자 | |
---|---|---|---|---|
국어 | 90 | 100 | 50 | 60 |
영어 | 89 | 100 | 45 | 60 |
수학 | 67 | 100 | 84 | 60 |
loc
사용df.loc[:, ['박인자']] = [0, 0, 0]
df
김개똥 | 임꽃님 | 유말년 | 박인자 | |
---|---|---|---|---|
국어 | 90 | 100 | 50 | 0 |
영어 | 89 | 100 | 45 | 0 |
수학 | 67 | 100 | 84 | 0 |
df['박인자'] = [10, 20, 30]
df
김개똥 | 임꽃님 | 유말년 | 박인자 | |
---|---|---|---|---|
국어 | 90 | 100 | 50 | 10 |
영어 | 89 | 100 | 45 | 20 |
수학 | 67 | 100 | 84 | 30 |
초기 데이터프레임:
김개똥 | 임꽃님 | 유말년 | |
---|---|---|---|
국어 | 90 | 100 | 50 |
영어 | 89 | 100 | 45 |
수학 | 67 | 100 | 84 |
loc
사용df.loc['과학'] = [54, 100, 87, 90]
df
김개똥 | 임꽃님 | 유말년 | 박인자 | |
---|---|---|---|---|
국어 | 90 | 100 | 50 | 30 |
영어 | 89 | 100 | 45 | 100 |
수학 | 67 | 100 | 84 | 76 |
과학 | 54 | 100 | 87 | 90 |
concat
사용df_pe = pd.DataFrame({
'김개똥': [25],
'임꽃님': [100],
'유말년': [53],
'박인자': [50]
}, index=['체육'])
df = pd.concat([df, df_pe])
df
김개똥 | 임꽃님 | 유말년 | 박인자 | |
---|---|---|---|---|
국어 | 90 | 100 | 50 | 30 |
영어 | 89 | 100 | 45 | 100 |
수학 | 67 | 100 | 84 | 76 |
과학 | 54 | 100 | 87 | 90 |
체육 | 25 | 100 | 53 | 50 |
초기 데이터프레임:
김개똥 | 임꽃님 | 유말년 | |
---|---|---|---|
국어 | 90 | 100 | 50 |
영어 | 89 | 100 | 45 |
수학 | 67 | 100 | 84 |
rename
사용df = df.rename(columns={
'김개똥': 'Kim',
'임꽃님': 'Lim',
'유말년': 'Yoo'
})
df
Kim | Lim | Yoo | |
---|---|---|---|
국어 | 90 | 100 | 50 |
영어 | 89 | 100 | 45 |
수학 | 67 | 100 | 84 |
columns
사용df.columns = ['김', '임', '유']
df
김 | 임 | 유 | |
---|---|---|---|
국어 | 90 | 100 | 50 |
영어 | 89 | 100 | 45 |
수학 | 67 | 100 | 84 |
score = {
'국어': 90,
'영어': 89,
'수학': 67
}
series = pd.Series(data=score, name='김개똥')
data = {
'김개똥': [90, 89, 67],
'임꽃님': [100, 100, 100],
'유말년': [50, 45, 84]
}
index = ['국어', '영어', '수학']
df = pd.DataFrame(data=data, index=index)
series.to_numpy()
array([90, 89, 67], dtype=int64)
디폴트
df.to_dict()
{'김개똥': {'국어': 90, '영어': 89, '수학': 67},
'임꽃님': {'국어': 100, '영어': 100, '수학': 100},
'유말년': {'국어': 50, '영어': 45, '수학': 84}}
JSON 형태
df.to_dict('records')
[{'김개똥': 90, '임꽃님': 100, '유말년': 50},
{'김개똥': 89, '임꽃님': 100, '유말년': 45},
{'김개똥': 67, '임꽃님': 100, '유말년': 84}]
# CSV 파일로 내보내기
df.to_csv()
# 엑셀 파일로 내보내기
df.to_excel()
import seaborn as sns
iris = sns.load_dataset('iris')
iris.head()
sepal_length | sepal_width | petal_length | petal_width | species | |
---|---|---|---|---|---|
0 | 5.1 | 3.5 | 1.4 | 0.2 | setosa |
1 | 4.9 | 3.0 | 1.4 | 0.2 | setosa |
2 | 4.7 | 3.2 | 1.3 | 0.2 | setosa |
3 | 4.6 | 3.1 | 1.5 | 0.2 | setosa |
4 | 5.0 | 3.6 | 1.4 | 0.2 | setosa |
isin()
값이 지정한 값들 중 존재하는 행들만 추출
# petal_length가 1.0 또는 1.2인 행들만 출력
condition = iris['petal_length'].isin([1.0, 1.2])
iris[condition]
sepal_length | sepal_width | petal_length | petal_width | species | |
---|---|---|---|---|---|
14 | 5.8 | 4.0 | 1.2 | 0.2 | setosa |
22 | 4.6 | 3.6 | 1.0 | 0.2 | setosa |
35 | 5.0 | 3.2 | 1.2 | 0.2 | setosa |
iloc()
index location : 인덱스로 값에 접근
df.iloc[a, b]
: a행 b열
# 0행 0열에 있는 값 반환
iris.iloc[0, 0]
# 0행 0열의 시리즈 형태 반환 (열 기준)
iris.iloc[0, [0]]
# 0행 0열의 시리즈 형태 반환 (행 기준)
iris.iloc[[0], 0]
# 0행 0열의 데이터프레임 형태 반환
iris.iloc[[0], [0]]
df.iloc[[a, b], :]
: a행 b행, 모든 열
# 0행 1행, 모든 열의 데이터프레임 형태 반환
iris.iloc[[0, 1]]
# 또는 iris.iloc[[0, 1], :]
df.iloc[[a, b], [c, d]]
: a행 b행, c열 d열
# 0행 1행, 0열 1열의 데이터프레임 형태 반환
iris.iloc[[0, 1], [0, 1]]
loc()
location : 열의 이름로 값에 접근
# 모든 행의 sepal_length와 sepal_width 열
iris.loc[:, ['sepal_length', 'sepal_width']]
# sepal_length가 5보다 큰 값
mask = iris['sepal_length'] > 5
mask.head()
0 True
1 False
2 False
3 False
4 False
Name: sepal_length, dtype: bool
iris[mask].head()
sepal_length | sepal_width | petal_length | petal_width | species | |
---|---|---|---|---|---|
0 | 5.1 | 3.5 | 1.4 | 0.2 | setosa |
5 | 5.4 | 3.9 | 1.7 | 0.4 | setosa |
10 | 5.4 | 3.7 | 1.5 | 0.2 | setosa |
14 | 5.8 | 4.0 | 1.2 | 0.2 | setosa |
15 | 5.7 | 4.4 | 1.5 | 0.4 | setosa |
&
: AND|
: OR~
: NOTselect_dtypes()
데이터 형식에 기반한 열 선택
iris.select_dtypes(include=np.number)
sepal_length | sepal_width | petal_length | petal_width | |
---|---|---|---|---|
0 | 5.1 | 3.5 | 1.4 | 0.2 |
1 | 4.9 | 3.0 | 1.4 | 0.2 |
2 | 4.7 | 3.2 | 1.3 | 0.2 |
3 | 4.6 | 3.1 | 1.5 | 0.2 |
4 | 5.0 | 3.6 | 1.4 | 0.2 |
iris.select_dtypes(exclude=np.number)
species | |
---|---|
0 | setosa |
1 | setosa |
2 | setosa |
3 | setosa |
4 | setosa |