簡體   English   中英

JSON格式的字符串轉換為Pandas數據框

[英]JSON formatted string to pandas dataframe

好吧,整個下午我一直在把頭撞在牆上。 我知道有很多類似的帖子,但是我不斷出錯,並且可能犯了一個愚蠢的錯誤。

我正在使用此處找到的apyori軟件包進行一些交易籃分析: https : apyori

看來,包dump_as_json()方法為每個可能的籃子吐出了RelationRecords字典。

我想將這些json格式的字典放入一個pandas數據框中,但是在嘗試使用pd.read_json()時遇到了不同的錯誤。

這是我的代碼:

import apyori, shutil, os
from apyori import apriori
from apyori import dump_as_json
import pandas as pd
import json

try:
    from StringIO import StringIO
except ImportError:
    from io import StringIO

transactions = [
    ['Jersey','Magnet'],
    ['T-Shirt','Cap'],
    ['Magnet','T-Shirt'],
    ['Jersey', 'Pin'],
    ['T-Shirt','Cap']
]
results = list(apriori(transactions))
results_df = pd.DataFrame()
for RelationRecord in results:
    dump_as_json(RelationRecord,output_file)
print output_file.getvalue()
json_file = json.dumps(output_file.getvalue())
print json_file


print data_df.head()

有什么想法如何將存儲在output_file的json格式字典轉換為pandas數據框嗎?

我建議閱讀一下StackOverflow的指南,以產生最小,完整和可驗證的示例 同樣,諸如“我不斷出錯”之類的語句也不是很有幫助。 也就是說,我查看了您的代碼以及此apyori軟件包的源代碼。 除了錯別字,問題線似乎在這里:

for RelationRecord in results:
    dump_as_json(RelationRecord,output_file)

您正在創建每行一個對象的JSON文件(我認為有時將其稱為LSON或Line-JSON。)作為一個整體文檔,它不是有效的JSON。 您可以嘗試將其保留為同類字典或其他pd.DataFrame友好結構的列表。

output = []
for RelationRecord in results:
    o = StringIO()
    dump_as_json(RelationRecord, o)
    output.append(json.loads(o.getvalue()))
data_df = pd.DataFrame(output)
您可以使用以下腳本將Apriori結果進一步轉換為外觀更好的數據框:
 summary_df = pd.DataFrame(columns=('Items','Antecedent','Consequent','Support','Confidence','Lift')) Support =[] Confidence = [] Lift = [] Items = [] Antecedent = [] Consequent=[] for RelationRecord in results: for ordered_stat in RelationRecord.ordered_statistics: Support.append(RelationRecord.support) Items.append(RelationRecord.items) Antecedent.append(ordered_stat.items_base) Consequent.append(ordered_stat.items_add) Confidence.append(ordered_stat.confidence) Lift.append(ordered_stat.lift) summary_df['Items'] = Items summary_df['Antecedent'] = Antecedent summary_df['Consequent'] = Consequent summary_df['Support'] = Support summary_df['Confidence'] = Confidence summary_df['Lift']= Lift 

最終數據幀如下所示:

希望這可以幫助 :)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM