본문 바로가기
자격증/빅데이터분석기사

[Python] Pandas 메서드 총 정리

by rnasterofmysea 2025. 5. 17.
반응형

 

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() 중복 제거
 
반응형