[빅데이터분석기사] 판다스4 - 문자열, 내장함수

2025. 6. 10. 00:27·Data/빅데이터분석기사
728x90
import pandas as pd
df = pd.DataFrame({'A': ['데이터 분석', '기본 학습서', '퇴근 후 열공'],
                   'B': [10, 20, 30],
                   'C': ['ab cd', 'AB CD', 'ab cd ']
                   })
df

1. 문자열

str 사용해서 문자열 내의 값 변경 (ex. '데이터 분석'에서 '분석'만 바꾸고 싶을 때)

단, 숫자는 변경 불가. 문자만 가능.

df['A'] = df['A'].str.replace('분석', '시각화')
df

 

 

문자열 분리(컬럼 내에서 분리 자바의 split(" "))

df['A'].str.split()

첫번째 행 데이터만 선택

df['A'].str.split()[0]

 

각 행별 첫 번째 요소 추출

df['D'] = df['A'].str.split().str[0] # 행의 첫번째 요소 str[0]
df['D'] = df['A'].str.split().str[-1] # 행의 마지막 요소 str[-1]

 

문자 포함 여부 확인

df['시각화 포함 유무'] = df['A'].str.contains('시각화')
df

 

isin vs contains

  • isin: 찾으려는 단어와 완벽히 같아야함
  • contains: 찾으려는 단어가 포함되어있으면 됨
menu = pd.Series(['맛난버거 세트', '매운 치킨버거', '더블 치즈버거'])
menu.isin(['맛난버거 세트', '더블 치즈버거'])
menu.str.contains('세트')

 

문자길이

df['문자길이'] = df['A'].str.len()

 

대문자/소문자로 변경

df['C'] = df['C'].str.lower()
df['C'] = df['C'].str.upper()

 

공백제거

df['C'] = df['C'].str.replace(" ","")

 

'C' 컬럼의 데이터 'abcd'를 'bc'만 자르고 싶을 때(문자열 슬라이싱)

df['C'].str[1:3]
# str을 적지 않고 df['C'][1:3] 로 작성하면 1번 인덱스 ~ 2번 인덱스까지 데이터가 출력된다

2. 내장함수

행의 수

print(len(df))
print(df.shape[0]) # shape 사용하면 행과 열이 나오기 때문에 shape[0]

sum과 len을 활용해서 조건에 맞는 개수 구하기 (⭐️⭐️⭐️⭐️⭐️)

cond = df['가격'] > 5000 # 조건

#sum으로 조건에 맞는 개수 구하기
print(sum(cond))

#len으로 조건에 맞는 개수 구하기
print(len(df[cond]))

 

컬럼별 합계를 구할 때

df.sum(numeric_only=True)
df.sum(axis=0, numeric_only=True)

 

행 별 합계를 구할 때

df.sum(axis=1, numeric_only=True)

 

drop과 sum

  axis = 0 axis = 1
drop() 행 삭제 열 삭제
sum() 컬럼별 합계 행별 합계

drop()과 sum()은 반대 ! drop을 기준으로 외우자!

 

최대(max), 최소(min), 평균(mean), 중앙(median), 합계(sum), 표준편차(std), 분산(var)

# 최대, 최소, 평균, 중앙, 합계, 표준편차, 분산
print(df['가격'].max())
print(df['가격'].min())
print(df['가격'].mean())
print(df['가격'].median())
print(df['가격'].sum())
print(df['가격'].std())
print(df['가격'].var())

 

분위수 값(quantile)

print('분위수 25% 값',df['가격'].quantile(.25)) # 1사분위
print('분위수 75% 값',df['가격'].quantile(.75)) # 3사분위
# 하위 25% 데이터
cond = df['가격'].quantile(.25) > df['가격']
df[cond]
# 상위 25% 데이터
cond = df['가격'].quantile(.75) < df['가격']
df[cond]

 

최빈값(mode)은 여러개일 수 있기 때문에 시리즈 형식으로 반환. mode()[0] 해주면 0번째 인덱스 최빈값

df['원산지'].mode()[0]

 

최대값의 인덱스(idxmax())

df['가격'].idxmax()
 df.loc[max_idx, '메뉴'] # 최대값의 인덱스의 메뉴만 출력
 df.loc[max_idx]['메뉴']

 

가격 컬럼 중 가장 큰 값 N개(nlargest) / 가장 작은 값 N개(nsmallest)

df.nlargest(N, '가격')
df.nsmallest(N, '가격')

 

