Nacho

Chapter 08. Python Pandas 기초(2) 본문

Python

Chapter 08. Python Pandas 기초(2)

Nacho_13 2024. 2. 23. 21:05
반응형

자 pandas 를 복습해보자.(2)

공부한 내용을 다 적어 올리고 싶은데 데이터프레임 옮겨오는 게 쉬운 일이 아니다..

# 라이브러리 불러오기
import pandas as pd # 시작은 언제나 아묻따 import 갈겨버리깅

 

pd.DataFrame.groupby()

데이터프레임을 다루면서 가장 헷갈리는 부분이 아닐까 싶다.

빅분기 1과목 공부하면서 가장 나를 힘들게 했던 녀석... 

 

 

pandas 공식문서에 따르면 pd.DataFrame.groupby() 와 pd.Series.groupby()가 나뉘어 있다.

https://pandas.pydata.org/docs/reference/groupby.html 자세한 건 여기로...

 

# 데이터 읽어오기
df = pd.read_csv('https://raw.githubusercontent.com/DA4BAM/dataset/master/airquality.csv')
# 상위 5개 확인
df.head()

 

우선 데이터부터 가져오자. 

 

 

  • Ozone : 오존농도
  • Solar.R: 태양복사열
  • Wind: 풍속
  • Temp: 기온
  • Month: 월
  • Day: 일

 

 

 

df.groupby().count()

특정 columns 을 기준으로 나머지 columns 의 값을 확인할 수 있다.
.size() 데이터 개수
.mean() 평균
.count() 개수
.max() 최댓값
.min() 최솟값
.std() 표준편차
.median() 중앙값

 

df.groupby('Month')[['Ozone', 'Wind', 'Temp']].count()

월 별 오존농도, 풍속, 기온의 데이터 수를 확인한다.

 

df.groupby('Month')[['Ozone', 'Wind', 'Temp']].mean()

월 별 오존농도, 풍속, 기온의 데이터의 평균을 확인한다.

 

 

 

groupby()를 사용하면 자동으로 기준데이터가 index으로 사용되는 as_index값이 True로 지정 된다.

df.groupby('Month',as_index=False)[['Ozone', 'Wind', 'Temp']].count()

 

 

선호하는 방식을 사용하자.

 

 

 

 

 

 

df.groupby(['Month','Day'],as_index=False)[['Ozone', 'Wind', 'Temp']].max()\
.sort_values(by='Ozone',ascending=False)

sort_values() 등 함수 사용도 가능하다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

df.groupby().agg([ ])

여러 집계를 한 번에 출력도 가능하다.

 

df.groupby('Month')[['Ozone', 'Wind', 'Temp']].agg(['max','min','mean','std'])

 

 

 

 

복습문제

[문2] read_csv() 함수를 사용해 다음 경로의 파일을 불러와 titanic 데이터프레임을 만드세요.

[titanic_simple 데이터 셋 정보]

  • PassengerId : 승객번호
  • Survived : 생존여부(1:생존, 0:사망)
  • Pclass : 객실등급(1:1등급, 2:2등급, 3:3등급)
  • Name : 승객이름
  • Sex : 성별(male, female)
  • Age : 나이
  • Fare : 운임($)
  • Embarked : 승선지역(Southhampton, Cherbourg, Queenstown)
# 파일 읽어오기
df = pd.read_csv('https://raw.githubusercontent.com/DA4BAM/dataset/master/titanic_simple.csv')
df

 

[문3] Fare의 중앙값을 확인해 봅시다.

 

df['Fare'].median()

 

[문4] 승선지역(Embarked) 별 평균 운임(Fare)을 구해 봅시다.

df.groupby('Embarked',as_index=False)[['Fare']].mean()

 

[문5] 승선지역(Embarked)별, 성별(Sex)별 평균 운임(Fare)과 평균 나이(Age)를 tmp에 저장하고 조회하시오.

tmp = df.groupby(['Embarked','Sex'],as_index=False)[['Fare','Age']].mean()
tmp

 

[문6] 객실등급(Pclass)별, 생존여부(Survived)별 나이(Age), 운임(Fare)의 최대, 최소, 평균, 표준편차를 tmp에 저장하고 조회하시오.

df.groupby(['Pclass','Survived'],as_index=False)[['Age','Fare']].agg(['max','min','mean','std'])
반응형