[英]Building a dataframe in an efficient way from dictionary
我有大量數據要處理並生成字典。 現在,我想從此字典創建一個數據框。 字典的值是元組列表。 從這些值中,我需要找出唯一的值來構建數據框的列:
d = {'0001': [('skiing',0.789),('snow',0.65),('winter',0.56)],'0002': [('drama', 0.89),('comedy', 0.678),('action',-0.42) ('winter',-0.12),('kids',0.12)],'0003': [('action', 0.89),('funny', 0.58),('sports',0.12)],'0004': [('dark', 0.89),('Mystery', 0.678),('crime',0.12), ('adult',-0.423)],'0005': [('cartoon', -0.89),('comedy', 0.678),('action',0.12)],'0006': [('drama', -0.49),('funny', 0.378),('Suspense',0.12), ('Thriller',0.78)],'0007': [('dark', 0.79),('Mystery', 0.88),('crime',0.32), ('adult',-0.423)]}
(詞典的大小接近80萬條記錄)
我遍歷字典以找出唯一的標頭:
col_headers = []
entities = []
for key, scores in d.iteritems():
entities.append(key)
d[key] = dict(scores)
col_headers.extend(d[key].keys())
col_headers = list(set(col_headers))
我相信這需要很長時間才能完成。 由於使用dict
速度要慢得多,因此也可能是個問題。 此外,當我通過原始方式構造數據幀時,它會進一步減慢該過程:
df = pd.DataFrame(columns=col_headers, index=entities)
for k in d:
df.loc[k] = pd.Series(d[k])
df.fillna(0.0, axis=1)
如何加快該過程以減少處理時間?
但是您可能還需要將內部鍵值對解包到字典中。
df = pd.DataFrame.from_dict({ k: dict(v) for k,v in d.items() },
orient="index").fillna(0)
然后,如果要使列標題的樣式同質,則可以選擇:
df.columns = [c.lower() for c in df.columns]
如果您想完全瘋掉,則可以對各列進行排序:
df = df.sort(axis=1)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.