본문 바로가기
개발/Python

[파이썬, Python] pandas 활용법 총정리

by 꾀돌이 개발자 2024. 7. 7.
반응형

 

[파이썬 pandas 활용법]

 

 

* 아래 [더보기] 클릭 후 [Ctrl + F] 단축키를 활용하여 찾고 계신 함수 위치로 바로 가실 수 있습니다.

더보기

[데이터 생성 및 로드]
1. 데이터프레임 생성: pd.DataFrame
2. CSV 파일 쓰기: df.to_csv
3. CSV 파일 읽기: pd.read_csv

[데이터프레임 정보]
1. 데이터프레임 정보 요약: df.info
2. 데이터프레임의 통계 요약: df.describe
3. 데이터프레임의 상위/하위 n개 행 보기: df.head(n), df.tail(n)

[데이터 선택 및 필터링]
1. 열 선택
2. 여러 열 선택
3. 행 선택 (인덱스로): df.loc
4. 행 선택 (조건으로)

[데이터 조작]
1. 새 열 추가
2. 열 삭제: df.drop
3. 행 삭제: df.drop
4. 값 대체: df.replace

[결측값 처리]
1. 결측값 확인: df.isnull
2. 결측값 삭제: df.dropna
3. 결측값 대체: df.fillna

[데이터 그룹화 및 집계]
1. 그룹화: df.groupby
2. 집계

[정렬]
1. 값 정렬: df.sort_values
2. 인덱스 정렬: df.sort_index

[병합 및 결합]
1. 데이터프레임 병합: pd.merge
2. 데이터프레임 결합 (행): pd.concat
3. 데이터프레임 결합 (열): pd.concat

 

 

[데이터 생성 및 로드]

 

1. 데이터프레임 생성

  • pd.DataFrame: 데이터를 구조화된 형태로 저장하기 위해 사용됩니다.
import pandas as pd

data = {'Name': ['John', 'Anna', 'Peter', 'Linda'],
        'Age': [28, 24, 35, 32],
        'City': ['New York', 'Paris', 'Berlin', 'London']}
df = pd.DataFrame(data)
print(df)
# 출력값 :
#     Name  Age      City
# 0   John   28  New York
# 1   Anna   24     Paris
# 2  Peter   35    Berlin
# 3  Linda   32    London

 

2. CSV 파일 쓰기

  • df.to_csv: 데이터프레임을 CSV 파일로 저장합니다.
df.to_csv('./file.csv', index=False)
# 파일에 저장됨, 별도의 출력값 없음

 

3. CSV 파일 읽기

  • pd.read_csv: CSV 파일을 읽어 데이터프레임으로 변환합니다.
df = pd.read_csv('./file.csv')
print(df)
# 출력값 : (CSV 파일 내용에 따라 다름)

 

[데이터프레임 정보]

 

1. 데이터프레임 정보 요약

  • df.info: 데이터프레임의 구조, 데이터 타입, 메모리 사용량 등의 정보를 요약합니다.
df.info()
# 출력값 :
# <class 'pandas.core.frame.DataFrame'>
# RangeIndex: 4 entries, 0 to 3
# Data columns (total 3 columns):
#  #   Column  Non-Null Count  Dtype 
# ---  ------  --------------  ----- 
#  0   Name    4 non-null      object
#  1   Age     4 non-null      int64 
#  2   City    4 non-null      object
# dtypes: int64(1), object(2)
# memory usage: 224.0+ bytes

 

2. 데이터프레임의 통계 요약

  • df.describe: 수치형 데이터의 통계 요약을 제공합니다 (평균, 표준편차, 최소값, 최대값 등).
print(df.describe())
# 출력값 :
#              Age
# count   4.000000
# mean   29.750000
# std     4.718052
# min    24.000000
# 25%    26.500000
# 50%    30.000000
# 75%    33.250000
# max    35.000000

 

3. 데이터프레임의 상위/하위 n개 행 보기

  • df.head(n), df.tail(n): 데이터프레임의 상위 n개 또는 하위 n개의 행을 반환합니다.
print(df.head(3))  
# 출력값 :
#     Name  Age      City
# 0   John   28  New York
# 1   Anna   24     Paris
# 2  Peter   35    Berlin

print(df.tail(3))  
# 출력값 :
#     Name  Age      City
# 1   Anna   24     Paris
# 2  Peter   35    Berlin
# 3  Linda   32    London

 

[데이터 선택 및 필터링]

 

1. 열 선택

  • 대괄호 표기법을 사용하여 특정 열을 선택합니다.
print(df['Name'])
# 출력값 :
# 0     John
# 1     Anna
# 2    Peter
# 3    Linda
# Name: Name, dtype: object

 

2. 여러 열 선택

  • 대괄호 안에 리스트를 사용하여 여러 열을 선택합니다.
print(df[['Name', 'Age']])
# 출력값 :
#     Name  Age
# 0   John   28
# 1   Anna   24
# 2  Peter   35
# 3  Linda   32

 

3. 행 선택 (인덱스로)

  • df.loc: 특정 인덱스의 행을 선택합니다.
print(df.loc[0])
# 출력값 :
# Name       John
# Age          28
# City    New York
# Name: 0, dtype: object

 

4. 행 선택 (조건으로)

  • 조건문을 사용하여 특정 조건을 만족하는 행을 선택합니다.
