여러가지 메서드
2022. 10. 9. 12:39ㆍDev.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
'Dev.Program > Python & R' 카테고리의 다른 글
기상청 데이터 (0) | 2022.10.09 |
---|---|
여러가지 그래프 (0) | 2022.10.09 |
1차원 테이블 / 2차원 테이블 (0) | 2022.10.09 |
함수 Import 방법 / 외장함수 (0) | 2022.10.09 |
다중 상속 / 함수 / 예외처리 / 파일 읽고 쓰기 (0) | 2022.10.09 |