Blair  - Soul Eater [leetcode] 1148. Article Views I

• data analysis/PYTHON

[leetcode] 1148. Article Views I

oujin 2024. 2. 20. 20:46
728x90

테이블 생성코드
 

data = [[1, 3, 5, '2019-08-01'], [1, 3, 6, '2019-08-02'], [2, 7, 7, '2019-08-01'], [2, 7, 6, '2019-08-02'], [4, 7, 1, '2019-07-22'], [3, 4, 4, '2019-07-21'], [3, 4, 4, '2019-07-21']]
views = pd.DataFrame(data, columns=['article_id', 'author_id', 'viewer_id', 'view_date']).astype({'article_id':'Int64', 'author_id':'Int64', 'viewer_id':'Int64', 'view_date':'datetime64[ns]'})

 
 
문제

 
 
 
 
해결 코드 1

def article_views(views: pd.DataFrame) -> pd.DataFrame:
    aisv = views[views['author_id']==views['viewer_id']]
    aisvU = aisv['author_id'].unique()
    aisvUs = sorted(aisvU)
    result_df = pd.DataFrame({'id':aisvUs})
    return result_df

 


해결 코드 2
import pandas as pd

def article_views(views: pd.DataFrame) -> pd.DataFrame:
    authour_viewer_same = views[views.author_id == views.viewer_id][[‘author_id’]].rename(columns={‘author_id’: ‘id’})
    ans = authour_viewer_same.sort_values(by=‘id’).drop_duplicates()
    return ans

 
해설
author_id 와 viewer_id 가 일치하는 행으로만 구성된 aisv 를 만듭니다.
그리고 aisv.unique() 함수를 사용해서 중복값을 없애서 aisvU 에 저장합니다.
aisvUsorted 로 정렬해서 aisvUs 에 저장합니다.
aisvUs데이터프레임으로 만들어서 result_df 에 저장하고 출력합니다.
 
 
궁금한점

aisvUs = aisvU.sort_values(by='author_id', ascending=True) 처럼 sort_values 를 쓰면 안되고 sorted를 써야 하는 이유?

 


파이썬 sort , sorted ,  sort_values 차이점

 
리스트.sort()
리스트 자체를 정렬시켜버림
데이터프레임에서 사용못함
 
sorted(리스트)
순서대로 정렬, 본체는 변형하지 않고 정렬된 리스트만 반환함
* reversed 는 거꾸로 뒤집기
데이터프레임에서 사용가능
 
sort_values()
데이터프레임을 특정 열의 기준으로 정렬하는 메서드
by = '컬럼명/리스트' : 해당 열을 정렬하면서 다른 열들은 해당 열에 맞게 같이 정렬됨. 리스트를 넣으면 하나의 열을 정렬한 상태에서 그 정렬을 유지하면서 다른열을 같이 정렬가능
ascending = True/False : 오름차순 정렬 / 내림차순 정렬
inplace = True/ False : 원본 데이터 프레임을 수정함 / 수정하지 않음
ignore_index = True/False 데이터 프레임 정렬후에 뒤섞인 인덱스를 재정렬 / 그대로 뒤섞인채 놔둠
 
 
 
 

728x90

'• data analysis > PYTHON' 카테고리의 다른 글

610. Triangle Judgement  (0) 2024.02.24
1068. Product Sales Analysis I  (0) 2024.02.22
[leetcode] 620. Not Boring Movies  (0) 2024.02.19
[leetcode] 175. Combine Two Tables  (0) 2024.02.16
[leetcode] 182. Duplicate Emails  (0) 2024.02.16