data = {'state': ['Ohio', 'Ohio', 'Ohio', 'Nevada', 'Nevada'],
'year': [2000, 2001, 2002, 2001, 2002],
'pop': [1.5, 1.7, 3.6, 2.4, 2.9]}
frame = DataFrame(data)
frame
state year pop
0 Ohio 2000 1.5
1 Ohio 2001 1.7
2 Ohio 2002 3.6
3 Nevada 2001 2.4
4 Nevada 2002 2.9
frame2 = DataFrame(data, columns=['year', 'state', 'pop', 'debt'],
index=['one', 'two', 'three', 'four', 'five'])
frame2
year state pop debt
one 2000 Ohio 1.5 NaN
two 2001 Ohio 1.7 NaN
three 2002 Ohio 3.6 NaN
four 2001 Nevada 2.4 NaN
five 2002 Nevada 2.9 NaN
frame2.columns
Index(['year', 'state', 'pop', 'debt'], dtype='object')
frame2.year
one 2000
two 2001
three 2002
four 2001
five 2002
frame2.index
frame2.loc['three'] #열 이름
year 2002
state Ohio
pop 3.6
debt NaN
동일한 값 대입
frame2['debt'] = 16.5
frame2
year state pop debt
one 2000 Ohio 1.5 16.5
two 2001 Ohio 1.7 16.5
three 2002 Ohio 3.6 16.5
four 2001 Nevada 2.4 16.5
five 2002 Nevada 2.9 16.5
0부터 4까지 대입
frame2['debt'] = np.arange(5.)
frame2
year state pop debt
one 2000 Ohio 1.5 0.0
two 2001 Ohio 1.7 1.0
three 2002 Ohio 3.6 2.0
four 2001 Nevada 2.4 3.0
five 2002 Nevada 2.9 4.0
val = Series([-1.2, -1.5, -1.7], index=['two', 'four', 'five']) #나머지 index는 NaN
frame2['debt'] = val
frame2
year state pop debt
one 2000 Ohio 1.5 NaN
two 2001 Ohio 1.7 -1.2
three 2002 Ohio 3.6 NaN
four 2001 Nevada 2.4 -1.5
five 2002 Nevada 2.9 -1.7
frame2['eastern'] = frame2.state == 'Ohio'
frame2
year state pop debt eastern
one 2000 Ohio 1.5 NaN True
two 2001 Ohio 1.7 -1.2 True
three 2002 Ohio 3.6 NaN True
four 2001 Nevada 2.4 -1.5 False
five 2002 Nevada 2.9 -1.7 False
del frame2['eastern'] #'eastern' 열 통채로 삭제
frame3 = frame2.drop('five') #'five' index 통채로 삭제
frame4 = frame2.drop('debt', axis=1) #axis = 1 : 열을 삭제 ('debt' 열 삭제)
data = DataFrame(np.arange(16).reshape((4, 4)),
index=['Ohio', 'Colorado', 'Utah', 'New York'],
columns=['one', 'two', 'three', 'four'])
data.drop(['Colorado', 'Ohio']) #index(행) 삭제
data.drop('two', axis=1) #col(열) 삭제. axis=1
data.drop(['two', 'four'], axis='columns') # #col(열) 삭제. axis='columns'
바깥쪽 dictionary key : 열 index / 안쪽 dictionary key : 행 index
pop = {'Nevada': {2001: 2.4, 2002: 2.9},
'Ohio': {2000: 1.5, 2001: 1.7, 2002: 3.6}}
frame3 = DataFrame(pop)
frame3
Nevada Ohio
2001 2.4 1.7
2002 2.9 3.6
2000 NaN 1.5
frame3.T
pdata = {'Ohio': frame3['Ohio'][:-1], #처음 index 값부터 마지막 전 index 값까지
'Nevada': frame3['Nevada'][:2]} #'Ohio', 'Nevada'는 열
DataFrame(pdata)
Ohio Nevada
2001 1.7 2.4
2002 3.6 2.9
frame3.index.name = 'year'
frame3.columns.name = 'state'
frame3
frame3.values
# 기존 frame (값은 1부터 8까지 순서대로 채워라.)
frame = DataFrame(np.arange(9).reshape((3, 3)), index=['a', 'c', 'd'],
columns=['Ohio', 'Texas', 'California'])
Ohio Texas California
a 0 1 2
c 3 4 5
d 6 7 8
frame2 = frame.reindex(['a', 'b', 'c', 'd']) #으로 reindexing (b는 NaN)
Ohio Texas California
a 0.0 1.0 2.0
b NaN NaN NaN
c 3.0 4.0 5.0
d 6.0 7.0 8.0
states = ['Texas', 'Utah', 'California']
frame.reindex(columns=states)
Texas Utah California
a 1 NaN 2
c 4 NaN 5
d 7 NaN 8
frame.reindex(index=['a', 'b', 'c', 'd']).ffill() #index b의 값을 랜덤으로 채움.
# 재색인시에도 fill_value 지정할 수 있음.
df1.reindex(columns=df2.columns, fill_value=0)
data = DataFrame(np.arange(16).reshape((4, 4)),
index=['Ohio', 'Colorado', 'Utah', 'New York'],
columns=['one', 'two', 'three', 'four'])
# col(열) 값 하나 선택
#'two' 열의 데이터 출력
data['two']
Ohio 1
Colorado 5
Utah 9
New York 13
#['three', 'one'] 열의 데이터 출력
data[['three', 'one']]

