반응형

 

csv 포멧의 파일을 Parsing 하는 과정에서 다음과 같은 코드를 실행 할 경우 문제가 발생합니다.

 

import pandas as pd
import os
encoding = 'latin1'

mpath = os.path.expanduser('movielens/movies.dat')
rpath = os.path.expanduser('movielens/ratings.dat')
upath = os.path.expanduser('movielens/users.dat')

unames = ['user_id', 'gender', 'age', 'occupation', 'zip']
rnames = ['user_id', 'movie_id', 'rating', 'timestamp']
mnames = ['movie_id', 'title', 'genres']

users = pd.read_csv(upath, sep='::', header=None, names=unames, encoding=encoding)
ratings = pd.read_csv(rpath, sep='::', header=None, names=rnames, encoding=encoding)
movies = pd.read_csv(mpath, sep='::', header=None, names=mnames, encoding=encoding) 

 

[Error]

C:\Python27\lib\site-packages\ipykernel\__main__.py:13: ParserWarning: Falling back to the 'python' engine because the 'c' engine does not support regex separators; you can avoid this warning by specifying engine='python'.
C:\Python27\lib\site-packages\ipykernel\__main__.py:14: ParserWarning: Falling back to the 'python' engine because the 'c' engine does not support regex separators; you can avoid this warning by specifying engine='python'.
C:\Python27\lib\site-packages\ipykernel\__main__.py:15: ParserWarning: Falling back to the 'python' engine because the 'c' engine does not support regex separators; you can avoid this warning by specifying engine='python'.

 

이럴 경우 engine='python'을 추가해주면 오류가 발생하지 않습니다.

 

import pandas as pd
import os
encoding = 'latin1'

mpath = os.path.expanduser('movielens/movies.dat')
rpath = os.path.expanduser('movielens/ratings.dat')
upath = os.path.expanduser('movielens/users.dat')

unames = ['user_id', 'gender', 'age', 'occupation', 'zip']
rnames = ['user_id', 'movie_id', 'rating', 'timestamp']
mnames = ['movie_id', 'title', 'genres']

users = pd.read_csv(upath, sep='::', header=None, names=unames, encoding=encoding, engine='python')
ratings = pd.read_csv(rpath, sep='::', header=None, names=rnames, encoding=encoding, engine='python')
movies = pd.read_csv(mpath, sep='::', header=None, names=mnames, encoding=encoding, engine='python')

 

데이터 파일이 여러개일 경우 다음과 같이 pandas의 merge함수를 활용하면 손쉽게 합칠 수 있습니다.

아래의 merge는 ratings 파일과 users 파일을 합치고 movies 파일을 합치는 과정을 나타내는 명령어 입니다.

(※ pd = import pandas as pd)

 

 data = pd.merge(pd.merge(ratings, users), movies)

 

테이블로 만들어진 Data는 .ix 메소드를 활용하여 컬럼을 사용할 수 있다.

 

data.ix[0] - index 0 컬럼의 데이터를 출력

 

 

반응형

+ Recent posts