print('산술 연산')
s1 = pd.Series([1,2,3], index = ['a','b','c'])
s2 = pd.Series([4,5,6,7], index = ['a','b','d','c'])
print(s1)
print(s2)
print(s1 + s2) # -, *, / 다 사용 가능, index가 같은 index끼리 산술됨
print(s1.add(s2)) # sub, mul, div
print()
df1 = pd.DataFrame(np.arange(9).reshape(3,3), columns = list('kbs'), index = ['서울', '대전', '부산'])
df2 = pd.DataFrame(np.arange(12).reshape(4,3), columns = list('kbs'), index = ['서울', '대전', '제주', '목포'])
print(df1)
print(df2)
print()
print(df1 + df2) # -, *, / 다 사용 가능, index가 같은 index끼리 산술됨
print(df1.add(df2)) # 조건을 달 수 있음
print(df1.add(df2, fill_value = 0)) # NaN는 특정값으로 채울 수 있다.
print()
seri = df1.iloc[0]
print(seri)
print(df1 - seri) # Broadcasting 연산
print()
# 기술적 통계와 관련된 메소드(함수)
df = pd.DataFrame([[1.4, np.nan], [7, -4.5],[np.NaN, None], [0.5, -1]], columns=['one','two'])
print(df)
print()
print(df.drop(1)) # 1행 삭제
print(df.isnull()) # null 값이 있는 지 true, false 로 반환
print(df.notnull())# null 값이 없는 지 true, false 로 반환
print()
print(df.dropna()) # na가 있는 행은 모두 지운다.
print(df.dropna(how='any')) # 같은 방법, nan이 하나만 있어도 제외
print(df.dropna(how='all')) # nan이 둘 다 있으면 제외
print(df.dropna(axis='rows'))
print()
print(df.fillna(0)) # 결측값은 0 또는 평균 등의 값으로 대체 가능하다.
print(df.fillna(method='ffill')) # 이전 값으로 결측값을 채운다.
print(df.fillna(method='bfill')) # 다음 값으로 결측값을 채운다.
print(df.dropna(subset=['one'])) # 특정열에 NaN이 있는 행 삭제
print('----')
print(df)
print(df.sum())
print(df.sum(axis=0)) # 열의 합
print()
print(df.sum(axis=1)) # 행의 합
print()
print(df.mean(axis=1)) # 행의 평균
print(df.mean(axis=1, skipna=True)) # 위랑 같음
print(df.mean(axis=1, skipna=False)) # 행의 평균 : NaN은 연산에서 제외한다.
print(df.mean(axis=0, skipna=False)) # 열의 평균 : NaN은 연산에서 제외한다.
print(df.mean(axis=0, skipna=True)) # 열의 평균
print()
print(df.describe()) # 요약 통계량을 구해준다.
print(df.info()) # 구조 호출
<console>
산술 연산
a 1
b 2
c 3
dtype: int64
a 4
b 5
d 6
c 7
dtype: int64
a 5.0
b 7.0
c 10.0
d NaN
dtype: float64
a 5.0
b 7.0
c 10.0
d NaN
dtype: float64
k b s
서울 0 1 2
대전 3 4 5
부산 6 7 8
k b s
서울 0 1 2
대전 3 4 5
제주 6 7 8
목포 9 10 11
k b s
대전 6.0 8.0 10.0
목포 NaN NaN NaN
부산 NaN NaN NaN
서울 0.0 2.0 4.0
제주 NaN NaN NaN
k b s
대전 6.0 8.0 10.0
목포 NaN NaN NaN
부산 NaN NaN NaN
서울 0.0 2.0 4.0
제주 NaN NaN NaN
k b s
대전 6.0 8.0 10.0
목포 9.0 10.0 11.0
부산 6.0 7.0 8.0
서울 0.0 2.0 4.0
제주 6.0 7.0 8.0
k 0
b 1
s 2
Name: 서울, dtype: int32
k b s
서울 0 0 0
대전 3 3 3
부산 6 6 6
one two
0 1.4 NaN
1 7.0 -4.5
2 NaN NaN
3 0.5 -1.0
one two
0 1.4 NaN
2 NaN NaN
3 0.5 -1.0
one two
0 False True
1 False False
2 True True
3 False False
one two
0 True False
1 True True
2 False False
3 True True
one two
1 7.0 -4.5
3 0.5 -1.0
one two
1 7.0 -4.5
3 0.5 -1.0
one two
0 1.4 NaN
1 7.0 -4.5
3 0.5 -1.0
one two
1 7.0 -4.5
3 0.5 -1.0
one two
0 1.4 0.0
1 7.0 -4.5
2 0.0 0.0
3 0.5 -1.0
one two
0 1.4 NaN
1 7.0 -4.5
2 7.0 -4.5
3 0.5 -1.0
one two
0 1.4 -4.5
1 7.0 -4.5
2 0.5 -1.0
3 0.5 -1.0
one two
0 1.4 NaN
1 7.0 -4.5
3 0.5 -1.0
----
one two
0 1.4 NaN
1 7.0 -4.5
2 NaN NaN
3 0.5 -1.0
one 8.9
two -5.5
dtype: float64
one 8.9
two -5.5
dtype: float64
0 1.4
1 2.5
2 0.0
3 -0.5
dtype: float64
0 1.40
1 1.25
2 NaN
3 -0.25
dtype: float64
0 1.40
1 1.25
2 NaN
3 -0.25
dtype: float64
0 NaN
1 1.25
2 NaN
3 -0.25
dtype: float64
one NaN
two NaN
dtype: float64
one 2.966667
two -2.750000
dtype: float64
one two
count 3.000000 2.000000
mean 2.966667 -2.750000
std 3.521837 2.474874
min 0.500000 -4.500000
25% 0.950000 -3.625000
50% 1.400000 -2.750000
75% 4.200000 -1.875000
max 7.000000 -1.000000
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 4 entries, 0 to 3
Data columns (total 2 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 one 3 non-null float64
1 two 2 non-null float64
dtypes: float64(2)
memory usage: 192.0 bytes
None