print(df[df['Age'] > 30])
# 출력값 :
#     Name  Age    City
# 2  Peter   35  Berlin
# 3  Linda   32  London

 

[데이터 조작]

 

1. 새 열 추가

  • 새로운 열을 추가할 때는 대괄호 표기법을 사용합니다.
df['Country'] = ['USA', 'France', 'Germany', 'UK']
print(df)
# 출력값 :
#     Name  Age      City  Country
# 0   John   28  New York      USA
# 1   Anna   24     Paris   France
# 2  Peter   35    Berlin  Germany
# 3  Linda   32    London       UK

 

2. 열 삭제

  • df.drop: 특정 열을 삭제합니다 (axis=1은 열을 의미합니다).
df = df.drop('Country', axis=1)
print(df)
# 출력값 :
#     Name  Age      City
# 0   John   28  New York
# 1   Anna   24     Paris
# 2  Peter   35    Berlin
# 3  Linda   32    London

 

3. 행 삭제

  • df.drop: 특정 행을 삭제합니다 (axis=0은 행을 의미합니다).
df = df.drop(0, axis=0)
print(df)
# 출력값 :
#     Name  Age    City
# 1   Anna   24   Paris
# 2  Peter   35  Berlin
# 3  Linda   32  London

 

4. 값 대체

  • df.replace: 특정 값을 다른 값으로 대체합니다.
df['City'] = df['City'].replace('Paris', 'NYC')
print(df)
# 출력값 :
#     Name  Age    City
# 1   Anna   24   NYC
# 2  Peter   35  Berlin
# 3  Linda   32  London

 

[결측값 처리]

 

1. 결측값 확인

  • df.isnull: 데이터프레임에서 결측값을 확인하고, df.isnull().sum()은 각 열의 결측값 개수를 반환합니다.
print(df.isnull())
# 출력값 :
#    Name    Age   City
# 1  False  False  False
# 2  False  False  False
# 3  False  False  False

print(df.isnull().sum())
# 출력값 :
# Name    0
# Age     0
# City    0
# dtype: int64

 

2. 결측값 삭제

  • df.dropna: 결측값이 있는 행을 삭제합니다.
df = df.dropna()
print(df)
# 출력값 : (결측값이 없는 경우 원래 데이터프레임과 동일)
#     Name  Age    City
# 1   Anna   24   Paris
# 2  Peter   35  Berlin
# 3  Linda   32  London

 

3. 결측값 대체

  • df.fillna: 결측값을 특정 값으로 대체합니다. 예를 들어, 평균값으로 대체할 수 있습니다.
df['Age'] = df['Age'].fillna(df['Age'].mean())
print(df)
# 출력값 : (결측값이 없는 경우 원래 데이터프레임과 동일)
#     Name  Age    City
# 1   Anna   24   Paris
# 2  Peter   35  Berlin
# 3  Linda   32  London

 

[데이터 그룹화 및 집계]

 

1. 그룹화

  • df.groupby: 특정 열을 기준으로 데이터를 그룹화합니다.
grouped = df.groupby('City')
print(grouped.mean())
# 출력값 :
#           Age
# City         
# Berlin    35.0
# London    32.0
# Paris     24.0

 

2. 집계

  • 그룹화된 데이터프레임에서 특정 열에 대해 집계 함수를 적용합니다.
print(df.groupby('City')['Age'].mean())
# 출력값 :
# City
# Berlin    35.0
# London    32.0
# Paris     24.0
# Name: Age, dtype: float64

 

[정렬]

 

1. 값 정렬

  • df.sort_values: 특정 열을 기준으로 데이터프레임을 정렬합니다.
df = df.sort_values(by='Age')
print(df)
# 출력값 :
#     Name  Age    City
# 1   Anna   24   Paris
# 3  Linda   32  London
# 2  Peter   35  Berlin

 

2. 인덱스 정렬

  • df.sort_index: 인덱스를 기준으로 데이터프레임을 정렬합니다.
df = df.sort_index()
print(df)
# 출력값 :
#     Name  Age    City
# 1   Anna   24   Paris
# 2  Peter   35  Berlin
# 3  Linda   32  London

 

[병합 및 결합]

 

1. 데이터프레임 병합

  • pd.merge: 공통 열이나 인덱스를 기준으로 두 데이터프레임을 병합합니다.
import pandas as pd

df1 = pd.DataFrame({'key': ['A', 'B', 'C'], 'value': [1, 2, 3]})
df2 = pd.DataFrame({'key': ['B', 'C', 'D'], 'value': [4, 5, 6]})
merged = pd.merge(df1, df2, on='key')
print(merged)
# 출력값 :
#   key  value_x  value_y
# 0   B        2        4
# 1   C        3        5

 

2. 데이터프레임 결합 (행)

  • pd.concat: 행(axis=0)을 따라 데이터프레임을 결합합니다.
df3 = pd.concat([df1, df2], axis=0)
print(df3)
# 출력값 :
#   key  value
# 0   A      1
# 1   B      2
# 2   C      3
# 0   B      4
# 1   C      5
# 2   D      6

 

3. 데이터프레임 결합 (열)

  • pd.concat: 열(axis=1)을 따라 데이터프레임을 결합합니다.
df4 = pd.concat([df1, df2], axis=1)
print(df4)
# 출력값 :
#   key  value key  value
# 0   A      1   B      4
# 1   B      2   C      5
# 2   C      3   D      6

 

반응형