PYTHON을 사용한 탐색적 데이터 분석(EDA): 데이터에서 통찰력 발견
소개
탐색적 데이터 분석(EDA)은 분석가가 통찰력을 발견하고 추가 모델링을 위해 데이터를 준비할 수 있도록 하기 때문에 데이터 분석에서 매우 중요합니다. 이 기사에서는 데이터 이해를 높이기 위해 Python에서 사용할 수 있는 다양한 EDA 기술과 도구에 대해 알아봅니다. 데이터 세트 정리/처리부터 결과 시각화, Python을 사용하여 데이터 스토리 전달까지.
탐색적 데이터 분석이란 무엇인가요?
탐색적 데이터 분석(EDA)은 데이터세트를 분석하여 데이터세트의 주요 특성을 이해하는 방법입니다. 여기에는 데이터 특징을 요약하고, 패턴을 감지하고, 시각적 및 통계적 기술을 통해 관계를 밝혀내는 작업이 포함됩니다. EDA는 통찰력을 얻고 추가 분석을 위한 가설을 수립하는 데 도움이 됩니다.
Python의 탐색적 데이터 분석(EDA)은 데이터에서 통찰력을 찾는 데 필수적인 다양한 기술을 사용합니다. 기본 기술 중 하나에는 Matplotlib 및 Seaborn과 같은 라이브러리를 사용한 데이터 시각화가 포함됩니다. 이러한 도구를 사용하면 데이터 과학자는 데이터 세트 내의 분포와 관계를 이해하는 데 중요한 산점도, 히스토그램, 상자 그림을 비롯한 다양한 유형의 플롯을 만들 수 있습니다.
분석가는 데이터를 시각화함으로써 수치 분석만으로는 명확하지 않은 추세, 이상치, 패턴을 식별할 수 있습니다.
EDA의 또 다른 중요한 기술은 주로 Pandas 라이브러리를 통해 촉진되는 데이터 정리 및 조작입니다. 여기에는 누락된 값을 처리하고, 데이터를 필터링하고, 집계 함수를 사용하여 통찰력을 요약함으로써 데이터 세트를 처리하는 작업이 포함됩니다. '그룹별'과 같은 기능을 적용하면 사용자는 데이터를 의미 있는 카테고리로 분류할 수 있어 보다 명확한 분석이 가능해집니다. 또한 상관 분석과 같은 통계적 방법을 통합하면 변수 간의 관계에 대한 더 깊은 이해를 제공하여 보다 구조화된 분석에서 테스트할 수 있는 가설을 수립하는 데 도움이 됩니다.
PYTHON을 사용하여 EDA를 수행하는 방법
1단계: Python 라이브러리 가져오기
Python을 사용한 ML의 첫 번째 단계는 라이브러리를 사용하여 데이터를 이해하고 활용하는 것입니다. 이 링크를 사용하여 Kaggle 웹사이트(https://www.kaggle.com/datasets/sukhmanibedi/cars4u
)에서 데이터 세트를 얻을 수 있습니다.
데이터 로딩, 통계 분석, 시각화, 데이터 변환, 병합 및 결합 등 분석에 필요한 모든 라이브러리를 가져옵니다.
Pandas와 Numpy는 데이터 조작 및 수치 계산에 사용되었습니다
데이터 시각화를 위해 Matplotlib과 Seaborn을 사용했습니다.
코드:
팬더를 PD로 가져오기
numpy를 np로 가져오기
matplotlib.pyplot을 plt로 가져오기
seaborn을 sns로 가져오기
경고를 무시하려면
수입 경고
warnings.filterwarnings('무시')
2단계: 데이터세트 읽기
Python Pandas 라이브러리는 이미지, .csv, .xlsx, .sql, .pickle, .html, .txt 등과 같은 파일에서 Pandas DataFrame으로 데이터를 로드할 수 있는 다양한 가능성을 제공합니다.
대부분의 데이터는 CSV 파일의 표 형식으로 제공됩니다. 트렌디하고 접근하기 쉽습니다. read_csv() 함수를 사용하면 데이터를 팬더 DataFrame으로 변환할 수 있습니다.
본 글에서는 중고차 가격을 예측하기 위한 데이터를 예로 들어보겠습니다. 이 데이터세트에서는 중고차 가격을 분석하고 EDA가 자동차 가격에 영향을 미치는 요인을 식별하는 데 어떻게 중점을 두는지 분석하려고 합니다. DataFrame 데이터에 데이터를 저장했습니다.
데이터 = pd.read_csv("used_cars.csv")
데이터 분석
추론을 하기 전에 데이터의 모든 변수를 검사하여 데이터를 듣습니다.
데이터 이해의 주요 목표는 행과 열의 수, 데이터의 값, 데이터 유형 및 데이터 세트의 누락 값을 포괄하는 데이터에 대한 일반적인 통찰력을 얻는 것입니다.
모양 – 모양은 데이터세트의 관찰(행) 수와 특징(열)을 표시합니다
데이터 세트에는 7253개의 관측치와 14개의 변수가 있습니다
head()는 데이터 세트의 상위 5개 관측치를 표시합니다
데이터.헤드()
tail()은 데이터 세트의 마지막 5개 관측치를 표시합니다
데이터.테일()
info()는 각 열의 레코드 수, null이 있거나 null이 아닌 데이터, 데이터 유형, 데이터 세트의 메모리 사용량 등 데이터 유형과 데이터에 대한 정보를 이해하는 데 도움이 됩니다
데이터.정보()
data.info()에서는 Mileage, Engine, Power, Seats, New Price 및 Price 변수에 누락된 값이 있음을 보여줍니다. Mileage, Power와 같은 숫자 변수는 다음과 같은 데이터 유형입니다. float64 및 int64. Location, Fuel_Type, Transmission, Owner Type과 같은 범주형 변수는 객체 데이터 유형입니다.
중복 확인
nunique()는 각 열의 여러 고유 값과 데이터 설명을 기반으로 데이터의 연속형 열과 범주형 열을 식별할 수 있습니다. 중복된 데이터는 추가 분석을 통해 처리 또는 제거될 수 있습니다.
데이터.누니크()
https://www.analyticsvidhya.com/blog/2022/07/step-by-step-exploratory-data-analytics-eda-using-python/
결측값 계산
isnull()은 데이터의 null 값을 식별하기 위해 모든 전처리 단계에서 광범위하게 사용되었습니다
이 예에서는 data.isnull().sum()을 사용하여 각 열에서 누락된 레코드 수를 가져옵니다
data.isnull().sum()
아래 코드는 각 열의 누락된 값의 백분율을 계산하는 데 도움이 됩니다
(data.isnull().sum()/(len(data)))*100
New_Price 및 Price 열의 누락된 값 비율은 각각 ~86% 및 ~17%입니다.
3단계: 데이터 절감
분석에 가치를 더하지 않는 일부 열이나 변수는 삭제될 수 있습니다.
우리 데이터세트에서 S.No 열은 종속변수를 예측할 수 있는 예측력이 없다는 가정하에 ID 값만 갖습니다.
data = data.drop(['S.No.'], 축 = 1)
데이터.정보()
분석에 필요한 몇 가지 열을 추가해야 하므로 특성 추출을 시작합니다.
4단계: 특성 추출
특성 엔지니어링은 머신러닝이나 통계 모델링을 사용하여 예측 모델을 생성할 때 도메인 지식을 사용하여 원시 데이터에서 가장 관련성이 높은 변수를 선택하고 변환하는 프로세스를 말합니다. 특성 추출의 주요 목표는 원시 데이터에서 의미 있는 데이터를 생성하는 것입니다.
5단계: 기능 생성
데이터세트에서 연도와 이름 변수를 가지고 실험해 보겠습니다. 샘플 데이터를 보면 '연도' 열에 자동차의 제조 연도가 표시됩니다.
자동차 연식은 자동차 가격에 영향을 미치는 요소이므로 연식 형식인 경우 자동차 연식을 찾기가 어렵습니다.
자동차의 나이를 알 수 있는 새로운 칼럼 “Car_Age”를 소개합니다
날짜/가져온 날짜부터
날짜.오늘().년
데이터['Car_Age']=date.today().year-data['연도']
데이터.헤드()
현재 데이터에서는 자동차 이름이 가격을 정확하게 예측할 수 없기 때문입니다. 그러나 이 열을 처리하여 브랜드 및 모델 이름을 사용하여 중요한 정보를 추출할 수 있습니다. 이름을 나누고 새로운 변수 "브랜드"와 "모델"을 소개하겠습니다
데이터['브랜드'] = data.Name.str.split().str.get(0)
데이터['모델'] = data.Name.str.split().str.get(1) data.Name.str.split().str.get(2)
data[['이름','브랜드','모델']]
6단계: 데이터 정리/랭글링
일부 변수 이름은 관련성이 없으며 이해하기 쉽지 않습니다. 일부 데이터에는 데이터 입력 오류가 있을 수 있으며 일부 변수에는 데이터 유형 변환이 필요할 수 있습니다. 데이터에서 이 문제를 해결해야 합니다.
예시에서는 브랜드 이름 'Isuzu', 'ISUZU', 'Mini' 및 'Land'가 잘못된 것으로 보입니다.
수정이 필요합니다
인쇄(data.Brand.unique())
인쇄(data.Brand.nunique())
searchfor = ['이스즈' ,'ISUZU','미니','랜드']
데이터[data.Brand.str.contains('|'.join(searchfor))].head(5)
data["Brand"].replace({"ISUZU": "Isuzu", "Mini": "Mini Cooper","Land":"Land Rover"}, inplace=True)
기본적인 데이터 분석, 피처링, 데이터 정리 작업을 완료했습니다.
EDA 프로세스로 넘어가 보겠습니다
탐색적 데이터 분석의 기본 사항 알아보기: https://www.analyticsvidhya.com/blog/2021/11/fundamentals-of-exploratory-data-analytic/
7단계: EDA 탐색적 데이터 분석
탐색적 데이터 분석은 요약 통계 및 그래픽 표현의 도움을 받아 데이터에 대한 초기 조사를 수행하여 패턴을 발견하고 가정을 확인하는 중요한 프로세스를 말합니다.
• EDA를 활용하여 주어진 데이터의 이상값, 패턴 및 추세를 확인할 수 있습니다.
• EDA는 데이터에서 의미 있는 패턴을 찾는 데 도움이 됩니다.
• EDA는 비즈니스 문제를 해결하기 위해 데이터 세트에 대한 심층적인 통찰력을 제공합니다.
• EDA는 데이터 세트에서 누락된 값을 대치할 수 있는 단서를 제공합니다.
8단계: 통계 요약
정보는 데이터에 대한 빠르고 간단한 설명을 제공합니다.
개수, 평균, 표준편차, 중앙값, 최빈값, 최소값, 최대값, 범위, 표준편차 등을 포함할 수 있습니다.
통계 요약은 데이터에 이상값, 데이터 입력 오류, 데이터의 분포(예: 데이터가 정규 분포 또는 왼쪽/오른쪽으로 치우침)가 있는지 여부를 식별하는 상위 수준의 아이디어를 제공합니다
Python에서는 explain()을 사용하여 이를 달성할 수 있습니다
explain() 함수는 데이터의 모든 통계 요약을 제공합니다
설명하다() ; int, float 등 수치 데이터 유형에 속하는 데이터에 대한 통계 요약 제공
data.describe().T
통계 요약을 통해 다음과 같은 결과를 추론할 수 있습니다.
• 연도는 1996년부터 2019년까지이며, 중고차에 최신 모델과 구형 자동차가 모두 포함되어 있음을 보여주는 범위가 가장 높습니다.
• 중고차의 평균 주행 거리는 약 58,000km입니다. 최대 값이 650000KM이 이상치의 증거를 보여주기 때문에 범위는 최소값과 최대값 사이에 큰 차이를 보여줍니다. 이 기록은 삭제될 수 있습니다.
• 마일리지의 최소값을 보면 0대의 차량이 0마일리지로 판매되지 않음을 알 수 있습니다. 데이터 입력 문제인 것 같습니다.
• 엔진과 파워에 이상치가 있는 것으로 보이며 데이터가 오른쪽으로 치우쳐 있습니다.
• 자동차의 평균 좌석수는 5개입니다. 카시트는 가격에서 중요한 부분을 차지합니다.
• 중고차의 최고 가격은 160,000으로 꽤 이상합니다. 중고차 가격이 너무 높거든요. 이상치 또는 데이터 입력 문제가 있을 수 있습니다.
describe(include='all')는 객체, 카테고리 등을 포함한 모든 데이터에 대한 통계 요약을 제공합니다
data.describe(include='all')
EDA를 하기 전, 분석하기 쉽도록 수치형 변수와 범주형 변수를 분리해 보겠습니다
cat_cols=data.select_dtypes(include=['object']).columns
num_cols = data.select_dtypes(include=np.number).columns.tolist()
print("범주형 변수:")
인쇄(cat_cols)
print("숫자 변수:")
인쇄(num_cols)
또한 Excel 및 스프레드시트의 표준 편차 기사에 대해 읽어보세요 https://www.analyticsvidhya.com/blog/2024/06/standard-deviation-in-excel/
9단계: EDA 일변량 분석
한 번에 하나의 변수를 사용하여 데이터 세트 분석/시각화:
데이터 시각화는 필수적입니다. 데이터를 더 잘 이해하려면 어떤 차트를 그릴지 결정해야 합니다. 이 기사에서는 Matplotlib 및 Seaborn 라이브러리를 사용하여 데이터를 시각화합니다.
Matplotlib는 기본 차트를 그리는 데 사용되는 Python 2D 플로팅 라이브러리입니다..
Seaborn은 짧은 코드 줄을 사용하여 Pandas 및 Numpy에서 통계 플롯을 생성하고 스타일을 지정하는 Matplotlib 위에 구축된 Python 라이브러리이기도 합니다
범주형 변수와 수치형 변수 모두에 대해 일변량 분석이 가능합니다.
카운트 플롯, 막대 차트, 파이 플롯 등을 사용하여 범주형 변수를 시각화할 수 있습니다.
히스토그램, 박스 플롯, 밀도 플롯 등을 사용하여 수치변수를 시각화할 수 있습니다.
이 예에서는 히스토그램과 연속형 변수에 대한 상자 그림을 사용하여 일변량 분석을 수행했습니다.
아래 그림에서는 일부 변수에 왜도와 이상치가 있기 때문에 히스토그램과 상자 그림을 사용하여 변수의 패턴을 보여줍니다.
num_cols의 열:
인쇄(열)
print('기울어짐:', round(data[col].skew(), 2))
plt.Figure(figsize = (15, 4))
plt.subplot(1, 2, 1)
데이터[col].hist(grid=False)
plt.ylabel('개수')
plt.subplot(1, 2, 2)
sns.boxplot(x=data[col])
plt.show()
이 데이터를 변환하기 위해 가격과 주행 킬로미터가 오른쪽으로 치우쳐 있으며 모든 이상값은 대치 범주형 변수가 개수 도표를 사용하여 시각화되는 동안 처리됩니다. 범주형 변수는 자동차 가격에 영향을 미치는 요인의 패턴을 제공합니다.
fig, axis = plt.subplots(3, 2, figsize = (18, 18))
fig.suptitle('데이터세트의 모든 범주형 변수에 대한 막대 그래프')
sns.countplot(ax = axis[0, 0], x = 'Fuel_Type', data = data, color = 'blue',
순서 = 데이터['Fuel_Type'].value_counts().index);
sns.countplot(ax = axis[0, 1], x = '전송', data = 데이터, color = 'blue',
순서 = 데이터['전송'].value_counts().index);
sns.countplot(ax = axis[1, 0], x = 'Owner_Type', data = data, color = 'blue',
순서 = 데이터['Owner_Type'].value_counts().index);
sns.countplot(ax = axis[1, 1], x = '위치', data = data, color = 'blue',
순서 = 데이터['위치'].value_counts().index);
sns.countplot(ax = axis[2, 0], x = '브랜드', data = data, color = 'blue',
주문 = 데이터['브랜드'].head(20).value_counts().index);
sns.countplot(ax = axis[2, 1], x = '모델', data = 데이터, color = 'blue',
순서 = 데이터['모델'].head(20).value_counts().index);
축[1][1].tick_params(labelrotation=45);
축[2][0].tick_params(labelrotation=90);
축[2][1].tick_params(labelrotation=90);
카운트 플롯에서 다음과 같은 관찰을 얻을 수 있습니다
• 뭄바이는 구매할 수 있는 자동차 수가 가장 많고 하이데라바드와 코임바토르가 그 뒤를 따릅니다
• ~53%의 자동차에는 디젤 연료 유형이 있습니다. 이는 디젤 자동차가 더 높은 성능을 제공한다는 것을 의미합니다
• 약 72%의 자동차가 수동 변속기를 사용합니다
• 자동차의 약 82%가 최초 소유 자동차입니다. 이는 대부분의 구매자가 첫 소유자 자동차 구매를 선호한다는 것을 보여줍니다
• 자동차의 약 20%가 Maruti 브랜드에 속해 있으며, 그 뒤를 이어 19%의 자동차가 현대 자동차에 속해 있습니다
• WagonR은 구매 가능한 모든 모델 중 1위를 차지합니다.
결론:
탐색적 데이터 분석(EDA)은 이상값, 주요 패턴, 변수 간의 관계를 감지하여 데이터 세트에서 통찰력과 지식을 찾아냅니다. 여기에는 데이터의 속성을 밝히기 위해 데이터를 수집, 정리 및 변환하는 작업이 포함됩니다.
즐거운 독서 되시며 데이터 과학의 미래를 함께 탐험해 보시기 바랍니다…
위 내용은 PYTHON을 사용한 탐색적 데이터 분석(EDA): 데이터에서 통찰력 발견의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!