인공지능 AI/머신러닝 Machine Learning

파이썬 웹크롤링시 주의사항, 되도록 딕셔너리dictionary를 쓰는 게 좋다

Tap to restart 2021. 1. 22. 18:00
반응형

그냥 리스트로 하면 되는 거 아닌가?

처음에는 그냥 리스트로 했다.

 

누락이 없다면? 잘 작동한다

user_list = []
user_list.append('April')
user_list.append('Brad')
review_list = []
review_list.append('good')
review_list.append('So good!')

import pandas as pd
df = pd.DataFrame({'user' : user_list, 'review' : review_list})
print(df)

잘 작동한다.

 

누락이 있다면? 오류가 발생한다.

user_list = []
user_list.append('April')
user_list.append('Brad')
review_list = []
review_list.append('good')

import pandas as pd
df = pd.DataFrame({'user' : user_list, 'review' : review_list})
print(df)

문제는 데이터가 위 경우처럼 2개면 괜찮은데, 1000개, 만개 이렇게 많아지고, 누락된 데이터 수도 100개 이렇게 되면 어디서 누락된 것인지 알 수가 없게 된다.

간단히 말하면 사용자와 리뷰가 연결이 안 되는 것이다. 누가 어떤 리뷰를 달았는지 알 수 없는 데이터가 된다. 데이터로서 가치가 없게 된다.

 

딕셔너리 사용 예

data_list = []
data = {}
data['user'] = 'April'
data['review'] = 'good'
data['rating'] = 3
data_list.append(data)
data = {}
data['user'] = 'Brad'
data['review'] = 'So good!'
data['rating'] = 4
data_list.append(data)

print(data_list)

출력 결과

[{'user': 'April', 'review': 'good', 'rating': 3}, {'user': 'Brad', 'review': 'So good!', 'rating': 4}]

 

누락이 있어도 오류가 나지 않는다.

data_list = []
data = {}
data['user'] = 'April'
data['review'] = 'good'
data['rating'] = 3
data_list.append(data)
data = {}
data['user'] = 'Brad'
data['review'] = 'So good!'
data_list.append(data)

print(data_list)

출력 결과

[{'user': 'April', 'review': 'good', 'rating': 3}, {'user': 'Brad', 'review': 'So good!'}]

 

판다스pandas 데이터프레임을 생성할 때도 오류가 없다.

data_list = []
data = {}
data['user'] = 'April'
data['review'] = 'good'
data['rating'] = 3
data_list.append(data)
data = {}
data['user'] = 'Brad'
data['review'] = 'So good!'
data_list.append(data)

import pandas as pd
df = pd.DataFrame(data_list)
print(df)

crawler - list vs dictionary.ipynb
0.01MB

반응형