오늘의학습
2023.06.21
이경찬 :)
2023. 6. 21. 17:07
ns_book = ns_df.loc[:, '번호':'등록일자']
ns_book.head()
ns_df.columns != 'Unnamed: 13'
selected_columns = ns_df.columns != 'Unnamed: 13'
selected_columns
ns_book = ns_df.loc[:,selected_columns]
열삭제하기
ns_book2 = ns_book.drop([3,])
ns_book2
# []연산자와 불리언 배열
selected_rows = ns_df['출판사'] == '한빛미디어'
ns_book2 = ns_book.loc[selected_rows]
ns_book2.head()
행 삭제하기
dup_row = ns_book.duplicated(subset = ['도서명','저자','ISBN'], keep = False)
ns_book3 = ns_book[dup_row]
ns_book3.head()
dup_book = ns_book['도서명'] == '파친코'
dup_book.sum()
중복된 행 찾기
def data_cleaning(filename):
"""
남산 도서관 장서 CSV 데이터 전처리 함수
:param filename: CSV 파일이름
"""
# 파일을 데이터프레임으로 읽습니다.
ns_df = pd.read_csv(filename, low_memory=False)
# NaN인 열을 삭제합니다.
ns_book = ns_df.dropna(axis=1, how='all')
# 대출건수를 합치기 위해 필요한 행만 추출하여 count_df 데이터프레임을 만듭니다.
count_df = ns_book[['도서명','저자','ISBN','권','대출건수']]
# 도서명, 저자, ISBN, 권을 기준으로 대출건수를 groupby합니다.
loan_count = count_df.groupby(by=['도서명','저자','ISBN','권'], dropna=False).sum()
# 원본 데이터프레임에서 중복된 행을 제외하고 고유한 행만 추출하여 복사합니다.
dup_rows = ns_book.duplicated(subset=['도서명','저자','ISBN','권'])
unique_rows = ~dup_rows
ns_book3 = ns_book[unique_rows].copy()
# 도서명, 저자, ISBN, 권을 인덱스로 설정합니다.
ns_book3.set_index(['도서명','저자','ISBN','권'], inplace=True)
# load_count에 저장된 누적 대출건수를 업데이트합니다.
ns_book3.update(loan_count)
# 인덱스를 재설정합니다.
ns_book4 = ns_book3.reset_index()
# 원본 데이터프레임의 열 순서로 변경합니다.
ns_book4 = ns_book4[ns_book.columns]
return ns_book4
그룹별로 모으기
def data_cleaning(filename):
"""
남산 도서관 장서 CSV 데이터 전처리 함수
:param filename: CSV 파일이름
"""
# 파일을 데이터프레임으로 읽습니다.
ns_df = pd.read_csv(filename, low_memory=False)
# NaN인 열을 삭제합니다.
ns_book = ns_df.dropna(axis=1, how='all')
# 대출건수를 합치기 위해 필요한 행만 추출하여 count_df 데이터프레임을 만듭니다.
count_df = ns_book[['도서명','저자','ISBN','권','대출건수']]
# 도서명, 저자, ISBN, 권을 기준으로 대출건수를 groupby합니다.
loan_count = count_df.groupby(by=['도서명','저자','ISBN','권'], dropna=False).sum()
# 원본 데이터프레임에서 중복된 행을 제외하고 고유한 행만 추출하여 복사합니다.
dup_rows = ns_book.duplicated(subset=['도서명','저자','ISBN','권'])
unique_rows = ~dup_rows
ns_book3 = ns_book[unique_rows].copy()
# 도서명, 저자, ISBN, 권을 인덱스로 설정합니다.
ns_book3.set_index(['도서명','저자','ISBN','권'], inplace=True)
# load_count에 저장된 누적 대출건수를 업데이트합니다.
ns_book3.update(loan_count)
# 인덱스를 재설정합니다.
ns_book4 = ns_book3.reset_index()
# 원본 데이터프레임의 열 순서로 변경합니다.
ns_book4 = ns_book4[ns_book.columns]
return ns_book4
업데이트