머신러닝 파이썬

파이썬을 활용한 데이터 처리 기초: Pandas와 Scikit-learn 소개

fast learner 2023. 4. 14. 09:30

오늘은 간단한 파이썬 코드를 통해 pandas와 scikit-learn 라이브러리를 사용하여 데이터 처리를 하는 방법을 알아보겠습니다. 여러분이 이해하기 쉽게 설명하며 진행하겠습니다.

먼저 코드에 사용된 라이브러리들을 불러오겠습니다.

import pandas as pd
import numpy as np

다음은 세 가지 방법으로 데이터프레임을 생성하는 코드입니다.

dataset = np.array([['kor', 70], ['math', 80]])
df = pd.DataFrame(dataset, columns=['class', 'score'])
df = pd.DataFrame(data=[['kor', 70], ['math', 80]], columns=['class', 'score'])
df = pd.DataFrame({'class': ['kor', 'math'], 'score': [70, 80]})

 

 

이제 sklearn 라이브러리에서 제공하는 붓꽃 데이터셋(iris dataset)을 불러오겠습니다.

from sklearn.datasets import load_iris

iris = load_iris()
iris = pd.DataFrame(iris.data, columns=iris.feature_names)

데이터프레임의 정보와 기초 통계량을 확인해봅시다.

print(iris)
print(iris.info())
print(iris.describe())

다음은 데이터프레임의 인덱스와 인덱스 변경 방법을 보여줍니다.

print(df.index)

df.index = ['A', 'B']
print(df.index)

'class' 열을 인덱스로 설정하고, 기존 인덱스를 삭제하는 코드입니다.

df.set_index('class', drop=True, append=False, inplace=True)
print(f"df.set_index('class', drop=True, append=False, inplace=True)\n{df}")

 

  • df: 인덱스를 설정할 데이터프레임입니다.
  • set_index(): 데이터프레임에서 인덱스를 설정하는 메서드입니다.
  • 'class': 인덱스로 사용할 열의 이름입니다. 이 예제에서는 'class' 열이 인덱스 열이 됩니다.
  • drop=True: 이 인자는 데이터프레임의 기존 열을 제거할지 여부를 결정합니다. 이 예제에서는 'class' 열이 제거됩니다.
  • append=False: 이 인자는 인덱스를 데이터프레임의 기존 인덱스와 결합할지 여부를 결정합니다. 이 예제에서는 새로운 인덱스로 대체됩니다.
  • inplace=True: 이 인자는 데이터프레임을 수정할지 여부를 결정합니다. 이 예제에서는 데이터프레임이 직접 변경됩니다.

따라서 이 코드는 'class' 열을 인덱스로 설정하고, 기존 'class' 열을 제거하고, 새로운 인덱스로 대체하며, 데이터프레임을 직접 수정합니다

df.reset_index(drop=False, inplace=True)
print(f"df.reset_index(drop=False, inplace=True)\n{df}")

이제 붓꽃 데이터셋의 열 이름을 확인하고 수정해봅시다.

print(iris.columns)

iris.columns = ['sepal length', 'sepal width', 'petal length', 'petal width']
print(iris.head())

iris.columns = iris.columns.str.replace(' ', '_')
print(iris.head())

 

다음으로 데이터프레임에서 특정 조건에 맞는 데이터를 필터링하는 방법을 알아보겠습니다.

filtered_iris = iris[iris['sepal_length'] > 6.0]
print(filtered_iris)

위 코드는 'sepal_length'가 6.0보다 큰 데이터만 필터링하여 새로운 데이터프레임을 생성합니다.

또한, 데이터프레임에서 원하는 열을 선택하는 방법을 알아보겠습니다.

selected_columns = iris[['sepal_length', 'petal_length']]
print(selected_columns)

위 코드는 'sepal_length'와 'petal_length' 열만 선택하여 새로운 데이터프레임을 생성합니다.

데이터프레임에 새로운 열을 추가하는 방법도 알아보겠습니다.

iris['sepal_ratio'] = iris['sepal_length'] / iris['sepal_width']
print(iris.head())

위 코드는 기존 'sepal_length'와 'sepal_width' 열을 사용하여 'sepal_ratio'라는 새로운 열을 추가합니다.

이제 결측치를 처리하는 방법에 대해 알아보겠습니다. 먼저 결측치를 포함한 샘플 데이터를 생성하겠습니다.

sample_data = {'A': [1, 2, np.nan], 'B': [4, np.nan, 6], 'C': [7, 8, 9]}
sample_df = pd.DataFrame(sample_data)
print(sample_df)

 

결측치를 다른 값으로 채우는 방법을 살펴봅시다.

filled_sample_df = sample_df.fillna(value=0)
print(filled_sample_df)

위 코드는 결측치를 0으로 채우는 방법입니다.

결측치를 해당 열의 평균값으로 채우는 방법도 있습니다.

mean_filled_sample_df = sample_df.fillna(value=sample_df.mean())
print(mean_filled_sample_df)

마지막으로 데이터프레임을 그룹화하여 그룹별 통계량을 계산하는 방법을 알아보겠습니다.

iris['species'] = ['setosa'] * 50 + ['versicolor'] * 50 + ['virginica'] * 50
grouped_iris = iris.groupby('species')
print(grouped_iris.mean())

위 코드는 'species' 열을 기준으로 데이터프레임을 그룹화하고, 그룹별 평균값을 계산합니다.

 

728x90
반응형