1.Basic
데이터 프레임 만들기
import pandas as pd
df1 = pd.DataFrame(
[[3,2,5],[10,0,2],[6,5,3]],
columns=["사과", "자두", "포도"],
index=["이성계", "김유신", "이순신"]
)
values, index, columns
df1.values
# array([[ 3, 2, 5],
# [10, 0, 2],
# [ 6, 5, 3]])
df1.index
# Index(['이성계', '김유신', '이순신'], dtype='object')
df1.columns
# Index(['사과', '자두', '포도'], dtype='object')
## numpy와 같이 pandas도 value를 조건에 따라 boolean 형태로 결과값을 내기 쉬움
df1.sum()
# 사과 19
# 자두 7
# 포도 10
# dtype: int64
df1.values > 3
# array([[False, False, True],
# [ True, False, False],
# [ True, True, False]])
df1 > 3
# 사과 자두 포도
# 이성계 False False True
# 김유신 True False False
# 이순신 True True False
2.Indexing
loc, iloc, drop
# 예제
import pandas as pd
import numpy as np
a = np.random.randint(0,10,24).reshape(4,6)
df = pd.DataFrame(a, index=list("가나다라"), columns=list("ABCDEF"))
## df["열이름"] : 열만가능
df["A"]
# 가 5
# 나 7
# 다 7
# 라 9
# Name: A, dtype: int64
## 여러개의 열 조회
df[["A","B","C"]]
# A B C
# 가 5 7 1
# 나 7 3 9
# 다 7 3 4
# 라 9 5 6
## 열과 행을 모두 조회할 수 있는 loc / iloc 메소드
# df.loc["행이름", "열이름"]
df.loc["가":"다", "A":"D"]
# A B C D
# 가 5 7 1 5
# 나 7 3 9 3
# 다 7 3 4 9
df.loc["가":"다", ["A","B","A"]]
# A B A
# 가 5 7 5
# 나 7 3 7
# 다 7 3 7
# df.iloc[행번호, 열번호]
df.iloc[0:3,[0,1,0]]
# A B A
# 가 5 7 5
# 나 7 3 7
# 다 7 3 7
## drop 함수
df.drop("D", axis=1) # 행=0(default), 열=1
# A B C E F
# 가 5 7 1 5 2
# 나 7 3 9 9 0
# 다 7 3 4 6 3
# 라 9 5 6 4 4
## 문제 : B,D,E,F열과 가,나,다 행의 자료를 추출하라
df.iloc[:3, 1:].drop("C", axis=1)
3.Ordering
- df.sort_values([col1, col2, colN...], ascending=bool)
- ascending = 0 내림차순, ascending = 1 오름차순
## 예제 코드
import pandas as pd
a1 = [60, 84, 80, 70, 19]
a2 = [77, 62, 95, 85, 17]
a3 = [61, 97, 72, 67, 15]
a4 = [75, 65, 95, 51, 18]
cols = ["국어", "영어", "수학", "과학", "나이"]
df = pd.DataFrame([a1, a2, a3, a4], index=list("ABCD"), columns=cols)
## [1] 1개의 열을 기준으로 오름차순, 내림차순
df.sort_values("국어") # 오름
df.sort_values("영어", ascending=False) # 내림
## [2] 2개 이상의 열을 기준으로 정렬 (리스트 형식으로 파라미터)
df.sort_values(["수학", "영어"], ascending=False)
## [3] 2개 이상의 열기준 오름&내림 혼합
df.sort_values(["수학", "나이"], ascending=[0, 1])
4.Calculating
- df1.add(df2, axis=1)
- axis = 1 행, axis = 0 열
## numpy의 연산은 똑같은 배열의 크기 일 때 가능하지만,
## 열의 크기가 같을 때 행은 자동적으로 확장한다.
# 0 1 2 0 1 2 0 1 4
# 1 2 3 X = 0 2 6
# 2 3 4 0 3 8
## pandas는 열의 자리가 달라도 라벨링 되어있기에 열의 자리는 중요하지 않다.
# A B C B A A B C
# 0 1 2 1 0 0 1 nan
# 1 2 3 X 1 0 = 0 2 nan
# 2 3 4 nan nan nan
## 예제
import pandas as pd
a1 = [[1,2,3], [4,5,6], [7,8,9]]
df1 = pd.DataFrame(a1, columns=list("ABC"), index=list("가나다"))
df2 = df1.reindex(columns=list("BCA"), index=list("나다가")).copy()
sr1 = df1.loc["가"]
df3 = df1.iloc[:2,:2]
## [1] 기본 예제
df1 + df3
# A B C
#가 2.0 4.0 NaN
#나 8.0 10.0 NaN
#다 NaN NaN NaN
## [2] fill_value : NaN일 때의 기본값을 정하고 싶을 때
df1.add(df3, fill_value=0)
# A B C
#가 2.0 4.0 3.0
#나 8.0 10.0 6.0
#다 7.0 8.0 9.0
## [3] 행(1)과 열(0)을 기준으로 broadcasting 연산
df1.add(sr1, axis=1)
# A B C
# 가 2 4 6
# 나 5 7 9
# 다 8 10 12
참조 :
https://www.youtube.com/watch?v=SVjKsvvhWlQ&list=PLrpXwtuxGqcIIf_SpCWg04MoHf1yJUCvi&index=1
'Programming > Python' 카테고리의 다른 글
Python - Pandas 예제2 (Apply,Map,Time) (0) | 2024.09.21 |
---|---|
Python - Pandas 예제1 (Filtering,Sorting,Grouping) (0) | 2024.09.19 |
Python - AWS Athena 쿼리실행방법 PyAthena vs Boto3 (0) | 2024.09.03 |
Python - Transpose(전치) 예제 (0) | 2024.08.25 |
Python - zip 활용 (0) | 2024.08.19 |