apply 적용해서 새로운 컬럼 생성(데이터프레임[컬럼명].apply(함수명))

def cal(x):
  if x >= 100:
    return "No"
  else:
    return "Yes"

df['먹어도 될까요'] = df['칼로리'].apply(cal)
df

import pandas as pd
df = pd.DataFrame({'Name': {0: '쿼카', 1: '알파카', 2: '시바견'},
                   '수학': {0: 90, 1: 93, 2: 85},
                   '영어': {0: 92, 1: 84, 2: 86},
                   '국어': {0: 91, 1: 94, 2: 83},})

df

위와 같은 데이터프레임이 있다고 가정했을 때,

 

melt를 사용해 컬럼을 -> 행으로 재구조화

pd.melt(df, id_vars=['Name'])

# melt - value 선택(수학과 영어)
pd.melt(df, id_vars=['Name'], value_vars=['수학', '영어'])

# melt 컬럼명 설정
pd.melt(df, id_vars=['Name'], var_name='과목', value_name='점수')

# melt 2개 기준
pd.melt(df, id_vars=['반', '이름'], var_name='과목', value_name='점수')

728x90

'Data > 빅데이터분석기사' 카테고리의 다른 글

[빅데이터분석기사] 판다스6 - 시계열 데이터1  (0) 2025.06.11
[빅데이터분석기사] 판다스5 - 그룹핑, 병합, 피벗테이블  (1) 2025.06.10
[빅데이터분석기사] 판다스3 - 추가/변경, 정렬, 필터링, 결측치, 값 변경  (0) 2025.06.09
[빅데이터분석기사] 판다스2 - 자료형, 컬럼, 삭제, 인덱싱/슬라이싱  (0) 2025.05.28
[빅데이터분석기사] 판다스1 - 데이터프레임, 시리즈, 저장, EDA  (0) 2025.05.26
'Data/빅데이터분석기사' 카테고리의 다른 글
  • [빅데이터분석기사] 판다스6 - 시계열 데이터1
  • [빅데이터분석기사] 판다스5 - 그룹핑, 병합, 피벗테이블
  • [빅데이터분석기사] 판다스3 - 추가/변경, 정렬, 필터링, 결측치, 값 변경
  • [빅데이터분석기사] 판다스2 - 자료형, 컬럼, 삭제, 인덱싱/슬라이싱
DROPDEW
DROPDEW
💻 Developer | 기록하지 않으면 존재하지 않는다
  • DROPDEW
    제 2장 1막
    DROPDEW
  • 전체
    오늘
    어제
    • Dev (443)
      • App·Android (1)
      • BE (50)
        • HTTP 웹 기본 지식 (8)
        • 스프링 입문 - 코드로 배우는 스프링 부트, 웹 .. (12)
        • 스프링부트와 JPA 활용 (11)
        • 스프링부트 시큐리티 & JWT (0)
        • 실전 자바 기본, 중급 (1)
        • PHP (11)
      • FE·Client (23)
        • HTML (1)
        • React (19)
        • Unity (1)
      • Data (28)
        • AI (7)
        • Bigdata (6)
        • Database (1)
        • Python (0)
        • 빅데이터분석기사 (13)
      • Infra (1)
      • Activity (9)
        • Intern (0)
        • SK AI Dream Camp (2)
        • 구름톤 유니브 4기 (1)
        • 리모트 인턴십 6기 (3)
        • 봉사활동 (0)
        • 부스트캠프 AI Tech 8기 (3)
      • CS (8)
      • 취준 (12)
        • 자격증 (4)
        • 인적성·NCS (6)
        • 코테·필기·면접 후기 (2)
      • 코테 (270)
        • Algorithm (222)
        • SQL (35)
        • 정리 (13)
      • 인사이트 (27)
        • 금융경제뉴스 (7)
        • 금융용어·지식 (2)
        • 북마크 (7)
  • 블로그 메뉴

    • 홈
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    매개변수탐색
    백준
    그리디알고리즘
    정렬
    자료구조
    최단경로
    문자열
    브루트포스 알고리즘
    시뮬레이션
    너비우선탐색
    수학
    구현
    그래프탐색
    그래프이론
    오블완
    티스토리챌린지
    이분탐색
    투포인터
    다이나믹프로그래밍
    누적합
  • 최근 댓글

  • 최근 글

  • 250x250
  • hELLO· Designed By정상우.v4.10.3
DROPDEW
[빅데이터분석기사] 판다스4 - 문자열, 내장함수
상단으로

티스토리툴바