기본 데이터 분석
Contents
4.2. 기본 데이터 분석¶
컴퓨터가 관리하는 데이터는 CSV
또는 TSV
형태로 관리되는 경우가 많습니다. CSV와 TSV는 모두 데이터를 저장하고 교환하는 데 매우 유용한 형식입니다. CSV는 더 많이 사용되지만, 필드(실제 데이터 자체)에 콤마가 포함된 경우 TSV가 더 유리할 수 있습니다. 적절한 데이터 저장 형식을 선택하는 것은 데이터의 특성과 사용 목적에 따라 달라집니다.
4.2.1. CSV (Comma-Separated Values)¶
CSV 파일은 콤마(,)로 구분된 데이터를 저장하는 파일 형식입니다. 각 줄은 데이터 레코드를 나타내며, 각 레코드는 쉼표로 구분된 필드(열)로 구성됩니다. CSV 파일은 간단하고 널리 사용되며, 다양한 프로그램에서 지원됩니다.
특징
구분자: 콤마(
,
).사용 사례: 스프레드시트 프로그램(예: MS Excel, Google Sheets), DBMS, 데이터 분석 도구 등
장점: 간단한 구조, 다양한 애플리케이션에서 쉽게 사용 가능
단점: 데이터에 콤마가 포함될 경우 이스케이프(제거 또는 다른 문자로 치환) 처리가 필요
데이터 예시
Name,Age,City John,28,New York Anna,24,Paris Peter,35,Berlin Linda,32,London
4.2.2. TSV (Tab-Separated Values)¶
TSV 파일은 탭(tab) 문자로 구분된 데이터를 저장하는 파일 형식입니다. CSV와 유사하게, 각 줄은 데이터 레코드를 나타내며, 각 레코드는 탭 문자 (\t
)로 구분된 필드로 구성됩니다. TSV 파일은 특히 텍스트 편집기와 스프레드시트 프로그램에서 쉽게 읽을 수 있습니다.
특징
구분자: 탭 문자(
\t
)사용 사례: 스프레드시트 프로그램, DBMS, 데이터 분석 도구 등
장점: 필드 값에 콤마가 포함되어도 문제가 되지 않음, 구분자가 명확하여 가독성 높음
단점: CSV에 비해 덜 일반적이며, 일부 애플리케이션에서는 기본 지원이 안되는 경우도 있음
데이터 예시
Name Age City John 28 New York Anna 24 Paris Peter 35 Berlin Linda 32 London
4.2.3. 파일 데이터 불러오기¶
파일을 읽어오려면 pandas
의 read_csv()
메서드를 사용하면 됩니다. 파일에서 데이터를 읽어오면 데이터 프레임으로 리턴합니다.
자세한 사용법은 pandas.read_csv를 참고하면 됩니다.
read_csv()
메서드 파라미터는 2개만 신경쓰면 됩니다.
import pandas as pd
pd.read_csv('filepath_or_buffer', sep=',')
'filepath_or_buffer'
: 파일 이름입니다. 만약 파일 내용이 메인 메모리에 적재되고 변수로 관리되고 있다면 변수 이름을 입력하면 됩니다.sep
는 구분자를 의미합니다. 기본값은 콤마(,
) 입니다. 아무것도 입력하지 않으면 콤마를 기준으로 데이터 열을 구분합니다.CSV
파일은 콤마로 구분되기 때문에 별도로 입력할 필요가 없습니다.TSV
파일은 탭으로 구분하기 때문에sep='\t'
라고 입력해 주어야 합니다.
두 개의 파일을 준비합니다: data.csv
와 data.tsv
.
import pandas as pd
# CSV 파일을 읽어 데이터 프레임으로 변환
df = pd.read_csv('data.csv', sep=',') # sep=',' 생략 가능
# TSV 파일을 읽어 데이터 프레임으로 변환
df = pd.read_csv('data.tsv', sep='\t')
# 데이터 프레임 출력
print(df.head())
4.2.4. 데이터 분석¶
4.2.4.1. 데이터 탐색¶
데이터의 기본 정보를 확인하고, 통계 요약을 출력하기
# 데이터 프레임의 정보 출력
print(df.info())
# 데이터 프레임의 통계 요약 출력
print(df.describe())
# 첫 n개 데이터만 보기
print(df.head(5)) # 첫 5줄만 보기
# 마지막 n개 데이터만 보기
print(df.tail(7)) # 마지막 7줄만 보기
4.2.4.2. 데이터 선택 및 필터링¶
특정 열을 선택하고, 조건에 맞는 데이터를 필터링합니다.
# 특정 열 선택
names = df['Name']
print(names)
# 조건에 맞는 데이터 필터링 (예: Age가 30보다 큰 경우)
adults = df[df['Age'] > 30]
print(adults)
4.2.4.3. 데이터 정렬¶
특정 열을 기준으로 데이터를 정렬합니다.
# Age 열을 기준으로 데이터 정렬
sorted_df = df.sort_values(by='Age')
print(sorted_df)
4.2.4.4. 데이터 그룹화 및 집계¶
특정 열을 기준으로 데이터를 그룹화하고, 집계 연산을 수행합니다.
# Country 열을 기준으로 데이터 그룹화 후 평균값 계산
grouped = df.groupby('Country').mean()
print(grouped)
4.2.4.5. 데이터 합치기(병합)¶
pandas.merge()
메서드를 이용하면 서로 다른 데이터 테이블을 합칠 수 있습니다.
자세한 내용은 pandas.merge()를 참고하세요.
데이터 프레임(데이터베이스의 경우 DB Table)을 병합하는 방법은 다양합니다. 대표적으로는 merge()
, join()
, concatenate()
, stack()
등이 있습니다.
그림을 이용한 간단한 설명은 여기를 클릭하면 확인할 수 있습니다.
우리는 merge()
메서드를 활용하여 2개 데이터 테이블을 합치는 실습을 간단하게 해 보겠습니다.
아래 코드는 2개의 데이터 프레임을 EmployeeID
라는 컬럼명(column name) 기준으로 병합하는 코드입니다. 실습파일을 다운로드하여 현재 디렉토리에 복사합니다.
import pandas as pd
import matplotlib.pyplot as plt
# 1. 데이터 로드
employees = pd.read_csv('employees.csv')
sales = pd.read_csv('sales.tsv', sep='\t')
# 2. 데이터 탐색
print(employees.head())
print(sales.head())
print(employees.info())
print(sales.info())
# 3. 데이터 병합
merged_data = pd.merge(employees, sales, on='EmployeeID')
print(merged_data.head())
4.2.4.6. 데이터 시각화¶
Matplotlib과 통합하여 데이터를 시각화할 수 있습니다.
import matplotlib.pyplot as plt
# Age 열의 히스토그램 그리기
df['Age'].hist()
plt.xlabel('Age')
plt.ylabel('Frequency')
plt.title('Age Distribution')
plt.show()
4.2.4.7. 전체 예제 코드¶
아래는 위의 모든 단계를 포함한 전체 예제 코드입니다.
import pandas as pd
import matplotlib.pyplot as plt
# 1. TSV 파일을 읽어 데이터 프레임으로 변환
df = pd.read_csv('data.tsv', sep='\t')
print(df.head())
# 2. 데이터 탐색
print(df.info())
print(df.describe())
# 3. 데이터 선택 및 필터링
names = df['Name']
print(names)
adults = df[df['Age'] > 30]
print(adults)
# 4. 데이터 정렬
sorted_df = df.sort_values(by='Age')
print(sorted_df)
# 5. 데이터 그룹화 및 집계
grouped = df.groupby('Country').mean()
print(grouped)
# 6. 데이터 시각화
df['Age'].hist()
plt.xlabel('Age')
plt.ylabel('Frequency')
plt.title('Age Distribution')
plt.show()