Python 데이터 분석

Python 데이터분석 기초 8 - pandas(산술연산)

코딩탕탕 2022. 10. 31. 12:19

 

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