공감 및 댓글은 포스팅 하는데 아주아주 큰 힘이 됩니다!! 포스팅 내용이 찾아주신 분들께 도움이 되길 바라며 더 깔끔하고 좋은 포스팅을 만들어 나가겠습니다^^
|
지난 포스팅까지해서 numpy에 대해 알아보았습니다.
이번 포스팅에서는 MovieLens 라는 곳에서 100만 DataSet을 받아서 분석해보겠습니다.
1. DataSet 다운로드
먼저 구글에 MovieLens 라고 검색을 하면 아래처럼 나오는데요.
저는 1M Dataset을 받았습니다.
다운로드 받은 압축파일의 압축을 풀면 저 같은 경우는 ml-1m 이라는 폴더가 나오는데,
그 안에 3개의 .dat 파일과 readme.txt 파일이 존재합니다.
그리고 jupyter notebook 을 실행한 디렉토리에 폴더를 넣어줬습니다.
2. jupyter notebook 에서 파일 불러와서
데이터 분석해보기
.dat 파일 불러오기
저는 ratings.dat 파일을 불러올건데요.
ratings.dat의 data format은 README.txt 파일을 열어보면 확인할 수 있습니다.
All ratings are contained in the file "ratings.dat" and are in the
following format:
UserID::MovieID::Rating::Timestamp
이렇다고 하네요.
특이하게 :: 를 구분자로 사용합니다.
위 Dataset을 간단히 정리해보면, 유저가 어떤 영화에 대해 평점을 몇점이나 줬는지와
평점을 준 시간을 나타내는 dataset입니다.
In[3] : 의 명령을 실행하면 100만 개가 조금 넘는 데이터를 불러오기 때문에
수 초 정도 걸립니다.
잘 불러왔는지 확인해보기 위해 5개 의 데이터를 불러와보고,
shape 멤버변수를 사용해서 dataset 의 array 크기를 확인해봅니다.
총 1,000,209 개의 행이 존재하는군요.
이전 포스팅에서 배운 것들을 토대로 간단한 것들을 구해봅시다.
# 전체 평균 평점 구하기
간단합니다. mean() 이라는 함수가 평균을 내주는 함수였죠?
단 한 줄의 코드로 간단하게 구했습니다.
# 각 유저 별 평균 평점 구하기
1. 먼저 가져온 데이터에서 userId 중복을 없애야겠죠?
unique() 함수를 통해 중복을 제거합니다.
총 6040명의 유저가 있는 걸 확인할 수 있습니다.
2. 유저 별 평균 평점을 담을 리스트를 만듭니다.
3. 반복문을 사용해서 유저 별 평균 평점을 구하고 구한 값을
avg_rating_by_user 리스트에 담습니다.
그리고 새로운 array를 만들어서 avg_rating_by_user 리스트를 담습니다.
제대로 됐는지 확인하기 위해
avg_rating_by_user_arr[:5] 명령을 통해
5개의 정보를 가져왔습니다.
이렇게 만들어진 array는 .csv 파일로 만들어 export할 수 있습니다.
3. .csv 파일로 export 하기
np.savetxt("만들고 싶은 파일이름.csv", array변수, fmt="포멧타입", delimiter="원하는 구분자")
위 코드 대로면 생성되는 csv파일의 이름은 file_name.csv, 이고, 위에서 구한
avg_rating_by_user_arr 의 값들이 들어갑니다, 값들은 소숫점 2번 째 자리까지이고,
구분자는 ,(콤마)를 사용합니다.
여기까지입니다.
numpy를 이용한 간단한 데이터 분석을 해보았습니다.
감사합니다.
다음 포스팅부터는 pandas 를 공부합니다.
'파이썬(Python)' 카테고리의 다른 글
파이썬(python) 데이터분석 라이브러리[2] : pandas - DataFrame 인덱싱 (2) | 2018.01.19 |
---|---|
파이썬(python) 데이터분석 라이브러리[2] : pandas - Series 와 DataFrame 알아보기 (0) | 2018.01.19 |
파이썬(python) 데이터분석 라이브러리[1] : numpy array 관련 함수 알아보기 (2) | 2018.01.18 |
파이썬(python) 데이터분석 라이브러리[1] : numpy array 인덱싱 알아보기 (0) | 2018.01.18 |
파이썬(python) 데이터분석 라이브러리[1] : numpy 알아보기 (0) | 2018.01.18 |