Pandas는 데이터 조작 및 분석을 위한 파이썬 라이브러리로, 표 형식의 데이터를 쉽게 처리하고 다룰 수 있도록 도와준다. Pandas는 데이터 과학 및 데이터 분석 분야에서 널리 사용되며, 다음과 같은 주요 기능을 제공한다.
import pandas as pd
# Series 예시
data = [10, 20, 30, 40, 50]
series = pd.Series(data)
print("Series:")
print(series)
# DataFrame 예시
data = {'이름': ['Alice', 'Bob', 'Charlie', 'David', 'Eve'],
'나이': [25, 30, 35, 40, 45],
'도시': ['서울', '뉴욕', '로스앤젤레스', '도쿄', '런던']}
df = pd.DataFrame(data)
print("\nDataFrame:")
print(df)
Pandas는 다양한 데이터 포맷(예: CSV, Excel, SQL, JSON, HTML, 등)에서 데이터를 읽고 쓸 수 있는 도구를 제공한다.
import pandas as pd
# CSV 파일을 읽어와 데이터프레임으로 저장
df = pd.read_csv('파일경로/파일이름.csv')
# 데이터프레임의 처음 몇 행을 확인
print(df.head())
이 코드에서 pd.read_csv() 함수는 CSV 파일을 읽어와 데이터프레임으로 저장하고, df.head()는 데이터프레임의 처음 몇 행을 출력한다.
import pandas as pd
# 데이터프레임 생성
data = {'이름': ['Alice', 'Bob', 'Charlie'],
'나이': [25, 30, 35]}
df = pd.DataFrame(data)
# 데이터프레임을 CSV 파일로 저장
df.to_csv('출력파일명.csv', index=False) # index=False로 설정하면 인덱스를 저장하지 않습니다.
이 코드에서 pd.DataFrame()을 사용하여 데이터프레임을 생성하고, df.to_csv()를 사용하여 데이터프레임을 CSV 파일로 저장한다.
데이터 필터링, 정렬, 그룹화, 결합, 변환, 결측값 처리 등 다양한 데이터 조작 작업을 수행할 수 있다.
import pandas as pd
# 예제 데이터프레임 생성
data = {'이름': ['Alice', 'Bob', 'Charlie', 'David', 'Eve'],
'나이': [25, 30, 35, 28, 22],
'성별': ['여', '남', '남', '남', '여'],
'도시': ['서울', '뉴욕', '서울', '로스앤젤레스', '로스앤젤레스']}
df = pd.DataFrame(data)
# 1. 데이터 필터링: 나이가 30 이상인 데이터만 선택
filtered_data = df[df['나이'] >= 30]
print("데이터 필터링:")
print(filtered_data)
# 2. 데이터 정렬: 나이를 기준으로 내림차순 정렬
sorted_data = df.sort_values(by='나이', ascending=False)
print("\n데이터 정렬:")
print(sorted_data)
# 3. 데이터 그룹화: 도시별로 평균 나이 계산
grouped_data = df.groupby('도시')['나이'].mean()
print("\n데이터 그룹화:")
print(grouped_data)
# 4. 데이터 결합: 두 개의 데이터프레임 결합
data2 = {'이름': ['Frank', 'Grace', 'Hannah'],
'나이': [32, 29, 31],
'성별': ['남', '여', '여'],
'도시': ['뉴욕', '서울', '뉴욕']}
df2 = pd.DataFrame(data2)
combined_data = pd.concat([df, df2], ignore_index=True)
print("\n데이터 결합:")
print(combined_data)
# 5. 데이터 변환: 성별을 원-핫 인코딩으로 변환
encoded_data = pd.get_dummies(df, columns=['성별'], prefix='성별')
print("\n데이터 변환:")
print(encoded_data)
# 6. 결측값 처리: 나이 컬럼에서 결측값(NaN)을 평균값으로 대체
df['나이'].fillna(df['나이'].mean(), inplace=True)
print("\n결측값 처리:")
print(df)
데이터 프레임 내에서 특정 행과 열을 선택하고 필터링하는 데 사용되는 다양한 메서드를 제공한다.
import pandas as pd
# 예제 데이터프레임 생성
data = {'이름': ['Alice', 'Bob', 'Charlie', 'David', 'Eve'],
'나이': [25, 30, 35, 28, 22],
'성별': ['여', '남', '남', '남', '여']}
df = pd.DataFrame(data)
# 1. 열 선택: '이름' 열 선택
selected_column = df['이름']
print("선택한 열:")
print(selected_column)
# 2. 여러 열 선택: '이름'과 '나이' 열 선택
selected_columns = df[['이름', '나이']]
print("\n여러 열 선택:")
print(selected_columns)
# 3. 행 선택: 2번째 행 선택
selected_row = df.loc[1] # 또는 df.iloc[1]
print("\n선택한 행:")
print(selected_row)
# 4. 특정 범위의 행 선택: 2~4번째 행 선택
selected_rows = df.loc[1:3] # 또는 df.iloc[1:4]
print("\n선택한 범위의 행:")
print(selected_rows)
# 5. 조건에 따른 데이터 필터링: 나이가 30 이상인 행 선택
filtered_data = df[df['나이'] >= 30]
print("\n조건에 따른 데이터 필터링:")
print(filtered_data)
평균, 합, 표준 편차 및 다양한 통계량을 계산하는 함수를 제공하며, 데이터 집계 작업을 간단하게 수행할 수 있다.
import pandas as pd
# 예제 데이터프레임 생성
data = {'이름': ['Alice', 'Bob', 'Charlie', 'David', 'Eve'],
'나이': [25, 30, 35, 28, 22],
'성별': ['여', '남', '남', '남', '여']}
df = pd.DataFrame(data)
# 통계 정보 출력
# 1. 기술 통계 요약: count, mean, std, min, 25%, 50%, 75%, max
statistics_summary = df.describe()
print("기술 통계 요약:")
print(statistics_summary)
# 2. 특정 열의 합 계산
total_age = df['나이'].sum()
print("\n나이 열의 합:", total_age)
# 3. 특정 열의 평균 계산
mean_age = df['나이'].mean()
print("\n나이 열의 평균:", mean_age)
# 집계 작업
# 4. 그룹별 합 집계: 성별별 나이 합
grouped = df.groupby('성별')['나이'].sum()
print("\n그룹별 합 집계:")
print(grouped)
# 5. 그룹별 평균 집계: 성별별 나이 평균
grouped_mean = df.groupby('성별')['나이'].mean()
print("\n그룹별 평균 집계:")
print(grouped_mean)
시계열 데이터 분석을 위한 기능을 제공하며, 시계열 데이터의 인덱싱과 레이블링을 지원한다.
import pandas as pd
from datetime import datetime
# 예제 시계열 데이터 생성
date_rng = pd.date_range(start='2023-01-01', end='2023-01-10', freq='D')
data = {'온도': [15, 18, 20, 21, 24, 25, 28, 27, 22, 19]}
df = pd.DataFrame(data, index=date_rng)
# 데이터프레임 확인
print("시계열 데이터:")
print(df)
# 1. 날짜를 사용한 레이블링
selected_date = datetime(2023, 1, 5) # 선택할 날짜 지정
value = df.loc[selected_date, '온도'] # 해당 날짜의 '온도' 열 값 가져오기
print("\n{}의 온도: {}도".format(selected_date, value))
# 2. 날짜 범위로 인덱싱
selected_range = df['2023-01-03':'2023-01-07'] # 특정 날짜 범위 선택
print("\n날짜 범위 선택:")
print(selected_range)
# 3. 특정 월의 데이터 선택
selected_month = df['2023-01'] # 특정 월의 데이터 선택
print("\n2023년 1월 데이터:")
print(selected_month)
# 4. 연도별 데이터 선택
selected_year = df['2023'] # 특정 연도의 데이터 선택
print("\n2023년 데이터:")
print(selected_year)
Pandas와 함께 사용되는 다른 라이브러리(예: Matplotlib, Seaborn)를 활용하여 데이터 시각화를 수행할 수 있다.
import pandas as pd
import matplotlib.pyplot as plt
# 예제 데이터프레임 생성
data = {'연도': [2010, 2011, 2012, 2013, 2014, 2015, 2016],
'매출액(억원)': [120, 140, 160, 180, 200, 220, 240]}
df = pd.DataFrame(data)
# 데이터프레임 확인
print("데이터프레임:")
print(df)
# 데이터 시각화
plt.figure(figsize=(8, 5)) # 그래프의 크기 설정
# 선 그래프 그리기
plt.plot(df['연도'], df['매출액(억원)'], marker='o', linestyle='-', color='b', label='매출액')
# 그래프 제목과 축 레이블 설정
plt.title('연간 매출액 추이')
plt.xlabel('연도')
plt.ylabel('매출액(억원)')
# 범례 표시
plt.legend()
# 그래프 표시
plt.grid(True) # 그리드 표시
plt.show()
여러 데이터 프레임을 결합하거나 병합하여 더 큰 데이터 세트를 생성하는 데 사용된다.
import pandas as pd
# 예제 데이터프레임 생성
data1 = {'A': [1, 2, 3],
'B': [4, 5, 6]}
df1 = pd.DataFrame(data1)
data2 = {'A': [7, 8, 9],
'B': [10, 11, 12]}
df2 = pd.DataFrame(data2)
# 데이터 결합
result = pd.concat([df1, df2]) # 기본적으로 행 방향(아래로) 결합
print("데이터 결합:")
print(result)
import pandas as pd
# 예제 데이터프레임 생성
data1 = {'key': ['A', 'B', 'C'],
'value': [1, 2, 3]}
df1 = pd.DataFrame(data1)
data2 = {'key': ['B', 'C', 'D'],
'value': [4, 5, 6]}
df2 = pd.DataFrame(data2)
# 데이터 병합
result = pd.merge(df1, df2, on='key', how='inner') # 'key' 열을 기준으로 내부 조인
print("데이터 병합:")
print(result)
Pandas는 데이터 처리, 데이터 분석, 데이터 시각화 및 기계 학습 작업을 지원하는 강력한 도구이며, 데이터 과학자, 데이터 분석가 및 엔지니어들에게 중요한 역할을 한다. 데이터를 불러오고 정제하여 분석 및 시각화 작업을 수행하는 데 필수적인 라이브러리 중 하나이다.