# 행 0번째, 1번째
data[:2]

data[data['three'] > 5] #'three' 열의 값이 5 이상인 것만 출력
data[data < 5] = 0 #값이 5보다 작은 건 0으로

data.loc['Colorado', ['two', 'three']] #'Colorado' 행의 ['two', 'three'] 열 출력
two 5
three 6
data.iloc[2, [3, 0, 1]] #'Utah'(2번째) 행에서 [3, 0, 1]번째 열 데이터
four 11
one 8
two 9
data.iloc[2] #2번째 행 데이터
one 8
two 9
three 10
four 11
data.iloc[[1,2], [3,0,1]] #[1, 2]번째 행에서 [3, 0, 1]번째 열 데이터

data.loc[:'Utah', 'two'] #'Utah'행까지 'two'열 데이터
Ohio 0
Colorado 5
Utah 9
data.iloc[:,:3][data.three > 5]

df1 = DataFrame(np.arange(9.).reshape((3, 3)), columns=list('bcd'),
index=['Ohio', 'Texas', 'Colorado'])
df2 = DataFrame(np.arange(12.).reshape((4, 3)), columns=list('bde'),
index=['Utah', 'Ohio', 'Texas', 'Oregon'])
df1 df2

df1 + df2

df1.add(df2, fill_value=0) #NaN 자리 애들이 0으로 채워짐.
df1.rdiv(1) # reverse div
frame = pd.DataFrame(np.arange(12.).reshape((4, 3)),
columns=list('bde'),
index=['Utah', 'Ohio', 'Texas', 'Oregon'])

series = frame.iloc[0] #frame의 0번째 행 데이터
series
b 0.0
d 1.0
e 2.0
frame - series
# frame.sub(series, axis=0) #axis = 0은 열

np.abs(frame) #절댓값
f = lambda x: x.max() - x.min() # 최대 - 최소
frame.apply(f) #col에 적용
frame.apply(f, axis=1) #row에 적용
def f(x):
return Series([x.min(), x.max()], index=['min', 'max'])
frame.apply(f)

format = lambda x: '%.2f' % x
frame.applymap(format)
frame['e'].map(format) #series로 바꿔서 적용
frame = DataFrame(np.arange(8).reshape((2, 4)), index=['three', 'one'],
columns=['d', 'a', 'b', 'c'])
frame.sort_index() #행(index)를 one, three로 정렬
frame.sort_index(axis=1) #열(col)을 a, b, c, d로 정렬
frame.sort_index(axis=1, ascending=False) #열(col)을 d, c, b, a로 정렬
frame = DataFrame({'b': [4, 7, -3, 2], 'a': [0, 1, 0, 1]})

frame.sort_values(by='b') #'b' 열 값이 오름차순으로 정렬
frame.sort_values(by=['a', 'b']) #'a', 'b' 열 값이 오름차순으로 정렬
frame = DataFrame({'b': [4.3, 7, -3, 2], 'a': [0, 1, 0, 1],
'c': [-2, 5, 8, -2.5]})
frame.rank(axis=1)
df.sum()
# 행의 합계: axis='columns' 혹은 axis=1
df.sum(axis=1)
# NaN 값이 있으면 skip (NaN이 하나라도 있으면 거기는 NaN)
df.mean(axis=1, skipna=False)
df.idxmax()
df.cumsum()
df.describe()