본문 바로가기

Data_Analysis_Track_33/Python_문제풀이

Python_09_문제풀이(pandas_정렬_집계 TODO문제)

 

import pandas as pd
# 1. data/diamonds.csv 를 읽어 DataFrame 생성
df = pd.read_csv('data/diamonds.csv')
df

# 2. 1에서 생성한 DataFrame의 정보 조회
#     - 배열의 shape조회 (행의 개수, 열의 개수)
df.shape

 

#     - DataFrame에 대한 정보조회
df.info()

 

#     - 상/하위 5개 행 조회
df.head()
df.tail()

 

# #     - 결측치 확인 , 열에 해당하는 값의 결측치 개수 출력
df.isnull().sum()

# 3. carat, price, depth의 합계, 평균, 최대, 최소 조회
df[['carat', 'price', 'depth']].agg(['sum', 'mean', 'max', 'min']).T

# 4. price는 최대, 최소, color는 고유값의 개수를 조회
d = {
    'price' : ['max', 'min'],
    'color' : 'nunique'
}
df.agg(d).T

# 5. cut의 고유값별 개수를 조회
df['cut'].value_counts().sort_index() #sort_values()

# 6. cut별 가격 평균 조회
# df.groupby('cut').agg({'price':'mean'})

mean_result = df.groupby("cut")['price'].mean()
mean_result

# 7. cut별 가격 평균중 4000이상만 조회
mean_result[mean_result >= 4000]

# 8. clarity별 carat 평균과 표준편차 조회
df.groupby("clarity")['carat'].agg(['mean', 'std']).sort_values("mean")

# 9. cut과 color 별로 가격은 평균을 carat은 최대값을 조회 
d = {
    "price":"mean", 
    "carat":"max"
}
result = df.groupby(['cut', 'color']).agg(d)\
      .rename(columns={"price":"price-평균", "carat":"carat-최대"})
result

# 10. 9번 문제의 결과에서 가격의 평균이 5000이상이고 carat의 최대값이 3이상인 결과만 조회
result[(result['price-평균'] >= 5000) & (result['carat-최대'] >= 3.0)]