develope_kkyu

[Python] pandas 예제 - 3 본문

Python

[Python] pandas 예제 - 3

developekkyu37 2023. 1. 5. 14:54
728x90

https://pandas.pydata.org/docs/user_guide/10min.html에 나와 있는 pandas 예제 코드를 살펴본다.

import pandas as pd
import numpy as np

연산

  • Stats(통계)
df.mean() # 열 평균 구하기
Out[]: 
A   -0.004474
B   -0.383981
C   -0.687758
D    5.000000
F    3.000000
dtype: float64
df.mean(1) # 행 평균 구하기
Out[]: 
2013-01-01    0.872735
2013-01-02    1.431621
2013-01-03    0.707731
2013-01-04    1.395042
2013-01-05    1.883656
2013-01-06    1.592306
Freq: D, dtype: float64
s = pd.Series([1, 3, 5, np.nan, 6, 8], index=dates).shift(2)

s
Out[]: 
2013-01-01    NaN
2013-01-02    NaN
2013-01-03    1.0
2013-01-04    3.0
2013-01-05    5.0
2013-01-06    NaN
Freq: D, dtype: float64

df.sub(s, axis="index") # 뺄셈
Out[]: 
                   A         B         C    D    F
2013-01-01       NaN       NaN       NaN  NaN  NaN
2013-01-02       NaN       NaN       NaN  NaN  NaN
2013-01-03 -1.861849 -3.104569 -1.494929  4.0  1.0
2013-01-04 -2.278445 -3.706771 -4.039575  2.0  0.0
2013-01-05 -5.424972 -4.432980 -4.723768  0.0 -1.0
2013-01-06       NaN       NaN       NaN  NaN  NaN
  • Apply(함수 적용)
df.apply(np.cumsum) # apply 함수 적용, cumsum : 누적합
Out[]: 
                   A         B         C   D     F
2013-01-01  0.000000  0.000000 -1.509059   5   NaN
2013-01-02  1.212112 -0.173215 -1.389850  10   1.0
2013-01-03  0.350263 -2.277784 -1.884779  15   3.0
2013-01-04  1.071818 -2.984555 -2.924354  20   6.0
2013-01-05  0.646846 -2.417535 -2.648122  25  10.0
2013-01-06 -0.026844 -2.303886 -4.126549  30  15.0

df.apply(lambda x: x.max() - x.min()) # 각 열에서 최댓값과 최솟값의 차이를 계산
Out[]: 
A    2.073961
B    2.671590
C    1.785291
D    0.000000
F    4.000000
dtype: float64
  • Histogramming(히스토그래밍)
s = pd.Series(np.random.randint(0, 7, size=10)) # 난수로 된 시리즈 생성

s
Out[]: 
0    4
1    2
2    1
3    2
4    6
5    4
6    4
7    6
8    4
9    4
dtype: int64

s.value_counts() # 칼럼의 같은 값이 몇개인지 세기
Out[]: 
4    5
2    2
6    2
1    1
dtype: int64
  • String Methods(문자열 함수)
s = pd.Series(["A", "B", "C", "Aaba", "Baca", np.nan, "CABA", "dog", "cat"])

s.str.lower() # 소문자화
Out[]: 
0       a
1       b
2       c
3    aaba
4    baca
5     NaN
6    caba
7     dog
8     cat
dtype: object

병합

  • Concat(연결)
df = pd.DataFrame(np.random.randn(10, 4))

df
Out[]: 
          0         1         2         3
0 -0.548702  1.467327 -1.015962 -0.483075
1  1.637550 -1.217659 -0.291519 -1.745505
2 -0.263952  0.991460 -0.919069  0.266046
3 -0.709661  1.669052  1.037882 -1.705775
4 -0.919854 -0.042379  1.247642 -0.009920
5  0.290213  0.495767  0.362949  1.548106
6 -1.131345 -0.089329  0.337863 -0.945867
7 -0.932132  1.956030  0.017587 -0.016692
8 -0.575247  0.254161 -1.143704  0.215897
9  1.193555 -0.077118 -0.408530 -0.862495

# pieces로 쪼개기
pieces = [df[:3], df[3:7], df[7:]]

pd.concat(pieces) # 다시 합치기
Out[]: 
          0         1         2         3
0 -0.548702  1.467327 -1.015962 -0.483075
1  1.637550 -1.217659 -0.291519 -1.745505
2 -0.263952  0.991460 -0.919069  0.266046
3 -0.709661  1.669052  1.037882 -1.705775
4 -0.919854 -0.042379  1.247642 -0.009920
5  0.290213  0.495767  0.362949  1.548106
6 -1.131345 -0.089329  0.337863 -0.945867
7 -0.932132  1.956030  0.017587 -0.016692
8 -0.575247  0.254161 -1.143704  0.215897
9  1.193555 -0.077118 -0.408530 -0.862495
  • Join(결합)
left = pd.DataFrame({"key": ["foo", "foo"], "lval": [1, 2]})

right = pd.DataFrame({"key": ["foo", "foo"], "rval": [4, 5]})

left
Out[]: 
   key  lval
0  foo     1
1  foo     2

right
Out[80]: 
   key  rval
0  foo     4
1  foo     5

pd.merge(left, right, on="key") # sql 스타일의 합치기
Out[]: 
   key  lval  rval
0  foo     1     4
1  foo     1     5
2  foo     2     4
3  foo     2     5
left = pd.DataFrame({"key": ["foo", "bar"], "lval": [1, 2]})

right = pd.DataFrame({"key": ["foo", "bar"], "rval": [4, 5]})

left
Out[]: 
   key  lval
0  foo     1
1  bar     2

right
Out[]: 
   key  rval
0  foo     4
1  bar     5

pd.merge(left, right, on="key") # 또 다른 예시
Out[86]: 
   key  lval  rval
0  foo     1     4
1  bar     2     5

 

728x90

'Python' 카테고리의 다른 글

[Python] pandas 예제 - 5  (0) 2023.01.17
[Python] pandas 예제 - 4  (0) 2023.01.05
[Python] pandas 예제 - 2  (0) 2023.01.04
[Python] pandas 예제 - 1  (1) 2022.12.30
[Python] 튜플(tuple)과 리스트(list) 비교  (0) 2022.12.26