반응형
0. csv 파일로 읽어오기
pd.read_csv("URL")
pandas_practice_stu.csv
0.00MB
import pandas as pd
mydata = pd.read_csv("pandas_practice_stu.csv")
mydata
1. 구조 확인/기초 정보
df.head(n) | 상위 n개 행 반환 (기본 5개) |
df.tail(n) | 하위 n개 행 반환 |
df.shape | (행, 열) 튜플 반환 |
df.info() | 열 정보, 결측값, 데이터 타입 등 요약 |
df.describe() | 수치형 열의 통계 요약 (평균, 표준편차 등) |
df.columns | 열 이름 리스트 반환 |
df.index | 인덱스 정보 반환 |
df.dtypes | 열별 데이터 타입 확인 |
df.head(n) 상위 n개 행 반환 (기본 5개)
Name Korean English Math Science History
0 Student1 60 95 99 91 82
1 Student2 63 84 95 65 100
2 Student3 63 89 98 90 71
3 Student4 99 79 71 60 62
4 Student5 69 79 78 96 76
df.tail(n) 하위 n개 행 반환
Name Korean English Math Science History
27 Student28 75 91 65 61 92
28 Student29 60 61 95 96 64
29 Student30 78 61 60 70 63
print(mydata.shape)
(30, 6)
df.info() 열 정보, 결측값, 데이터 타입 등 요약
print(mydata.info())
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 30 entries, 0 to 29
Data columns (total 6 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 Name 30 non-null object
1 Korean 30 non-null int64
2 English 30 non-null int64
3 Math 30 non-null int64
4 Science 30 non-null int64
5 History 30 non-null int64
dtypes: int64(5), object(1)
memory usage: 1.5+ KB
None
df.describe() 수치형 열의 통계 요약 (평균, 표준편차 등)
print(mydata.describe())
Korean English Math Science History
count 30.000000 30.000000 30.000000 30.000000 30.000000
mean 77.566667 80.433333 78.700000 79.966667 78.633333
std 12.062147 13.670213 12.779698 13.233925 13.576052
min 60.000000 60.000000 60.000000 60.000000 60.000000
25% 68.250000 69.250000 71.000000 69.250000 65.000000
50% 77.500000 81.000000 75.000000 80.500000 77.500000
75% 84.000000 92.000000 93.000000 93.250000 90.750000
max 99.000000 100.000000 100.000000 99.000000 100.000000
df.columns 열 이름 리스트 반환
print(mydata.columns)
Index(['Name', 'Korean', 'English', 'Math', 'Science', 'History'], dtype='object')
df.index 인덱스 정보 반환
print(mydata.index)
RangeIndex(start=0, stop=30, step=1)
df.dtypes 열별 데이터 타입 확인
Name object
Korean int64
English int64
Math int64
Science int64
History int64
dtype: object
2. 데이터 선택 및 필터링 ( ⚠️⚠️⚠️시험에 자주 나옴 !!)
df["열이름"] | 특정 열 선택 |
df[["열1", "열2"]] | 여러 열 선택 |
df.loc[행라벨, 열라벨] | 라벨 기반 선택 |
df.iloc[행번호, 열번호] | 위치 기반 선택 |
df[df["열"] > 값] | 조건 필터링 |
df["열"].idxmax() | 해당 열에서 최대값의 인덱스 반환 |
df["열"].idxmin() | 해당 열에서 최소값의 인덱스 반환 |
df.idxmax() | 각 열에서 최대값의 인덱스를 반환 |
df.idxmin() | 각 열에서 최소값의 인덱스를 반환 |
3. 정렬 및 순서 조작
df.sort_values(by="열", ascending=True) | 값 기준 정렬 |
df.sort_index() | 인덱스 기준 정렬 |
df.reset_index() | 인덱스 초기화 |
df.set_index("열") | 특정 열을 인덱스로 지정 |
4. 결측치 처리
df.isnull() | 결측치 여부를 True/False로 반환 |
df.notnull() | 결측치가 아닌 값 True 반환 |
df.dropna() | 결측치 포함 행 제거 |
df.fillna(값) | 결측치를 값으로 채움 |
df.loc[행라벨, 열라벨] 라벨 기반 선택
loc_1. 기본 인덱싱
df.loc["s1"]
Name Chulsoo
Math 85
English 88
Name: s1, dtype: object
df.loc["s2", "Math"]
92
df.loc[["s2", "s3"], ["Math", "English"]]
Math English
s2 92 95
s3 78 85
🔥🔥🔥loc_2. 조건 필터링 (시험 !!!)
print("수학 점수가 85 이상인 학생 필터링")
print(df[df["Math"] >= 85])
print()
print("loc와 결합해서 열 선택까지")
print(df.loc[df["Math"] >= 85, ["Name", "Math"]])
수학 점수가 85 이상인 학생 필터링
Name Math English
s1 Chulsoo 85 88
s2 Younghee 92 95
s4 Jimin 90 100
loc와 결합해서 열 선택까지
Name Math
s1 Chulsoo 85
s2 Younghee 92
s4 Jimin 90
df.iloc[행번호, 열번호] 위치 기반 선택
iloc_1 행/열단위 선택
print(" 0행 0열 → Chulsoo")
print(df.iloc[0, 0])
print()
print("1행 2열 → 95")
print(df.iloc[1, 2])
0행 0열 → Chulsoo
Chulsoo
1행 2열 → 95
95
iloc_2 슬라이싱
print("0~1행까지 (2는 포함 X)")
print(df.iloc[0:2])
print()
print("0~1행, 0~1열 (2는 포함 X)")
print(df.iloc[0:2, 0:2])
0~1행까지 (2는 포함 X)
Name Math English
s1 Chulsoo 85 88
s2 Younghee 92 95
0~1행, 0~1열 (2는 포함 X)
Name Math
s1 Chulsoo 85
s2 Younghee 92
iloc_3 bool 인덱싱과 결합
print("Math 점수가 90 이상인 학생의 이름과 Math")
condition = df["Math"] >= 90
print(df.iloc[condition.values, [0, 1]] )
Math 점수가 90 이상인 학생의 이름과 Math
Name Math
s2 Younghee 92
s4 Jimin 90
idxmax/indxmin 와 loc 필터링
df["열"].idxmax() 해당 열에서 최대값의 인덱스 반환
df["열"].idxmin() 해당 열에서 최소값의 인덱스 반환
df.idxmax() 각 열에서 최대값의 인덱스를 반환
df.idxmin() 각 열에서 최소값의 인덱스를 반환
최대값을 가진 행 전체 출력
print("Math에서 최고점 학생의 인덱스")
idx = df["Math"].idxmax() # 'Younghee'
print(idx)
print()
print("최고점 학생의 전체 정보")
print(df.loc[idx])
Math에서 최고점 학생의 인덱스
s2
최고점 학생의 전체 정보
Name Younghee
Math 92
English 95
Name: s2, dtype: object
여러 과목 중 가장 잘 본 학생 찾기
import pandas as pd
df = pd.DataFrame({
"Name": ["Chulsoo", "Younghee", "Minsu", "Jimin"],
"Math": [85, 92, 78, 90],
"English": [88, 95, 85, 100]
})
df.set_index("Name", inplace=True)
총점 계산
Name
Chulsoo 346
Younghee 374
Minsu 326
Jimin 380
Name: Total, dtype: int64
최고 총점자
Math 90
English 100
Total 380
Name: Jimin, dtype: int64
5. 데이터 추가 및 삭제
df["새열"] = 값 | 새 열 추가 |
df.drop("열", axis=1) | 열 삭제 |
df.drop(index) | 행 삭제 |
df.append(다른DF) | 행 추가 (concat이 더 권장됨) |
pd.concat([df1, df2]) | 데이터프레임 병합 |
6. 그룹/집계/변환
df.groupby("열") | 그룹화 객체 생성 |
df.groupby("열").mean() | 그룹별 평균 |
df.agg({"열": "함수"}) | 여러 집계 함수 적용 |
df.apply(함수) | 행/열 단위로 사용자 함수 적용 |
df.map(함수) | Series에만 적용 (원소 단위 함수 적용) |
7. 문자열 처리 (문자열 Series에서만 사용)
df["열"].str.lower() | 소문자 변환 |
df["열"]].str.startwith() | 시작 컬럼명으로 컬럼석택하기 |
df["열"].str.contains("값") | 포함 여부 확인 |
df["열"].str.replace("a", "b") | 문자열 대체 |
9. 데이터프레임 병합 (SQL JOIN과 유사)
pd.merge(df1, df2, on=, how=) | 두 DataFrame 병합 (SQL의 JOIN과 동일) |
how 옵션: "inner", "left", "right", "outer" | 병합 방식 결정 |
10. 기타 유용한 기능
메서드설명
df.unique() | 고유값 반환 (Series에서 사용) |
df.nunique() | 고유값 개수 |
df.value_counts() | 값 개수 카운트 |
df.duplicated() | 중복 여부 확인 |
df.drop_duplicates() | 중복 제거 |
반응형
'자격증 > 빅데이터분석기사' 카테고리의 다른 글
빅데이터분석기사 실기 2유형 템플릿 (회귀/분류) (0) | 2025.05.26 |
---|---|
[Python] NumPy 함수 총 정리 (0) | 2025.05.12 |
빅데이터분석기사 3주 독학 필기 합격 리뷰 (0) | 2025.04.20 |
[P04CH01S01-S02] 분석모형 평가 및 개선 (0) | 2025.03.19 |
[P04CH01S02] 분석결과 해석 (0) | 2025.03.19 |