Python 11일차

조영훈·2024년 8월 15일

Python

목록 보기
11/16
post-thumbnail

Pandas 활용 정리(1)

Pandas 주요 개념

  • Series: 1차원 데이터 구조로, DataFrame의 한 열을 구성
  • DataFrame: 2차원 표 형식의 데이터 구조로, 여러 개의 Series를 모아 구성
  • 기술 통계 함수: 데이터 분석에 유용한 다양한 통계 함수 제공 (sum, mean, median, max, min, std, var, describe 등)

1. Series 객체 생성 및 조작

Series는 1차원 배열과 유사한 구조로, 각 요소는 고유한 인덱스를 가진다.

딕셔너리를 Series로 변환

import pandas as pd

dict_data = {'a': 1, 'b': 2, 'c': 3}
sr = pd.Series(dict_data)
print(sr)
print(sr.index)  # Index(['a', 'b', 'c'], dtype='object')
print(sr.values)  # [1 2 3]

튜플을 Series로 변환

튜플 데이터를 Series로 변환할 때, 인덱스를 명시적으로 지정할 수 있다.

tuple_data = ("홍길동", '1991-01-25', '남', True)
sr = pd.Series(tuple_data, index=["이름", "생년월일", "성별", "학생여부"])
print(sr)
print(sr.index)  # Index(['이름', '생년월일', '성별', '학생여부'], dtype='object')
print(sr.values)  # ['홍길동' '1991-01-25' '남' True]

인덱스를 지정하지 않으면 기본적으로 0부터 시작하는 정수 인덱스가 부여된다.

sr = pd.Series(tuple_data)
print(sr)
print(sr.index)  # RangeIndex(start=0, stop=4, step=1)
print(sr.values)  # ['홍길동' '1991-01-25' '남' True]

리스트를 Series로 변환

list_data = ["홍길동", '1991-01-25', '남', True]
sr = pd.Series(list_data, index=["이름", "생년월일", "성별", "학생여부"])
print(sr)
print(sr.index)  # Index(['이름', '생년월일', '성별', '학생여부'], dtype='object')
print(sr.values)  # ['홍길동' '1991-01-25' '남' True]

2. DataFrame 객체 생성 및 조작

DataFrame은 이차원 데이터 구조로, 행과 열을 가지고 있다. 각 열은 Series 객체로 이루어져 있으며, pandas의 핵심 데이터 구조이다.

딕셔너리를 DataFrame으로 변환

dict_data = {'c0': [1, 2, 3], 'c1': [4, 5, 6], 'c2': [7, 8, 9], 'c3': [10, 11, 12], 'c4': [13, 14, 15]}
df = pd.DataFrame(dict_data)
print(df)
print("컬럼명:", df.columns)  # 컬럼명: Index(['c0', 'c1', 'c2', 'c3', 'c4'], dtype='object')
print("인덱스명:", df.index)  # 인덱스명: RangeIndex(start=0, stop=3, step=1)

리스트를 DataFrame으로 변환

df = pd.DataFrame([[15, '남', '서울중'], [17, '여', '서울여고'], [17, '남', '서울고']],
                  index=['홍길동', '성춘향', '이몽룡'], columns=['나이', '성별', '학교'])
print(df)

DataFrame 인덱스 및 컬럼명 변경

df.index = ["학생1", "학생2", "학생3"]
df.columns = ["age", "gender", "school"]
print(df)

df.rename(columns={"age": "나이"}, inplace=True)
df = df.rename(index={"학생1": "홍길동"})
print(df)

3. 통계 함수 활용

pandas는 기본적인 통계 함수들을 제공하여 데이터 분석을 용이하게 한다.

print(df.mean())  # 평균
print(df.sum())  # 합계
print(df.max())  # 최대값
print(df.min())  # 최소값
print(df.median())  # 중간값
print(df.std())  # 표준편차
print(df.describe())  # 기술 통계 정보

4. 데이터 조작

데이터 선택 및 조회

데이터를 조회할 때는 loc와 iloc를 사용하여 인덱스명이나 순서를 기준으로 선택할 수 있다.

print(df.loc["홍길동"])  # 행 조회 (인덱스명으로)
print(df.iloc[0])  # 행 조회 (순서로)

print(df[["수학", "영어"]])  # 열 조회 (여러 열)
print(df["수학"])  # 열 조회 (단일 열)

데이터 추가 및 삭제

df.drop(["학생1"], axis=0, inplace=True)  # 행 삭제
df.drop(["수학"], axis=1, inplace=True)  # 열 삭제
del df["음악"]  # 열 삭제

복사

df2 = df  # 얕은 복사
df3 = df[:]  # 깊은 복사
df4 = df.copy()  # 깊은 복사

데이터 통계 정보 조회

df.loc["김삿갓"].describe()  # 특정 행에 대한 통계 정보
df.describe()  # 전체 데이터에 대한 기술 통계
df.info()  # 데이터프레임의 간략 정보
profile
개발 꿈나무

0개의 댓글