여러가지 메서드

2022. 10. 9. 12:39Dev.Program/Python & R

728x90
# math.csv
fdf2 = pd.read_csv('math.csv')
print(fdf2)
fdf2_1 = pd.read_csv('math.csv', index_col='year')
print(fdf2_1)

print(fdf2_1.head(3))
print(fdf2_1.sum())
print(fdf2_1.sum(axis=1))
print(fdf2_1.describe())

print(fdf2_1[1:3]) #1행에서 3행앞까지 추출
print(fdf2_1['KOR'])

print(fdf2_1[fdf2_1['KOR']>=540])
print(fdf2_1[fdf2_1['KOR']>=540][['KOR', 'USA']])

# 열추가 avg
fdf2_1['avg'] = (fdf2_1['JPN'] + fdf2_1['KOR'] + fdf2_1['USA'])/3
print(fdf2_1)
  • 열추가




# 더하기 +
s1 = pd.Series([1, 2, 3, 4])
s2 = pd.Series([10, 20, 30, 40, 50])
print(s1 + s2)
  • 5번째 데이터는 더할 게 없어서 NaN 뜸

 

columns_list=['A', 'B', 'C']
df33 = pd.DataFrame([[1, 2, 3], [4, 5, 6], [7, 8, 9]], columns=columns_list)
df44 = pd.DataFrame([[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 20, 30], [40, 50, 60]], columns=columns_list)
print(df33 + df44)



# 데이터 통합 행추가 append() 열추가 join() 기준 통합 merge()
df9 = pd.DataFrame({'판매월':['1월', '2월', '3월', '4월'],
                   '제품A':[95, 92, 98, 100],
                   '제품B':[91, 93, 97, 99]})
df10 = pd.DataFrame({'판매월':['3월', '4월', '5월', '6월'],
                   '제품C':[90, 96, 88, 80],
                   '제품D':[99, 95, 92, 99]})

# 기준통합 merge()
print(df9.merge(df10, how='left'))
print(df9.merge(df10, how='right'))
print(df9.merge(df10, how='inner')) # 공통부분 추출(like 교집합)
print(df9.merge(df10, how='outer')) # 전체 추출(like 합집합)

 

< append() : 행추가 >

df5=pd.DataFrame({'1반':[95,92,98,100],
                 '2반':[91,93,97,99]})
df6=pd.DataFrame({'1반':[87,89],
                 '2반':[85,90]})
# 1, 2반 5명 <- 전학 2명 추가
print(df5) # 기존 학생
print(df6) # 전학 온 학생
print(df5.append(df6))
  • 합쳤는데 인덱스 번호가 좀 이상함!
# index 번호 새로 부여
print(df5.append(df6, ignore_index=True))
  • 인덱스 번호 새로 부여!

< join() : 열추가 >

# 3반 추가 => 열추가
df6=pd.DataFrame({'3반':[90,96,88,80]})
print(df5.join(df6))

 

< sort_values() 정렬 >

# 정렬 : order by   ->  sort_values()
# df9 제품A 오름차순
print(df9.sort_values(by=['제품A']))
# df9 제품A 오름차순
print(df9.sort_values(by=['제품A'], ascending=False))

 

# 그룹 : group by -> 시각화
# max min sum count mean
print(df9.count())
# 제품A  제품B  평균
print(df9[['제품A', '제품B']].mean())

 

< groupby() : 그룹으로 묶기 >

# 지사를 기준으로 그룹으로 묶기 groupby()
print(df2)
df2_g=df2.groupby(by='지사')
print(df2_g)
  • 실행해보면 이렇게 object 로 만들어진 것을 알 수 있다



# 지사별 개수
print(df2.groupby(by='지사').count())
# 지사별 합계
print(df2.groupby(by='지사').sum())
# 지사별 평균
print(df2.groupby(by='지사').mean())
# 지사별 고객수의 최대값, 최소값
print(df2.groupby(by='지사')['고객수'].agg([min,max]))
# 지사별 연도 최대값, 고객수 합계
agg_format = {'연도':'max','고객수':'sum'}
print(df2.groupby(by='지사').agg(agg_format))

 

< isna() 비어있는 데이터 찾기 >

# 데이터정제(이상한 데이터, 비어있는 데이터 처리)
# 결손데이터 NaN  isna() 비어있는 데이터 찾기
df55 = df5.append(df6, ignore_index=True)
print(df55)
print(df55.isna()) # NaN True
print(df55.isna().sum()) # NaN 값의 갯수
  • NaN이면 True 값 반환
  • NaN 의 갯수

< fillna() : NaN에 값을 넣는 함수 >

# NaN 결손데이터 다른것으로 대치 => 0, mean() 처리하는데 fillna() <- NaN에 값을 넣는 함수
# '2반' NaN 에 0으로 값 넣어보기
print(df55['2반'].fillna(0))
# '2반' NaN -> 평균
print(df55['2반'].fillna(df55['2반'].mean()))

 

# lambda 데이터 가공
# 열추가 계산식 -> 람다함수
# 일반함수   하나의 값을 받아서 제곱 리턴하는 함수 get_square()
def get_square(a):
   return a**2
print(get_square(3))

# 람다함수   하나의 값을 받아서 제곱 리턴하는 함수 lam_square()
lam_square = lambda a: a**2
print(lam_square(4))

 

# 결과 리스트변수 = map(람다, 리스트변수)
li=[1, 2, 3]
result = list(map(lam_square, li))
print(result)

 

# DataFrame 열 적용    새로운열 = 적용할열.apply(람다함수)  적용할열=>리스트형태
# 새로운 열 추가 df5   '1반100' = 1반열.apply(람다)
# 람다 : 하나의 값을 받아서 값*100 리턴
print(df5)
df5['1반100'] = df5['1반'].apply(lambda a: a*100)
print(df5)

 

# 1반grade = 1반   람다조건 lambda 받는 변수 : 참값 if 조건 else 거짓값
# 1반 90점 이상이면 'A' 아니면 'B'
df5['1반grade'] = df5['1반'].apply(lambda a : 'A' if a>=90 else 'B')
print(df5)

 

728x90