본문 바로가기
IT,SW,Data,Cloud,코딩/Python

20230611 빅분기 3회 기출 작업형1

by 착실하게 2023. 6. 11.
반응형
# 문제1
#결측치데이터 (행)을 제거하고, 앞에서부터 70% 데이터만 활용해, 'f1' 컬럼 1사분위값을 구하시오.
import pandas as pd 
mem = pd.read_csv('data/members2.csv')

mem = mem.dropna(axis=0)

line = int(len(mem) * 0.7 )
mem = mem[:line]

# print(mem.describe()) # 57

mem = mem.sort_values(by='f1')
line = int(len(mem) * 0.25 )
print(mem.iloc[line]['f1'])

# 대상컬럼의 1사분위값 구하는 함수가 있음!! 
# df['대상컬럼'].quantile(.25) 
print(df['f1'].quantile(.25))

사분위수 구하는 데이터프레임 함수 외우기!

df['col'].quantile(.25) 

 

########################################
# 문제2 데이터생성코드
import pandas as pd 
import random 
random.seed(2022)
df = pd.DataFrame()
for i in range(0,3):
  list_box = []
  for k in range(0,200):
    ran_num = random.randint(1,200)
    list_box.append(ran_num)
  df[i+1999] = list_box   
df = df.T 


########################################
# 문제2
# 인덱스는 년도. 2000년 평균보다 큰 값의 데이터 수 


# 내 풀이 
# print(df.head())
new_df = df.T
# print(new_df.head())
# print(new_df.describe())
# print(new_df[2000].mean())
avg = new_df[2000].mean()
# print(new_df.shape, new_df[1999].shape )
print(sum(avg < new_df[2000]))


# 해답 1 # loc 활용 
m = df.loc[2000].mean()
print(sum(df.loc[2000,:]>m))

# 해답 2 # transpose 활용 
df = df.T 
df[2000].mean() #컬럼의 평균 
print(sum(df[2000] > m))

loc 사용이 여전히 멀게 느껴지는듯!!!!!!!!!!

 

loc[인덱스] 

 

# 문제3 
# 결측치가 제일 큰 값의 컬럼명 

import pandas as pd 

# 내 풀이
df = pd.read_csv('data/members2.csv')
print(df.isnull().sum())
# print(df.isnull().sum().max())
# print(df.columns)
# 어느 컬럼인지는 알겠으나, 하드코딩 없이 컬럼명 선택해내는게 어려웠음. 

print("=====")

# 해답 - 방법1 
# 데이터프레임의 인덱스를 선택하여 출력하는 방법

df = pd.read_csv('data/members2.csv')
df = df.isnull().sum()
df = df.sort_values(ascending=False)
print(df.index[0])

# 해답 - 방법2 
# 인덱스를 일반 컬럼으로 만드는 방법 

df = pd.read_csv('data/members2.csv')
df = df.isnull().sum()
df = df.reset_index()
print(df.loc[3,'index'])

df = df.sort_values(by=0,ascending=False)
print(df.iloc[0,0])
반응형

댓글