데이터의 크기에 따라 개념적으로 더 기쁘고 잠재적으로 더 빠른 방법입니다. 단순히 동일한 키를 사용하여 열 머리글 및 그룹 값으로 키를 참조하는 팬더 패키지를 사용
는 :
import pandas as pd
listDict = [{'id':1,'other':2},{'id':3,'other':4},{'id':5,'other':6}]
df = pd.DataFrame(listDict)
# Then just reference the 'id' column to get a numpy array of it
df['id']
# or just get a list
df['id'].tolist()
아래 일부 벤치마킹, 팬더는 분명 큰 데이터를 능가하는 성능. 작은 케이스는 주어진 3 개의 엔트리를 사용하며, 큰 케이스는 150k 엔트리를 가지고 있습니다 :
setup_large = "listDict = [];\
[listDict.extend(({'id':1,'other':2},{'id':3,'other':4},\
{'id':5,'other':6})) for _ in range(50000)];\
from operator import itemgetter;import pandas as pd;\
df = pd.DataFrame(listDict);"
setup_small = "listDict = [];\
listDict.extend(({'id':1,'other':2},{'id':3,'other':4},{'id':5,'other':6}));\
from operator import itemgetter;import pandas as pd;\
df = pd.DataFrame(listDict);"
method1 = '[item["id"] for item in listDict]'
method2 = "df['id'].tolist()"
import timeit
t = timeit.Timer(method1, setup_small)
print('Small Method LC: ' + str(t.timeit(100)))
t = timeit.Timer(method2, setup_small)
print('Small Method Pandas: ' + str(t.timeit(100)))
t = timeit.Timer(method1, setup_large)
print('Large Method LC: ' + str(t.timeit(100)))
t = timeit.Timer(method2, setup_large)
print('Large Method Pandas: ' + str(t.timeit(100)))
#Small Method LC: 8.79764556885e-05
#Small Method Pandas: 0.00153517723083
#Large Method LC: 2.34853601456
#Large Method Pandas: 0.605192184448
정확히 내가 무엇을 찾고 있었습니까. 감사. –
그리고 첫 번째 담당자에게 감사드립니다. :-)/me happy – balpha