Notice
Recent Posts
Recent Comments
Link
250x250
develope_kkyu
[Python] pandas 예제 - 3 본문
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 |