Pandas 객체에 저장된 데이터는 여러 내장 함수를 이용해서 합칠 수 있다.
하나 이상의 키를 기준으로 DataFrame의 로우를 합친다. SQL이나 다른 관계형 데이터베이스의 join 연산과 유사하다.
left : 머지하려는 DataFrame중 왼쪽에 위치한 DataFrame
right : 머지하려는 DataFrame 중 오른쪽에 위치한 DataFrame
how : 조인 방법('inner','outer','left','right')
on : 조인 하려는 로우 이름
left_on : 조인 키로 사용할 left DataFrame의 칼럼
right_on : 조인 키로 사용할 right DataFrame의 칼럼
left_index : 조인 키로 사용할 left DataFrame의 색인 로우
right_index : 조인 키로 사용할 right DataFrame의 색인 로우
sort : 조인 키에 따라 병합된 데이터를 사전 순으로 정렬
suffixes : 컬럼 이름이 겹칠 경우 각 컬럼 이름 뒤에 붙일 문자열 튜플
copy : False 일 경우, 예외적인 경우에 결과로 데이터가 복사되지 않도록 한다
import pandas as pd
frame1 = pd.DataFrame({'kdata':['b','b','a','c','a','a','b'],
'data1':range(7)})
frame2 = pd.DataFrame({'kdata':['a','b','d'],
'data2':range(3)})
print(frame1)
print()
print(frame2)
print()
print(pd.merge(frame1,frame2, on='kdata'))
print()
print(pd.merge(frame1,frame2, on='kdata',how='outer'))
print()
print(pd.merge(frame1,frame2, on='kdata',how='left'))
print()
print(pd.merge(frame1,frame2, on='kdata',how='right'))
print()
frame3 = pd.DataFrame({'lkdata':['b','b','a','c','a','a','b'],
'data1':range(7)})
frame4 = pd.DataFrame({'rkdata':['a','b','d'],
'data2':range(3)})
print(pd.merge(frame3,frame4, left_on='lkdata', right_on='rkdata').
drop('rkdata',axis=1))
kdata data1
0 b 0
1 b 1
2 a 2
3 c 3
4 a 4
5 a 5
6 b 6
kdata data2
0 a 0
1 b 1
2 d 2
kdata data1 data2
0 b 0 1
1 b 1 1
2 a 2 0
3 a 4 0
4 a 5 0
5 b 6 1
kdata data1 data2
0 a 2.0 0.0
1 a 4.0 0.0
2 a 5.0 0.0
3 b 0.0 1.0
4 b 1.0 1.0
5 b 6.0 1.0
6 c 3.0 NaN
7 d NaN 2.0
kdata data1 data2
0 b 0 1.0
1 b 1 1.0
2 a 2 0.0
3 c 3 NaN
4 a 4 0.0
5 a 5 0.0
6 b 6 1.0
kdata data1 data2
0 a 2.0 0
1 a 4.0 0
2 a 5.0 0
3 b 0.0 1
4 b 1.0 1
5 b 6.0 1
6 d NaN 2
lkdata data1 data2
0 b 0 1
1 b 1 1
2 a 2 0
3 a 4 0
4 a 5 0
5 b 6 1
import pandas as pd
df_1 = pd.DataFrame({
'학교':['서울대','서강대','부산대','충남대','경북대'],
'지역':['서울','서울','부산','대전','대구'],
'학생수':['10,712','8,179','11,935','10,991','11,314'],
'학과 수':['56','45','58','51','59'],
'평균등록금':['2,110,000','5,340,000','2,430,000','2,347,000','2,522,000']},
columns=['학교','지역','학생수','학과 수','평균등록금'])
df_2 = pd.DataFrame({
'학교평가등급':['B+','A','A','A-','A+'],
'학생만족도':['81점','79점','77점','84점','82점'],
'취업자수':['5,122명','4,987명','5,001명','5,117명','4,777명'],
'area':['서울','서울','부산','대전','대구'],
'면적':['9,122','7,101','9,095','8,873','9,002']
})
print(pd.merge(df_1,df_2, left_on='지역', right_on='area'))
print(pd.merge(df_1,df_2, left_on='지역', right_on='area').drop('area',axis=1))
# df_3 = pd.merge(df_1,df_2, left_on='지역', right_on='area')
# df_3.drop(['area'],axis='columns',inplace=True)
# print(df_3)
학교 지역 학생수 학과 수 평균등록금 학교평가등급 학생만족도 취업자수 area 면적
0 서울대 서울 10,712 56 2,110,000 B+ 81점 5,122명 서울 9,122
1 서울대 서울 10,712 56 2,110,000 A 79점 4,987명 서울 7,101
2 서강대 서울 8,179 45 5,340,000 B+ 81점 5,122명 서울 9,122
3 서강대 서울 8,179 45 5,340,000 A 79점 4,987명 서울 7,101
4 부산대 부산 11,935 58 2,430,000 A 77점 5,001명 부산 9,095
5 충남대 대전 10,991 51 2,347,000 A- 84점 5,117명 대전 8,873
6 경북대 대구 11,314 59 2,522,000 A+ 82점 4,777명 대구 9,002
학교 지역 학생수 학과 수 평균등록금 학교평가등급 학생만족도 취업자수 면적
0 서울대 서울 10,712 56 2,110,000 B+ 81점 5,122명 9,122
1 서울대 서울 10,712 56 2,110,000 A 79점 4,987명 7,101
2 서강대 서울 8,179 45 5,340,000 B+ 81점 5,122명 9,122
3 서강대 서울 8,179 45 5,340,000 A 79점 4,987명 7,101
4 부산대 부산 11,935 58 2,430,000 A 77점 5,001명 9,095
5 충남대 대전 10,991 51 2,347,000 A- 84점 5,117명 8,873
6 경북대 대구 11,314 59 2,522,000 A+ 82점 4,777명 9,002
교집합과 합집합 연결 제공
특정 축의 방향으로 연결
objs : 이어붙일 pandas 객체의 사전이나 리스트
axis : 이어붙일 축 방향
join : 조인 방법('ineer','outer')
join_axes : 합집합/교집합을 수행하는 대신 다른 n-1축으로 사용할 색인을 지정한다.
keys : 이어 붙일 객체나 이어붙인 축에 대한 게층 색인을 생성하는데 연관된 값
levels : 계층 색인 레벨로 사용할 색인을 지정한다.
names : Keys나 levels 혹은 둘 다 있는 경우, 생성된 계층 레벨을 위한 이름
verify : 이어붙인 객체에 중복되는 축이 있는지 검사하고 있다면 예외를 발생시킨다.
integrity : 중복을 허용한다.
Ignore_index : 이어붙인 축의 색인을 유지하지 않고 range로 새로운 색인을 생성한다.
하나의 축을 따라 객체를 이어붙인다.
import pandas as pd
import numpy as np
s1 = pd.Series([0,1], index=list('ab'))
s2 = pd.Series([2,3,4], index=list('cde'))
s3 = pd.Series([5,6], index=list('fg'))
print(s1)
print()
print(s2)
print()
print(s3)
print()
print(pd.concat([s1,s2,s3],axis=0))
print()
print(pd.concat([s1,s2,s3],axis=1))
print()
s4 = pd.concat([s1 * 5,s3])
print(s4)
print()
print(pd.concat([s1,s4],axis=1))
print()
print(pd.concat([s1,s4],axis=1,join='inner'))
print()
print(pd.concat([s1,s4],axis=1))
print()
print(pd.concat([s1,s4],axis=1,join='inner'))
print()
df1 = pd.DataFrame(np.arange(6).reshape(3,2),
index=list('abc'),
columns=['one','two'])
df2 = pd.DataFrame(np.arange(4).reshape(2,2),
index=list('ac'),
columns=['three','four'])
print(df1)
print()
print(df2)
print()
print(pd.concat([df1,df2], axis=1))
print()
print(pd.concat([df1,df2],axis=1,keys=['data1','data2']))
a 0
b 1
dtype: int64
c 2
d 3
e 4
dtype: int64
f 5
g 6
dtype: int64
a 0
b 1
c 2
d 3
e 4
f 5
g 6
dtype: int64
0 1 2
a 0.0 NaN NaN
b 1.0 NaN NaN
c NaN 2.0 NaN
d NaN 3.0 NaN
e NaN 4.0 NaN
f NaN NaN 5.0
g NaN NaN 6.0
a 0
b 5
f 5
g 6
dtype: int64
0 1
a 0.0 0
b 1.0 5
f NaN 5
g NaN 6
0 1
a 0 0
b 1 5
one two
a 0 1
b 2 3
c 4 5
three four
a 0 1
c 2 3
one two three four
a 0 1 0.0 1.0
b 2 3 NaN NaN
c 4 5 2.0 3.0
data1 data2
one two three four
a 0 1 0.0 1.0
b 2 3 NaN NaN
c 4 5 2.0 3.0
from operator import index
import pandas as pd
df1 = pd.DataFrame({
'매출':[10000000,120000000,9000000,6000000,8000000,1100000],
'비용':[15000000,1300000,1200000,9000000,9900000,9500000]},
index=['1월','2월','3월','4월','5월','6월'])
df2 = pd.DataFrame({
'매출':[13000000,14000000,17000000,15400000,16500000,16600000],
'비용':[11000000,10400000,11000000,12100000,9000000,9500000]},
index=['7월','8월','9월','10월','11월','12월'])
# print(df1)
# print(df2)
# print(pd.concat([df1,df2],axis=0))
# df3 = pd.DataFrame(df1['매출']+df1['비용'],columns=['이익'])
# print(df3)
# df4=pd.DataFrame(df2['매출']+df2['비용'],columns=['이익'])
# print(df4)
# print(pd.concat([df3,df4]))
# df5 = pd.concat([df1,df2])
# df6 = pd.concat([df3,df4])
# print(df5)
# print(df6)
# print(pd.concat([df5,df6],axis=1,join='inner'))
df3=pd.concat([df1,df2],axis=0)
print(df3)
print()
df3['이익'] = df3['매출'] - df3['비용']
print(df3)
print()
df3.loc['실적'] = df3.sum(axis=0)
print(df3)
매출 비용
1월 10000000 15000000
2월 120000000 1300000
3월 9000000 1200000
4월 6000000 9000000
5월 8000000 9900000
6월 1100000 9500000
7월 13000000 11000000
8월 14000000 10400000
9월 17000000 11000000
10월 15400000 12100000
11월 16500000 9000000
12월 16600000 9500000
매출 비용 이익
1월 10000000 15000000 -5000000
2월 120000000 1300000 118700000
3월 9000000 1200000 7800000
4월 6000000 9000000 -3000000
5월 8000000 9900000 -1900000
6월 1100000 9500000 -8400000
7월 13000000 11000000 2000000
8월 14000000 10400000 3600000
9월 17000000 11000000 6000000
10월 15400000 12100000 3300000
11월 16500000 9000000 7500000
12월 16600000 9500000 7100000
매출 비용 이익
1월 10000000 15000000 -5000000
2월 120000000 1300000 118700000
3월 9000000 1200000 7800000
4월 6000000 9000000 -3000000
5월 8000000 9900000 -1900000
6월 1100000 9500000 -8400000
7월 13000000 11000000 2000000
8월 14000000 10400000 3600000
9월 17000000 11000000 6000000
10월 15400000 12100000 3300000
11월 16500000 9000000 7500000
12월 16600000 9500000 7100000
실적 246600000 108900000 137700000
import pandas as pd
import numpy as np
s1 = pd.Series([np.nan, 2.5, np.nan, 4.5, 5.5, np.nan],
index=list('fedcba'))
s2 = pd.Series(np.arange(len(s1),dtype=np.float32),
index=list('fedbca'))
print(s1)
print()
print(s2)
print(np.where(pd.isnull(s1),s2,s1))
print()
print(s1.combine_first(s2))
print()
df1 = pd.DataFrame({'d1':[1.,np.nan,5.,np.nan],
'd2':[np.nan,2.,np.nan,6.],
'd3':range(2,18,4)})
df2 = pd.DataFrame({'d1':[5.,4.,np.nan,3.,7.],
'd2':[np.nan,3.,4.,6.,8.]})
print(df1)
print()
print(df2)
print()
print(df1.combine_first(df2))
print()
print(df1.combine_first(df2.iloc[:4]))
f NaN
e 2.5
d NaN
c 4.5
b 5.5
a NaN
dtype: float64
f 0.0
e 1.0
d 2.0
b 3.0
c 4.0
a 5.0
dtype: float32
[0. 2.5 2. 4.5 5.5 5. ]
a 5.0
b 5.5
c 4.5
d 2.0
e 2.5
f 0.0
dtype: float64
d1 d2 d3
0 1.0 NaN 2
1 NaN 2.0 6
2 5.0 NaN 10
3 NaN 6.0 14
d1 d2
0 5.0 NaN
1 4.0 3.0
2 NaN 4.0
3 3.0 6.0
4 7.0 8.0
d1 d2 d3
0 1.0 NaN 2.0
1 4.0 2.0 6.0
2 5.0 4.0 10.0
3 3.0 6.0 14.0
4 7.0 8.0 NaN
d1 d2 d3
0 1.0 NaN 2
1 4.0 2.0 6
2 5.0 4.0 10
3 3.0 6.0 14
표 형식의 데이터를 재배치하는 연산을 재형성 또는 피벗 연산이라고 한다.
stack : 데이터의 칼럼을 로우로 피벗 또는 회전 시킨다.
unstack : 로우를 칼럼으로 피벗시킨다.
from operator import index
import numpy as np
import pandas as pd
data = pd.DataFrame(np.arange(6).reshape(2,3),
index=pd.Index(['ohio','colorado'],name='state'),
columns=pd.Index(['one','two','three'],name='number'))
print(data)
result = data.stack()
print()
print(result)
print(type(result))
print()
print()
print(result.unstack())
print()
print(result.unstack(level=0))
print()
print(result.unstack('state'))
print()
s1 = pd.Series([0,1,2,3], index=list('abcd'))
s2 = pd.Series([4,5,6], index=list('cde'))
data2 = pd.concat([s1,s2], keys=['one','two'])
print(data2)
print()
print(data2.unstack())
print()
print(data2.unstack(level=0))
number one two three
state
ohio 0 1 2
colorado 3 4 5
state number
ohio one 0
two 1
three 2
colorado one 3
two 4
three 5
dtype: int64
<class 'pandas.core.series.Series'>
number one two three
state
ohio 0 1 2
colorado 3 4 5
state ohio colorado
number
one 0 3
two 1 4
three 2 5
state ohio colorado
number
one 0 3
two 1 4
three 2 5
one a 0
b 1
c 2
d 3
two c 4
d 5
e 6
dtype: int64
a b c d e
one 0.0 1.0 2.0 3.0 NaN
two NaN NaN 4.0 5.0 6.0
one two
a 0.0 NaN
b 1.0 NaN
c 2.0 4.0
d 3.0 5.0
e NaN 6.0
문제
import numpy as np
import pandas as pd
oa = False
ddata = dict()
while True:
name = input('이름을 입력하세요:')
scores = list(map(int,input('국어 영어 수학 점수를 넣어주세요: ').split()))
ddata[name] = scores
oa = input('입력을 계속 진행하시겠습니까? (y/n)')
if oa.lower() == 'n':
break
frame = pd.DataFrame(ddata, index=['수학','영어','국어'])
print(frame)
print()
print(frame.T.stack())
frame['총점'] = frame.sum(axis=1)
frame['평균'] = frame.iloc[:, :3].mean(axis=1).map(lambda x : round(x,2))
print()
print(frame)
print()
print(frame.T)
이름을 입력하세요:kim
국어 영어 수학 점수를 넣어주세요: 100 90 80
입력을 계속 진행하시겠습니까? (y/n)y
이름을 입력하세요:lim
국어 영어 수학 점수를 넣어주세요: 90 80 70
입력을 계속 진행하시겠습니까? (y/n)y
이름을 입력하세요:hyo
국어 영어 수학 점수를 넣어주세요: 100 99 88
입력을 계속 진행하시겠습니까? (y/n)n
kim lim hyo
수학 100 90 100
영어 90 80 99
국어 80 70 88
kim 수학 100
영어 90
국어 80
lim 수학 90
영어 80
국어 70
hyo 수학 100
영어 99
국어 88
dtype: int64
kim lim hyo 총점 평균
수학 100 90 100 290 96.67
영어 90 80 99 269 89.67
국어 80 70 88 238 79.33
수학 영어 국어
kim 100.00 90.00 80.00
lim 90.00 80.00 70.00
hyo 100.00 99.00 88.00
총점 290.00 269.00 238.00
평균 96.67 89.67 79.33
데이터 베이스나 csv파일에 여러 개의 시계열 데이터를 저장하는 일반적인 방법은 시간순으로 나열하는 방법이다. 이를 위해 pivot()를 지원한다.
pivot 메서드의 처음 두 인자는 로우와 칼럼 색인으로 사용 될 칼럼 이름이고 마지막 value 는 DataFrame에 채워 넣을 값을 담고 있는 칼럼이다.
DataFrame.duplicated(): 중복유무를 알려준다.
Series.map()
import numpy as np
import pandas as pd
data = pd.DataFrame({'food':['bacon','pulled pork','Bacon','Pastrami','corned beef',
'Bacon','pastrami','honey ham','nova lox'],
'ounces':[4, 3, 12, 6, 7.5, 8, 3, 5, 6]})
print(data)
meat_to_animal = {
'bacon':'pig',
'pulled pork':'pig',
'pastrami':'cow',
'corned beef':'cow',
'honey ham':'pig',
'nova lox':'salmon'
}
print()
data['animal']= data['food'].map(lambda x : meat_to_animal[x.lower()])
print(data)
print()
data['animal2'] = data['food'].map(str.lower).map(meat_to_animal)
print(data)
food ounces
0 bacon 4.0
1 pulled pork 3.0
2 Bacon 12.0
3 Pastrami 6.0
4 corned beef 7.5
5 Bacon 8.0
6 pastrami 3.0
7 honey ham 5.0
8 nova lox 6.0
food ounces animal
0 bacon 4.0 pig
1 pulled pork 3.0 pig
2 Bacon 12.0 pig
3 Pastrami 6.0 cow
4 corned beef 7.5 cow
5 Bacon 8.0 pig
6 pastrami 3.0 cow
7 honey ham 5.0 pig
8 nova lox 6.0 salmon
food ounces animal animal2
0 bacon 4.0 pig pig
1 pulled pork 3.0 pig pig
2 Bacon 12.0 pig pig
3 Pastrami 6.0 cow cow
4 corned beef 7.5 cow cow
5 Bacon 8.0 pig pig
6 pastrami 3.0 cow cow
7 honey ham 5.0 pig pig
8 nova lox 6.0 salmon salmon
DataFrame.replace()
import pandas as pd
import numpy as np
# data = pd.Series([1,-999,2,-999,-1000,3])
# print(data)
# print()
# #print(data.replace([-999,-1000], np.nan))
# print(data.replace({-999:np.nan,-1000:0}))
np.random.seed(12345)
data = pd.DataFrame(np.random.randn(1000,4))
print(data.head(10))
print()
print(data.describe())
# data[data>3] = 3
# data[data < -3] = -3
# print()
# print(data.describe())
#
# data2 = np.array([-3,5,7,0,-7,-1,2,-3])
# print(data2)
# print(np.sign(data2))
data[np.abs(data) > 3] = np.sign(data) * 3 # -3 과 3 abs=절대값
print(data.describe())
0 1 2 3
0 -0.204708 0.478943 -0.519439 -0.555730
1 1.965781 1.393406 0.092908 0.281746
2 0.769023 1.246435 1.007189 -1.296221
3 0.274992 0.228913 1.352917 0.886429
4 -2.001637 -0.371843 1.669025 -0.438570
5 -0.539741 0.476985 3.248944 -1.021228
6 -0.577087 0.124121 0.302614 0.523772
7 0.000940 1.343810 -0.713544 -0.831154
8 -2.370232 -1.860761 -0.860757 0.560145
9 -1.265934 0.119827 -1.063512 0.332883
0 1 2 3
count 1000.000000 1000.000000 1000.000000 1000.000000
mean -0.067684 0.067924 0.025598 -0.002298
std 0.998035 0.992106 1.006835 0.996794
min -3.428254 -3.548824 -3.184377 -3.745356
25% -0.774890 -0.591841 -0.641675 -0.644144
50% -0.116401 0.101143 0.002073 -0.013611
75% 0.616366 0.780282 0.680391 0.654328
max 3.366626 2.653656 3.260383 3.927528
0 1 2 3
count 1000.000000 1000.000000 1000.000000 1000.000000
mean -0.067623 0.068473 0.025153 -0.002081
std 0.995485 0.990253 1.003977 0.989736
min -3.000000 -3.000000 -3.000000 -3.000000
25% -0.774890 -0.591841 -0.641675 -0.644144
50% -0.116401 0.101143 0.002073 -0.013611
75% 0.616366 0.780282 0.680391 0.654328
max 3.000000 2.653656 3.000000 3.000000
DataFrame.rename()
import pandas as pd
import numpy as np
data = pd.DataFrame(np.arange(12).reshape(3,4),
index=['Ohio','Colorado','New Yokr'],
columns=['one','two','three','four'])
print(data.index.map(str.upper),'\n')
data.index = data.index.map(str.upper)
print(data,'\n')
print(data.rename(index=str.title, columns=str.upper),'\n')
print(data.rename(index={'OHIO':'INDIANA'},
columns={'three':'peekaboo'}))
Index(['OHIO', 'COLORADO', 'NEW YOKR'], dtype='object')
one two three four
OHIO 0 1 2 3
COLORADO 4 5 6 7
NEW YOKR 8 9 10 11
ONE TWO THREE FOUR
Ohio 0 1 2 3
Colorado 4 5 6 7
New Yokr 8 9 10 11
one two peekaboo four
INDIANA 0 1 2 3
COLORADO 4 5 6 7
NEW YOKR 8 9 10 11
pandas는 연속성 데이터를 개별로 분할하거나 그룹별로 나누는 과정을 지원한다.
import pandas as pd
ages = [20,22,25,27,21,23,37,31,61,45,41,70,32]
bins = [18,25,35,60,100] # 18< <=25 ,25< <=35 ,35< <=60 ,60< <=100
cdata = pd.cut(ages,bins)
print(cdata)
print()
cdata2 = pd.cut(ages,bins, right=False)
print(cdata2)
#print(pd.value_counts(cdata2))
print(cdata2.value_counts())
print()
rdata = pd.cut(ages,bins, labels=['Youth','YoungAdult','MiddleAged','Senior'])
print(rdata)
print()
#print(pd.value_counts((rdata)))
print(pd.Series(rdata).value_counts())
[(18, 25], (18, 25], (18, 25], (25, 35], (18, 25], ..., (60, 100], (35, 60], (35, 60], (60, 100], (25, 35]]
Length: 13
Categories (4, interval[int64, right]): [(18, 25] < (25, 35] < (35, 60] < (60, 100]]
[[18, 25), [18, 25), [25, 35), [25, 35), [18, 25), ..., [60, 100), [35, 60), [35, 60), [60, 100), [25, 35)]
Length: 13
Categories (4, interval[int64, left]): [[18, 25) < [25, 35) < [35, 60) < [60, 100)]
[18, 25) 4
[25, 35) 4
[35, 60) 3
[60, 100) 2
Name: count, dtype: int64
['Youth', 'Youth', 'Youth', 'YoungAdult', 'Youth', ..., 'Senior', 'MiddleAged', 'MiddleAged', 'Senior', 'YoungAdult']
Length: 13
Categories (4, object): ['Youth' < 'YoungAdult' < 'MiddleAged' < 'Senior']
Youth 5
YoungAdult 3
MiddleAged 3
Senior 2
Name: count, dtype: int64
import pandas as pd
scores = pd.Series([70,88,92,54,34,76,59,91,83,78,61,55],
index=['홍길동','이순신','임꺽정','정난정','이이','이황','정도전','이성계','김유신','김철수','정약용','정익전'])
print(scores)
# (0~59:F, 60~69:D, 70~79:C, 80~89:B, 90~100:A)
'''
홍길동 C
이순신 B
'''
print()
sc_cut = pd.cut(scores,[0,59,69,79,89,100],labels=['F','D','C','B','A'])
print(sc_cut)
print()
print(sc_cut.value_counts())
print()
print(pd.concat([scores,sc_cut], axis=1, keys=['정수','학점']))
홍길동 70
이순신 88
임꺽정 92
정난정 54
이이 34
이황 76
정도전 59
이성계 91
김유신 83
김철수 78
정약용 61
정익전 55
dtype: int64
홍길동 C
이순신 B
임꺽정 A
정난정 F
이이 F
이황 C
정도전 F
이성계 A
김유신 B
김철수 C
정약용 D
정익전 F
dtype: category
Categories (5, object): ['F' < 'D' < 'C' < 'B' < 'A']
F 4
C 3
B 2
A 2
D 1
Name: count, dtype: int64
정수 학점
홍길동 70 C
이순신 88 B
임꺽정 92 A
정난정 54 F
이이 34 F
이황 76 C
정도전 59 F
이성계 91 A
김유신 83 B
김철수 78 C
정약용 61 D
정익전 55 F
Pandas 는 정규표현식을 이용한 문자열의 패턴 매칭이나 텍스트 조작을 제공한다.
count : 문자열에서 겹치지 않는 부분 문자열의 개수를 반환한다.
endswith,startswith : 문자열이 주어진 접미사(접두사)로 끝날 경우 True를 반환한다.
join : 문자열을 구분자로 하여 다른 문자열을 순서대로 이어 붙인다.
index : 부분 문자열의 첫 번째 글자의 위치를 반환한다.
find : 첫 번째 부분 문자열의 첫번째 글자의 위치를 반환한다.
rfind : 마지막 부분 문자열의 첫 번째 글자의 위치를 반환한다.
replace : 문자열을 다른 문자열로 치환한다.
split : 문자열을 구분자 기준으로 부분 문자열의 리스트로 분리한다.
ljust,rjust : 문자열을 오른쪽 혹은 왼쪽을 정렬하고 주어진 길이에서 문자열 길이를 제외한 곳은 공백 문자를 채워 넣어 주어진 길이를 가지는 문자열을 반환한다.
정규표현식은 텍스트에서 문자열 패턴을 찾는 유연한 방법을 제공한다.
findall,finditer : 문자열에서 겹치지 않는, 발견된 모든 패턴을 반환한다.
match : 문자열의 시작점부터 패턴을 찾고 선택적으로 패턴 컴포넌트를 그룹으로 나눈다. 일치하는 패턴이 있다면 match 객체를 반환하고, 그렇지 않을 경우 None을 반환한다.
search : 문자열에서 패턴과 일치하는 내용을 검색하고 match 객체를 반환한다.
split : 문자열에서 패턴과 일치하는 부분을 쪼갠다.
sub,subn : 문자열에서 일치하는 모든 패턴(sub)혹은 처음 n개의 패턴을 대체 표현으로 치환한다. 대체 표현 문자열은 \1,\2,... 같은 기호를 사용해서 매치 그룹의 요소를 참조한다.